Receive DRM Radio on Linux with Gqrx and Dream

 Author:   Posted on:   Updated on:  2017-11-18T21:31:25Z
DRM (Digital Radio Mondiale) is the universal, openly standardised digital broadcasting system for all broadcasting frequencies, including the AM bands, as well as VHF Bands. The great flexibility of DRM supports all types of coverage needs – from local, regional, nation-wide to international. If you want to listen to DRM broadcasts, you need a dedicated receiver or a software radio. This post will focus on the cheaper method, the software defined radio (SDR).

SDR performs demodulation in software. The RF signal is sampled by a high speed ADC (analog-digital converter) and sent to a computer which does the filtering, amplification, demodulation and decoding of the signal. The cheapest hardware for SDR is the popular RTL2832U based DVB-T stick.

Most DRM broadcast can be found in SW bands. Here comes an important issue. The tuner from the DVB-T stick can't receive this band. One of the solution is to add a frequency downconverter. Or you can simply disable the tuner and feed RF straight to the ADC. I wrote about RTL2832U direct sampling in this post. This method has some limitations, but nevertheless it should provide satisfactory results.

Dream decoding a DRM broadcast
Dream decoding a DRM broadcast
There are a few options regarding software. But, as this post focuses on Linux operating system, Gqrx SDR will be used to configure and tune the SDR hardware and Dream will decode DRM broadcasts piped from Gqrx.

You must have these installed on your Linux distro. Gqrx can be found in repositories, but Dream needs to be compiled from source. I have a script for you. To install Gqrx, you can use the version from distro repositories or the custom repositories. Here are the commands for APT distros (Ubuntu):
sudo add-apt-repository -y ppa:bladerf/bladerf
sudo add-apt-repository -y ppa:ettusresearch/uhd
sudo add-apt-repository -y ppa:myriadrf/drivers
sudo add-apt-repository -y ppa:myriadrf/gnuradio
sudo add-apt-repository -y ppa:gqrx/gqrx-sdr
sudo apt update
sudo apt install gqrx-sdr
sudo apt install libvolk1-bin
volk_profile
Gqrx uses GNU Radio as a backend. I found it simpler to use Gqrx than GNU Radio.

Audio from Gqrx will be piped to Dream. To do this, you need a virtual audio cable. The Pulseaudio virtual sink is the right choice here. If you got al these up and running, you're almost ready to listen to DRM.

There are various DRM broadcasts during the day. I recommend HFCC Interactive Schedule to find on air stations. Pan and drag the map, then click to set your location. Then check Digital (DRM) only and click Show Broadcasts. If the results page doesn't look right, try adjusting browser window width. The site is not optimized for wide screens. You will be interested in green (live) stations.

HFCC Interactive Schedule Screenshot
HFCC Interactive Schedule
Launch Gqrx and open configuration dialog. Select the RTL-SDR device. Then, if you use the device in direct sampling mode, add the direct_samp argument. Use 2 for Q input (if you connected the antenna to the unused Q pins of a R820T dongle), or 1 for I input. Select the Virtual Sink as audio device. Click OK and start.

Configure Gqrx source and audio device
Configure Gqrx source and audio device
If Gqrx doesn't start (after clicking Play, you don't see noise on the waterfall), restart it. You can tune to a DRM frequency. This is how the signal appears:

DRM signal displayed by Gqrx
DRM signal displayed by Gqrx
If you're looking for a specific frequency, tune 5 kHz below it (a half of bandwidth below). Once you located the signal, change the Receiver Mode to USB (upper side band) and adjust signal width by dragging on the Pandapter display (top half, above waterfall). Make sure you include all the width of the signal. Usually, the bandwidth of a DRM broadcast is 10 kHz. DRM does not use SSB modulation, but this is the right way of piping the filtered signal from Gqrx to Dream.

Now, launch Dream. Make sure signal input is set to Monitor of Virtual Sink and output is set to your real soundcard output (i.e. the one that is connected to headphones/speakers). It is very important not to leave the output to default device. It may cause Dream to loop output its own audio to the Virtual Sink (which is its input).

If the signal level is sufficient (adjust audio levels in Gqrx so that Dream indicator in main window stays green), decoding will begin and you will start to hear decoded audio. You can see more information about the signal quality in the Evaluation Dialog of Dream (from the View menu).

 Dream signal evaluation
Dream signal evaluation
If you failed to receive DRM, tell us what happened in a comment. If you want to improve the quality of the signal, you can go further and add an amplifier to the antenna and make a metal case for the RTL controller to reduce RF noise. If you want to receive DRM on Windows, there are many tutorials on the internet, making use of SDRSharp and Dream.

No comments :

Post a Comment

Please read the comments policy before publishing your comment.