Create an APRS iGate on a Raspberry Pi

Not everything we do here at Catalina Technology deals with system integration. We have other hobbies as well. Using ham radio to communicate globally, without the internet is a pretty interesting skill and has come in handy during recent outages of cellular coverage, power outages, etc. Below is a quick overview of how to setup an APRS iGate on a raspberry pi. APRS is a form of packet radio that allows you to send data over a radio to other radios that can receive and repeat your message. You can send messages as well as location. An iGate is a gateway that will then send your packets to the internet.

1. Install Linux on your Raspberry Pi

2. Get the accessories for your Pi

I used this USB sound card for the pi:

I used this sound cable:

and since I either use a baofeng or my kenwood HT for this, I use this cable:

3. Install Direwolf

First, I would make sure that everything is up to date:

sudo apt-get update && sudo apt-get upgrade -y

Then I would install direwolf (This way, you don’t have to compile it.  It just installs the latest version):

sudo apt-get install direwolf

4. Edit your direwolf.conf file

Set the device of the card
aplay -l
arecord -l

Line 86  (NOTE:  it may not be line 86 if the version has changed. Just look for the ADEVICE plughw keyword)

Line 86 will appear similar to

#ADEVICE  plughw:0,0

You will need to update this to match your device. In this example with Card 2 Device 0, the line will change to

ADEVICE plughw:2,0

This is what it looks like in my config file:

Set the callsign

Line 141 You will want to change the callsign. A fresh direwolf.conf file will look similar to this on line 141


Change to your callsign and ssid.

This is what it looks like on my machine:

Set your lat/long: I look at and hover where I want to get a location. I am hovering over Scotch Bonnet to get lat/long

Once you get your location, change every lat/long in the direwolf.conf

This is my location for PBEACON. Also note that I am setting a comment that I want associated with my digipeater.  You will want to change this to.  You only have to change the item that is not commented out with a #

Here is where I am beaconing to the IGate.

Just search through the file to make sure that all callsign and lat/long have been changed besides these.  I think I have them all in this doc.  But just be sure 😊

5. Set dirwolf to autostart at boot

On the pi you have just installed direwolf run the following command to install tmux

sudo apt install tmux

Create a system unit by creating the following file


NOTE: you will probably have to sudo your editor to do this since this is a privileged location.  I use vi as my editor (I am old school), so I would create my file doing this:

sudo vi /etc/systemd/system/direwolf.service

You would insert the following in your newly created file

Description=Direwolf [Service]
#Modify the end of the line below to fit your own needs i.e path to your configuration file ExecStart=/usr/bin/tmux new-session -d -s direwolf ‘/usr/local/bin/direwolf -c /home/YOURCALL/direwolf.conf’
Restart=always [Install]  

NOTE:  make sure that the path to the direwolf.conf exists (i.e. I am assuming that you will have this in the /home/youruser directory.)

Then save your file

Enable the service by typing the following command

sudo systemctl enable direwolf.service

  • If everything went ok, you can now try to start the service by the following command (You can use this any time you want to start the service manually – i.e. if you stopped it manually or if it has crashed or something)

sudo systemctl start direwolf.service

  • You can check the status of the service by the following command

sudo systemctl status direwolf.service

If the direwolf service is healthy, it should look similar to this (<ctrl>+c will escape you out):

You can stop the service by the following command

sudo systemctl stop direwolf.service

If you want to attach to the service and have direwolf output display to your terminal session:

sudo tmux attach -t direwolf

Should look similar to this (you can see output — <ctrl>+c will escape you out):

Catalina API for Dynamics SL Timeouts