FlightAware Flight Tracking Project

I’ve been interested in aircraft since 2014 mainly since my job at the time had me flying all over the country. I learned to identify aircraft simply by looking at them and who originally registered an aircraft by its N-number (in the US, the FAA issues N-numbers for the life of the aircraft while it’s in the United States. So for example, N854NW is an Airbus A330-223 registered to Delta Air Lines but was originally registered with Northwest before Delta acquired them) and then soon how to track them with sites like flightaware.com.

Flight Aware is a pretty cool service. If you don’t know what it is, you can pop in a flight number and see details of that flight such as where and when it took off from (including if it took off early, on time, or delayed), where and when it landed, how high, how fast, and actual flight path. You can even view a live view of the country and select a flight right now.

Providing data to Flight Aware

One of the cool things that you can do is build a flight tracking station fairly cheap and then feed this data into Flight Aware. To do this, you’ll need a few inexpensive materials.

Bill of Materials

  • Raspberry Pi 4 $99.99 (CanaKit 4 GB) (Amazon)
  • Flight Aware Pro Stick $18.75 (without on-board filter) (Amazon)
  • ADS-B Dual 978 MHz and 1090 MHz SMA Filter $14.95 (Amazon)
  • Dual Band 978 MHz and 1090 MHz Antenna $10.99 (Amazon)

Total cost: $144.68 (without tax).

Notes: If you have the parts, you don’t need a full Raspberry Pi kit. I don’t have the parts so I opted for the kit. This can make the total cost cheaper. I also opted for the non-plus Flight Aware stick. The pro has a filter, though in urban areas I’ve heard you might also need the external dual band filter. Either way, having a filter doesn’t hurt.

Create a Flight Aware Account

Here’s where there is some benefit to providing data to Flight Aware – you get an Enterprise account for free (a $89.95/month value).

Just join Flight Aware and create a free account if you don’t have one.

Build your Pi

Assemble your Pi (if you have a kit). My CanaKit came with an SD card already flashed with NOOBS so I used NOOBS to install Raspberry Pi OS since I want to use my Pi occasionally for other things, too. Eventually I’ll get a second Pi to run this full time and use the PiAware install – but in my case, I did a manual PiAware install. This just installs dump1090 from Flight Aware’s repo which is pre-configured to talk to Flight Aware.

At this point, enable SSH access and VNC access.

Enable SSH and VNC in Raspberry Pi Configuration utility.

Having remote access to your Pi is important since you’re probably going to not keep it attached to a monitor/TV. Not to mention, with the Flight Aware stick, all USB ports are blocked. So unless you have a bluetooth keyboard and mouse, you’re not going to be able to do anything with the stick installed. Seriously.

Seriously – you’re not getting anything in those USB ports. Virtical USB ports would be nice.

VNC for GUI Remote Connections

Before we go further, we need to tweak VNC. First, install VNC viewer on your computer. I went with Tight VNC.

Once Tight VNC is installed, open it up and type in the IP address of your Pi and click on connect or press enter.

Review the ID check – this should match what was displayed on your Pi when you enabled VNC. Click continue.

Login using your Pi user and password. On some VNC clients, it may say the username and password is not the same as the one you use to login to the remote computer. In this case, it is.

If everything is successful, you should see your desktop and be able to interact with it just as if there was a monitor attached.

If you’ve rebooted your Pi since installing VNC and there’s no monitor attached, if you attempt to connect to VNC without applying some tweaks, you’ll get “Cannot currently show the desktop”.

Bugger.

Just SSH into your Pi and run sudo raspi-config.

Scroll down to number 7 Advanced Options using your arrow key and press enter.

Then, using your arrow key, scroll down to A5 Resolution and press enter. Select a resolution and then hit escape a bunch of times until you’re back at your terminal.

Issue the command sudo reboot to reboot your Pi. Once it comes back up, you should now be able to VNC in.

You’re clear for take off

Now that we have remote access to our Pi, plug in your Flight Aware stick and connect the antenna. If you ordered the Flight Aware Pro stick (orange), you will definitely need the filter, especially in urban areas. If you order the Flight Aware Pro Plus stick (blue), it has a built in filter. You won’t need the external filter unless you live in a crazy RF area. Thanks to an inventory mess up at Amazon, I ended up getting a Flight Aware Pro Plus and I found in my apartment, I don’t need the filter.

Attach the filter to the stick and the antenna to the filter like this:

They only connect one way so you can’t mess this up.

Once that’s done, plug the whole assembly into your Pi. I’d recommend a lower USB port since this definitely has some weight to it.

It’s heavier than it looks.

If you have the blue stick, just attach the antenna and pop it in.

Claim your PiAware Client

By now your Pi will have reached out to Flight Aware and you should be able to claim your device:

PiAware – Claim and Link a Brand New PiAware Ground Station – FlightAware
Best Flight Tracker: Live Tracking Maps, Flight Status, and Airport Delays for airline flights, private/GA flights, and airports.

You’ll either need to login or create a new account. If you created an account, this is where it’ll convert to an Enterprise account.

If everything is working, you’ll begin to see data populated on your stats page:

To configure MLAT, you’ll need to adjust your settings. Select the gear icon on your site stats. Set your location (receiver location). I did manually enter location where you drag a pin on a map. If you know your coordinates, you can enter those.

Set your nearest airport and enable MLAT.

Now go to your local PiAware page: http://<localIP>:8080 and you’ll have a nice map.

From here, you should start to see aircraft, assuming there are aircraft near you. I turned off my location marker, but as you can see there’s no aircraft showing for me. That’s because at 11:51 PM on the east coast, most flights are done for the day. Late night I’ll usually pick up the local Labcorp flight between the two major cities I live between. I’ve also enabled the weather overlay. This is the best feature to me. Live weather!

During the day, you’ll see the aircraft your antenna picks up. This is where you’ll be able to tell if you need the filter or not. If you see aircraft in the list to the left but not on your map, you’ll need the filter for sure. Or if you look at flightaware.com and see aircraft over your location but none on your map, you’ll need the filter.

Antenna and location is also key. I picked up a cheap antenna and because I’m in an apartment and can’t easily stick this antenna on the roof, it’s taped to the edge of my desk near my window. There are some blind spots but I get a good 50-100 nautical mile reach in the NNE/NE direction and the NNW/NW direction.

You really do provide data!

This is the cool part – sometimes your station will be the best one that Flight Aware gathers data from. Remember that local Labcorp flight I mentioned? If we look at the track log for it:

I blurred the reporting airports for privacy, but you see that long blurred line/highlighted line? That was my station reporting that data from that plane to Flight Aware as it flew nearby!

And if you’re curious during the day, view your stats page on Flight Aware and you can see the flights that you contributed to in the last hour.

Wrap Up

Well, that’s it for now. Use this project to learn more about radios, aviation, and Raspberry Pi! I hope you found this educational and fun!

This is especially a fun project you can do with kids since it’s inexpensive, teaches them some Linux, and what kid doesn’t love airplanes? Even the big kids do! 😉

Leave a Comment

Your email address will not be published. Required fields are marked *