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.

Receive & decode

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: read before you flip it

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.

Also aboard: an experimental chirp monitor

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.

Chase toolkit

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.

SondeHub

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.

A polite API citizen

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.

Reliability

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.

Beyond the app

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.

Decoder support

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.