ADS-B Scope puts live aircraft tracking on a handheld ESP32 board

John Stockdale's open-source firmware connects a LilyGO board directly to an RTL-SDR; he is now building a contributor-fed live map and says a stripped-down version can run on about $50 of hardware.

By · Published

Primary source: Reddit

Why it matters

ADS-B Scope collapses a Raspberry Pi-style radio stack into a touchscreen RISC-V board, showing how capable low-cost embedded hardware has become for local signal processing.

A person's hands are typing on a keyboard, with a notebook open displaying handwritten notes and a coffee cup beside it.

John Stockdale released ADS-B Scope, open-source firmware that turns a LilyGO T-Display-P4 development board and an RTL-SDR radio dongle into a standalone aircraft tracker. The on-device interface displays nearby aircraft, callsigns, altitudes, speeds, positions, range and bearing without sending the receiver's data through a laptop or internet service. (reddit.com)

ADS-B Scope displays nearby aircraft on a LilyGO T-Display-P4 development board.

Stockdale is a San Francisco engineer whose GitHub profile identifies him as a former Facebook employee. ADS-B Scope fits a longer run of radio and embedded-systems work in his public repositories, including ESP32 security tools and a lightweight Meshtastic protocol implementation. His project takes a workload commonly handled by a Raspberry Pi or desktop computer and runs the radio interface, signal decoder, storage and touchscreen interface on the T-Display-P4's dual-core RISC-V processor. (github.com)

The key engineering work is a custom USB host path that connects an RTL2832U-based software-defined radio directly to the board. The radio tunes to 1090 MHz, where aircraft transponders broadcast Mode S and ADS-B messages containing information such as identity, position, altitude and velocity. The firmware decodes those signals locally and plots the results on the display. ADS-B underpins much of the Federal Aviation Administration's satellite-based aircraft surveillance system, although ADS-B Scope is an enthusiast receiver rather than certified aviation equipment. (reddit.com)

The whole receiver fits behind the screen

The T-Display-P4 combines an ESP32-P4 processor with either a 4.05-inch TFT or 4.1-inch AMOLED touchscreen, an ESP32-C6 connectivity processor, GPS, an SD card slot and an SX1262 LoRa radio. Stockdale's current firmware branch detects both display variants at boot, allowing one binary to support the two versions. (lilygo.cc)

Stockdale reports that the receiver processes 15 to 30 aircraft messages per second and tracks 12 to more than 30 aircraft simultaneously. He measured roughly 30 nautical miles of reception from Oakland using a seven-inch telescopic antenna. Those figures come from his own testing and will depend heavily on antenna placement, obstructions and local air traffic. (github.com)

The device logs decoded messages to an SD card with UTC timestamps, raw Mode S data, aircraft fields and the receiver's GPS position. USB mass-storage mode exposes those logs to a connected computer. The firmware also includes adaptive tuner gain, hot-plug handling for the RTL-SDR and an aircraft database built from OpenSky data, which adds registrations, aircraft types, manufacturers, operators and distinct icons for rotorcraft. (github.com)

A separate ADS-B Scope browser interface connects over WebSerial. It adds a larger live map, aircraft trails, range rings, log replay, a three-dimensional view, SD card file management and browser-based firmware installation. The hosted interface identified itself as version 1.0.9 on August 24th. Chrome or Edge is required because the interface depends on the WebSerial API. (adsb-scope.offx1.com)

The browser interface provides a larger live map for aircraft tracked by ADS-B Scope.

Stockdale told RuntimeWire that a live map of connected ADS-B Scope feeders now shows the status of participating receivers. He is currently the only contributor and runs one test unit from his kitchen window, but hopes other operators will add receivers.

He also wants to develop an instrument-grade version for private aviation, small uncontrolled airports, low-budget towers, observers, ultralight operators and parachutists. That remains a development goal rather than a claim about the current enthusiast hardware. Stockdale said a minimal version could run on about $50 of hardware, while a more polished configuration would cost about $150.

Aircraft tracking shares the device with a mesh radio

Stockdale also used the T-Display-P4's LoRa hardware for a Meshtastic-compatible messaging layer called Meshy. It can receive and transmit text, position and telemetry packets while the ADS-B receiver is running, giving the device a second role as an off-grid communications terminal. The implementation is separate from the official Meshtastic firmware and was developed around Stockdale's meshtastic-lite library. (github.com)

The mesh feature remains incomplete. The repository says the device does not relay traffic for other nodes, private messaging support is still being tested, and node information is lost after a reboot. Wi-Fi also requires users to flash the board's ESP32-C6 coprocessor manually, while opening a WebSerial connection can trigger a hardware reset. These constraints keep ADS-B Scope firmly in developer-project territory despite the polished touchscreen and browser interfaces. (github.com)

Stockdale described the March release as alpha or beta software. The current repository is considerably broader than that initial announcement, with radar views, an aircraft database, mesh messaging, MQTT streaming and an MP3 player now sharing the same board. The core bet remains unchanged: inexpensive general-purpose microcontrollers have become capable enough to replace the computer in a local radio-monitoring stack. (reddit.com)

The licensing reflects the number of open-source components underneath the build. Stockdale and Off by One publish their original ADS-B Scope work under the BSD 3-Clause license, while the adapted RTL-SDR code remains under GPL v2 and LilyGO's board-support code uses GPL v3. (github.com)

Reader comments

Conversation for this story loads after sign-in.