RTL-SDR · NOAA APT · live edge

hear satellites pass over

A rooftop antenna catches weather satellites as they sweep past. This little server turns each pass into a live MP3 stream — the actual radio signal, decoded to audio, about two minutes behind the live edge.

137 MHzAPT downlink band
~12 mintypical pass
1 filestdlib Python + ffmpeg
2 minbehind live

Listen to a real pass.

This is a genuine capture — Meteor-M2-4, recorded off-air by the station's RTL-SDR. The steady tones are the satellite's sync and telemetry subcarriers; the fuzz around them is the digital image downlink painting scanlines of the Earth below.

Real capture · 45 s excerpt

Meteor-M2-4 pass, 13:54 UTC

137.1 MHz · raw demodulated downlink audio, recorded off-air
Spectrogram of the Meteor-M2-4 pass: sync and image subcarrier energy drifting with Doppler
spectrogram of the same 45 s — the horizontal streaks are the satellite's sync and image subcarriers drifting with Doppler as it passes
NOAA 15 / 18 / 19Meteor-M2-3Meteor-M2-4137 MHz

How a pass runs.

01AntennaA V-dipole on the roof watches the 137 MHz band; a pass predictor schedules each overhead window.
02CaptureThe SDR records the raw pass to disk while the satellite is above the horizon.
03TapThis server watches the capture directory and pipes the growing file into ffmpeg as s16le PCM.
04StreamAny browser on the LAN opens /stream.mp3 and listens live; falls back to the last completed pass.

Live edge, correctly

The stream starts ~20 MB before the file tail so listeners trail the recorder by ~2 minutes — enough buffer to never stall, close enough to feel live.

Zero dependencies

Python stdlib HTTP server + ffmpeg. No framework, no build step, one systemd unit, ~200 lines total.

Pairs with the dashboard

The same captures feed NOAA weather-satellite imagery on the maritime kiosk — audio and pictures from the same signal.

Source on GitHub ← back to pkia.github.io