KB9IQX ACARS Receiver

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.



Equipments:



Setup:

TL;DR: Script that does all the following is here.

Detailed instructions follow.

  1. Install Osmocom rtl-sdr
  2. 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
            
  3. Install libacars
                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
            
  4. Install acarsdec
                git clone https://github.com/TLeconte/acarsdec
                cd acarsdec
                mkdir build
                cd build
                cmake .. -Drtl=ON
                make
                sudo make install
            


Operation

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.

acarsdec -g 480 -r 0 131.550 130.025

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]:

acarsdec -l /path/to/logfile -j 111.222.333.444:12345 -g 480 -r 0 131.550 130.025 >/dev/null 2>&1 &

 
   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:

acarsdec -l /path/to/logfile -j 111.222.333.444:port -g 300 -r 0 131.550 130.025

To send planeplotter format to a remote server and port:

acarsdec -l /path/to/logfile -n 111.222.333.444:port -g 300 -r 0 131.550 130.025

To keep logs by date and to put initial status message to a generic log file:

acarsdec -l "/path/to/$(date +"%Y%m%d").log" -r 0 131.550 131.025 > "/path/process-acarsdec_RSP.log" 2>1&



ACARS Frequencies

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

Operating Notes:

CPU Loads, typical

configuration running apps typical CPU usage notes
ADS-B "repeater" mode
  • dump1090-fa (FlightAware version)
  • opensky-dump1090
  • ADSB Exchange MLAT client
  • lighttpd web server
  • MQTT subscriber
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