Following on my previous article on my quick and dirty APRS tracker I was brimming with confidence and decided to tackle the task of setting up an APRS IGate.

All I needed was a spare 2m receiver and a convenient computing engine, i.e., a PC of sorts. I engineered a simple solution to interface the radio to a Raspberry PI with a USB sound card. Before putting it all together I came to the sudden realisation that I have an old USB DVB-T dongle lying around. Interesting thing is that I bought it years ago to listen to ham frequencies and then boxed it after a very fun filled afternoon. I only just realised that we’ve never had DVB-T transmissions in South Africa. Why were these being sold locally?

Back on point, I decided to implement the RTL USB dongle with a Raspberry PI as my IGate. Tragedy struck, or more accurately, I realised I left my PI at the office. Fortunately, my old server still booted up, albeit a bit slowly.


The physical layout is immensely simple. RTL USB dongle, in this case, VideoMate U620F, plugged into the USB port of my trusty server (old hand me down headless AMD machine). That’s kinda it for the physical construction. I’m still using the original wire antenna supplied with the USB dongle while testing.


These days it seems there is almost no need for any difficult hardware implementations. All of it happens in software.

In this case, I needed to install the RTL Software Defined Radio packages on Ubuntu. This would take care the demodulation and present an audio stream derived from the narrow band FM signal on 144.800 MHz (the APRS frequency in use in South-Africa).

The next package would take care of relaying received APRS messages. Conveniently there is a package called direwolf that not only decodes AX.25 APRS messages but also acts as the IGate.

root@Media:~# apt-get install direwolf rtl-sdr

The config needed to make this work is stored in /etc/direwolf.conf.

LOGDIR /var/log/direwolf

ADEVICE null null



MODEM 1200

IGSERVER euro.aprs2.net


PBEACON sendto=IG delay=0:30 every=15:00 symbol=”igate” overlay=R lat=-25.84091699999999 long=28.159347000000025 COMMENT=”144.800 MHz Rx Only | DireWolf 1.3 on PC+SDR”

The above is all I added to make it work. The important bits are your call sign, passcode (http://apps.magicbug.co.uk/passcode/index.php)  and location and comment.

In order to get the RTL dongle and direwolf to communication I added a small script to init.

rtl_fm -f 144796.5e3 -s 24000 -l 0 – 2>/var/log/direwolf/rtl_fm.log | direwolf -c /etc/direwolf.conf -t 0 -n 1 -r 24000 -b 16 – 2> /var/log/direwolf/error.log 1>/var/log/direwolf/output.log &

This starts up the RTL dongle on the correct frequency and feeds the audio output to direwolf. Notice that my frequency is specified as 144.7965 MHz. It turns out most of these RTL dongles have ever so slightly different clock frequencies and it is necessary to compensate for this error. I chose the easy way and just modified the frequency. There is an option to feed rtl_fm a correction factor, but I was in too much of a hurry to figure out how it works.

ZS6IO-9 audio level = 56(11/13) [SINGLE] __:::____
[0.3] ZS6IO-9>APDR13,WIDE1-1:=2550.46S/02809.55E>022/001/A=004783 http://aprsdroid.org/ Paul Greeff – Nissan Hardbody
Position, normal car (side view), APrsDRoid replaces old APAND1.
S 25 50.4600, E 028 09.5500, 1 MPH, course 22, alt 4783 ft
http://aprsdroid.org/ Paul Greeff – Nissan Hardbody


[ig] ZS6IO-11>APDW12:!2550.46SR02809.56E&144.800 MHz Rx Only | DireWolf 1.3 on PC+SDR

The above is the output of the direwolf log file showing first a position report from my Nissan Hardbody, and secondly, its regular update with it’s own position and description to the APRS network.


And there you have it, my QTH on APRS.fi.

Leave a Reply

Your email address will not be published. Required fields are marked *