Manually Adding AcarsDeco2 to ADS-B Receiver on Rasperry Pi

With the ADS-B Receiver project running on Raspberry Pi 3, it has been rewarding accessing track logs over SQL. As shown below, an RTL-SDR dongle and whip antenna in the living room neatly reports overhead flights, according to the original goal.

But with 3 international airports all within 30 miles, the next step was reach the runways.  I recently received Flightaware Pro Stick Plus with antenna in the mail to replace the RTL-SDR. Tuesday marks the before/after.

This freed up the RTL dongle to revisit ACARS messages (Aircraft Communications Addressing and Reporting System), and if it can be integrated with ADS-B Receiver Project. I started with AcarsDeco2 running on a dev machine and logging to the Pi’s MySQL database. With everthing working there, here are the steps to manually implement AcarsDeco2 on Raspberry Pi 3 running the latest Rasbian.

Installing AcarsDeco2

Download the ARM variant tar archive, and extract it:
https://forum.planefinder.net/threads/acarsdeco2-up-to-3-channels-acars-sdr-receiver-for-rtl2832-dongle.157/

Since I am working through ssh, copy the folder to pi:

pat@edge:~$ scp -r /home/pat/acarsdeco2_pi pi@192.168.1.103:/home/pi

Assign FlightAware Dongle to Dump1090

Next, install the RTL-SDR dongle and reboot. In my case, I could tell immediately that dump1090 began to use this dongle for ADS-B traffic–this is not good. To check this:

pi@raspberrypi:~ $ cd acarsdeco2_pi
pi@raspberrypi:~/acarsdeco2_pi $ ./acarsdeco2 --device-list
AcarSDeco2 v.20150718
Available Devices:
0 mnf: Realtek prod: RTL2838UHIDIR serial: 00000001
1 mnf: Generic prod: RTL2832U serial: 77771111153705700

…where Realtek device 0 is RTL-SDR dongle. This is fixed by changing the default argument in the startup script:

pi@raspberrypi:~ $ cd /etc/init.d
pi@raspberrypi:/etc/init.d $ sudo nano dump1090-mutability

Add –device-index 1 to ARGS. Save and reboot.

ARGS="--measure-noise --device-index 1"

Install Acarsdeco2-parser

pi@raspberrypi:git clone https://github.com/MartinDejmal/acarsdeco2-parser.git

Use the messages.sql example to create the new table in MySQL; I called this table “adsb.acars_messages” and did this in MySQL Workbench.

acarsdecoparser.py needs to be edited for MySQL credentials and table name. Note that this only works in Python 2.7 environment. (print and socket both have issues in Python 3).

Run as a Service on Startup

pi@raspberrypi:~ $ sudo nano /etc/rc.local
/home/pi/adsb-receiver/build/portal/python/flights-maint.sh &

/home/pi/adsb-receiver/build/portal/python/maintenance-maint.sh &

/home/pi/acarsdeco2_pi/acarsdeco2 --gain 64 --freq 131550000 --freq 131122000 --http-port 8080 --udp 127.0.0.1:9742 --net 30008 &

python2.7 /home/pi/acarsdeco2-parser/acarsdecoparser.py &

Everything is working except for the local web portal on port 8080 which reports “404 Not found”.