Building a Raspberry Pi ADS-B Ground Station

In this post I’ll show you how to build a Raspberry Pi powered ADS-B ground station receiver that can track aircraft over 100 miles away using a small USB software-defined radio dongle.

This ground station is very easy, and inexpensive to build and it will open your eyes to some of the amazing uses for SDR.

Plus, by feeding data from your ground station to FlightAware’s aircraft tracking network you will receive a free enterprise account which normally would cost $90 per month.

Raspberry Pi ADS-B Ground Station Receiver

What is ADS-B?

ADS-B (automatic dependent surveillance-broadcast) is a system which allows equipped aircraft to transmit their callsign, altitude, heading, GPS position, squawk number, and speed.

The ADS-B signal is broadcast at 1090MHz and can be received by a receiver with line of sight to the sending aircraft.  The range of these signals is typically 100 – 200 miles depending on aircraft altitude and the location of the ground station antenna.

ADS-B is also unencrypted and unauthenticated which means anyone with a receiver can easily receive, and decode the information.

Under FAA regulation 14 CFR 91.227 aircraft must be equipped with ADS-B avionics equipment by January 1st, 2020 in order to fly in the majority of US airspace.

Software Defined Radio

The key piece of technology which makes this project possible is a small USB dongle made by NooElec that contains the R820T2 chip made by Rafael Micro.  This chip is an IC radio frequency tuner with an impressive range of approximately 25MHz to 1750MHz!  The frequency of the tuner can be controlled through software, hence the name software defined radio.

These dongles are essentially a modified version of a USB DVB-T receiver sold for receiving over the air TV signals in Europe.

Besides receiving ADS-B transmissions these dongles can be used for everything from exploring the RF spectrum to receiving images from NOA weather satellites.

RTLSDR on Reddit is a great source for more information and ideas for additional projects.  You may also want to check out The Hobbyist’s Guide to the RTL-SDR.

NESDR Mini 2

Benefits of Operating a Ground Station

Whether you’re an aviation enthusiast or just someone interested in identifying the aircraft flying over your house there are several perks to building an ADS-B ground station receiver.

By sharing your ADS-B data with FlightAware you will receive a free Enterprise Account (normally $90/month).  Enterprise users gain access to live (non delayed) data, as well as historical flight data, alerts, and many other benefits

Raspberry Pi ADS-B Ground Station Parts List

The list below contains all of the parts you will need to build your own ADS-B ground station receiver.

Required ItemsQuantity
Raspberry Pi Model 2 B1
NooElec NESDR Mini 2 USB RTL-SDR Receiver1
Sandisk Ultra 16GB Micro SDHC Card1
Ethernet Cable1
 Micro USB Power Supply Wall Charger (or a nearby USB port)1

 

I’ve found that cheap telescoping antenna included with the NooElec dongle performs surprisingly well for receiving ADS-B transmissions, my station can track planes up to about 100 miles away depending on their altitude.

If you want to get even better range you can purchase an upgraded antenna made specially for 1090MHz transmissions.

Optional UpgradesQuantity
Edimax Wi-Fi USB Adapter1
 1090MHz ADS-B Antenna (26in)1
 N female to MCX male right angle adapter1
 HABAmp 1090Mhz/ADS-B Filter & Preamp For Dongles1

 

Mounting the antenna outside will further enhance the range for your ground station.

User Spfoamer on Reddit built a self contained outdoor receiver using a waterproof enclosure, quater wave ground plane antenna, and a 1090 MHz bandpass filter.

Spfoamer's outdoor ADS-B ground station
Spfoamer’s outdoor ADS-B ground station

Step 1:  Load the PiAware Image on the SD Card

The quickest way to get started is to download the PiAware disk image based on Raspbian that contains all of the required software and drivers.

To image the SD card I recommend using Win32 Disk Imager for Windows users, and RPI-sd card builder for Mac users.

Load PiAware Image

Step 2:  Connect the Components and Boot the Pi

Insert the imaged SD card into your Raspberry Pi and connect the NooElec SDR dongle, micro USB power cable, and ethernet cable.

Connect your antenna of choice to the MCX connector on the NESDR dongle.

Once the Pi finishings booting it will automatically start the piaware service , connect to the internet, and begin feeding ADS-B data to FlightAware.

Pi SD Card

Step 3:  Claim your Ground Station

To claim your FlightAware ADS-B ground station you will need to register for an account.  After completing the registration process you can log in and claim your station.

Once you’ve successfully claimed your station FlightAware will begin processing the ADS-B data you send them and your account will automatically be upgraded to an enterprise subscriber.

FlightAware Account

Troubleshooting Steps

It may take about 10 minutes before your Pi station is available to claim on the FlightAware website.  If it doesn’t show up on the site there are few things you should check.

  • Make sure the Pi has an active internet connection (via ethernet cable or wireless)
  • Check the status of the piaware service to make sure it is running (service piaware status)
  • Scan the USB bus to see if the NooElec dongle is detected (lsusb | grep DVB-T)
  • Run the piaware-status command (as root)
  • If the PiAware service fails to start check the log file for more information (/tmp/piaware.out)
  • Make sure the correct FlightAware username and password is configured.  The credentials can be updated using piaware-config.
    • piaware-config -user
    • piaware-config -password

PiAware Troubleshooting

Viewing the Ground Station Statistics

Once you ground station has been claimed FlightAware will begin collecting statistics for all of the data it uploads to the tracking network.  You can view your ADS-B collection stats from your FlightAware account.   After about 24 hours of operation you’ll start to get a good view of the range of your ground station.

My ADS-B station in Kansas City identifies on average about 300 different aircraft per day within my range.  Of these aircraft 90% are less than 60 miles away and about 10% are within 60 – 120 miles.

The dashboard also keeps track of the number of aircraft seen, and positions reported on an hourly and daily basis. FlightAware Ground Station Statistics

The PiAware service running on the Pi can also be accessed directly through the web server running on port 8080.  On this page you can view all of the aircraft which are currently being tracked by the ground station.

Clicking on the individual aircraft on the map will display detailed information about the flight including a link to the flight details on the FlightAware website.

PiAware Web Interface

The easiest way to find the local IP address of your PiAware station is to log into your account look in the site information section for your ADS-B station.

FlightAware ADS-B Site Information

Closing Thoughts

I was quite surprised by the range of ADS-B reception I was able to obtain with the NooElec dongle and a tiny antenna located in a spare bedroom of my home.

Next I plan to look into the feasibility of mounting a better antenna either outside, or in my attic to improve my signal reception.

I’m also quite intrigued by Simon Aubury’s Pi Plane Project which integrates a servo mounted camera for producing video footage of aircraft that travel within sight.

If you’ve built an ADS-B station leave a note in the comments and let me know how it’s performing.

 

Sam Kear

Sam graduated from the University of Missouri - Kansas City with a bachelors degree in Information Technology. Currently he works as a network analyst for an algorithmic trading firm. Sam enjoys the challenge of troubleshooting complex problems and is constantly experimenting with new technologies.

3 thoughts on “Building a Raspberry Pi ADS-B Ground Station

Leave a Reply

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