A backyard site running TLeconte acarsdec ACARS decoder on a Raspberry Pi Zero.
The goal was to piggyback an ACARS radio and decoder onto a Pi Zero that is forwarding ADS-B packets from another ADS-B receiver to open-source ADS-B sites Opensky Network and ADSB Exchange. Since the Zero has a free USB port, the theory is that it should have the processing power to handle one SDR.
TL;DR: Script that does all the following is here.
Detailed instructions follow.
Excellent instructions at satsignal.eu. Distilled down here:
sudo apt-get update sudo apt-get upgrade sudo printf 'blacklist dvb_usb_rtl28xxu\nblacklist rtl2832\nblacklist rtl2830' > /etc/modprobe.d/nortl.conf sudo apt-get install git-core sudo apt-get install git sudo apt-get install cmake sudo apt-get install libusb-1.0-0-dev sudo apt-get install build-essential git clone git://git.osmocom.org/rtl-sdr.git cd rtl-sdr mkdir build cd build cmake ../ -DINSTALL_UDEV_RULES=ON make sudo make install sudo ldconfig cd ~ sudo cp ./rtl-sdr/rtl-sdr.rules /etc/udev/rules.d/ git clone git://github.com/MalcolmRobb/dump1090.git cd dump1090 make sudo reboot
cd /usr/local/src git clone https://github.com/szpajder/libacars.git sudo apt-get install zlib1g-dev libxml2-dev cd libacars/ mkdir build cd build cmake ../ make sudo make install sudo ldconfig
git clone https://github.com/TLeconte/acarsdec cd acarsdec mkdir build cd build cmake .. -Drtl=ON make sudo make install
The following is simple command line output. It will keep the command and window open for as long as your session does not time out. I've had this running for weeks at a time
That's it! You should periodically see cryptic looking messages pop up on your screen. More usage instructions, including different ouput formats, can be found on the github page.
Options! Options! Additional operational options.
But the above less useful for unattended operation, or for logging purposes, or daemon-like usage. To "set it and forget it" put the command somewhere in your startup scripts -- either run it as a service/daemon via init/systemd... or just throw it into rc.local or crontab. (Examples courtesy of [satsignal.eu]:
where options: -g == gain in tenths... so 480 is a gain of 48 (sdr limit is umm 49 I believe) -r == device index, if you have multiple devices, which is unnecessary on Pi Zero but is good practice. 0 is first SDR device and so on -l == file to log output, if you would prefer that instead of screen this is useful for unattended operation. you can set up your site to check this file from a web browser, por ejemplo -j == send copy of output in JSON format to host and port -n == send copy of output in PlanePlotter format to host and port -N == send copy of output in acarsdec format to host and port 111.222.333.444 == IP address of server to forward messages to >/dev/null == sends the initial startup messages to the aether, essentially quiet output 2>&1 == sends error messages to same place as output, essentially quiet output
To send json to a remote server and port:
To send planeplotter format to a remote server and port:
To keep logs by date and to put initial status message to a generic log file:
Here are the ACARS frequencies to tune. My notes for USA frequencies follow. Originally taken from the acarsd site
Frequency | Region / Country | Seattle Area Monitoring notes |
---|---|---|
131.550 | Primary Channel worldwide | GOOD; primarily ARINC |
130.025 | Secondary channel for USA and Canada | GOOD; more descriptive messages |
129.125 | Additional channel for USA & Canada | listened for a few minutes; no traffic |
130.425 | Additional channel for USA | listened for a few minutes; no traffic |
130.450 | Additional channel for USA & Canada | listened for a few minutes; no traffic |
131.125 | Additional channel for USA | listened for a few minutes; no traffic |
136.700 | Additional channel for USA | |
136.750 | Additional channel for USA | |
136.800 | Additional channel for USA | |
136.850 | SITA North American Frequency | listened for a few minutes; no traffic |
131.450 | Primary channel for Japan | |
131.475 | Air Canada company channel | |
131.525 | European secondary | |
131.725 | Primary channel in Europe | |
136.900 | European secondary | |
136.750 | New European frequency | |
131.850 | New European frequency |
CPU Loads, typical
configuration | running apps | typical CPU usage | notes |
---|---|---|---|
ADS-B "repeater" mode |
|
5% to 7% | dump1090 runs net-only (no local SDR), accepts data from another Pi collecting ADS-B messages, forwards data to Opensky and ADSB Exchange |
ADS-B repeater ACARSdec local |
acarsdec monitoring 3-4 frequencies |
acarsdec uses 50% to 53% CPU total usage is 53-65% load avg > 1.00 |
acarsdec local output to the command line; ADS-B forwarding as noted above |
ADS-B repeater ACARSdec local |
acarsdec 131.550 130.025 | acarsdec uses 28% to 35% CPU total usage is 30-37% |
acarsdec local output to the command line; ADS-B forwarding as noted above |
ADS-B repeater ACARSdec repeater |
acarsdec monitoring 2 frequencies |
acarsdec uses x% to x% CPU total usage is % |
acarsdec local output to the command line |