ADS-B for Fun and Profit

Years ago, in a previous job, I built some software to analyze ADS-B data to do some predictive analysis around flight arrivals. Back then, this was a much harder thing to get access to, as software-defined radios were very much in their infancy, and “legit” radios for it were outrageously expensive. I’ve always harbored a curiosity about aviation, and when I noticed that FlightAware was offering a kit, called PiAware , I couldn’t help but pick one up.

It showed up just a couple days later.

Installation was pretty trivial:

  1. Image a microSD card for the included RaspberriPi Zero W. They even thoughtfully included a USB-A to microSD adapter for this.
  2. Putting the card in and assembling the included case (note to the reader, this was premature).
  3. Attach the small SDR included (Pro Stick Plus ) to the other micro USB with the included USB-A plug to micro USB adapter.
  4. Plug the included powersupply into the other micro USB and let it power on (Pi Zeros do not have power switches).
  5. Attach the included external attena to the SDR. I put this in a window for now, which has a relatively unobstructed view.
  6. After a few minutes, I was able to follow the instructions and use Bluetooth capabilities in Chrome (not Safari unfortunately) to discover the device and attach it to my IoT network.
  7. Wait a few minutes (5?), you can claim it on the FlightAware website.

All of this ran smoothly. Then, I decided I wanted to install Tailscale onto the device so that I could access it easily from anywhere (plus the IoT network is very tightly limited). Attempting to SSH into the device proved fruitless, until I found a note that you need to add a file to the boot partition to enable SSH , which meant I had to pull the case open, pull the card, and update it.

After a few minutes, we were back online, and it was showing as reporting to the service. But, I still couldn’t access it. Long story short, I had device isolation turned on on that network (which prevents devices from talking to one another) and I didn’t have any routing between my normal home network and the IoT network, except for a few small things. After fixing that, everything works smoothly, and the device has been picking up 100-250 ADS-B messages per second, and the farthest one so far was about 150 nautical miles.

Next, was getting Tailscale running, which just meant following this clear instructions on their website. Then, a quick sudo tailscale up --ssh to connect and enable their magical SSH handling . Now it’s available on my phone from anywhere on the planet.

In addition to the website (which you can see your data from anywhere in the world), there is also a local version of the app:

Screenshot of PiAware software running locally

I’m looking forward to playing with it, and also digging into the real-time data feeds that are available directly from the device. Those are reasonably well documented on FlightAware’s website.

Overall, super impressed with how this has worked. In addition to the fun toy, they also generously give you an Enterprise subscription in exchange for sharing your data with them. Bonus!