Skip to main content
gr-adsb is a GNU Radio out-of-tree (OOT) module that turns your software-defined radio into a real-time aircraft tracker. It demodulates 1090 MHz PPM signals and decodes Mode S / ADS-B messages — giving you live callsigns, positions, altitudes, and velocities directly from the air.

Installation

Build from source and install gr-adsb for your GNU Radio version

Quickstart

Open the example flowgraph and start receiving aircraft in minutes

Block Reference

Explore the Framer, Demod, and Decoder blocks and their parameters

ADS-B Concepts

Understand Mode S, Extended Squitter, and CPR position encoding

What gr-adsb does

gr-adsb provides three GNU Radio blocks that form a complete receive chain for 1090 MHz ADS-B signals:
1

Framer — detect bursts

The ADS-B Framer block watches the magnitude-squared signal stream for the characteristic 8-pulse ADS-B preamble and tags each burst with its start offset and SNR estimate.
2

Demod — recover bits

The ADS-B Demod block reads tagged bursts and performs pulse-position demodulation (PPM) to extract up to 112 raw bits per message.
3

Decoder — decode messages

The ADS-B Decoder block verifies the 24-bit CRC, optionally corrects burst errors, and decodes all supported Mode S downlink formats — publishing structured PDUs with callsign, altitude, position, and velocity data.

Key features

  • Broad SDR support — works with any hardware supported by GNU Radio and OsmoSDR: USRP, RTL-SDR, HackRF, BladeRF, AirSpy, and more
  • Flexible sample rates — supports 2 Msps, 4 Msps, 6 Msps, and any integer multiple of 2 Msps
  • 10+ decoded message types — DF 0, 4, 5, 11, 16, 17, 18, 19, 20, 21 including Extended Squitter ADS-B
  • Error correction — optional CRC-based conservative burst error correction
  • Live map visualization — built-in ZeroMQ/Flask webserver streams decoded planes to a Google Maps view at localhost:5000
  • SQLite playback — record demodulated bursts and replay them offline with gr-sqlite

Supported GNU Radio versions

GNU Radio versionBranch
3.10maint-3.10
3.9maint-3.9
3.8maint-3.8
Clone the branch that matches your GNU Radio installation. For example, for GNU Radio 3.10: git clone -b maint-3.10 https://github.com/mhostetter/gr-adsb

Build docs developers (and LLMs) love