Raspberry Pi · SDR · 1090 MHz
ADS-B aircraft tracking
This project began with a simple aim: to build a compact, reliable 1090 MHz ADS-B receiving station around a Raspberry Pi 5 and FlightAware USB receiver hardware. The finished system provides a live aircraft display on the local network, feeds FlightAware, and also forwards received data to the 1090MHz UK aggregator.
Everything is contained in a practical ABS enclosure with cooling, a front-panel status LED and panel-mounted connections. It can run unattended as a small piece of station infrastructure rather than needing a keyboard, monitor or permanently attached computer.
Operational and feeding
The hardware
A dedicated Raspberry Pi 5 receiver
The receiver is based on a Raspberry Pi 5 running the FlightAware PiAware software stack. A FlightAware USB ADS-B receiver takes the 1090 MHz RF input and passes the samples to the Pi. The Pi has its own active cooler, while a second fan in the enclosure lid provides air movement through the case.
The front panel carries the power connection and a green status indicator. Inside, the receiver, RF connections and cabling are fixed in place so that the unit can be installed as a permanent appliance rather than left as a collection of loose modules.
The small GPIO interface board beside the front-panel LED provides the simple hardware connection used for the receiver heartbeat indication.
Data path
One receiver, several useful outputs
At the centre of the software arrangement is dump1090-fa. It decodes the Mode S and ADS-B transmissions received on 1090 MHz. PiAware uses that decoded data for FlightAware, while SkyAware provides the browser-based local display.
The same receiver can also provide data to another service. The 1090MHz UK client reads the local Beast-format data stream from TCP port 30005 and forwards it independently. It does not replace the FlightAware connection: both consumers can use the local dump1090-fa output at the same time.
Local display
SkyAware in the browser
One of the pleasures of the installation is that it needs no dedicated display of its own. From another computer on the LAN, SkyAware presents the aircraft currently being decoded, with callsigns, squawks, altitude, speed, position and other received information.
The map is generated from what this receiver is actually hearing, so it is also an immediate check on the antenna, receiver and decoder. If aircraft are appearing and position history is building, the whole RF-to-decoder path is doing useful work.
Sharing
FlightAware and 1090MHz UK
PiAware was installed first and the receiver was confirmed working both locally and through the FlightAware website. The second stage was to add the 1090MHz UK feed. Its client was built and installed on the Pi, configured to take the Beast-format stream produced by dump1090-fa, and then enabled as a systemd service so that it starts automatically after a reboot.
This is a useful example of an important ADS-B principle: the SDR receiver does not have to be dedicated to only one web service. Once dump1090-fa has decoded the receiver data, several local clients can consume its network outputs independently.
Checks on the running system confirmed that PiAware, dump1090-fa, the web server and the 1090MHz UK client were all active, and that the local Beast stream continued to carry data while both external feeds were operating.
Unattended operation
Cooling, status and housekeeping
The Raspberry Pi 5 active cooler is controlled automatically by the operating system. The enclosure also has a separate lid-mounted fan to give the complete unit some air circulation. During testing the Pi remained comfortably cool, and the cooling-device state could be read directly from Linux.
A front-panel green LED provides a simple heartbeat indication. Software monitoring also includes a local status command for checking temperature, memory, disk use and uptime. The system is configured for an automatic reboot at 02:00 UTC and sends a status notification after boot, providing a straightforward check that the unattended receiver has returned to service.
- PiAware, dump1090-fa and the local web interface start under systemd.
- The 1090MHz UK feed also runs as a systemd service.
- The local Beast stream remains available to more than one client.
- The receiver can be checked remotely without disturbing normal ADS-B reception.
The build
Before final installation
These photographs show the receiver at the point where the hardware and software were working and the enclosure layout had been established, but before the unit was placed in its final operating position.
Project notes
What the system demonstrates
The project has turned a Raspberry Pi and SDR receiver into a small network appliance with a very clear job. The radio side receives and decodes 1090 MHz signals; the network side makes the same information available locally and to external aggregation services; and the housekeeping layer makes it practical to leave the receiver running continuously.
It is also a useful foundation for later experimentation. Receiver range, antenna changes, message rates and sharing services can all be explored without changing the basic architecture of the system.