One of my favorite things about SDR is that it democratizes the radio spectrum and gives people the ability to listen in and decode various messages. My latest project has been to setup a Raspberry Pi to give me the ability to track airplanes that are in my area using the ADS-B system. You can purchase a FlightAware stick to help you receive ADS-B signals. The newer ones are both an SDR device and a filter for the 1090 MHz band. However, I have an RTL-SDR that needed a job and the receive range for this dongle includes the ADS-B 1090 MHz band.

What is ADS-B?

ADS-B, or automatic dependent surveillance-broadcast, is the protocol used by airplanes to report their position. Airplanes use a satellite tracking system to determine their location then broadcast that information down to air traffic control ground stations and to other planes. It can also be used as a secondary surveillance radar system by ground stations. In addition, other aircraft can use it for situational awareness. Wiki provides a good definition for one of its goals: “ADS-B enhances safety by making an aircraft visible, realtime, to air traffic control (ATC) and to other appropriately equipped ADS-B aircraft with position and velocity data transmitted every second.”

The problem to solve here is:

  1. How can I receive signals on the 1090 MHz band?
  2. How can I decode the messages?
  3. How can I display the aircraft?

When the build was completed, the hardware and software came together quite nicely and I was off to the races in no time. Below is a screenshot of the final working system.

The first thing I needed to do was figure out my antenna. The reason I started here was that I already knew that my Raspberry Pi and the RTL-SDR dongle would do the trick for the decoding of the messages and displaying of the aircraft. Luckily, this part proved to be rather easy because I had the multipurpose dipole antenna kit that RTL-SDR sells. Using the smaller 5cm to 13cm telescopic antennas, I was able to fashion a dipole by extending each antenna on the dipole to 6.8cm.

To decode and display the information you can use a package from FlightAware called PiAware. There are two different options here: 1) you can create an image for your microSD card that will install everything for you, or 2) you can install the packages on an existing Rasberry Pi. I chose the latter option and you can find instructions here.

The instructions will take you to through a few package installs and a reboot. After that, you plug in your RTL-SDR and antenna and you’re off to the races. The PiAware package will provide a web interface to see the active planes in your area. I chose to do this while air traffic is low due to COVID-19, however, I’m still seeing a solid stream of airplanes in my area. My antenna is only about 6ft off the ground so I’m only seeing planes that are up to 50 miles away. To improve my reception I can get a better antenna and install it in a higher location so that I get a full 360 degree view of the sky.

This has been a fun project and I enjoy seeing what is overhead. When I hear a plane nearby I can bring up the web interface on my phone and get details about the each flight. Interesting to see how active UPS, FedEx, and private planes are right now!