Making · 2026

Aircraft, from the desk

An RTL-SDR feeding readsb and tar1090 on Linux, plus a Flightradar24 feed. Built a V-dipole tuned for 1090 MHz and calibrated it against known traffic.

RTL-SDR · ADS-B · Linux · Antennas

What this is

Every airliner overhead is continuously broadcasting its identity, position, altitude, and velocity in the clear on 1090 MHz. No authentication, no encryption — ADS-B is a cooperative surveillance system and being readable is the entire point.

A twenty-dollar USB TV tuner can receive it. That fact does not stop being remarkable.

The stack

dump1090 first on Windows to confirm the hardware worked, then a proper setup on Kali with readsb doing the decoding and tar1090 serving the map. Running it on a non-default port so it coexists with everything else on the machine.

On top of that, fr24feed publishes the decoded stream to Flightradar24, feeding my local receptions into their global network — which, as a side effect, earns a Flightradar24 contributor plan. Nice trade: they get coverage over the West Valley, I get the full product.

The antenna is the whole game

This is the part that surprised me, and it’s the part that generalizes.

The stock antenna that ships with an RTL-SDR is a compromise built for nothing in particular. At 1090 MHz a quarter wavelength is about 69 mm, which means a correctly built antenna is small, trivially constructible, and dramatically better than what came in the box.

A V-dipole is two elements of that length at roughly 120°, and it beats the stock whip by a margin that is not subtle — range and message rate both jump. Calibration against known traffic (watching how far out aircraft are still being decoded, and how message rate changes as you adjust) turns antenna building from guesswork into something you can measure.

The lesson that transfers: I spent an hour on software configuration for every ten minutes on the antenna, and the antenna produced almost all of the improvement. The bottleneck was in the physical layer the entire time, which is where it usually is in RF and roughly never where software people look first.

Why I keep it running

It’s a live data pipeline that I didn’t have to invent a use case for. Real-time ingest of a noisy broadcast stream, decoded to structured records, with a natural time-series shape and enough volume to be interesting. Every question I’d ask of a production pipeline — what’s the message rate, what’s the drop rate, how does receive quality vary by hour and by weather — has a real answer here.

It’s also just very good to look at a map that you’re personally generating.

← All making

Contact

Let's build something.

I'm looking for data science, machine learning and AI engineering roles in Phoenix or remote — and I'm always happy to talk about models, retrieval, or why yours is overfitting.