ADS-B
Est. read time: 1 minute | Last updated: July 20, 2025 by John Gentile
Contents
import numpy as np
import matplotlib.pyplot as plt
from scipy import signal
from rfproto import plot, utils
#iq = utils.open_iq_file('./data/ads-b_test_1641427457780.iq', np.int16)
iq = utils.open_iq_file('./data/modes1.bin', np.uint8)
fs = 2.0e6 # sample rate (Hz)
fc = 1.09e9 # ADS-B carrier frequency of 1090 MHz
w = signal.windows.hamming(31)
plot.spectrogram(iq, w, 1024, 64, 20)
# Magnitude detect input signal = sqrt(re^2 + im^2)
mag = np.abs(iq)
plot.samples(mag[:512])
plt.show()
pulses = np.zeros(512)
for i in range(512):
if mag[i] > 15:
pulses[i] = 1
plot.samples(pulses)
plt.show()
References
- adsb.lol: real-time, worldwide flight tracking of ADS-B data.
- readsb: one of the most up-to-date ADS-B decoders.
- dump1090-fa:
dump1090
version maintained by FlightAware. - dump1090_rs: Multi-SDR supported Rust translation of the popular dump1090 project for ADS-B demodulation
- antirez/dump1090: one of the original ADS-B decoders with support for RTL-SDRs.
- gr-adsb: A GNU Radio out-of-tree (OOT) module to demodulate and decode Automatic Dependent Surveillance Broadcast (ADS-B) messages.
- HW/SW Co-Design Implementation of ADS-B Receiver Using Analog Devices AD9361/AD9364