I’ve been dabbling with APRS ever since I upgraded my mobile radio a few years ago. I’ve since added an APRS capable handheld radio to my equipment too.
All of my transmitted position reports are picked up by someone else‘s receivers, which is nice but seems a bit one sided. I had a spare Raspberry Pi 3B and a cheap RTL-SDR dongle, so I decided to try building an APRS-to-internet gateway of my own.
The process is quite easy:
- Install an operating system – I used Raspberry Pi OS Lite
- Attach to the internet (I used the built in wireless LAN in the Raspberry Pi 3B) and update everything
- Install Direwolf – I used the packaged version from my OS
- Install the rtl-sdr package
- Put my callsign, location and beacon information into Direwolf’s configuration file
- Use the rtl_fm command to tune and demodulate signals from the SDR and then pipe them into Direwolf
At first it seemed like the receiver wasn’t working. My test transmissions were being decoded and shown in the terminal but they didn’t seem to be making it to the internet. Instead they were always shown on the map as being picked up by another APRS gateway in the next village rather than my own.
However, everything was fine. The APRS internet service is clever enough to de-duplicate multiple reports of the same RF packet. Obviously my Raspberry Pi 3B, WiFi and ISP combination is slower than whatever hardware the owner of the other gateway is using, and so they kept winning. Once I connected my test transmitter to a dummy load, so that it wouldn’t be heard in the next village, my own receiver’s reports showed up instead.
I feel slightly bad for building yet another receive-only APRS gateway. APRS is much more functional (allowing stations to send two-way messages globally, for example) if there are transmitting gateways too. Maybe I should build one of those at some point…