GQRX for Digital Signals
Last weekend, I talked briefly about using GQRX as a graphical frontend for digital modes at the Software Defined Radio Academy held in conjunction with HAMRADIO.
The idea was to show how GQRX can be combined with other software to (re)use it’s nice GUI. With some plumbing, that’s easily possible. In the talk, I showed how this can be done for Multimon, Inspectrum, and custom GNU Radio receivers. I didn’t talk about Audacity and Baudline, since, I think, they are made obsolete by Inspectrum; but more later.
To record WAV files, one has to press the Rec button, while UDP starts streaming the audio signal through a network socket. The IP address and the port can be configured as shown in the picture.
Mutlimon
Multimon is a command line tool to decode various digital modes, like AFSK, DTFS, and POCSAG. POCSAG is a pager technology, which is often used by ambulance and firefighters in Germany and, therefore, maybe the most interesting.
Using SoX, the Swiss Army Knife of audio conversion, the output of GQRX can be easily fed into Multimon. On my systems the commands differ a bit for MAC and Linux since they come with different versions of netcat.
On Linux
nc -l -u -p 7355 |
sox -t raw -esigned-integer -b 16 -r 48000 -
-t raw -esigned-integer -b 16 -r 22050 - |
multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -f alpha -
On MAC
ncat -l -u -p 7355 |
sox -t raw -esigned-integer -b 16 -r 48000 -
-t raw -esigned-integer -b 16 -r 22050 - |
multimon-ng -t raw -a POCSAG512 -a POCSAG1200 -f alpha -
Using the system, in that case for AFSK, looks like this.
Inspectrum
Inspectrum is a promising new tool for offline signal analysis that will hopefully replace Audacity and Baudline in the near future. It’s already much more convenient to use than Audacity, which is just not tuned to analyzing digital signals.
Compared to Baudline, Inspectrum might still lack some features, but since it’s an Open Source project, I’m quite positive that it will catch up soon. Inspectrum already provides a great unique feature: an overlay that allows to derive the symbol time easily. To use it together with GQRX, one just has to convert the WAV file to a complex signal, which can, for example, be done with a simple GNU Radio flow graph.
GNU Radio
Connecting GQRX with GNU Radio is the most advanced usage. Instead of just using a tool, GNU Radio allows to build a custom receiver.
This can be supported by GQRX through splitting the process in two steps. First, a WAV file is captured for offline signal analysis and prototyping of the receiver. Once the receiver works, the switch to an online decoder is seamless.
The GNU Radio flow graph might start with something like this.
For offline signal analysis, the top branch is active, while the bottom branch is used for the live receiver. In the latter case, the signal conversion might be a bit tricky, as the fixed point samples from GQRX have to be converted to 32-bit floats and resampled, which can be done with a command like this.
ncat -l -u -p 7355 |
sox -t raw -esigned-integer -b 16 -r 48000 -
-t raw -efloat -b 32 -r 48000 - |
ncat -u 127.0.0.1 7777
I really like this workflow and used it to build receivers for various signals from, for example, my car’s key fob, the telemetry from public transportation, and mobile traffic lights (see the projects page if you are interested).
This video shows my receiver for mobile traffic lights with GQRX as it’s GUI frontend in action.
I also uploaded the slides in case someone is interested.