Tracking High-Altitude Weather Balloon Radiosondes with Raspberry Pi and RTL-SDR
Every day, twice a day, the National Weather Service and its counterparts around the world launch weather balloons carrying small instrument packages called radiosondes. Each one transmits GPS position, temperature, humidity, and pressure data as it climbs to around 30–35 km, then the balloon bursts and the sonde falls back to earth under a small parachute — usually landing within a 50–150 km radius of the launch site, intact, and legally yours to keep if you find it first. With a cheap RTL-SDR dongle, a Raspberry Pi, and a bit of antenna work, you can run your own automatic receive station that finds, decodes, and tracks these sondes in real time, then drive out and recover them. It's one of the few radio hobbies that ends with a physical souvenir.
This build uses radiosonde_auto_rx, the open-source project (originally by Mark Jessop, VK5QI, now maintained under Project Horus) that does the hard part automatically: it sweeps the sonde frequency band, finds candidate signals, figures out which decoder to throw at each one, and tracks successful decodes without you ever needing to know a launch schedule in advance.
How It Works
Radiosondes transmit in the 400–406 MHz band in most of the world (some regions use 1680 MHz for a smaller number of sonde types, which this basic build does not cover). radiosonde_auto_rx runs a continuous rtl_power scan across that range looking for the characteristic signal shape of an active sonde, then hands any candidate frequency to a decoder. It supports the common types you'll actually encounter: Vaisala RS41 (the most common sonde in North America and Europe by far), Graw DFM, Meteomodem M10/M20, and InterMet iMet-4. Once it gets a valid decode — GPS position, altitude, and telemetry — it uploads the track to SondeHub, a free global aggregation site where thousands of other stations' tracks also show up on one map. You don't need an account to receive and upload; station registration is optional and mostly useful if you want your station to show up by name.
Parts and Setup
The receive side is identical to several other RTL-SDR projects on this site, which is good news if you've already built one: the same dongle and antenna setup that works for ADS-B or NOAA APT reception will work here with a different antenna tuned closer to 403 MHz.
- Raspberry Pi 4 or 5 (a Zero 2 W works fine too — this is a light CPU load compared to video decoding projects)
- An RTL-SDR dongle with a stable TCXO (the RTL-SDR Blog V3/V4 or an Airspy work well; cheap dongles without a TCXO can drift enough to lose lock on narrow-deviation sonde signals)
- An antenna resonant near 403 MHz — a simple quarter-wave ground-plane or a discone covering 400–406 MHz is enough for a station that picks up sondes within 50–100 km under decent conditions
- A Raspberry Pi OS Lite (64-bit) install with Docker, since the current recommended install path for auto_rx is a Docker container rather than a from-source build
Install Docker on the Pi, pull the radiosonde_auto_rx container, and configure station.cfg with your station's latitude, longitude, and altitude — this is what lets the web dashboard (served on port 5000 by default) show range rings and lets SondeHub calculate predicted landing points for sondes still descending. Set sdr_power_count and the scan range to cover 400.0–406.0 MHz, enable the SondeHub uploader in the config, and start the container. Within a scan cycle or two of an active launch nearby, you'll see a signal show up on the built-in waterfall and get auto-decoded.
Finding and Recovering a Sonde
Once a sonde bursts and starts descending, SondeHub's map shows a predicted landing zone that tightens up as more telemetry comes in during descent — it accounts for the sonde's fall rate and current wind data. Chasing one down is the fun part: you're driving to a point based on a live-updating prediction, and the sonde is genuinely findable once you're in the field, since it's still transmitting on the ground (most RS41 battery life outlasts the flight by hours). A handheld with the frequency dialed in, or the same RTL-SDR and a laptop, gets you the last few hundred meters by signal strength.
Sonde TypeManufacturerHow CommonNotes RS41-SG/SGPVaisalaVery common (most of US/EU network)Easiest to decode, best documented in auto_rx DFM-09/17GrawCommon in parts of EuropeNeeds slightly more careful frequency tuning M10/M20MeteomodemCommon in France and former French territoriesM20 replaced M10 in recent years iMet-4InterMet SystemsSome US and research launchesLower transmit power than RS41Legal and Courtesy Notes
Receiving these signals is completely legal everywhere RTL-SDR reception generally is — you're just listening to an unencrypted public telemetry broadcast, the same legal category as ADS-B or NOAA weather fax. Recovering a landed sonde is widely considered fair game once it's on the ground and the flight is long over; national weather services do not recover the vast majority of sondes they launch and generally don't mind hobbyists picking them up, though always use common sense around private property, and if a sonde lands somewhere unsafe (highway shoulder, active rail line, inside a fenced facility) it is not worth retrieving. Treat it like any other piece of found electronics: don't force open a transmitter that might still be live, and if in doubt, leave it.
Once you have a working station, it runs itself — check the SondeHub map occasionally, and when a sonde shows up nearby, you'll have minutes of warning before it's in chasing range. It's a satisfying complement to the ADS-B and satellite-decoding builds already on this site, using the exact same RTL-SDR skillset pointed at a target that rewards you with a physical prize.