5
June
2025
Running the RTL-SDR receiver for APRS IGate on Linux
17:23

Running the RTL-SDR receiver for APRS IGate on Linux

5 June 2025 17:23

Continued articles. This time I added DireWolf for APRS to RTLSDR.

Initial data

Transmitting side (walkie-talkie)

  • Baofeng UV-5r
    *APRS K-1 cable
  • smartphone
    *APRSdroid

Receiving side (stationary personal computer - IGate)

*Linux Mint 21.3

  • ezcap RTL-SDR
  • rtl_fm
  • DireWolf

Using the rtl_fm console utility and the aplay command to receive FM radio

The rtl_fm utility allows you to transfer the result of audio demodulation to stdout. The rtl_fm command is included in the rtl-sdr package (previously installed). But to play, you need to use a separate aplay command from the alsa-utils package, which works with “raw” data. Pipeline data at 128k sample rate

rtl_fm -M wbfm -f 87.5M -r 96k - | aplay -c 2 -r 48000 -f S16_LE

where -M wbfm - modulation
-f 87.5M - частота
-r 48k - частота дискретизации выходного "сырого" потока
-o 4 - Oversampling output by: 4x.
- - - вывод в stdout
-c 2 - число каналов - стерео
-r 48000 - частота дискретизации выходного файла
-f S16_LE - формат входных данных

Stereo for WFM:

rtl_fm -M wnfm -f 87.5M -s 220k -r 96k -A std -F 2 | aplay -c 2 -r 48000 -f S16_LE

Mono (much less noise):

rtl_fm -M wnfm -f 87.5M -s 220k -r 48k -A std -F 2 | aplay -c 1 -r 48000 -f S16_LE

where
-s 220k - частота дискретизации по входу
-r 48k - частота дискретизации данных по выходу
-A std - режим расчёта atan
-F 2 - улучшенный режим FIR
-c 1 - один канал

console

Narrowband frequency modulation (NBFM) demodulation

To receive narrowband FM, you need to modify the command line parameters.

For output to a sound card, frequency 432.500 MHz for APRS:

rtl_fm -M fm -f 432.5M -r 24000  - | aplay -c 1 -r 24000 -f S16_LE

Transferring audio from rtl_fm to Direwolf for APRS

Installing DireWolf on Linux

Since the repository contains the latest version of DireWolf 1.6, I did not compile it, but installed it from the Linux Mint repository.

sudo apt-cache showpkg direwolf
sudo apt install direwolf

Setting up DireWolf

1) Copy /etc/direwofl.conf to the working folder ~/direwolf,conf

2) Correction of the ADEVICE line in the ~/direwolf.conf file to null null

direwolf_conf

3) Dire Wolf launch line with audio transmission from rtl_fm (for APRS decoding)

rtl_fm -M fm -f 432.5M -r 24k - | direwolf -c ~/direwolf.conf -r 24000 -D 1 -dgit

where are the parameters of the rtl_fm call

-M fm - narrowband FM modulation
-f 432.5M - reception frequency (or 144.8M for the 2 meter range)
-r 24k - sampling rate

direwolf call parameters

-c ~/direwolf.conf - configuration file indicating ADEVICE call sign
-r 24000 - input data sampling rate
-D 1 - divide (Divide) the input data into 1 channel (since this is mono, the number is 1)
-dgit - debug (-d) the following parameters: "g" - GPS interface, "i" - IGate, "t" - tracking beacon - location tracker,
- - audio input from stdout

Transmitting and receiving APRS packet

On the smartphone I launched APRSdroid (version 1.6.3d) downloaded from the APRSdroid website.

In Baofeng, VOX level 1 setting, APRS-K1 cable.

On the computer - an SDR USB receiver, where the audio output, after demodulation from RTLSDR using rtl_fm, is fed through the console to the input of direwolf - an APRS packet decoding program.

Result

The APRS packet was successfully received by RTLSDR and decoded by Dire Wolf.

igate

Sources:

Configuring rtl_fm and Direwolf for decoding Amateur Radio Packet on the Raspberry Pi
Direwolf on a Raspberry Pi with RTL-SDR