Open beta Version 0.59.0 · Windows x64 · free for noncommercial use

The radio band, on your screen.

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
  • Runs with no radio attached
  • 57 test suites in the build
8demodulation modes
11decoder plugins
Anyradio SoapySDR reaches
0GPL dependencies

What it does

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

Any device SoapySDR can reach, with antenna, sample rate and per-stage gain selection. Developed against an Ettus B200. No hardware at all? The built-in signal generator and I/Q file playback mean the whole application still runs.

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.

A map of what you decode

Aircraft, vessels and stations plotted together as they are received. Decoder plugins can put their own targets and tracks on it, and a basemap plugin adds street-level tiles from a tile server you run yourself.

Pictures out of the noise

Slow-scan television and weather-satellite images build line by line in their own window and save as files. SSTV identifies the mode from the transmission's own header and corrects the clock drift that leaves other decoders with a slanted picture.

Decoders as plugins

Decoders install from a catalogue inside the app, which is contacted only when you press Browse. Every download is HTTPS, size-capped, refused on a cross-host redirect, and verified against the sha256 in the catalogue before it is allowed to become a file.

A plugin cannot take the radio

A plugin that can retune the receiver can also take it away from you, so retuning is a permission you grant per plugin. It is off by default, off for every newly installed plugin, and a plugin that asked and was refused says so on its panel instead of silently doing nothing.

It fits the software you already run

FoxSDR speaks the protocol Hamlib's rigctld uses, so logging and digital-mode software can read and set the frequency and mode over the network — point the client at this machine and pick a "NET rigctl" radio. Tuning inside the band already on screen moves only the VFO, so there is no retune and no gap in the waterfall. It always reports receive and refuses to transmit, because it is a receiver and pretending otherwise would leave a client waiting on a signal that never goes out.

Clean-room, and licensed on purpose

No GPL code and no GPL-linked dependency anywhere in the tree. ImGui, GLFW, PortAudio, nlohmann/json and pffft are vendored at pinned revisions and built from source; FFTW and librtlsdr are deliberately not used. That discipline is what makes the licence a choice.

Put the receiver where the antenna is

FoxSDR serves its whole interface over HTTP on your own network, at feature parity with the desktop — same spectrum, same controls, live audio, 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 — never port-forward it directly.
The FoxSDR interface in a web browser: source and radio controls down the left, spectrum and waterfall across the top, and a map of decoded aircraft over northern England listed with their registrations, types and operators.

The decoder catalogue

Eleven plugins are published today. 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.

v1.0.0 · MIT · ABI 3

Aircraft Info

map enrichmentnotice

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

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.0 · MIT · ABI 3

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.0 · MIT · ABI 3

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

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

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

POCSAG Pager Decoder

audio decodertested, not yet off airnotice

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.0 · MIT · ABI 3

Map Imagery

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.0.0 · MIT · ABI 3

Inmarsat-C / EGC Decoder

I/Q decoderexperimentalnotice

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 at 0.1.0 saying exactly that.

v0.1.0 · MIT · ABI 3

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

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. plugin_abi.h is MIT-licensed on purpose, so anyone — including commercial vendors — can write one without asking us for a licence.

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

The DSP core and every decoder carry unit tests — 54 suites in the current source, passing on both Windows and Linux. 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 ten of the eleven catalogue plugins now ship Linux builds beside the Windows ones, so the decoders install and run there too. Windows is still the only supported platform, for one blunt reason: no radio has ever been driven through the Linux build. It has only run under WSL and a virtual display in CI, never on a real desktop with a real sound card. Build it and experiment; do not rely on it.

Download

FoxSDR 0.59.0 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.

Download foxsdr-setup-0.59.0.exe 3.1 MB · Windows x64

SHA-256 73de8e2472d52776124265b1d53938086515411ecf7984636a2ad7f103dc80b7

Nightly testing

The same product built from the latest source rather than from a release. It gets fixes days or weeks earlier and it is not the build to install if you just want a working receiver: it has had no soak testing, and something that works today may not tomorrow. Take it if you are helping find problems — and when you report one, the version below is what identifies your build.

No nightly is currently published — the latest fixes are all in the stable build above. A new nightly appears here when master moves ahead of it.

Before you run it

  • SmartScreen will warn you. The installer is not code-signed yet, so Windows shows "Windows protected your PC". Choose More info → Run anyway if you are happy to proceed. Signing is planned; the hash above is how you check the file until then.
  • Radio drivers are a separate install. Hardware support comes from PothosSDR or radioconda — see POSTINSTALL.txt in the install folder. FoxSDR finds either in its default location by itself. It runs without either, using the signal generator or I/Q playback.
  • RTL-SDR dongles need Zadig. Windows binds them to its DVB-T television driver, and under that driver the dongle is invisible to every SDR application — not just this one. Run Zadig, tick Options → List All Devices, select "Bulk-In, Interface (Interface 0)", choose WinUSB and click Replace Driver. Once per dongle, per machine.
  • No radio showing up? Open the Source dropdown and press Refresh — the panel then reports where it searched and which vendor modules it loaded. Builds before 0.56.0 looked in the wrong place and detected no hardware at all, so upgrade first.
  • Windows x64 only at the moment.

Free for noncommercial use. Commercial use needs a licence.

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.

Become a beta tester

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.