Skip to main content
gr-adsb interfaces with SDR hardware through the GNU Radio OsmoSDR Source block, which provides a unified driver layer for a wide variety of USB and PCIe software-defined radios. Any hardware supported by OsmoSDR can be used with gr-adsb.
RTL-SDR dongles are the easiest starting point. They are widely available for around $25, require no additional drivers beyond rtl-sdr, and perform well enough for ADS-B reception with a suitable antenna.

Supported hardware

RTL-SDR

Most accessible option. A USB dongle originally designed as a DVB-T TV receiver, repurposed as a general-purpose SDR. 8-bit ADC, ~$25. Requires the rtl-sdr driver package. Works well for ADS-B at 1090 MHz with any directional or omnidirectional antenna.

HackRF One

Wide bandwidth, half-duplex. Covers 1 MHz to 6 GHz, ~$300. Half-duplex only (cannot transmit and receive simultaneously). 8-bit ADC. Good for experimentation across a broad spectrum; capable of ADS-B reception with appropriate gain settings.

BladeRF

Full-duplex, higher dynamic range. Supports simultaneous transmit and receive. Available in 2.0 micro and x40/x115 variants. Higher dynamic range than RTL-SDR or HackRF, useful in environments with strong interfering signals near 1090 MHz.

USRP (Ettus Research)

Professional grade, highest performance. The USRP family (B200, B210, N-series, X-series) offers the best ADC resolution, lowest noise figure, and widest bandwidth. Suitable for research or demanding deployments where maximum message decode rate is required.

AirSpy

12-bit ADC, good sensitivity. A 12-bit ADC gives noticeably better dynamic range than 8-bit RTL-SDR dongles. Available in the AirSpy R2 and AirSpy Mini variants. A strong performer for ADS-B at 1090 MHz, particularly in dense RF environments.

Sample rate requirements

Both the ADS-B Framer and ADS-B Demod blocks require the sample rate to be an integer multiple of 2 Msps. This constraint comes from the ADS-B modulation scheme: ADS-B uses Pulse Position Modulation at 1 Msym/s, so 2 samples per symbol is the minimum required. Valid sample rates: 2e6, 4e6, 6e6, 8e6, … The Framer and Demod blocks both enforce this at startup with an assertion. For example, from framer.py:
SYMBOL_RATE = 1e6  # symbols/second

assert self.fs % SYMBOL_RATE == 0, \
    "ADS-B Framer is designed to operate on an integer number of samples per symbol, not %f sps" % (self.fs / SYMBOL_RATE)
And from demod.py:
assert self.fs % SYMBOL_RATE == 0, \
    "ADS-B Demodulator is designed to operate on an integer number of samples per symbol, not %f sps" % (self.fs / SYMBOL_RATE)
If you configure a sample rate that is not an integer multiple of 1 Msps (e.g., 2.4e6), the flowgraph will fail at startup with an AssertionError from one of the above assertions. Set the OsmoSDR Source sample rate to a supported value before running.

Gain settings

ADS-B signals at 1090 MHz can range widely in strength depending on the aircraft distance and antenna quality. The following guidelines are a starting point; tune to your specific hardware and environment.
HardwareRecommended starting gain
RTL-SDR40–49 dB (use rtl_test to find the highest gain that does not saturate the ADC)
HackRFLNA gain 24 dB, VGA gain 20 dB
BladeRFRX gain 30–50 dB depending on antenna
USRP20–40 dB depending on the daughterboard
AirSpy12–18 LNA gain; adjust Linearity or Sensitivity gain modes
If you see large numbers of CRC failures in Verbose mode, the gain may be too high (ADC saturation) or too low (signal buried in noise). Reduce gain first if the noise floor is visibly elevated.

Antenna

ADS-B transmits at 1090 MHz. A simple quarter-wave monopole antenna works well for line-of-sight aircraft reception:
  • Quarter-wave length at 1090 MHz: approximately 6.9 cm (69 mm)
  • Mount over a ground plane (a metal baking sheet or the lid of a metal enclosure works)
  • Position the antenna outdoors or near a window with a clear view of the sky for best results
  • Dedicated ADS-B antennas (1090 MHz tuned, N or SMA connector) are available commercially and provide better performance than a whip alone

Build docs developers (and LLMs) love