Repository navigation
Releases: madmedicnl/sdroxide-brown
Release list
SDR Oxide Brown v2.0.13.2_brown
SDR Oxyde Brun
SDR Oxide Brown
This is the Brown build of sdroxide — upstream's program with the
11 m citizens' band (CB) and shortwave-listening (SWL) work
added on top. It installs beside the upstream build and keeps its own
settings, so you can run both.
What this build adds
- 11 m / CB, used in full — the per-country channel plans
(WORLD/EU/DE/UK/US/AU), CB country flags on decodes, the WSJT-CB
digital exchange, and a one-time opt-in that opens transmit on 11 m
(the amateur-band lockout is generic, so CB is opted into rather
than assumed). - Shortwave listening — the SCHEDULE window over the EiBi
broadcast list, a reception log with SINPO/SIO and a QSL loop,
ECSS-U / ECSS-L and a receive tone control, two-minute
REPLAY, scheduled recordings, band scanning, the SIG ID
guide, and a LISTEN screen that hides every transmit control. - Decoding — the fork's own ACARS, HFDL, FSK441 and
(tr)uSDX support, plus everything upstream already carries. - A Morse trainer, station profiles, audible alerts, and
the fork's SDR Oxide Brown identity throughout.
Full detail — the User Manual
is the reference for every control; the
listening quick-start
and the CB quick-start
(also in Dutch, French and Italian) walk through each screen. The
manual's addendum and the
Pi Zero 2 W guide
cover running it headless as a network listening station.
Which build to download
Two builds are provided for every platform:
- Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows.msi, macOS.dmg). - SoapySDR (
-soapysdrsuffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a.deb(package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide-<version>-linux-aarch64-compat-soapysdr.debfor a
Raspberry Pi, Orange Pi or other ARM board, and thex86_64one for
a PC. Every.debhas the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide-<version>-linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
- USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxideinside the AppImage; the tarball or the
.debbeside it carries the same files if that is easier. - It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it asAPPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImageinstead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
- Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup. - Linux: the
-soapysdr.debdeclares its dependencies and
recommendssoapysdr-module-all. For the portable tarball install
libsoapysdr0.8,soapysdr-module-all, and ALSA (libasound2). - macOS:
brew install soapysdrplus a driver such as
soapyrtlsdrorsoapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
- Linux: the
.debinstalls the udev rules for you. Portable
tarballs now ship them:sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3is the bare FX3 bootloader it enumerates as on every
plug-in,04b4:00f1is the same device after sdroxide uploads
firmware into it. - Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above. - macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
- Linux: on Arch, the
nrsc5-gitAUR package. Elsewhere, build
nrsc5 from source:sudo make installputslibnrsc5.soin
/usr/local/lib, where sdroxide looks. Alibnrsc5.sobeside the
executable works too. - Windows: put
libnrsc5.dlland the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2. - macOS: build and install nrsc5 from source, which puts
libnrsc5.dylibin/usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://<host>:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.
...
SDR Oxide Brown v2.0.13.1_brown
SDR Oxide Brown
The CB and shortwave-listener build of sdroxide — upstream's program with
11 m / CB and SWL added on top. It installs beside the upstream build
and keeps its own settings. See the README.
Which build to download
Standard needs no SoapySDR and drives RTL-SDR, RX-888 and Airspy HF+
directly — take it unless your device needs SoapySDR (-soapysdr: HackRF,
Airspy R2/Mini, PlutoSDR). Installers are Standard only, and every build embeds
the browser client: sdroxide --server, then open http://<host>:4950.
What changed in v2.0.13.1_brown
Fixed
- A sound card is no longer taken out of the audio server by opening the settings. The page asked the patchbay what it held on every frame it drew, and each ask was a PipeWire client connecting and dying — which aborts a card's activation, so the card left the graph until the server was restarted. Reported on 2.0.13; the fix is here.
Added
- Settings → UI: which broadcast stations a screen may show — on the panadapter's span, or the whole band. The span is right for a label on that waterfall and wrong for a whole-band map.
SDR Oxide Brown nightly 2026-10-16
Nightly build of main — untested, and not a release. Take a tagged release for anything real.
Which build to download
Two builds are provided for every platform:
- Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows.msi, macOS.dmg). - SoapySDR (
-soapysdrsuffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a.deb(package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide-<version>-linux-aarch64-compat-soapysdr.debfor a
Raspberry Pi, Orange Pi or other ARM board, and thex86_64one for
a PC. Every.debhas the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide-<version>-linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
- USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxideinside the AppImage; the tarball or the
.debbeside it carries the same files if that is easier. - It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it asAPPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImageinstead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
- Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup. - Linux: the
-soapysdr.debdeclares its dependencies and
recommendssoapysdr-module-all. For the portable tarball install
libsoapysdr0.8,soapysdr-module-all, and ALSA (libasound2). - macOS:
brew install soapysdrplus a driver such as
soapyrtlsdrorsoapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
- Linux: the
.debinstalls the udev rules for you. Portable
tarballs now ship them:sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3is the bare FX3 bootloader it enumerates as on every
plug-in,04b4:00f1is the same device after sdroxide uploads
firmware into it. - Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above. - macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
- Linux: on Arch, the
nrsc5-gitAUR package. Elsewhere, build
nrsc5 from source:sudo make installputslibnrsc5.soin
/usr/local/lib, where sdroxide looks. Alibnrsc5.sobeside the
executable works too. - Windows: put
libnrsc5.dlland the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2. - macOS: build and install nrsc5 from source, which puts
libnrsc5.dylibin/usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://<host>:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.
SDR Oxide Brown v2.0.12_brown
SDR Oxide Brown
The CB and shortwave-listener build of sdroxide — upstream's program with
11 m / CB and SWL added on top. It installs beside the upstream build
and keeps its own settings. See the README.
Which build to download
Standard needs no SoapySDR and drives RTL-SDR, RX-888 and Airspy HF+
directly — take it unless your device needs SoapySDR (-soapysdr: HackRF,
Airspy R2/Mini, PlutoSDR). Installers are Standard only, and every build embeds
the browser client: sdroxide --server, then open http://<host>:4950.
What changed in v2.0.12_brown
A start frequency the radio cannot reach now falls back to one it can, and the
spectrum trace can be filled.
Fixed
- A start frequency the tuner cannot reach no longer stops the radio opening — it retries at the last frequency this radio actually tuned, and says which two frequencies were involved. An I.F. offset saved as a start frequency made an RTL-SDR unstartable until the number was corrected by hand, every time (issue #72).
Added
- A coloured fill under the spectrum trace, fading to the line, with the colour in the screen a profile carries (Kevin, #78).
Needs feedback
- The fallback has not been seen on the hardware that reported it — the decision is tested, that the RTL-SDR then starts needs a stick that was doing this. Tell us what you get.
- The transponder bands have not been seen on the air — the arithmetic is tested, that they land on the signals needs a bird overhead.
- The grey line on a path has only been seen on a path entirely in night — try one that is partly daylit.
- The UDP audio stream has been tested over a socket, not by ear — if you pipe it into
aplayor a decoder, tell us whether it sounds right. - No Olivia transmission has yet been copied by fldigi or MultiPSK.
- The 1.9.17 phone crash has never been reproduced here.
SDR Oxide Brown v2.0.11_brown
Satellite passes and the transponder bands, a schedule you can search by
frequency, and the received audio out over UDP.
Added
- A PASSES tab in the satellite window — every upcoming pass, soonest first, over the next day or two, with an elevation filter for the ones worth waking up for.
- Satellite transponder bands on the frequency scale — with a lock running, the downlink segments are labelled and follow Doppler, so a linear transponder reads as "CW here, SSB here" rather than an unexplained slab.
- The satellite picker lists only the birds you can work — an all satellites switch, off by default.
- Search the schedule by frequency —
6185,6185 kHzor6.185in Find, beside the name search. - The received audio can go out over UDP —
host:porton Settings → Radio, mono 16-bit, one datagram per block, for an external decoder, a recorder or a second machine.
Changed
- SSTV reception is better on weak pictures — a rewritten demodulator: mean error 87.2 → 75.6 at 0 dB and 42.4 → 33.7 at 10 dB. Slightly worse above 30 dB (4.3 → 5.5), where both are excellent.
- SSTV slant correction — a skewed picture is straightened rather than smeared.
- FT8 streams its decodes and drops the slow pass when a slot is waiting, so a slow machine loses detail rather than slot timing.
- The S-meter calibration reaches ±90 dB, from ±30, so a front end that does not report its gain can be corrected properly.
- CW: a held PTT keeps the transmitter keyed and silent for the keyer, and a MIDI key note no longer drops it.
- RTTY: a view on the tone pair no longer walks the dial, and a front end that has not heard its dial yet cannot have 0 Hz adopted.
Fixed
- A schedule source that quietly held nothing — a zip read as text, a season filename guessed, and a column off by one all loaded cleanly and returned the wrong answer.
Needs feedback
- The transponder bands have not been seen on the air — the arithmetic is tested, that they land on the signals needs a bird overhead. Tell us what you see.
- The grey line on a path has only been seen on a path entirely in night — try one that is partly daylit.
- The UDP audio stream has been tested over a socket, not by ear — if you pipe it into
aplayor a decoder, tell us whether it sounds right. - The deep FT8 pass now gives up when the next slot is waiting — on a slow machine, do you lose decodes or only detail?
- No Olivia transmission has yet been copied by fldigi or MultiPSK.
- The 1.9.17 phone crash has never been reproduced here.
SDR Oxide Brown v2.0.11.1_brown
This is the Brown build of sdroxide — upstream's program with the
11 m citizens' band (CB) and shortwave-listening (SWL) work
added on top. It installs beside the upstream build and keeps its own
settings, so you can run both.
What this build adds
11 m / CB, used in full — the per-country channel plans
(WORLD/EU/DE/UK/US/AU), CB country flags on decodes, the WSJT-CB
digital exchange, and a one-time opt-in that opens transmit on 11 m
(the amateur-band lockout is generic, so CB is opted into rather
than assumed).
Shortwave listening — the SCHEDULE window over the EiBi
broadcast list, a reception log with SINPO/SIO and a QSL loop,
ECSS-U / ECSS-L and a receive tone control, two-minute
REPLAY, scheduled recordings, band scanning, the SIG ID
guide, and a LISTEN screen that hides every transmit control.
Decoding — the fork's own ACARS, HFDL, FSK441 and
(tr)uSDX support, plus everything upstream already carries.
A Morse trainer, station profiles, audible alerts, and
the fork's SDR Oxide Brown identity throughout.
Full detail — the User Manual
is the reference for every control; the
listening quick-start
and the CB quick-start
(also in Dutch, French and Italian) walk through each screen. The
manual's addendum and the
Pi Zero 2 W guide
cover running it headless as a network listening station.
Which build to download
Two builds are provided for every platform:
Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows .msi, macOS .dmg).
SoapySDR (-soapysdr suffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a .deb (package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide--linux-aarch64-compat-soapysdr.deb for a
Raspberry Pi, Orange Pi or other ARM board, and the x86_64 one for
a PC. Every .deb has the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide--linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxide inside the AppImage; the tarball or the
.deb beside it carries the same files if that is easier.
It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it as APPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImage instead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup.
Linux: the -soapysdr.deb declares its dependencies and
recommends soapysdr-module-all. For the portable tarball install
libsoapysdr0.8, soapysdr-module-all, and ALSA (libasound2).
macOS: brew install soapysdr plus a driver such as
soapyrtlsdr or soapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
Linux: the .deb installs the udev rules for you. Portable
tarballs now ship them: sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3 is the bare FX3 bootloader it enumerates as on every
plug-in, 04b4:00f1 is the same device after sdroxide uploads
firmware into it.
Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above.
macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
Linux: on Arch, the nrsc5-git AUR package. Elsewhere, build
nrsc5 from source: sudo make install puts libnrsc5.so in
/usr/local/lib, where sdroxide looks. A libnrsc5.so beside the
executable works too.
Windows: put libnrsc5.dll and the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2.
macOS: build and install nrsc5 from source, which puts
libnrsc5.dylib in /usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.
What's Changed
Full Changelog: v2.0.9.4...v2.0.11.1
SDR Oxide Brown v2.0.10_brown
The broadcast schedule store, a LISTEN window built on it, and the undocked window set.
Added
- Three broadcast schedules in one store — EiBi, Aoki and HFCC, each tagged with where it came from, each reporting its own failure so one being unavailable never costs the others.
- Source filter in the SCHEDULE window — all of them, or one.
- The LISTEN window — what is on this span, where it is from, and how much of the path is in night. Clicking a station tunes it.
- Import your own station list — CSV, plain text or JSON; the unit is read from the number.
- A Download button per source, and every source listed whether or not it has one.
- The waterfall names only the station you are tuned to, and names a shared carrier once.
- The grey line on a path — each dot lit or dim by its own twilight.
- DAB / DAB+ receiver — station card, station list, DLS text, programme type, scan, and a VU meter that is the volume.
- Undocked mode — any tool window in its own OS window, for a second monitor, with workspaces to save an arrangement (Ctrl+W).
- The SDRuno-shaped window set — a band keypad, MAIN SP's toolbar, AUX SP as a second spectrum, and a WINDOWS menu.
- FLATTEN — levels the waterfall's noise floor across the band.
- Play a recording back into the decoders — REC → RECORDINGS.
- Ctrl+C copies the tooltip on screen.
- The spectrum on a phone, upright or sideways.
- Receive EQ (LOUDNESS), S-Meter calib, and an antenna rotator.
- The Calm theme.
Fixed
- A schedule source that quietly held nothing — a zip read as text, a season filename guessed, and a column off by one all loaded cleanly and returned the wrong answer.
- RTTY, NAVTEX and DSC were anchored 2210 Hz off the station on an SDR.
- SSTV decodes weak pictures — the header is found by tone energy, not one noisy reading.
- SSTV on 60 m, and weak SSTV with CTR on.
- Pluto: the S-meter followed the radio's own gain.
- RDS: a medium WFM station showed NO SYNC and decoded nothing.
- Playback sound chopped, and stereo recordings played back in mono.
- Windows builds — the vendored faad2 patch matches its anchor.
- eQSL accounts with more than one QTH profile work.
- Advisories can be dismissed for good.
Changed
- Settings are stored on the server, not in the browser.
- CTR and step-snap are on by default.
- DAB / DAB+: 2.5 Msps is the reference.
- The digital modes are a real dropdown.
- SSTV can be decoded on any frequency (KEEP DIAL).
Needs feedback
- The grey line on a path has only been seen on a path entirely in night — point it at a station whose path is partly daylit, and tell us whether the gradient runs the right way along the line.
- No Olivia transmission has yet been copied by fldigi or MultiPSK — the transmit probe writes a WAV of exactly what we would send; run it through your decoder and send us what it read.
- A phone crash reported against 1.9.17 has never been reproduced here — if it happens, the browser console output is what we need to find it.
- A deep FT8 pass now gives up when the next slot is waiting — if you run Deep on a slow machine, tell us whether you lose decodes or just detail.
SDR Oxide Brown v2.0.9.5_brown
SDR Oxide Brown
This is the Brown build of sdroxide — upstream's program with the
11 m citizens' band (CB) and shortwave-listening (SWL) work
added on top. It installs beside the upstream build and keeps its own
settings, so you can run both.
What this build adds
- 11 m / CB, used in full — the per-country channel plans
(WORLD/EU/DE/UK/US/AU), CB country flags on decodes, the WSJT-CB
digital exchange, and a one-time opt-in that opens transmit on 11 m
(the amateur-band lockout is generic, so CB is opted into rather
than assumed). - Shortwave listening — the SCHEDULE window over the EiBi
broadcast list, a reception log with SINPO/SIO and a QSL loop,
ECSS-U / ECSS-L and a receive tone control, two-minute
REPLAY, scheduled recordings, band scanning, the SIG ID
guide, and a LISTEN screen that hides every transmit control. - Decoding — the fork's own ACARS, HFDL, FSK441 and
(tr)uSDX support, plus everything upstream already carries. - A Morse trainer, station profiles, audible alerts, and
the fork's SDR Oxide Brown identity throughout.
Full detail — the User Manual
is the reference for every control; the
listening quick-start
and the CB quick-start
(also in Dutch, French and Italian) walk through each screen. The
manual's addendum and the
Pi Zero 2 W guide
cover running it headless as a network listening station.
Which build to download
Two builds are provided for every platform:
- Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows.msi, macOS.dmg). - SoapySDR (
-soapysdrsuffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a.deb(package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide-<version>-linux-aarch64-compat-soapysdr.debfor a
Raspberry Pi, Orange Pi or other ARM board, and thex86_64one for
a PC. Every.debhas the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide-<version>-linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
- USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxideinside the AppImage; the tarball or the
.debbeside it carries the same files if that is easier. - It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it asAPPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImageinstead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
- Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup. - Linux: the
-soapysdr.debdeclares its dependencies and
recommendssoapysdr-module-all. For the portable tarball install
libsoapysdr0.8,soapysdr-module-all, and ALSA (libasound2). - macOS:
brew install soapysdrplus a driver such as
soapyrtlsdrorsoapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
- Linux: the
.debinstalls the udev rules for you. Portable
tarballs now ship them:sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3is the bare FX3 bootloader it enumerates as on every
plug-in,04b4:00f1is the same device after sdroxide uploads
firmware into it. - Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above. - macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
- Linux: on Arch, the
nrsc5-gitAUR package. Elsewhere, build
nrsc5 from source:sudo make installputslibnrsc5.soin
/usr/local/lib, where sdroxide looks. Alibnrsc5.sobeside the
executable works too. - Windows: put
libnrsc5.dlland the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2. - macOS: build and install nrsc5 from source, which puts
libnrsc5.dylibin/usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://<host>:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.
What's Changed
D...
SDR Oxide Brown v2.0.9.4_brown
SDR Oxide Brown
This is the Brown build of sdroxide — upstream's program with the
11 m citizens' band (CB) and shortwave-listening (SWL) work
added on top. It installs beside the upstream build and keeps its own
settings, so you can run both.
What this build adds
- 11 m / CB, used in full — the per-country channel plans
(WORLD/EU/DE/UK/US/AU), CB country flags on decodes, the WSJT-CB
digital exchange, and a one-time opt-in that opens transmit on 11 m
(the amateur-band lockout is generic, so CB is opted into rather
than assumed). - Shortwave listening — the SCHEDULE window over the EiBi
broadcast list, a reception log with SINPO/SIO and a QSL loop,
ECSS-U / ECSS-L and a receive tone control, two-minute
REPLAY, scheduled recordings, band scanning, the SIG ID
guide, and a LISTEN screen that hides every transmit control. - Decoding — the fork's own ACARS, HFDL, FSK441 and
(tr)uSDX support, plus everything upstream already carries. - A Morse trainer, station profiles, audible alerts, and
the fork's SDR Oxide Brown identity throughout.
Full detail — the User Manual
is the reference for every control; the
listening quick-start
and the CB quick-start
(also in Dutch, French and Italian) walk through each screen. The
manual's addendum and the
Pi Zero 2 W guide
cover running it headless as a network listening station.
Which build to download
Two builds are provided for every platform:
- Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows.msi, macOS.dmg). - SoapySDR (
-soapysdrsuffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a.deb(package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide-<version>-linux-aarch64-compat-soapysdr.debfor a
Raspberry Pi, Orange Pi or other ARM board, and thex86_64one for
a PC. Every.debhas the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide-<version>-linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
- USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxideinside the AppImage; the tarball or the
.debbeside it carries the same files if that is easier. - It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it asAPPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImageinstead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
- Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup. - Linux: the
-soapysdr.debdeclares its dependencies and
recommendssoapysdr-module-all. For the portable tarball install
libsoapysdr0.8,soapysdr-module-all, and ALSA (libasound2). - macOS:
brew install soapysdrplus a driver such as
soapyrtlsdrorsoapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
- Linux: the
.debinstalls the udev rules for you. Portable
tarballs now ship them:sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3is the bare FX3 bootloader it enumerates as on every
plug-in,04b4:00f1is the same device after sdroxide uploads
firmware into it. - Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above. - macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
- Linux: on Arch, the
nrsc5-gitAUR package. Elsewhere, build
nrsc5 from source:sudo make installputslibnrsc5.soin
/usr/local/lib, where sdroxide looks. Alibnrsc5.sobeside the
executable works too. - Windows: put
libnrsc5.dlland the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2. - macOS: build and install nrsc5 from source, which puts
libnrsc5.dylibin/usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://<host>:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.
What's Changed
...
v2.0.9.3_brown
SDR Oxide Brown
This is the Brown build of sdroxide — upstream's program with the
11 m citizens' band (CB) and shortwave-listening (SWL) work
added on top. It installs beside the upstream build and keeps its own
settings, so you can run both.
What this build adds
- 11 m / CB, used in full — the per-country channel plans
(WORLD/EU/DE/UK/US/AU), CB country flags on decodes, the WSJT-CB
digital exchange, and a one-time opt-in that opens transmit on 11 m
(the amateur-band lockout is generic, so CB is opted into rather
than assumed). - Shortwave listening — the SCHEDULE window over the EiBi
broadcast list, a reception log with SINPO/SIO and a QSL loop,
ECSS-U / ECSS-L and a receive tone control, two-minute
REPLAY, scheduled recordings, band scanning, the SIG ID
guide, and a LISTEN screen that hides every transmit control. - Decoding — the fork's own ACARS, HFDL, FSK441 and
(tr)uSDX support, plus everything upstream already carries. - A Morse trainer, station profiles, audible alerts, and
the fork's SDR Oxide Brown identity throughout.
Full detail — the User Manual
is the reference for every control; the
listening quick-start
and the CB quick-start
(also in Dutch, French and Italian) walk through each screen. The
manual's addendum and the
Pi Zero 2 W guide
cover running it headless as a network listening station.
Which build to download
Two builds are provided for every platform:
- Standard (no suffix) — built without SoapySDR, so it needs no
libSoapySDR/PothosSDR at all. It still drives real SDR hardware:
RTL-SDR dongles, RX-888 / RX-888 Mk2 receivers and the
Airspy HF+ (Dual / Discovery / Ranger) are opened directly over
USB by native pure-Rust drivers (the RX-888's FX3 firmware is
bundled and uploaded automatically — no vendor driver package). Plus a CAT-controlled radio (Icom/Yaesu/Xiegu) over a
serial port + USB sound card (Settings → Audio/CAT), and the
OpenHPSDR and TCI network backends. This is the recommended
download for most users, and the one packaged as an installer
(Windows.msi, macOS.dmg). - SoapySDR (
-soapysdrsuffix) — everything above plus a
dynamic link against SoapySDR, for devices that have no native
driver here (HackRF, Airspy R2/Mini, PlutoSDR, …). No Windows or
macOS installer, but on Linux it comes as a.deb(package
sdroxide-soapysdr) as well as a portable archive — take
sdroxide-<version>-linux-aarch64-compat-soapysdr.debfor a
Raspberry Pi, Orange Pi or other ARM board, and thex86_64one for
a PC. Every.debhas the browser client built into the binary, so
the server serves the web UI with nothing else installed.
On Linux both builds additionally come as a -compat artifact
(e.g. linux-x86_64-compat), compiled against an older glibc (2.35).
Take the -compat file if the regular one refuses to start with
version `GLIBC_2.39' not found — which is what happens on
stable/LTS distributions such as Ubuntu 22.04, Linux Mint 21,
Debian 12 and Raspberry Pi OS (bookworm). The regular Linux builds
need glibc 2.39 or newer (Ubuntu 24.04 / Mint 22 / Debian 13); the
-compat builds and .debs work on both old and new distributions.
Just want to try it? Take the AppImage
sdroxide-<version>-linux-x86_64-compat.AppImage (and the aarch64
one for a Raspberry Pi or other ARM board) is one file: download it,
chmod +x it, and run it. Nothing is installed, nothing is unpacked,
and there is no package manager involved.
It is the Standard build, so no SoapySDR is needed — and none of
the native drivers go through it anyway: RTL-SDR, RX-888, HackRF,
Airspy, Airspy HF+, SDRplay, LimeSDR, PlutoSDR, HPSDR, TCI, SpyServer
and a CAT rig on a sound card are all compiled in. It is built against
glibc 2.35, so it runs on old and new distributions alike.
Two things it cannot do for you, because no single file can:
- USB receivers still need the udev rule. The rule lives in
usr/share/doc/sdroxideinside the AppImage; the tarball or the
.debbeside it carries the same files if that is easier. - It needs FUSE to mount itself, which every desktop distribution
has (fuse3). Where it is missing — a minimal container, say — run
it asAPPIMAGE_EXTRACT_AND_RUN=1 ./sdroxide-….AppImageinstead.
Arch Linux
No Arch package ships with the release — build sdroxide with the
PKGBUILD in packaging/arch/, which clones the repo at the matching
tag and pulls the vendored submodules itself:
cd sdroxide/packaging/arch && makepkg -si
Requirements (SoapySDR builds)
Install SoapySDR together with the driver module for your radio:
- Windows: install PothosSDR
and select "Add PothosSDR to the system PATH" during setup. - Linux: the
-soapysdr.debdeclares its dependencies and
recommendssoapysdr-module-all. For the portable tarball install
libsoapysdr0.8,soapysdr-module-all, and ALSA (libasound2). - macOS:
brew install soapysdrplus a driver such as
soapyrtlsdrorsoapyhackrf.
The Standard builds need only audio support (ALSA libasound2 on
Linux; built in on Windows/macOS) — no SoapySDR. On macOS the app is
unsigned: right-click → Open on first launch, or clear quarantine with
xattr -dr com.apple.quarantine sdroxide.app.
USB receivers (RTL-SDR, RX-888) — all builds
- Linux: the
.debinstalls the udev rules for you. Portable
tarballs now ship them:sudo cp 60-sdroxide-*.rules /usr/lib/udev/rules.d/ && sudo udevadm control --reload, then
replug. For the RX-888 both ids in the rule are required —
04b4:00f3is the bare FX3 bootloader it enumerates as on every
plug-in,04b4:00f1is the same device after sdroxide uploads
firmware into it. - Windows: bind the device to WinUSB with
Zadig — for the RX-888, once for each of
the two ids above. - macOS: nothing to do.
The RX-888 FX3 firmware image is bundled in every binary and uploaded
to the receiver at open time. It is MIT licensed (© 2017-2020 Oscar
Steila IK1XPV and the rx888-firmware contributors) and its notice
ships as LICENSE-rx888-firmware.txt in every package.
HD Radio — all builds
HD Radio (the digital sidecar of North American FM stations) is
decoded by libnrsc5 from the nrsc5
project, which is not bundled: sdroxide looks for it at startup
and uses it if it is there. Without it the HD RADIO mode is shown
greyed out, and hovering it says why. With a remote client, it is the
station's machine that needs it, not the client's.
- Linux: on Arch, the
nrsc5-gitAUR package. Elsewhere, build
nrsc5 from source:sudo make installputslibnrsc5.soin
/usr/local/lib, where sdroxide looks. Alibnrsc5.sobeside the
executable works too. - Windows: put
libnrsc5.dlland the DLLs it depends on beside
sdroxide.exe. nrsc5 publishes no Windows download; it builds with
MSYS2. - macOS: build and install nrsc5 from source, which puts
libnrsc5.dylibin/usr/local/lib.
Restart sdroxide after installing it: the library is looked for once,
at startup.
Spoken announcements
The radio can read itself out — frequency once the dial stops moving,
mode and band as one phrase, band-edge warnings, the SWR while you
tune up, and FT8/JS8 messages addressed to you — so it can be operated
without seeing it. Switch it on under Settings → General → Voice
announcements. The window is also exposed to NVDA, Orca and
VoiceOver.
The neural voice runs on your own machine: nothing is sent anywhere
and no speech service has to be installed. It ships in a voices
directory beside the program (inside Contents/Resources in the macOS
bundle, /usr/share/sdroxide/voices from the .deb), and is
CC BY-NC-SA 4.0 rather than GPL — which is why it is a separate
data file that sdroxide reads at run time rather than part of the
binary. Its notice ships as LICENSE-voice.txt, and
LICENSE-cmudict.txt covers the pronunciation dictionary embedded in
the binary (BSD-2-Clause). Extra Piper voices can be dropped into
speech_voices/ in the config directory and picked in Settings.
CW decoding
CW is decoded by DeepCW, a
neural model embedded in every binary. It reads the spectrogram
directly instead of fitting a timing model to the envelope, which is
why it keeps copying well below the point where a classic decoder
gives up, and why it copies hand-sent CW whose timing no fit would
accept. The band skimmer uses the same model on every signal it finds.
The model and its reference implementation are AGPL-3.0-only, a
stronger copyleft than sdroxide's GPL, and it is linked into the
binary rather than read as a data file — so it covers the release as a
whole. In particular AGPL section 13 applies: if you run
sdroxide --server and other people use that instance over a
network, you must offer them the Corresponding Source. The notice
ships as LICENSE-deepcw.txt in every package.
Every binary embeds the web client: run sdroxide --server and open
http://<host>:4950 in a browser. sdroxide-web-*.zip contains the
standalone web assets for use with --web-root.