Closed beta
The whole chase loop, one app
Scan the 400–406 MHz radiosonde band, decode frames on the phone, follow the balloon on a live map, and walk the last kilometre with a heat-map — with an Airspy plugged straight into your Android device. No root, no drivers. Here is what the beta actually does today, and what is still in the pipeline.
An SDR pipeline that lives on your phone
SondeFox drives an Airspy Mini or R2 directly over Android's USB host API — plug in via OTG, grant the permission prompt, and the app streams 12-bit samples without root or kernel drivers.
Direct Airspy over USB-OTG
Airspy Mini or R2 on any OTG-capable device running Android 10 or newer. A powered OTG hub is recommended — the Mini draws significant current. No RTL-SDR support.
3 or 6 MSPS, your call
3 MSPS is the default and the right choice while chasing; 6 MSPS widens the view for band scanning. Full coverage of the worldwide 400–406 MHz radiosonde allocation.
Gain presets for real sites
Quiet rural, Urban interference, External LNA, and full Manual profiles — pick one in Settings before you head out instead of fiddling with sliders at the launch site.
Serious RS41 decode
Serial, GPS position, and PTU with real calibration math, protected by Reed-Solomon RS(255,231) error correction and a 51-subframe calibration accumulator. Auto-lock engages when a sonde header correlates during a band scan.
Bias-tee power for an external LNA sits behind an explicit warning toggle. Only enable it if your antenna or preamp is designed for DC on the coax — and note that this path is still hardware-untested in the beta.
Off by default and strictly physical-layer: dechirp, symbol decode, and payload assembly for chirp-spread-spectrum (CSS) signals you are authorized to receive — your own nodes, amateur, and ISM traffic. There is no decryption of encrypted network traffic, no key extraction, and no private-network interception. Details in the chirp monitor docs.
From highway to hedgerow
Three tools take over as you close in: the map for the drive, the compass for the walk, and the Signal Hunt heat-map for the last few hundred metres.
Live chase map
A real MapLibre map with distinct markers — you in purple, the sonde in amber, the predicted landing in green — plus the descent track line. Tiles cache for offline use, because landing zones rarely have coverage.
Find-My-style compass
A rotation-vector pointer, declination-corrected to true north, with live distance and bearing at ~1 Hz. Color tells you how close you are: green under 100 m, amber under 1 km, red beyond.
Signal Hunt heat-map
Up to 1,000 receiver-position RSSI/SNR samples rendered as a heat-map for on-foot triangulation. Auto mode kicks in within ~1 km of the sonde — or when its GPS fix goes stale — so walk toward green.
Community-connected, privacy-first
Full two-way SondeHub integration, built to the published API spec — and every upload is opt-in.
See sondes before you hear them
SondeFox pulls active sondes from SondeHub so flights other stations are receiving appear in your list and on your map before you decode a single frame locally.
Contribute telemetry — if you want
Telemetry upload is opt-in behind a callsign requirement and sends only CRC-valid frames, batched roughly every 5 seconds, with live upload status in Settings.
Chase-car mode, off by default
Appearing as a chase car on the SondeHub map is a separate toggle from telemetry upload — and it ships off. Your location is never uploaded unless you explicitly turn it on.
Predictions and recovery reports
Landing predictions come straight from the SondeHub predict API, and a one-tap in-app dialog files your recovery report when you find the sonde.
Rate-limited? SondeFox honors HTTP 429 Retry-After with automatic backoff and re-queues the affected frames, so nothing is lost and the servers are not hammered. More in the SondeHub docs.
Receiving 400–406 MHz radiosonde telemetry is legal in most jurisdictions, but check your local rules before uploading or chasing — and never trespass to recover a sonde. More on the legal page.
Built for hours in a moving car
Foreground service
Capture and decode keep running with the screen dimmed, so a long descent does not end because your phone went to sleep in the cup holder.
Clean USB detach handling
Yank the OTG cable — accidentally or otherwise — and the app shuts the pipeline down cleanly instead of crashing. Verified against a real USB detach event.
Airspy fault banner
A wedged Airspy USB control endpoint is detected at open and surfaced as a clear "unplug and re-plug" banner — not a silently dead spectrum you diagnose at the roadside.
One decoder core, three targets
SondeFox is more than an APK. The portable C++17 decoder core, libsonde, is shared across the Android app, a host-side replay CLI, and a desktop SDR++ plugin — GPL-3.0 all the way down.
libsonde core
The same C++17 code decodes frames on your phone, on your workstation, and inside SDR++ — one implementation to test, one set of bugs to fix.
Replay CLI
sonde_replay runs recorded or synthetic IQ through the full pipeline on a host machine — the tool behind the project's end-to-end decode verification.
SDR++ plugin
A desktop decoder plugin implementing the full SDR++ module contract with an ImGui panel, for chasing from the shack instead of the passenger seat.
Curious what the app looks like without installing anything? A self-contained HTML mockup of all five screens runs in any browser — see the live demo.
What decodes today — honestly
SondeFox is in beta, and we keep the tiers straight: one decoder is validated end-to-end, two families await hardware validation, and the rest are roadmap. No blurring.
| Sonde family | Manufacturer | Status | Notes |
|---|---|---|---|
| RS41 | Vaisala | Beta | Full decode: serial, GPS, PTU with real calibration, RS(255,231) FEC. Validated end-to-end against synthetic signals; over-the-air validation on real flights is exactly what the beta is for. |
| DFM06 / DFM09 / DFM17 | Graw | In validation | Implemented and unit-tested on synthetic data (Hamming(8,4), differential decode); serials need multi-frame stability. Awaiting real-RF validation. |
| M10 / M20 | Meteomodem | In validation | Implemented and unit-tested on synthetic data; M10 (~9616 baud) and M20 (9600 baud) disambiguated by type byte. Awaiting real-RF validation. |
| iMet-4 / iMet-54 | InterMet | Roadmap | Scaffolded; decoder not yet implemented. |
| LMS6 | Lockheed Martin | Roadmap | Detection surface only; decoder not yet implemented. |
| Meisei | Meisei | Roadmap | Detection surface only; decoder not yet implemented. |
| MRZ | Meteo-Radiy | Roadmap | Detection surface only; decoder not yet implemented. |
| MTS01 | Meteosis | Roadmap | Detection surface only; decoder not yet implemented. |
Per-decoder details, caveats, and validation status live in the decoder documentation. One more honest note: the Spectrum screen's tap-to-tune is designed but not wired up yet — tapping a peak does not retune the radio in the current beta.
Help us validate it in the field
RS41 decode is validated end-to-end — now we need chasers on real flights, in real terrain, to prove it over the air and harden everything else. If you have an Airspy Mini or R2 and an OTG-capable Android phone, we would love your logs.