A simple receive-only HF APRS IGate howto
There seems to be a lack of simple, up-to-date tutorials/howtos on APRS, and even less for APRS over HF.
This is my attempt to fill that gap. I'm still learning about APRS, so if there's anything wrong, please get in touch, and I'll update it.
This howto will only cover running a receive-only IGate. Once I get successful regular decodes, I might investigate what all the WIDE stuff is and add a second tutorial for digipeating.
Because I run Linux, I'm not going to use any Windows- or Mac-only software so I'm going to use Direwolf, which seems to be the "industry standard" for APRS on Linux.
If you've done APRS on VHF/UHF before, it's a slightly different beast. Those are done over FM, so being
slightly off-frequency doesn't matter.
On HF, it's done via SSB, and being off frequency can mean you don't make a decode.
Also, APRS doesn't have any Forward Error Correction in it, so you have to have fairly strong clear signals to decode.
You'll often hear an APRS squawk, and nothing will be decoded.
I cloned the repository from GitHub and compiled it myself.
Hamlib support is only needed for transmitting, so you can ignore that for now.
I think it was as easy as:
git clone https://github.com/wb2osz/direwolf cd direwolf/ make
I think I only needed to install a single dependency - your mileage may vary
sudo apt-get install libasound2-dev
Save the following config in a file
ADEVICE plughw:2,0 ACHANNELS 1 CHANNEL 0 MYCALL XXXXX MODEM 300 1600:1800 7@30 /4 AGWPORT 8000 KISSPORT 8001 # noam.aprs2.net - for North America # soam.aprs2.net - for South America # euro.aprs2.net - for Europe and Africa # asia.aprs2.net - for Asia # aunz.aprs2.net - for Oceania IGSERVER euro.aprs2.net IGLOGIN XXXXX 000000
Select the correct soundcard
I do this by running arecord -l and using the correct value from there.
If you're like me, you only have two soundcards - the normal one in the computer , and the one supplied by the USB connection to the radio , so there can't be too many options.
However, you don't want to spend days waiting for a decode only to find that you were listening to the wrong input, so it's worth getting right.
They can change too. If I start my laptop with the radio switched off or not plugged in, the laptop soundcard is 1,0. Then when I plug the radio in, it appears as 2,0.
But if I start it with the radio on, and the USB connected, the USB soundcard is 1,0, and the laptop soundcard is 2,0.
It's worth checking each time. This has caught me out before and has wasted a lot of time. There must be a way to tell Linux what order you want the soundcards in - I will investigate.
Replace XXXXX with your callsign at the MYCALL and IGLOGIN lines
Set the internet gateway
Select the appropriate IGSERVER from the list above.
You'll also need to generate a passcode for your login (shown as 000000 in the example config file). Search online, and you'll find a way of doing this. No-one else seems to link directly to it for some reason, so I won't either.
Tune the radio
Direwolf doesn't do any radio control, other than (optionally) PTT.
Tune radio to 14099.6, 10147.6, or 7032.6 USB as desired.
Start it with the following command line:
direwolf -t 0 -p -B 300 -c /path/to/direwolf-igate.conf
You should see something that looks like this:
Dire Wolf version 1.5 Includes optional support for: hamlib Reading config file /path/to/direwolf-igate.conf Audio device for both receive and transmit: plughw:1,0 (channel 0) Channel 0: 300 baud, AFSK 1600 & 1800 Hz, D, 44100 sample rate / 3. 0.0: D 1510 & 1710 0.1: D 1540 & 1740 0.2: D 1570 & 1770 0.3: D 1600 & 1800 0.4: D 1630 & 1830 0.5: D 1660 & 1860 0.6: D 1690 & 1890 Ready to accept AGW client application 0 on port 8000 ... Ready to accept KISS TCP client application 0 on port 8001 ... Virtual KISS TNC is available on /dev/pts/3 Created symlink /tmp/kisstnc -> /dev/pts/3 Now connected to IGate server euro.aprs2.net (184.108.40.206) Check server status here http://220.127.116.11:14501 [ig] # aprsc 2.1.4-g408ed49 [ig] # logresp XXXXXX-0 verified, server T2EUSKADI
Waiting, waiting, waiting
Now you sit back, and wait for hours and hours for someone to transmit some APRS clearly enough for a
If you're used to digimodes like PSK, Olivia, FT-8 or WSPR, it'll be very frustrating how many times you hear some APRS, and it doesn't decode.
A single pop/crackle and the decode fails. Because of this, short APRS messages are more likely to be picked up
If you're lucky enough to decode some APRS successfully, it's my understanding that it should be sent to the
IGate server specified by IGSERVER.
It then appears on https://aprs.fi/
30m seems to have the most activity on it.
Xastir is an APRS client for Linux. It looks pretty ugly, and is a bit clunky, but it's free, and seems to work.
You can now run Xastir, and connect it to the running direwolf server.
To configure it to connect to Direwolf Interface -> Interface Control, Add Serial KISS TNC
- Activate on startup
- DON'T allow transmitting
- 300 bps
- Allow RF to Inet traffic only
- Full Duplex, Init on startup
Don't forget to "Start" the interface.
There other configuration options, but these should be fairly obvious
Still to find out
- I have yet to understand what benefit Xastir brings.
- I don't understand what the "groups" are used for. These are the alternatives to the 1600:1800 spacing.
- I need to understand all the WIDE stuff (although the defaults in Direwolf and Xastir seem to work fairly well)
If this works for you, you could set up a digipeater.