I wanted to build an iGate base station that would not tie up a radio... and I had SDRs lying around...
The ultimate goal was to be as low power as possible, thus I started with the RaspPi Zero W. TL;DR this didn't work so I moved up models and settled on the standard 3B+ because that's what worked.
Other sites with installation instructions that I referenced before wandering off on my own.
TL;DR download and run my script:
More detailed, manual version:
0. Read over the references below. They are good. These instructions are basically a synthesis of those.
1. Install an image. I used Raspbian Stretch (9) because that's what I had lying around on my desktop.
2. Log into or SSH into your machine.
3. Install and build Osmocom RTL-SDR At this other page you will find great,detailed instructions... don't worry that it's ADS-B not APRS, the basic drivers are the same.
4a. Install and build WB2OSZ Direwolf if that is the method you want to use to log in to APRS (this is what I did). Instructions are on the GitHub page. Annoyingly, this puts the configuration files in your user home directory, which you may be fine with. This annoys me, so my aforementioned script moves the conf files to /usr/local/etc where the gods intended them to be installed.
4b. Install and build Elias Oenal's multimon-ng if you do not want to use Direwolf. I don'trecommend this route for logging into APRS because you'll have to install another python app that's built on top of this one. HOWEVER, go ahead an build this app because it is a nice one for local monitoring and testing.
Install and build asdil12's pymultimonaprs. Follow the instructions in the README file.
Configure /etc/pymultimonaprs file per instructions in the README.
5. Calibrate your SDR to find the PPM offset. This is a good idea. For the life of me I could not get kalibrate-rtl to compile. So I am just running on luck.
Maybe this this one will work?
Or maybe this one...
wget -qO - https://github.com/asdil12/kalibrate-rtl/tarball/arm_memory | tar zxvf - cd asdil12-kalibrate-rtl-b3060b5 ./bootstrap ./configure --prefix=/usr/local make sudo make install
6. Test and then run the whole chain of things as explained below.
You have two choices...
To use direwolf for demodulating/decoding and sending to APRS-IS, do the following.
The following command line works well for testing. Although you can also run your iGate perfectly fine this way. There will be an endlessly open terminal and occasionally scrolling packets for your monitoring pleasure. :) Be aware that if your terminal closes for whatever reason, your iGate will go down with it.
rtl_fm -f 144.39M - | direwolf -c /path/to/sdr.conf -r 24000 -D 1 -
The sdr.conf controls some parameters, such as credentials for properly iGateing to APRS-IS.
For a permanent and automated station, you'll probably want to run this as a service that starts on bootup. You can do this using the standard (e.g. systemd) that your system uses to run services -or- you can put this command in your /etc/rc.local script -or- you can run the dw-start.sh command via crontab.
For testing, the following command lines use multimonNG for demodulating/decoding. It is handy for testing, troubleshooting, and local monitoring as it echoes a neat, clean one-liner per APRS packet. Note that the following does not forward anything to the APRS gateway; it is local.
This runs it in "APRS mode": neat, crisp, one-line sentences that are suitable for iGate-ingNext, run the following, which runs the above and chains that to the final piece: logging into APRS.IS and sending your received packets to the network map. You should see your own packet and others' scrolling by.
This runs it in some kind of other business: more verbose, probably for human-eyeball reading and not suitable for iGate-ing
You should see decoded signals coming in on the screen. This means your SDR is receiving packets from other stations.
To run for realz, follow the instructions in the pymultimonaprs README to run this as a system service. The install script should install the system service script in the correct place. You will have to tell systemctl to reload so that it rereads the newly installed script.
Finally, tell the service to start, properly.
Things should be running properly. You can check the status via systemctl. In the output, you will see that the commands above used for manual testing will be running automatically invoked by the pymultimonaprs service:
Finally finally, to tell the service to start everytime the machine boots, do the following:
Note: The /etc/pymultimonaprs file contains static lat/lon position for the iGate. This means that you will have to edit this if you move your iGate to a new position.
SSID RECOMMENDATIONS: It is very convenient to other mobile operators or others looking at callsigns flashing by, to be able to recognize some common applications at a glance. Here are the recommendations for the 16 possible SSID's (the limit of 16 comes from the 4 bits available in the AX.25 protocol. Note, The SSID of zero is dropped by most display applications. So a callsign with no SSID has an SSID of 0. -0 Your primary station usually fixed and message capable -1 generic additional station, digi, mobile, wx, etc -2 generic additional station, digi, mobile, wx, etc -3 generic additional station, digi, mobile, wx, etc -4 generic additional station, digi, mobile, wx, etc -5 Other networks (Dstar, Iphones, Androids, Blackberry's etc) -6 Special activity, Satellite ops, camping or 6 meters, etc -7 walkie talkies, HT's or other human portable -8 boats, sailboats, RV's or second main mobile -9 Primary Mobile (usually message capable) -10 internet, Igates, echolink, winlink, AVRS, APRN, etc -11 balloons, aircraft, spacecraft, etc -12 APRStt, DTMF, RFID, devices, one-way trackers*, etc -13 Weather stations -14 Truckers or generally full time drivers -15 generic additional station, digi, mobile, wx, etc * One-way trackers should best use the -12 one-way SSID indicator because the -9's usually mean a ham in full APRS communication both message and voice. The -9's can be contacted by APRS message or by Voice on his frequency included in his beacon, or on Voice Alert if he is in simplex range. The -12's are just moving Icons on the map and since they have no 2 way communication for ham radio they are not generally of routine interest to other operators.