Making · 2026
When to point an antenna at the sky
A pass planner for receiving satellites with a $30 software-defined radio. It predicts when each one is overhead and hands you everything needed to capture it: frequency, antenna length, radio settings, and the decode commands.
What this is
Weather satellites and the space station transmit on frequencies an inexpensive USB radio can receive. The hard part isn’t the radio. It’s knowing that a particular satellite will be above your horizon for nine minutes starting at 6:42 tomorrow morning, peaking at 61 degrees to the northeast, and that you need a dipole with legs of a particular length to hear it.
satpass answers that. One prediction engine, two front ends: a command-line tool and a local
web interface.
How it works
Orbits are published as two-line element sets and go stale within days, so they’re fetched live from Celestrak and the positions are propagated with Skyfield. For each catalogued satellite the engine finds the passes above an elevation floor and computes rise, peak and set.
The catalog is where the radio knowledge lives. Each satellite carries its downlink frequencies, modulation, and a capture profile: sample rate, gain, the dipole leg length for that wavelength, and the SatDump pipeline to decode what you record. Satellites with several downlinks get one profile each.
The interface
- Pass list, grouped by day, with a live countdown on every row and the best pass in the window marked.
- Ground track on a world map, with the day/night terminator drawn live and a circle for the radio horizon — when that circle covers your location, the satellite is in view.
- Sky track — the pass as an arc on a polar chart, the way it will actually cross your sky.
- Capture card with copy-to-clipboard decode commands.
The server binds to localhost only. The single outbound request is the orbit download.
Checking the answer
A prediction you can’t verify is a guess, so there’s a separate script that cross-checks a predicted pass independently of the main engine. Orbital code is exactly the kind of thing that is confidently wrong by one timezone.
Arizona doesn’t observe daylight saving time, which turns out to be a convenient property in a fallback: without the timezone database installed, a fixed UTC−7 offset is correct all year.