Build · RF & SDR

Watching the Sky

There's a thing that happens the first time you point a software-defined radio at 1090 MHz. A map fills up with little airplane icons, each one tagged with a callsign, an altitude, a heading — and none of it came from the internet. It came out of the sky, off your own antenna, decoded on a computer the size of a paperback. I still find it a little hard to believe every time.

That's ADS-B. Modern aircraft broadcast their identity and position constantly, in the clear, so everyone around them knows where they are. You don't need permission to listen; you just need a receiver tuned to the right frequency and an antenna with a view of the horizon. A cheap RTL-SDR dongle does the job. Height and a clear sky do the rest.

The hive

My setup splits the work in two, which is a pattern I keep coming back to across the whole lab. One box in the garage, close to the rooftop antenna, does nothing but decode — it turns raw radio into a stream of aircraft reports and publishes it on the network. A second, beefier box picks that stream up and does everything else: draws the live map, keeps the history graphs, and feeds the data out to the aggregators — FlightAware, FlightRadar24, OpenSky, ADSBexchange.

I call the second box the hive. The radio hardware lives where the antenna is; the number-crunching lives where the horsepower is; the data flows between them over the LAN. On a good day from an Ohio rooftop it's tracking somewhere north of a hundred aircraft at once — airliners at cruise, regional hops, the occasional helicopter working low.

And here's the part I like: I feed all of it back. Those aggregator networks are built from thousands of hobbyists doing exactly this, and in return you get a wider picture than any one receiver could ever see. You put in your little cone of sky; you get the whole continent back. You can watch mine at adsb.kd8mst.org.

The morning the sky went dark

Now the war story, because the good ones always come from something breaking.

One morning the whole ADS-B feed was just gone. No aircraft. No map. The garage box was up, but the decoder saw nothing. My first, gut-level thought was the ugly one: somebody took the SDR. The garage isn't a vault. A dongle is small and it's plugged into a USB port and it would be the easiest thing in the world to pocket. I genuinely went out to check that the hardware was physically still there.

It was. Every dongle exactly where I left it. So the problem was software, and it was worse in an interesting way.

A while earlier that machine had gone down hard — an unclean shutdown, the kind where the power just stops and nothing gets a chance to close its books. That had corrupted the Docker daemon underneath everything. The containers weren't running, but the system also refused to start new ones, because it still thought the old ones existed. It was clinging to zombie containers and, more to the point, to their names — every name I needed was already "reserved" by a container that wasn't actually there anymore.

The fix, once I understood it, was almost anticlimactic. Restart the Docker daemon so it took a fresh look at reality. Then, instead of trying to clean up by container ID — which is what you reach for by reflex — force-remove the ghosts by name, clearing exactly the reservations that were blocking me. Then bring the whole stack back up clean. Within a minute the map repopulated. A hundred-odd aircraft, right where they'd been the whole time. Nothing had been stolen. The signals had been raining down the entire outage; there was just no healthy software left standing to catch them.

The lesson stuck harder than the outage did. A crash doesn't always announce itself as a crash — sometimes it looks like a theft, or a dead antenna, or a hundred other things, until you slow down and read what the machine is actually telling you. And an unclean shutdown is never really free. It just sends you the bill later.

Now the box is built to survive losing power with nobody standing next to it, and the decode-and-feed split means a stumble on one side doesn't take the other down with it. It just runs. There are airplanes overhead right now, telling anyone who'll listen exactly where they are — and a paperback-sized computer in my garage is quietly writing it all down.

73 — KD8MST