Unix TLM decoding

Unix TLM (Telemetry) decoding

When visiting the decoding block diagram and the sound-modem pages almost all examples are based on Microsoft Windows. On this page you can find information so you can start to experience the same result but then with a Unix based operating system. Examples are: Linux, BSD, OS X and others.

Below a decoding example where we receive and decode the GRIFEX cubesat with the help of a RTL-SDR dongle, Gpredict for satellite tracking and Doppler control, GQRX as a SDR receiver, direwolf as a sound-modem TNC and the GRIFEX ground station software connected via the direwolf kiss server.

gpredict-gqrx-decode
Decoding example: GRIFEX GMSK data.

Unix TLM Decode Block
Unix TLM decoding block.

We will use the following software that is available as source or binary package.

Gpredict is a real time satellite tracking and orbit prediction program written using the Gtk+ widgets. Gpredict uses the SGP4/SDP4 algorithms, which are compatible with the NORAD Keplerian elements.

The main purpose of this article is to help the reader with tracking Satellites and decoding the data that is received and therefore I am at this point not going to explain how to setup the general functionality of GPredict.

With the help of GPredict one can setup automatic doppler control. In this example we are using GQRX as a SDR receiver and we want GPredict to auto correct the receive frequency (doppler correction) to get this working we need to configure some radio interfaces within GPredict.

Interfaces:

Below is the interface configuration to connect GPredict to GQRX so the tuning frequency is controlled by GPredict. Here we configure GPredict to connect via tcp port 7356 to GQRX.

gpredict-radio-gqrx
GPredict GQRX radio control.

For GQRX to receive the remote control from GPredict, we have to make sure that GQRX will listen on the right tcp port. This can be done via remote control settings.

gqrx-remote-controle
GQRX remote radio control.

GPredict to GQRX remote control, for this to work we have to enable the remote control option from GQRX. When this is done you can select radio control from GPredict and select to target and enable track and engage. When this is configured and selected in the right way you will see the tuning frequency being altered by GPredict radio control.

gqrx-remote-controle-enable

gqrx-network-audioGQRX audio streaming.

The audio output from GQRX can be streamed via a UDP 7355 session and be connected on the otherside of the stream by for example Direwolf sound-card modem software. But it can also be in combination with for example nc (netcat) to pipe the stream to another program like baudline to analyze received data is also possible.

After enabling IPv6 on my network I ran into the following problem, direwolf wasn’t working anymore when using udp forwarding. Finally I found a solution by altering localhost with 127.0.0.1. This forced the stream back to IPv4.

Redirect audio via udp stream to direwolf:

user@server:~/$ direwolf -r 48000 -B 1200 udp:7355
Dire Wolf version 1.2
Audio input device for receive: udp:7355  (channel 0)
Audio out device for transmit: default  (channel 0)
Channel 0: 1200 baud, AFSK 1200 & 2200 Hz, E+, 48000 sample rate.
Note: PTT not configured for channel 0. (Ignore this if using VOX.)
Ready to accept AGW client application 0 on port 8000 ...
Use -p command line option to enable KISS pseudo terminal.
Ready to accept KISS client application on port 8001 ...

Redirect audio to baudline via nc (netcat)

user@server:~/$ nc -l -u 7355 | baudline -samplerate 48000 -stdin

baudline-aprs
baudline via nc.

Redirect Audio from one application to another with Pulse Audio Volume control.

Upon opening pavucontrol, you will find a number of tabs, which allow you to set the playback and recording device for each application connected to the PulseAudio sound server. When you select a recording device for an application, you should also see a number of ‘Monitor’ devices. These allow you to record from what is normally an output device (i.e. your speakers).

Below is how I’ve configured GNURadio (showing up as Python) to record from my sound card, and fldigi to record from a Monitor device of my speakers. This way I can pipe any demodulated audio received from GNURadio straight into fldigi, where I can attempt to decode it.

Pulse Audio Volume control

Credits

GQRX and GPredict are designed and written by Alexandru Csete OZ9AEC. Direwolf is written by John Langner WB2OSZ. Baudline under development of SigBlips DSP engineering.


November 18, 2015 version 0.1 – Initial setup.
November 19, 2015 version 0.2 – Add decode block.
December 9, 2015 version 0.3 – Add Pulse Audio Volume control.
February 3, 2017 version 0.4 – direwolf remark when IPv6 is enabled.