Setting up an APRS RX only iGate using a Raspberry Pi, RTL-SDR dongle and a pre-built image

After my previous post, it was suggested that an easier way to set up a receive only APRS iGate would be to provide a pre-built image which only needs slight tweaking to go live.  That seemed like a good idea to me so I’ve prepared an image that just requires a handful of configuration changes which I will go through in detail below.

The entire process detailed here should take less than half an hour to complete.
You will only need to edit two or perhaps three files in total.

First, download my custom built Raspberry Pi image from here or preferably as a torrent from here.  This is a 1.6Gb file which will expand to approximately 4Gb when you decompress it.  Unzip it and write it to an SD card.  You don’t need a high capacity SD card, this image will fit on a 4Gb card and work perfectly.  This image is fully up to date as of 3rd February 2017.


There are two methods of downloading the Raspberry Pi image. The first is direct from SourceForge and the second is as a torrent.  If you use the torrent method, please seed the file for as long as possible because the more people who seed, the quicker the download will be for others.
Thank you.

MD5 of aprs-igate.zip is dde367dc0db9365b84850fcdc46519e4
MD5 of aprs-igate.img is 93060310c5a5c4a3a46822944dc0401f

Connect your RTL-SDR dongle and a network cable to your Raspberry Pi and boot it.  I thoroughly recommend you use a dongle with TCXO as it won’t drift in frequency and you shouldn’t need to do any frequency calibration.  I’m using an RTL-SDR R820T2 RTL2832U 1PPM TCXO SMA Software Defined Radio (Dongle Only) device which is the latest model, complete with TCXO.  Other dongles are available such as this NooElec version from Amazon which is a little cheaper and will arrive quicker or you can search eBay for similar dongles.

You will need to know what IP address your Raspberry Pi has on the network.  I do this by looking at my router and checking what devices have connected and then set up a DHCP reservation so each particular Raspberry Pi I own will always have the same address each time it reboots.

Open up a terminal/dos prompt or whatever client software you’re going to use to connect to the Raspberry Pi and log in.  In my case, the Raspberry Pi is on 192.168.1.144 so I use the command
ssh pi@192.168.1.144

You’ll be prompted for a password – It’s currently set to raspberry.
Use the following command to enter the Raspberry Pi config utility:

sudo raspi-config

Expand the filesystem by pressing enter on option 1 then select OK and you’ll be returned to the main screen.

Use the arrow keys to move down to the second option Change User Password and press enter.  Press enter again and you will be prompted to Enter new UNIX password.  Type a new password, press enter and re-type your new password again.  You will get a message telling you your password has been changed successfully.

Use the arrow keys again to move down to Localisation Options and press enter.  Use the arrow keys again to select Change Timezone and press enter.  First select your Geographical area and press enter and then select your Time zone and press enter.

You will now be returned to the main Raspberry Pi Software Configuration Tool main screen.  Use the tab key to select <Finish> and press enter.  You will be asked if you would like to reboot now.  Press enter to reboot.

You will need an APRS passcode so use the APRS Passcode Generator at Magicbug to generate one.

All the software has been pre installed, all you need to do is edit two (or possibly three) files.

cd ~
sudo nano sdr.conf

Scroll down to line eight and change the xxx to your callsign and required SSID.  I use -10 as my SSID so this line reads MYCALL G6NHU-10.  Please use your own callsign, mine is just shown as an example.

In the section below, edit the line starting with IGSERVER to be the correct one for your region.  I’m in Europe so my line reads IGSERVER euro.aprs2.net

Scroll further down and you’ll find a line that starts with IGLOGIN.  Change the xxx to be the same as the callsign you entered above (including SSID) and then change the numbers 123456 to the passcode you obtained from the APRS Passcode Generator.

At the bottom of that file there is one long line that starts with PBEACON.  Replace xx.xxxxxx with your latitude, yyy.yyyyyy with your longitude and zz with your callsign (including SSID).

Save the file by pressing ctrl-x, then hit the Y key and then press enter.

You can now perfom a test using the following command
(144.800 is the APRS frequency in the UK, change as required).

rtl_fm -f 144.80M - | direwolf -c sdr.conf -r 24000 -D 1 -

If all is well, you should see something like this.

Initial test of the Raspberry Pi and RTL-SDR Dongle APRS RX only iGate

Initial test of the Raspberry Pi and RTL-SDR Dongle APRS RX only iGate

Press ctrl-c to exit the test.


*** UPDATE – READ THIS IF YOU GET AN ERROR WHEN RUNNING THE TEST ***
I’ve had some feedback that on some older model Raspberry Pis, you may get an error when you try and run the initial test.  The error ends:
Signal caught, exiting!

User cancel, exiting…
Illegal instruction

If this happens, you need to redownload and compile Direwolf using these commands (copy and paste them one at a time exactly as written below:

cd ~
sudo cp sdr.conf sdr.old
sudo rm -r direwolf
git clone https://www.github.com/wb2osz/direwolf
cd ~/direwolf
make
sudo make install
make install-rpi
make install-conf
cd ~
sudo mv sdr.old sdr.conf

Now reboot your Raspberry Pi and run the test again.

If you do reinstall Direwolf, please be aware that version 1.4 will be installed and that version won’t autostart using this method.  if this happens, I recommend you start from scratch using the updated image and instructions here.


You may find that rtl_fm doesn’t report that it’s tuned to exactly the correct frequency, this is nothing to worry about because the RTL-SDR works by mixing the incoming RF with a local oscillator and then IQ sampling the resulting base-band (difference) signal.  The local oscillator therefore needs to be offset a little so that the wanted signal doesn’t fall at the 0Hz point.  rtf_fm automatically selects an appropriate offset for the chosen sampling rate and displays the resulting “offset oscillator” frequency, not the actual “tuned” frequency.

If your local APRS frequency is NOT 144.800MHz then you will need to edit an additional file.
cd ~
sudo nano dw-start.sh

You’re looking for this line.


Change 144.80M to whatever your local APRS frequency is.
Save the file by pressing ctrl-x, then hit the Y key and then press enter.

The last thing to do is to configure the system so that the APRS iGate starts automatically whenever you reboot the Raspberry Pi.  Enter the following command:
crontab -e

Scroll down to the bottom and you will see the following line.
#* * * * * /home/pi/dw-start.sh >/dev/null 2>&1

Delete the # at the start of that line.
Save the file by pressing ctrl-x, then hit the Y key and then press enter.

Reboot your Raspberry Pi and once it’s restarted, it will automatically connect to the APRS network and operate as a receive only iGate. Nothing will be echoed to the display while it’s running like this so you can check your status on aprs.fi by searching for the callsign you entered (including SSID).  You don’t even need to log into the Raspberry Pi, the gateway will start automatically within ninety seconds of rebooting.

It’s been mentioned that you might like to calibrate the frequency of your RTL-SDR dongle.  I didn’t and I didn’t notice any performance issues but it’s likely that if you’re using an older or cheaper dongle then it might be a little off frequency.  If you’d like to do this, it’s very straightforward to do requiring that you edit just one file.  I’ve written some instructions which you can see by clicking here.

Please note – I am not claiming originality for this setup method, I’ve simply followed what’s already available out there on the internet and created an image based on those instructions for your convenience.  My two source documents were Raspberry Pi SDR IGate and Raspberry Pi Packet TNC.  I thoroughly recommend you familiarise yourself with both of them to see what’s been done here.  You can also read my previous blog article where I list each command I used to create this image.  It’s also worth downloading the full Dire Wolf user guide.

I hope this image is useful and as always, I’d appreciate any feedback, comments or thoughts below.

This entry was posted in Amateur radio, APRS, Data, FM, How to ..., Raspberry Pi, VHF and tagged , , , , , , . Bookmark the permalink.

130 Responses to Setting up an APRS RX only iGate using a Raspberry Pi, RTL-SDR dongle and a pre-built image