Eric Tran is an Engineering Manager at FlightAware. He leads a team within FlightAware’s Operations and Reliability group that is responsible for building and maintaining our global network of ADS-B receivers.
This blog was posted back in 2021. Since then, we've added many new receivers and have seen increased interest in FlightAware's ADS-B Network. With this in mind we updated some aspects and wanted to reshare the content. In addition, we have new posts in the works that go deeper into the technical aspects of ADS-B engineering at FlightAware, so stay tuned! - Eric T.
How It Started
In the early 2000s, there was an emergence of a new aircraft surveillance technology known as Automatic Dependent Surveillance–Broadcast, or ADS–B. This new technology eventually replaced radar as the main surveillance method for tracking aircraft. Aircraft with ADS-B transponders obtain their location from GPS and broadcast it on the 1090 MHz and 978 MHz frequency, which allow air traffic control (ATC) to receive this data and use the information to manage nearby airspace.
The original founders of FlightAware took advantage of this new opportunity and created an ADS-B receiver that could receive and process this raw flight data and forward it to FlightAware over the Internet. As technology developed over time, we’ve engineered more cost effective, performant receiver solutions that allowed us to scale our network to over 35,000 nodes across the world, all of which are hosted by a community of dedicated volunteers.
What’s in our ADS-B Receivers?
The Hardware
The core components consist of a Raspberry Pi Computer, a USB RTL2832U Software Defined Radio (SDR), and a 1090 MHz antenna. We developed our very own line of SDRs, which we call the Pro-Stick and Pro-Stick Plus. While both models have built-in RF amplifiers to maximize ADS-B performance, the Pro-Stick Plus has a built-in 1090 MHz filter to reduce noise in high RF environments.
FlightAware provides two ADS-B hardware solutions. The first is an open-source solution, called PiAware, that anyone can build themselves with full autonomy by gathering the hardware and loading FlightAware ADS-B decoding software on it. The other solution is called FlightFeeder, which is manufactured by FlightAware. The FlightFeeder is self-configuring and remotely managed by FlightAware, allowing us to provide software updates and troubleshooting support.
The Software
At a high level, there are four software components that work together to provide the main functionality of our ADS-B receivers. These components are responsible for decoding and processing aircraft signals, transmitting the tracking data to FlightAware, and providing a map interface to display the aircraft the receiver is picking up in real-time. All the software is open-sourced and can be found on FlightAware's Github.
dump1090-fa is the program that demodulates and decodes aircraft transponder messages received from a connected RTL2832-based Software Defined Radio. To consume this data, clients can connect to specific network ports to stream the decoded messages in a variety of formats. Examples of the data formats and their respective ports:
- TCP port 30002 for raw/unparsed messages in AVR format
- TCP port 30003 for parsed messages in BaseStation format
- TCP port 30005 for raw/unparsed messages in Beast binary format
The information that can be derived directly from these aircraft messages includes position, altitude, squawk code, aircraft identification, airborne vs ground messages, speed, heading, roll, and more. With additional server-side processing, we can use this data to derive other information like weather.
piaware is the program responsible for formatting and relaying aircraft data to FlightAware servers. It starts up at boot-time and connects to localhost:30005 to consume the Beast formatted data from dump1090-fa. It then establishes an encrypted TLS connection with FlightAware servers to transfer that flight data and sends regular heartbeats, providing system and health information such as CPU load, temperature, uptime, etc. This information allows us to monitor our network health and notify hosts about any issues with their receiver.
SkyAware is a web-based JavaScript application that is bundled with dump1090-fa. This application reads aircraft JSON data produced by dump1090-fa, plots the data on a map interface, and provides the user a view of the aircraft that his or her receiver is picking up. The interface provides detailed information about the aircraft and can be customized and filtered based on what the user is interested in tracking.
For easy installation, we’ve bundled all the necessary software into a pre-built Raspberry Pi OS Lite image that users can load onto a micro-SD card for their Raspberry Pi. FlightAware maintains our own apt repository, making it easy for our users to download and install our software using Debian’s Advanced Package Tool (APT).
Multilateration (MLAT)
Not all aircraft are ADS-B equipped and, as a result, cannot broadcast their location. However, through the use of multilateration, FlightAware can derive an aircraft’s location using the 1090 MHz Mode-S transponder signals being emitted from the aircraft. By using the known location of 4 or more ADS-B receivers on the ground, we can calculate the distance an aircraft is away from each of the receivers. We achieve this by using the time it takes for the Mode-S signal to propagate from the aircraft to the receiver and the propagation speed of the signal. With those distances, we can derive the location and track these aircraft that are not trackable via ADS-B.
fa-mlat-client is the program within piaware that selectively forwards Mode-S messages to dedicated MLAT servers at FlightAware to perform MLAT calculations. As an incentive for hosting a receiver, we return the MLAT results back to the receiver, which can be displayed on SkyAware and streamed on the following TCP ports:
- TCP port 30105 for multilateration results in Beast binary format
- TCP port 30106 for multilateration results in extended BaseStation format
We hope this gave you a better understanding of how FlightAware’s real-time flight data is sourced and generated from our terrestrial ADS-B network. The ADS-B team is working on modernizing our technology stack and building out new hardware and software to improve our network and provide our users new and interesting ways to interact with flight data. Stay tuned for future blog posts from the team!