| Flight Tracking at Charles de Gaulle Airport |
What I needed was a stand-alone computer, SDR dongle and antenna that could be dedicated to flight tracking 24/7. Enter the Raspberry Pi 3B+, a tiny, inexpensive single-board computer that can run a variety Debian-Linux based operating systems on 32 and 64 bit architectures. To go with the Raspberry Pi, I also purchased a FlightAware Pro-Stick Plus, which is similar to the RTL-SDR Blog V4 dongle, except it is specifically designed to collect flight data, instead of all-purpose SDR data. Those two pieces of hardware, along with an antenna, power and USB cables, are really the only pieces of hardware necessary to set-up a stand-alone ADS-B client that works in perpetuity, rather than only when my laptop is in-use. With this setup, I could use any computer on my local network to retrieve the flight data, and view flights on a map by connecting to my Raspberry Pi's IP address. I even went a step further by adding two LCD displays, so I could check out overhead air traffic anytime at my desk or at the kitchen table.
| Raspberry Pi 3B+ running PiAware |
At first I wasn't sure my AI assistant, ChatGPT, GPT model 5.5, was up to the task. I typed "How do I setup ADS-B flight tracking on my Raspberry Pi 3B+", and got fairly straight-forward step-by-step instructions for installing and running Dump1090, a popular data translator for ADS-B radio signals. I followed the instructions, but ultimately kept hitting various snags. However, I consistently reported each issue I ran into, and ChatGPT continued to troubleshoot. Our ultimate conclusion was the Raspberry Pi's newest 64 bit "Trixie" operating system was interfering with Dump1090 in some way. ChatGPT determined this by indexing web results and finding that other users had the same problem with Trixie. What ultimately solved the issue was re-flashing the Pi with the older, simpler 32-bit "Bookworm" operating system. This solved the main issue, and Dump1090 began running successfully bringing raw flight data and displaying it in the SSH terminal.
Still, each time I ran Dump1090, a new issue surfaced. It was mostly due to driver issues related to using the RTL-SDR Blog V4 as well as missing directory files. Ultimately data stopped coming through Dump 1090 entirely, and I only found out after using an alternate RTL-SDR V3 that my V4 had probably broken at some point during installation and testing. So, I ended up purchasing both a general purpose Nooelec "Nesdr Smart" SDR dongle as well as the FlightAware Pro-Stick Plus. In my experience both the Nooelec and FlightAware sticks worked more easily than the RTL-SDR Blog V4, and I no longer had to worry about updating or installing drivers and directory files to get them to work. Once Dump1090 was installed successfully on the Pi, the Nooelec and Flightaware sticks were plug-and-play!
| SDR sticks I used |
The final step was to set-up a flight map to display on my household LCD screens so I could look at my local overhead flights anytime I wanted. I used one Chinese-made iPistBit 7 inch LCD screen and connected it to my Raspberry Pi board with an HDMI cable. Once the operating system was visible on the touch screen, I used a iPazzPort Bluetooth Keyboard and Trackpad to navigate to the Chromium browser, and connect to the PiAware URL provided by FlightAware to see my data converted to a map with images of all planes flying overhead in real time. I then cloned the same operating system, applications and settings onto a second Pi and connected it to the other LCD screen so I could have two displays, one for upstairs and downstairs. Additionally, any browser on any device connected to my home Wifi network will be able to pull up my PiAware URL and display the same maps and data. I included more comprehensive step-by-step instructions below, so you can follow my process, If you'd like...
Building an ADS-B Flight Tracker with a Raspberry Pi 3B+ on Debian Bookworm
I recently built a working ADS-B aircraft tracker using a Raspberry Pi 3B+, a USB RTL-SDR receiver, and FlightAware’s PiAware software. After a few false starts with outdated repository links, I got the setup working on Raspberry Pi OS / Debian Bookworm.
This guide walks through the successful setup.
Hardware Used
For this project I used:
Raspberry Pi 3B+
MicroSD card with Raspberry Pi OS / Debian Bookworm
RTL-SDR USB dongle
1090 MHz ADS-B antenna
Internet connection
SSH access or a keyboard and monitor connected to the Pi
Step 1: Confirm the OS Version
On the Raspberry Pi, open a terminal and run:
cat /etc/os-releaseThe successful setup was done on Bookworm. You should see something similar to:
PRETTY_NAME="Raspbian GNU/Linux 12 (bookworm)"Step 2: Update the Raspberry Pi
Before installing anything, update the system:
sudo apt update sudo apt full-upgrade -y sudo rebootAfter the reboot, reconnect by SSH or open the terminal again.
Step 3: Install the FlightAware Repository
Download the current FlightAware APT repository package:
wget https://www.flightaware.com/adsb/piaware/files/
packages/pool/piaware/f/flightaware-apt-repository/flightaware-apt-repository_1.3_all.debInstall it:
sudo dpkg -i flightaware-apt-repository_1.3_all.debThen refresh the package list:
sudo apt updateThis step is important. Earlier attempts using older package names failed with 404 errors or “file not found” messages. The key was using the current FlightAware repository package.
Step 4: Install PiAware
Install PiAware:
sudo apt install piaware -yThen enable automatic and manual updates:
sudo piaware-config allow-auto-updates yes sudo piaware-config allow-manual-updates yesStep 5: Install dump1090-fa
PiAware sends data to FlightAware, but
dump1090-fais the software that actually receives and decodes 1090 MHz ADS-B signals from aircraft.Install it with:
sudo apt install dump1090-fa -yThen reboot:
sudo rebootStep 6: Check That the RTL-SDR Dongle Is Detected
After rebooting, plug in the RTL-SDR dongle and run:
lsusbYou should see a device related to RTL-SDR, RTL2832U, Nooelec, or RTLSDR Blog, depending on your dongle.
You can also test with:
rtl_testIf you see a “device busy” error, that may actually mean
dump1090-fais already using the dongle, which is good. Only one program can use the SDR at a time.Step 7: Check the Services
Run:
sudo systemctl status piaware sudo systemctl status dump1090-faBoth should show as active or running.
If needed, restart them:
sudo systemctl restart piaware sudo systemctl restart dump1090-faStep 8: Open the Local SkyAware Map
Find your Raspberry Pi’s IP address:
hostname -IThen open this in a browser on the same network:
http://YOUR-PI-IP/skyaware/For example:
http://XXX.XXX.X.XXX/skyaware/If everything is working, the SkyAware map should load. Aircraft will appear when your antenna receives ADS-B messages from nearby planes.
Step 9: Claim the Receiver on FlightAware
After PiAware has been running for a few minutes, go to FlightAware’s ADS-B stats page and claim the receiver while logged into your FlightAware account.
Once claimed, FlightAware will associate your Raspberry Pi receiver with your account and begin showing site statistics.
Troubleshooting Notes
Problem: Old repository package gives a 404 error
If a command tries to download an older package such as:
piaware-repo_10_all.deb piaware-repository_10_all.deb piaware-repo_9.0_all.deband it fails, use the current
flightaware-apt-repository_1.3_all.debpackage instead.Problem: “Unable to locate package piaware”
This usually means the FlightAware repository was not installed correctly, or
sudo apt updatewas not run after installing it.Fix:
sudo dpkg -i flightaware-apt-repository_1.3_all.deb sudo apt update sudo apt install piaware -yProblem: “Device or resource busy”
This can happen when another service is already using the SDR dongle. Stop competing services if needed:
sudo systemctl stop fr24feed sudo systemctl stop readsb sudo systemctl stop piaware sudo systemctl stop dump1090-faThen test the dongle again, or restart the FlightAware services:
sudo systemctl restart dump1090-fa sudo systemctl restart piawareProblem: Map loads but no aircraft appear
This can happen if:
No aircraft are nearby
The antenna is indoors or poorly placed
The SDR is not connected properly
The antenna is not tuned for 1090 MHz
dump1090-fais not runningCheck with:
sudo systemctl status dump1090-faFinal Result
Once everything was installed correctly, the SkyAware map loaded and aircraft appeared on the local map. The Raspberry Pi 3B+ was successfully receiving ADS-B data through the RTL-SDR dongle and feeding the data to FlightAware through PiAware.
This turned the Raspberry Pi into a small, low-cost aircraft tracking station.
One of the most helpful steps ChatGPT included was the command code lines "sudo systemctl status dump1090-fa", which tested the Dump 1090 software to make sure it was running, and "sudo systemctl restart dump1090-fa" which would re-start tracking in case the process was stopped.
Once my system was up and running, and I had my own personal ADS-B flight tracking system. I set-up a FlightAware account and linked my feed. So, now I am officially an ADS-B client for FlightAware, meaning my data is being used to fill in up-to-date flight data for thousands of users who use flight tracking apps worldwide. So, if you're ever tracking a flight over Northeast Ohio, it might by my system that is collecting information from that plane!
If you're interested in reading more, check out my March 2024 article, "RTL-SDR: Home-Made Air Traffic Control" about my early ADS-B systems, and how I set them up. Additionally, check out Cubicalruins' new-and-improved "What's Up There?" flight tracking widget on the right. This will give you a live feed of the airplanes my system tracks daily. Just click any plane for it's callsign, telemetry and flight data.
