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.
Download the ARM variant tar archive, and extract it:
Since I am working through ssh, copy the folder to pi:
pat@edge:~$ scp -r /home/pat/acarsdeco2_pi firstname.lastname@example.org:/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
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"
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”.