For fun, I run a rx-only APRS iGate at home. My setup consists of:
A Tram 1154 5/8-wave amateur radio antenna
A Nooelec RTL-SDR receiver dongle (and UHF-MCX adapter cable)
A Tinkerboard running Armbian and Direwolf.
All told, it’s about $100 in parts (including case and SD card and all that),
which doesn’t seem so bad. The rtl_fm
and direwolf
processes take
about 3-5% of the CPU power of the board, or about 10-20% of one core; a more
modest CPU could certainly function, but my brief attempt at using a 600MHz
Kirkwood found that it could not keep up with the audio stream.
I don’t have a great view of the sky in my flat, but I hear the local environs reasonably well, at least, as well as a local WIDE digi.
Ultimately, though, I hope to have the RTL-SDR able to listen to several channels as well as pushing its data into direwolf for igate operation. I have not figured out how to do that yet, sadly.
RTL-SDR Calibration¶
I made use of https://github.com/viraptor/fm_tune and
https://github.com/steve-m/kalibrate-rtl to measure the crystal error in my
RTL-SDR (the -p
parameter to rtl_fm
, below). These tools are
delightfully straightforward.
Direwolf Configuration¶
Since this is an RX-only IGATE and does not use a traditional radio+soundcard setup,
most features are turned off. Some parameters have been [omitted]
:
# No audio device
ADEVICE null null
CHANNEL 0
IGSERVER euro.aprs2.net
IGLOGIN KD8GIN [omitted]
# no incoming packets, ideally
IGFILTER
# it is not possible to explicitly state that we cannot tx, but the default
# configuration is to load ->tx_chan with -1, so by omitting igtxvia, we
# will indicate our rx-only nature
# IGTXVIA -1
# Every 120 minutes, send a position report to the IGate connection
# R& is RX-only IGATE
PBEACON EVERY=120 SENDTO=IG LAT=[omitted] LONG=[omitted] SYMBOL=R& COMPRESS=1 COMMENT=[omitted]
runit scripts¶
Direwolf is overseen by runit
. The main run
script is
#!/bin/bash
mkdir -p /var/log/direwolf
chown direwolf:direwolf /var/log/direwolf
abort() { kill -s TERM -$(jobs -p) ; }
set -m
trap abort EXIT
# Use 144.8M for UK, 144.38M for USA
chpst -u direwolf:direwolf:plugdev rtl_fm -o 4 -p 11.060 -f 144.8M |
chpst -u direwolf:direwolf direwolf -c /etc/direwolf/sdr-igate.conf -r 24000 -D 1 -