########## APRS IGate ########## 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 -