examples/adsb_rx.grc— Live reception from an SDR sourceexamples/adsb_playback.grc— Offline playback from a SQLite database
Signal processing chain
The live reception flowgraph (adsb_rx.grc) connects blocks in the following order:
The ZeroMQ Pub Sink block must be enabled (not bypassed) for the webserver to receive decoded plane data. See Running the webserver for details.
Opening the flowgraph
Open the example flowgraph
In GRC, go to File → Open and navigate to
gr-adsb/examples/adsb_rx.grc. For SQLite playback, open gr-adsb/examples/adsb_playback.grc instead.Configure the SDR source
Select the OsmoSDR Source block and set:
Adjust the gain settings to suit your hardware and antenna environment.
| Parameter | Value |
|---|---|
| Center Freq | 1090e6 (1090 MHz — the ADS-B broadcast frequency) |
| Sample Rate | 2e6 minimum; must be an integer multiple of 2 Msps (e.g., 2e6, 4e6, 6e6) |
Configure the ADS-B Framer
Select the ADS-B Framer block. The key parameter is:
The Framer emits a stream tag named
| Parameter | Default | Description |
|---|---|---|
| Detection Threshold | 0.01 | Minimum power threshold for preamble detection. Lower values increase sensitivity but also false detections. |
burst at each detected preamble. The tag value is a tuple of ("SOB", snr), carrying the start-of-burst marker and the computed SNR in dB. The ADS-B Demod block reads this tag to locate and demodulate each burst.Configure the ADS-B Decoder
Select the ADS-B Decoder block and choose your options:Message Filter
Print Level
Error Correction
| Option | Behavior |
|---|---|
Extended Squitter Only | Decodes DF 17, 18, and 19 messages only (default) |
All Messages | Decodes all supported Downlink Formats (DF 0–21) |
| Option | Behavior |
|---|---|
None | No stdout output |
Brief | Curses-based live table of all tracked aircraft |
Verbose | Full per-message field dump with field names and values |
| Option | Behavior |
|---|---|
None | No error correction applied (default) |
Conservative | Attempts single-burst error correction using CRC syndromes |
Brute Force | Reserved; not yet implemented |
Enable ZeroMQ (optional)
If you intend to use the built-in webserver, make sure the ZeroMQ Pub Sink block in the flowgraph is enabled. The block should publish to
tcp://127.0.0.1:5001 to match the webserver’s default ZMQ subscriber address.Block connections reference
The table below summarises how the three gr-adsb blocks connect to each other.| Source block | Port / domain | Destination block | Port / domain |
|---|---|---|---|
| ADS-B Framer | out (float stream) | ADS-B Demod | in (float stream) |
| ADS-B Demod | demodulated (msg) | ADS-B Decoder | demodulated (msg) |
| ADS-B Decoder | decoded (msg) | ZeroMQ Pub Sink | message input |
burst stream tag (containing SOB and the computed SNR) through the float sample stream so the Demod block knows exactly where each burst starts.
Sample rate requirement
The sample rate passed to both the ADS-B Framer and ADS-B Demod must be an exact integer multiple of the ADS-B symbol rate (1 Msym/s). Internally both blocks assert:2e6, 4e6, 6e6, and so on. Setting any other rate will raise an AssertionError at flowgraph startup.