FoxSDR 0.98.1 · OPEN BETA
MASTER
RUN
DEC
MUTE
FAIL
TUNED - HERTZ
1090.0000 MHz · click a digit to tune up, right-click to tune down
VOLUME
42 %
SAMPLE RATE
MS/s
2.000 MS/s
FRAME TIME
ms
16.7 ms

Signal acquisition console · Type 71

Open beta · Version 0.98.1 · Windows x64 · Linux x64 in development · Android arm64 alpha · free for noncommercial use

Software-defined radio,
written from scratch.

FoxSDR is in open beta. It is free, it is complete enough to use every day, and it still has rough edges — which is why finding them is the most useful thing you can do with it.

FoxSDR is a software-defined radio receiver written from scratch: a live spectrum and waterfall, every mode you actually use, stereo FM with RDS, a map that plots the aircraft and ships it decodes — and the whole interface served to a browser, so the receiver can live where the antenna is.

· No account, no licence key, no activation
· RTL-SDR, HackRF and Airspy built in; other radios through SoapySDR
· 57 test suites in the build
SPECTRUM - 1024 BIN - EMA 0.50PEAK -88.7 dBFS
1090.0000 MHz · 2.000 MS/s SPANSYNTHETIC · NOT A RECEIVER
8DEMODULATION MODES
15CATALOGUE PLUGINS
AnyRADIO SOAPYSDR REACHES
0GPL DEPENDENCIES

Function Select · what it does

press a bank

Everything below is in the current build. Where a claim is weaker than it looks, the page says so rather than leaving you to find out.

Spectrum and waterfall

The band drawn live, with the waterfall scrolling underneath it. Click a signal to tune it, drag the passband to fit it, and watch a carrier come and go over minutes rather than guessing at a meter.

Every mode that matters

NFM, WFM, AM, DSB, USB, LSB and CW, with squelch, AGC, noise reduction, manual and automatic notch, and de-emphasis. Broadcast FM decodes in stereo with pilot lock, and RDS gives you the station name, radio text, PI and programme type.

Your radio, whatever it is

RTL-SDR, HackRF, Airspy R2/Mini and Airspy HF+ are driven natively, no radio package to install; any other device SoapySDR can reach works too, with antenna, sample rate and per-stage gain selection. Developed against an Ettus B200. You need a receiver: the built-in signal generator and I/Q file playback are there for testing and development, not as a substitute for one.

Working with signals

Bookmarks for the frequencies you keep coming back to, a band scanner that stops on activity, band plans that label what you are looking at, and recording of both demodulated audio and raw I/Q.

Monitor · what it looks like

select a panel

Real windows from a real receiver, not mock-ups. Every picture says whether what it shows was heard off the air, computed from data fetched over the internet, or is simply the state of the application — because on a screen those three are indistinguishable, and a receiver that cannot tell you which is not worth much.

The FoxSDR console: an instrument panel with a round red stop button, nixie-style hertz readout, needle meters, a function-select rail, a green spectrum trace and a waterfall below it.
OFF AIR The console

The whole receiver on one panel: tuning, gain, mode, squelch and sinks on the left rail, spectrum above the waterfall, and the state of every subsystem down the right.

Ettus B200 on RX2 at 2 MS/s, tuned to 1089.995 MHz · the 1090 MHz aviation carrier is the spike in the spectrum and the bright column in the waterfall · peak in passband measured -88.7 dBFS

These pictures are of the interface the download below carries. The console was rebuilt into the instrument you see here after 0.70.0, and every release from 0.75.0 onwards carries it — so what these pictures show is what installs, rather than work still to come.

Remote Panel

Put the receiver where the antenna is

FoxSDR serves its whole interface over HTTP on your own network: the spectrum, the controls, live audio, and the map beside the track list. The machine with the radio on it can sit in the loft with the coax, and you drive it from the sofa.

Off by default, and bound to this machine only until you change it.

A password is required for any binding beyond loopback: without one the LAN bind is refused outright, rather than opening a socket with no gate on it.

Passwords are stored hashed (PBKDF2-HMAC-SHA256); sessions expire and are revoked whenever the settings change.

There is no TLS, deliberately: the app links no crypto library, so it will not claim transport security it cannot provide. Put Caddy, nginx, Tailscale or a Cloudflare Tunnel in front of it, and never port-forward it directly.

The FoxSDR interface running in a web browser, in the same brass and olive instrument styling as the desktop application.
OFF AIR The same instrument, in a browser

Not a cut-down remote: the spectrum, the waterfall, the controls and the map, served over HTTP to anything with a browser on your own network.

Spectrum and waterfall painted from live B200 data at 1090 MHz · the map pane is open Pacific because the only target being followed at that moment was the ISS, which was over it.

The decoder catalogue

15 published · 8 to come

Fifteen plugins are published today, and eight more are built and waiting on a catalogue update — those eight are marked as such rather than counted among the fifteen. Each entry says exactly how well it is verified, because “decodes AIS” and “decodes AIS off the air” are different claims.

ADS-B Aircraft Decoder

I/Q decoderverified off air

Aircraft position, callsign and velocity at 1090 MHz. Decoded live off the air, with ICAO address blocks and callsigns agreeing across independent message types. The receiver's own DC offset is removed before detection, so a zero-IF dongle hears aircraft it used to bury.

v1.6.0 · MIT · ABI 3 · Windows and Linux

Aircraft Info (registry lookup)

Map enrichment

Turns a 24-bit aircraft address into who it actually is: registration, type, operator and country, shown on the map and in the track list.

v1.0.0 · MIT · ABI 3 · Windows and Linux

AIS Ship Tracking Decoder

I/Q decodertested, not yet off air

Ship positions and voyage data on the marine band. Both channels at once from one receiver, plotted with everything else on the map.

v1.0.1 · MIT · ABI 3 · Windows and Linux

APRS / AX.25 Packet Decoder

Audio decodertested, not yet off air

Bell 202 packet radio from 144.800 MHz NFM audio: positions, messages, status and telemetry, validated against the AX.25 frame check.

v1.0.1 · MIT · ABI 3 · Windows and Linux

SSTV Image Decoder

Image decodertested, not yet off air

Slow-scan pictures on HF and 2 m. The mode is read from the transmission's own VIS header, and clock drift is measured from the sync pulses, corrected, and reported in ppm.

v1.0.0 · MIT · ABI 3 · Windows and Linux

NOAA Weather Pictures (APT)

Image decoder

The picture the NOAA satellites broadcast continuously on 137 MHz, built line by line as one crosses the sky. Both channels arrive side by side as sent — usually visible light beside infrared. Fitted alongside Satellites, that plugin says when NOAA 19 is next overhead and this one draws what it sends.

v1.0.0 · MIT · ABI 3 · Windows and Linux

Morse (CW) Decoder

Audio decodertested, not yet off air

Finds the tone, works the speed out from the signal itself, follows an operator who changes pace, and reports the words per minute it settled on.

v1.0.0 · MIT · ABI 3 · Windows and Linux

RTTY Teleprinter Decoder

Audio decodertested, not yet off air

45.45 baud amateur radioteletype on HF. Polarity is worked out from the signal rather than asked for, and both character sets are handled.

v1.0.0 · MIT · ABI 3 · Windows and Linux

POCSAG Pager Decoder

Audio decodertested, not yet off air

All three bit rates and inverted polarity detected automatically. The BCH error-correcting code is implemented in full: damaged codewords are discarded rather than shown as text.

v1.0.1 · MIT · ABI 3 · Windows and Linux

EAS / SAME Alert Decoder

Audio decoder

The digital headers carried by every US Emergency Alert System message and NOAA Weather Radio alert, printed in words: the event, who issued it, which counties it covers and how long it is valid for. The header is sent three times and this votes on the copies, so an alert survives noise that damages each one differently.

v1.0.0 · MIT · ABI 3 · Windows and Linux

Satellites

Track source

The ISS, amateur birds and weather satellites drawn live on the map with their predicted ground track, a pass table for your own station, and Doppler correction that holds a moving downlink through a pass. Orbits come from CelesTrak element sets, so what it draws is computed rather than received.

v1.0.2 · MIT · ABI 3 · Windows and Linux

Map Imagery (OpenStreetMap)

Map imagery

Street-level tiles under the map, fetched from a tile server you run yourself, which is what keeps the imagery licensing with whoever serves it.

v1.1.1 · MIT · ABI 3 · Windows and Linux

Survey Engine

I/Q decoder

Point it at a band, leave it running on a machine that is on anyway, and come back to what was actually used: which frequencies, how wide, how strong they got and how often they were there. It reads the whole receiver bandwidth at once rather than one channel at a time.

v0.1.0 · MIT · ABI 3 · Windows and Linux

Inmarsat-C / EGC Decoder

I/Q decoderexperimental

Maritime safety broadcasts. Roughly ten of its air-interface constants are reconstructed guesses, so it will most likely decode nothing off air — and it is published saying exactly that, in its own name.

v0.1.1 · MIT · ABI 3 · Windows and Linux

Example RMS Reporter

Reference

The reference plugin: reports the RMS level of the demodulated audio, and exists to show what writing one looks like.

v2.0.0 · MIT · ABI 3 · Windows only

ACARS

Instrument decoder

The messages airliners and ground stations exchange over VHF — position reports, clearances, engine and maintenance traffic — printed as they arrive. The window is drawn as an airliner's cockpit printer, feeding paper.

built and tested · catalogue entry to follow

FLEX Paging

Instrument decoder

FLEX pager traffic, held in a memory you can scroll back through rather than a log that scrolls away. The window is drawn as a 1990s pager, with a liquid-crystal display and a message memory.

built and tested · catalogue entry to follow

Two-Tone Sequential Paging

Instrument decoder

The two-tone sequential pages that open a station's alerting: the tone pair identifies who is being called, and the receiver responds to it as the real equipment does. The window is drawn as a fire-station alert receiver.

built and tested · catalogue entry to follow

VOR

Instrument decoder

The VHF omnidirectional range beacons aircraft navigate on. Turn the OBS and the needle answers, exactly as the instrument in the aeroplane does. The window is drawn as a cockpit course indicator, with a working OBS knob.

built and tested · catalogue entry to follow

WEFAX

Instrument decoder

The weather charts broadcast to shipping, drawn as the fax machine that used to receive them would have drawn them, lamp ladder and all. The window is drawn as a marine fax machine's control panel.

built and tested · catalogue entry to follow

406 MHz Distress Beacons

Instrument decoder

The 406 MHz beacons carried by aircraft, vessels and people. The window is an alarm panel because that is what the signal means. The window is drawn as an alarm panel, the fifteen-character identity on seven-segment glass.

built and tested · catalogue entry to follow

ERT Utility Meters

Instrument decoder

The short bursts domestic electricity, gas and water meters send for drive-by reading, shown on a register like the one on the meter itself. The window is drawn as an electricity meter's register.

built and tested · catalogue entry to follow

433 MHz Weather Sensors

Instrument decoder

The garden temperature and humidity sensors on 433 MHz, displayed on the kind of console they were sold with. The window is drawn as an Oregon Scientific console.

built and tested · catalogue entry to follow

A fitted plugin runs inside FoxSDR's own process, with every privilege FoxSDR has. There is no sandbox. Retuning is the one thing the console actually gates: off by default, off for every newly installed plugin. Plugins are ABI-exact — one built for a different host version is refused rather than loaded, because a struct-layout difference becomes memory corruption days later.

Status · how well is it actually tested?

CONFIRMED AGAINST REAL SIGNALS
ADS-B

Aircraft decoded live off the air, cross-checked across message types. The audio chain has been confirmed by ear on broadcast FM.

VERIFIED AGAINST SYNTHESISED SIGNALS
AIS, APRS, SSTV, Morse, RTTY and POCSAG

Tested against generated waveforms and published constants. That is real evidence, and it is not the same thing as off-air confirmation.

EXPLICITLY UNVERIFIED
Inmarsat-C

Published at 0.1.0 and marked experimental in the catalogue itself.

THE BUILD
54 suites, passing on Windows and Linux

The DSP core and every decoder carry unit tests. FoxSDR is working and in daily use, and still pre-1.0: the interface and the catalogue are moving.

LINUX
Builds, but not usable yet

A Linux build exists and passes the same 54 suites, and fourteen of the fifteen catalogue plugins now ship Linux builds beside the Windows ones. Windows is still the only supported platform, for one blunt reason: no radio has ever been driven through the Linux build. Build it and experiment; do not rely on it.

Download

FoxSDR 0.98.1 for Windows STABLE

An Inno Setup installer that puts down the application, the SoapySDR runtime and the app-local Microsoft C runtime. It writes nothing outside its install directory and your own user profile, and uninstalls cleanly from Add/Remove Programs.

foxsdr-setup-0.98.1.exe · 3.8 MB · Windows x64

SHA-256 b04e0b7f92649fcacf39b099fe6fffbf76549a10a712bb333233eea88d112830

FoxSDR 0.98.1 for Linux IN DEVELOPMENT

The same source, built for x86-64 Linux. It builds and passes its 130 tests there, and its native drivers reach the radio through the kernel's own usbfs interface, but no radio has yet been driven through it on a Linux machine. Take it to find out what is broken, not to use as a receiver. Both files need SoapySDR, OpenSSL, ALSA and OpenGL from your distribution (libsoapysdr0.8 libssl3 libasound2 on Ubuntu); the tarball carries the udev rule and the notes on installing it, and the AppImage runs without FUSE with APPIMAGE_EXTRACT_AND_RUN=1.

FoxSDR-0.98.1-x86_64.AppImage · 4.1 MB

SHA-256 54be3009ebabf584d3e71ad358a9e39fa12a74146daeaf770f126fa714daa01c

foxsdr-0.98.1-linux-x64.tar.gz · 3.4 MB

SHA-256 99a89cb27e97da78953e76711758062fc3061dbd6d3e7f5090a72fb333249042

FoxSDR 0.98.1 for Android ALPHA

The same source, built for arm64 Android and offered as a sideloadable APK — there is no Play listing yet and the application checks for updates on Windows only, so this page is the only place a newer build is announced. arm64 is an ABI we have never run on real hardware; an aircraft or ship decoder that has flown on a B200 for months has never touched a phone's radio stack, a battery, or Android's own scheduler, and a tablet or handset is expected to surface faults the desktop build never could. That is the point of sideloading it rather than waiting for a store listing: a crash or freeze report from an arm64 device is new information, not a sign the release is broken.

To install it: download the APK below, then allow installs from unknown sources — Android blocks anything from outside the Play Store by default, so open the downloaded file and accept the prompt for your browser or file manager (named Install unknown apps on current Android, the same switch under its older name). There is no separate driver step; the application talks to a USB SDR through Android's own USB host APIs once you grant it permission for the device.

FoxSDR-0.98.1-android.1.apk · 6.7 MB · arm64

SHA-256 a83e61f50e4be7ef3f382bb9512a51b9eec36096c63df88fb0a6229c6135c3e7

The application is licensed under the PolyForm Noncommercial License 1.0.0. Hobbyists, amateur radio operators, students, charities, schools and public bodies may use, modify and share it at no cost — permanently and unconditionally. No trial period, no registration, no licence key, no activation, and no feature held back to sell you later. Using it in a business, selling it, bundling it with hardware or building a product from it needs a commercial licence. That is what funds the free half.

FoxSDR is an independent project, not affiliated with or endorsed by SDR++ or its authors. Bundled third-party components keep their own permissive licences.

Before you run it

Reported, and what happened to it

Crash reports from the application and bug reports from testers end up here, in the open, so you can see what is known to be wrong before you download — and see that reporting a fault actually leads somewhere. This list is drawn from the live report store on every visit. Every tester-filed bug is currently closed.

Still open 0

  • Nothing is open right now: every fault reported so far has been dealt with. New reports appear here as they arrive.

Reported, then fixed

  • fixed in 0.98.1Crash at shutdown with the Survey Engine module fitted

    As FoxSDR closed, the Survey Engine module was destroyed after the application had already freed the table of services a module is promised for as long as it is loaded. Finishing its dwell in progress, the module asked that table for the time and read freed memory - an access violation on Windows, and on Android the same read followed by a lock on a destroyed object, which aborts. The application also held its own lock across a module's shutdown call, so a module asking to retune at that moment would have frozen it. Modules are now unloaded before the services they hold go away, the services table outlives every module until the process exits, and the lock is released around a module's shutdown.

    1 report · on 0.96.3 · fixed in 0.98.1
  • fixed in 0.98.0Window freezes saving the configuration on a slow or locked disk

    Every change to a setting saved config.json on the window's own thread, and the write itself has no timeout: on one machine, with the profile folder on a slow or synchronised disk, it held the frame loop long enough for the hang watchdog to file a report. The save now serialises on the window thread and hands the bytes to a worker, which writes a temporary file beside the target and renames it into place, so a half-written config.json can never be left behind either; a burst of changes lands once, and at exit the last save is given a bounded wait rather than an unbounded one.

    1 report · on 0.96.3 · fixed in 0.98.0
  • fixed in 0.97.1Window freezes closing an RSP after the service refused to stop it

    When the SDRplay API service had stopped answering, the library refused FoxSDR's request to stop the radio with 'service not responding'. That refusal was logged and nothing else, so the driver still believed the service was there, and closing the device to open another one called the library's release on the window's own thread - a call with no timeout, into a service that would never answer. The guard 0.97.0 added for an abandoned control now covers a refused stop too: the service is marked gone at the refusal, and closing the device returns at once. Recovery is restarting the SDRplay API service and then FoxSDR.

    2 reports · on 0.97.0 · fixed in 0.97.1 · 1 report since it was marked, none showing the fix failing
  • fixed in 0.97.0Window freezes stopping an RSP after a control had already been abandoned

    0.96.3 stopped waiting on an SDRplay control that the service would not answer, but abandoning it released the radio, which stopped the pipeline, which called the vendor library's uninitialise on the window's own thread - into a device the abandoned call was still holding. The API lets one call at a time near a radio, so the window froze on the step meant to be the recovery. Once a control has been abandoned or the service has said it is gone, FoxSDR no longer calls uninitialise, release or close for that device: stopping and closing return at once and the radio is left to the service. Recovery is restarting the SDRplay API service and then FoxSDR.

    1 report · on 0.96.4 · fixed in 0.97.0
  • fixed in 0.97.0Window freezes choosing an output device in the Sinks panel

    Opening the audio device ran on the window's own thread, and Windows' waveOut open has no timeout: on one machine it held the frame loop for 57 seconds, long enough for the hang watchdog to file a report before the loop came back. The open now runs on a worker; the click waits one and a half seconds for a healthy device to answer, then goes back to drawing with the panel reading OPENING until the driver replies. The once-a-second reopen the audio watchdog performs for a dead stream goes the same way, which matters more, because a device that has gone away is exactly the one whose open blocks.

    1 report · on 0.96.4 · fixed in 0.97.0
  • fixed in 0.96.4A display change or driver stall was reported as a FoxSDR freeze

    A monitor going off, a resolution change or a remote session left the display driver refusing to present a frame, and the watchdog filed it as ours. Display changes and minimised windows now pause the watchdog, and a stall inside the driver is kept as a local note rather than reported.

    1 report · on 0.96.3 · fixed in 0.96.4

Descriptions are written from grouped, anonymous reports — never from a report's raw contents. What a crash report does and does not contain is listed in the application's own Settings, where the whole thing can be switched off.

Become a beta tester

what I will test · nothing selected yet

The section above is honest about what has never been confirmed against a real signal. This is how that gets fixed. Tell us what you are willing to test and what you will test it with, and you will hear when a build lands that needs it — with somewhere to send what breaks.

Everything that needs testing

Drag a tile across, or press it — Enter and Space work too.

What I will test 0

Drop tiles here. Pick only what you can actually try — two areas tested properly beat twenty ticked.

Nothing chosen yet — drag a tile in from the left.

This site measures its own traffic — visits, where they come from and which downloads happen — and says exactly what it records in the privacy notice. The FoxSDR application sends nothing home unless you switch on its optional, anonymous usage report, which is off by default and never carries frequencies, decoded traffic or your location.