Crewed aircraft on 1090 MHz. Drones broadcasting ASTM F3411 RemoteID. Vessels on AIS. Amateur stations on APRS. Voice traffic on Marine VHF, NOAA weather radio, CB, GMRS-FRS, and MURS. VoltGrid wraps proven demodulators — readsb, dump978, rtl_ais, rx_fm, multimon-ng, rtl_433 — and folds every decoded track, packet, and alert into a single common operating picture. Receive-only by design.
Purpose-built for UAS operations and wildland fire, where seeing crewed aircraft, FAA TIS-B re-broadcasts, and drone RemoteID on one screen is safety-critical. The app owns the demodulator lifecycle, fans decoded tracks to the map over SSE, and persists rolling history to DuckDB.
// one workstation → every RF source, one API GET /api/sdr/tracks/events → SSE: live ADS-B / RemoteID GET /api/aprs/stations/events → SSE: APRS positions GET /api/aprs/messages/events → SSE: bulletins + messages GET /api/audio/stream → chunked audio/mpeg (live MP3) GET /api/audio/alerts/events → SSE: decoded SAME/EAS alerts GET /api/spatial/sdr/collections → OGC API Features (QGIS/Pro) ● receiving bands 1090 · 978 · 144.39 · 156–162 MHz · rx-only
Each source is a saved receiver you start and stop from an in-map panel — status dots, message counts, and errors refresh live.
readsb / dump978 decode 1090 and 978 MHz; ASTM F3411 OpenDroneID rides the 1090 extended squitter, so one receiver covers airliners, GA, and UAS deconfliction. Trails show the last 30 positions; stale tracks prune at 60 s.
Marine vessel tracking via rtl_ais with an NMEA VDM/VDO decoder — maritime traffic joins aircraft and drones on the same 3D scene.
144.390 MHz (US) / 144.800 MHz (EU) at 1200 baud AFSK via rx_fm + multimon-ng, plus a global APRS-IS internet feed that never competes for the tuner. Decodes positions, weather stations, operator-placed objects, and messages with bulletin alerting.
Marine VHF (Ch 16 distress), NOAA Weather Radio WX-1..7 with SAME/EAS decode, CB (Ch 9 emergency), GMRS-FRS, and MURS. One HackRF priority-scans the watchlist and streams live MP3 straight to the browser.
Weather stations, TPMS, ERT, and alarm/motion sensors captured passively from the ISM bands and folded into the sensor picture.
Regional conditions, forecasts, and NWS alerts, alongside OGC SensorThings / SOS / GTFS / MovingFeatures feed subscriptions for non-RF live sources.
One SDR is one tuner: ADS-B, APRS RF, and audio scanning share a single HackRF, so run one RF module at a time per device (or add a second SDR). APRS-IS runs tuner-free. All modules are receive-only — no transmit capability exists in the product.
Each module persists rolling history to its own DuckDB file — sdr.duckdb, aprs.duckdb — registered with the embedded server, so the existing OGC API Features, vector-tile, and ESRI FeatureServer facades serve RF history with no extra code.
/api/spatial/sdr/collections or the /api/spatial/sdr/FeatureServer facade.…/collections/tracks_1090/tiles/{z}/{x}/{y}.mvt for fast rendering of dense track history.-- rolling RF history, served through standard facades SELECT * FROM sdr.tracks_1090_history -- append-only UNION SELECT * FROM sdr.tracks_978_history; -- UAT band GET /api/spatial/sdr/FeatureServer → ArcGIS Pro GET /api/spatial/aprs/collections → QGIS (OGC API) GET /api/spatial/sdr/collections/tracks_1090 /tiles/{z}/{x}/{y}.mvt → vector tiles ● registered dbId sdr, aprs · retention 24h / 168h
Plug in an SDR, add a receiver from the in-map panel, and watch aircraft, drones, vessels, and radio traffic populate the same 3D scene your mission data lives on.