SOFTWARE-DEFINED RADIO TRANSCEIVER

The radio,
reforged in Rust

A powerful SDR transceiver client with a GPU panadapter, dual VFOs, neural noise reduction, built-in skimmers, a full stack of digital modes, Winlink radio email, 868 MHz sensor decoding, hands-free satellite operation and a live 3D space-weather globe — running native on Linux, macOS & Windows, or streamed to any browser.

$ cargo install --git https://github.com/dividebysandwich/sdroxide

(arch-linux)$ paru -S sdroxide

Plug in whatever you own

SUPPORTED RADIOS

SDR Oxide supports everything from USB dongles, direct-sampling HF receivers, wideband IQ radios to network transceivers, dongle servers and CAT-controlled rigs and handhelds with nothing but an audio socket — twenty-one interface families through pluggable backends.

RTL-SDR

Native RTL-SDR

RTL2832U sticks driven straight over USB by a native Rust driver — no SoapySDR, no libusb, so they work in the stock installers. R820T/T2 and R828D tuners; HF through a Blog V4 or direct sampling.

RX-888

Native RX-888

RX-888 and Mk2 over USB 3 on a native Rust driver — no SoapySDR, no vendor package, firmware uploaded for you. 0–32 MHz sampled straight, feeding the wideband scope — and on a Mk2 the built-in R828D tuner is driven too, so the same receiver covers VHF and UHF and switches between its two antenna ports on its own.

HACKRF

Native HackRF

A HackRF One, Jawbreaker or rad1o over USB on a native Rust driver — no SoapySDR, no libhackrf, so it works in the stock installers. 1 MHz – 6 GHz, 2–20 Msps, wideband IQ receive and transmit.

CAT / AUDIO

CAT-controlled rigs

Hamlib and Flrig via network, Icom / CI-V, Kenwood, Yaesu and Xiegu radios over a USB sound card — SDRoxide drives frequency & mode while the rig feeds demodulated audio. Lend the rig a second SDR as its panadapter receiver and the same tab gains a real wideband waterfall.

USB AUDIO

Sound-card-only radios

A handheld, walkie-talkie or audio-dongle rig with no control port at all — receive audio from one sound card, transmit audio into another, and the radio's own VOX doing the keying. Digital modes decode from its audio, and the dial is a label for the log, the spots and the transmit lockout.

RTL_TCP / RSP_TCP

Dongles over the network

A dongle on a Pi at the foot of the mast, published with rtl_tcp — or an SDRplay RSP served by rsp_tcp, whose extended mode brings 16-bit samples and the RSP's own antenna, LNA and notch controls.

SPYSERVER

SpyServer receivers

An Airspy, Airspy HF+ or RTL-SDR published with Airspy's spyserver. Take it as wideband IQ over the LAN, or in the VFO+FFT low-bandwidth mode — a narrow stream that follows the dial plus the server's own FFT of the whole band — for a receiver at the far end of WiFi or a cellular link.

KIWISDR

KiwiSDR receivers

A KiwiSDR published with its kiwisdr server software. Take it as wideband IQ over the LAN, via the internet from hundreds of public KiwiSDR installations.

SOAPYSDR

Wideband IQ SDRs

Any SoapySDR device — LimeSDR, bladeRF and friends — for the full panadapter, skimmers and internal demodulation.

OPENHPSDR

HermesLite2 & Apache Labs

OpenHPSDR Ethernet SDRs on the LAN, speaking both Protocol 1 and Protocol 2 for high-dynamic-range wideband receive.

TCI

ExpertSDR / SunSDR

Connect to ExpertSDR3 and a SunSDR transceiver over the TCI WebSocket protocol and take over the waterfall.

ICOM LAN

Icom network radios

An IC-7300MK2, IC-705, IC-9700, IC-7610, IC-905 or IC-R8600 over its own Ethernet or WiFi port — the RS-BA1 protocol, no licence and no cable. Control, audio and the radio's own scope on one connection; take the 12 kHz IF instead of AF and SDRoxide does the demodulating.

SMARTSDR · EXPERIMENTAL

FlexRadio

A FLEX-6000 or FLEX-8000 joined as a GUI client, feeding SDRoxide a DAX IQ stream — panadapter, skimmers and digimodes built from the radio's own samples.

PLUTOSDR

ADALM-Pluto

An ADALM-Pluto driven straight over IIOD by a native Rust client — no libiio, no SoapySDR. Wideband IQ receive and transmit, with the board's real tuning limits read off the device.

SDRPLAY

SDRplay RSP

Every RSP — RSP1 through RSPdx R2 — driven natively through the vendor's SDRplay API service, no SoapySDR in the path. 1 kHz – 2 GHz receive at up to 10 Msps of IQ.

AIRSPY HF+

Airspy HF+

An HF+ Dual, Discovery or Ranger on a native Rust USB driver — no SoapySDR, no libairspyhf, so it works in the stock .msi and .dmg too.

AIRSPY R2 / MINI

Airspy R2 & Mini

A different receiver from the HF+, with its own native Rust driver: 24 MHz – 1.8 GHz, 10 / 2.5 Msps on an R2 and 6 / 3 on a Mini, Airspy's own linearity and sensitivity gain curves, and 12-bit packing to keep it inside USB 2.

HYDRASDR RFONE · EXPERIMENTAL

HydraSDR RFOne

An RFOne over USB on its own native Rust driver — no SoapySDR, no libhydrasdr. 24 MHz – 1.8 GHz at up to 12 Msps, its three RF sockets — ANT, CABLE1, CABLE2 — selectable on the panel. A fork of the Airspy R2 rather than a relative: the two cannot drive each other's hardware, so SDRoxide tells the two apart before it opens either one.

ELAD FDM · EXPERIMENTAL

ELAD FDM-DUO & FDM-S

An FDM-DUO, FDM-DUOr, FDM-S2 or FDM-S1 over USB on a native Rust driver — no SoapySDR, no gr-elad. On an FDM-DUO the one interface covers the whole radio: the wideband receiver, the CAT link and the transmit sound card.

LIMESDR + LIMERFE

LimeSDR & LimeRFE

LimeSDR-USB, Mini v1 / v2, LimeNET-Micro and LimeSDR-PCIe through LimeSuite, loaded at run time — wideband IQ both ways and genuinely full duplex, so the receiver keeps running through your own over. It also drives the LimeRFE front end that SoapySDR can't reach: band filters, LNA, amplifier and the T/R relay, following the dial. Name the socket you listen on, put a second aerial on the board's other receive chain to null local QRM or ride out HF fades on diversity, or feed that chain from a coupler on the amplifier and linearise it — PureSignal.

RigExpert FobosSDR

RigExpert FobosSDR

The high performance wideband FobosSDR over USB on its own native Rust driver — no SoapySDR needed.

UP-/DOWNCONVERTERS Support for Ham It Up, SpyVerter, etc. is included. Transverters or a satellite LNB can sit in front of any of them. Use included presets or freely configure the offset in hertz.

All modes, one program

MODES & MODEMS

Every mode runs in-process — native Rust modems, with the DRM receiver and the RADE codec linked into the binary and HD Radio's libnrsc5 loaded at start-up. No decoder programs running alongside, no virtual audio cables, nothing to wire up between programs.

VOICE

LSB · USB · AM · SAM · DSB · NFM · WFM

CW

Decoder that reads the speed off the signal, plus type-ahead keyboard sending — or press KEY and the Space bar is a straight key.

FT8 / FT4 / FT2

Auto-sequencing QSO engine, world map, automatic logging. FT2 is the fastest of the three — a whole contact in about six seconds.

JS8

Keyboard conversation on FT8's waveform. All four speeds, JS8Call-compatible.

FREEDV RADE

Neural digital voice, readable well below the SSB threshold.

WSPR

Beaconing with band hopping and WSPRnet upload — every path heard feeds the propagation map.

PSK31 / RTTY

The classic keyboard modes, receive and transmit.

OLIVIA / THOR / FSQ

Weak-signal MFSK, every variant, with the FSQCALL directed layer.

HELLSCHREIBER

Feld Hell, Slow, X5, X9, FSK245, FSK105 and Hell80.

SSTV

Receive and transmit — Scottie, Martin, Robot, Wraase SC2 and the high-resolution PD family.

WEATHER FAX

Station schedules, auto start/stop, phasing and slant correction.

RIFP

Packetised image transfer over its own CPFSK modem.

RF PAINT

Text and images painted straight onto the waterfall.

PACKET

AX.25 at 300 baud on HF sideband, 1200 and 9600 on FM — with a frame monitor and a KISS server for other software.

WINLINK · EXPERIMENTAL

Radio email, built in — B2F/FBB forwarding over the internet or over the air.

DRM

Digital shortwave broadcasting — Digital Radio Mondiale decoded to clean audio, with the station's name, its scrolling text and a constellation to tune it in by. Receive only.

HD RADIO

The digital sidebands of an FM broadcast — NRSC-5 decoded to stereo audio, with the HD-2 subchannels and the station's name, slogan and message. Receive only; uses the libnrsc5 installed on the machine.

RDS / RBDS

What a broadcast station carries beside its audio — name, radio text, programme type and traffic flags, decoded whenever you're on WFM.

ISM 868 MHz

The 2-FSK bursts from the weather, soil, lightning and leakage sensors around you, read out in real units. See the decoder ↓

APRS

Automatic Packet Reporting System — track positions on a map, transmit and receive messages and receive local weather reports over amateur radio.

AIS

Automatic Identification System — track ship positions on a map in real-time and monitor maritime traffic.

ADS-B

Automatic Dependent Surveillance-Broadcast — track aircraft positions on a map in real-time, receive weather information and alerts, and monitor air traffic.

VDL Mode 2

VHF Data Link Mode 2 — follow message exchanges between aircraft and ground stations.

ACARS

The airline datalink on VHF airband — 2400-baud MSK over AM, each message listed with its time, aircraft registration, label and text, and chips for the ACARS channels.

WINLINK RADIO EMAIL A native client for the amateur store-and-forward network — B2F/FBB forwarding, LZHUF compression and the secure login, with no external program to install. MAIL opens a real mailbox: inbox, outbox, sent and archive, compose and reply, attachments, and SMTP: addressing out to ordinary internet email. Forward over the internet to the CMS, or on the air over AX.25 packet to the RMS Packet gateways — with your own gateway list, digipeater paths and a connect timer. The mailbox lives on the machine with the radio, so remote and browser clients read it a page at a time instead of carrying a copy.

Tabbed operation and side-by-side

MULTI-RADIO OPERATION

Operate multiple radios and receivers simultaneously with ease — local hardware and remote stations in the same window.

The SDRoxide multi-radio interface showing multiple radios and receivers operating simultaneously with tabbed operation and side-by-side layout

MULTI-RX Monitor and operate multiple bands/modes

Monitor your own transmissions, run satellite operations in full duplex, and operate multiple bands and modes simultaneously. Works with multichannel radios as well as multiple individual radios.

REMOTE A station on the network is just another radio

Type an address into Settings → Remote, press CONNECT, and a remote SDRoxide server opens as a radio tab of its own beside your local hardware — no separate client, no restart. Your own radios keep running while you work the remote one, and closing the tab hangs up without touching anything at the far end.

PANADAPTER Lend your transceiver an SDR's receiver

A CAT rig with no wideband output and an SDR on the desk beside it become one radio: pick the SDR under Panadapter → Receiver on the transceiver's page and that tab gains the real thing — a wideband panadapter and waterfall you can click to tune, a sub-receiver, the digimodes, the skimmers and the band-plan and spot overlays — while the dial, mode, filter, transmitter and keyer all stay with the rig. Tap it off a shared antenna or off the rig's own I.F., with the intermediate frequency in hertz and per-mode offsets for rigs that move the carrier between modes. The dial follows both ways: click a signal and the rig goes there, turn the rig's knob and the marker follows.

See the weather you're working through

3D HAM CLOCK AND SPACE WEATHER

A live three-dimensional view of the Sun, the Earth, our solar system and everything on its way here — built from NASA SDO, NOAA SWPC, DONKI, GIRO and CelesTrak data plus what your own receiver hears, and cached so it works offline.

The SDRoxide 3D globe at night with the auroral oval glowing green and crimson over the pole, amateur satellites labelled with their elevation, and an ISS pass table listing rise and set times

AURORA The real oval, live

NOAA's OVATION model drawn as glowing shells at the altitudes the atmosphere actually radiates at, with the 10% boundary on the surface. Alongside it: hemispheric power, the probability over your grid square, and Kp forecast bars — so you can tell at a glance whether it's worth staying up.

WEATHER Clouds and lightning, below the aurora

Cloud cover rendered in 3D over the globe, and lightning strikes plotted where they land — the static crashing in your receiver, given a location. Both refresh every ten minutes.

The SDRoxide 3D globe with amateur satellites labelled around it and the ISS pass panel open, listing the next passes with AOS and LOS azimuths and maximum elevation above a table of downlink, uplink and mode for each of its links

SATELLITES Passes, not guesswork

Birds propagated with SGP4 — QO-100, the ISS, AO-7, FO-29, SO-50 and friends with orbit rings and labels, or every satellite you track at once. Each label carries its elevation from your QTH right now; click one for a pass table with rise/set times, AOS/LOS azimuths and maximum elevation, and the downlink, uplink and mode of every transponder on it.

LIVE TLE Elements that keep themselves fresh

The tracker subscribes rather than downloading once: amateur and ISS out of the box, plus CelesTrak's weather, cubesat, space-station, geostationary, GNSS and recent-launch groups on one click — refetched in the background and cached for when you're offline.

The solar disk rendered in AIA 171 with active regions, a flare marker, and the Earth-directed CME banner along the bottom

THE SUN Straight from SDO

Live NASA SDO imagery — HMI continuum for sunspots, or AIA 193 / 304 / 171 / 211 and the composite for the corona. Sunspot regions are sized by real spot area and coloured by NOAA's next-24-hour flare probability, with the image age always on screen.

PROPAGATION The numbers that matter

MUF interpolated from the ionosonde network — with the distance to the nearest sounder — a measured HEARD ≥ floor from your own decodes, plus Kp / A, F10.7 flux and the current GOES X-ray class, colour-coded in the corner before you call CQ.

The SDRoxide propagation heat map over Europe: heard-station paths fanning out from the operator's QTH across a heatmap of where signals are getting through, with the aurora, MUF and bands-open panels along the right edge

PROP MAP Where the sky is actually working

Everything this station hears is evidence about the ionosphere, and it is all pooled into one global picture — WSPR both ways, FT8 / FT4 and JS8 decodes, logged QSOs, and with the Reverse Beacon Network feed on, everything thousands of skimmers worldwide hear too. Each path is painted at its ionospheric midpoint — where the sky bent the signal, not where the other station lives — on the flat maps and the 3D globe, band by band in blended hues, fading on a 45-minute half-life.

MEASURED MUF Your sky, versus the model

A local MUF is computed from your own receptions — the highest frequency that demonstrably got through near your QTH — and sits beside the nearest ionosonde's number, so you see at once when the band is doing better than the model says. The BANDS window puts the published hamqsl.com forecast next to what was actually measured: paths through, share of the world reached and best margin, per band — and the verdicts colour the band buttons.

Coronal mass ejection cones growing out from the Sun in the SDRoxide 3D view, seen from outside the Earth's orbit, with an Earth-directed CME alert banner

CME ALERTS Know what's inbound

Coronal mass ejections from NASA CCMC's DONKI grow out of the Sun as cones at their measured speed, so the picture reads out where the plasma has got to. When one is Earth-directed, a banner names it with its speed and an estimated arrival time.

QSO LAYER Your traffic, on a sphere

Every station decoded in the last two minutes is a fading dot on the globe, and the one you're working is joined to your QTH by a true great-circle arc — with a bright pulse running along it while you transmit.

Scrub the whole scene ±24 hours, or let AUTO fly a two-minute camera tour.

Doppler correction and antenna steering built in

SATELLITE OPERATION

Pick a satellite, press LOCK ON, and every voice and digital mode works through it — Doppler correction happens continuously, the antenna is steered for you, and the orbital elements are updated in the background.

The SDRoxide satellite window locked onto QO-100: azimuth, elevation, range and live Doppler readouts above the DOPPLER and ROTATOR buttons, a searchable satellite list with live pass predictions, and the transponder table listing downlink, uplink and mode for each link

DOPPLER Fully automated doppler correction

The engine propagates the orbit with SGP4 a few times a second and corrects receive Doppler in the DSP — the dial and the waterfall stay on the published frequency while the receiver quietly follows the moving signal. Your uplink is derived from the transponder's published mapping, reversed across inverting transponders with the sideband flipped, and transmit Doppler is pre-corrected and keeps being corrected during the over — a long SSB over or an FT8 burst stays on frequency at the satellite, key-down to key-up.

ROTATOR Built-in rotctld support

SDRoxide steers motorized antennas as a Hamlib rotctld client — GS-232, EasyComm, SPID and everything else Hamlib drives, over one protocol. A locked bird is tracked across your sky automatically: the rotator swings onto the rise azimuth in the last minute before AOS and parks after LOS, with a minimum elevation for your roofline, an azimuth offset, and a smallest-movement threshold so the motors aren't chasing tenths of a degree.

LIVE TLE Up-to-date orbit data

Locks run on the built-in TLE database that updates itself — background subscriptions refetched and cached for offline use, with each bird's transponders, beacons and repeaters listed alongside. Stale elements suspend the correction rather than freezing it, and it resumes on the next refresh. On the 3D globe the locked bird is highlighted with a sightline from your QTH, and every pass window gains a LOCK ON button of its own.

From heard, to worked, to confirmed

LOG & STATION SERVICES

The logbook grew up: contest fields, spot feeds that tune the radio for you, callsign lookup, award tallies, and one-click upload to the services you already use.

The SDRoxide logbook window with QSOs grouped into daily sessions showing a time span and QSO count

LOGBOOK Everything a QSO carries

Contacts grouped into daily sessions, auto-logged from FT8/FT4 or entered by hand. The form holds name, QTH, state, country, power and contest fields, and a worked-before badge warns when you've already worked that call on the band.

ADIF In and out

Import an ADIF file, de-duplicated against what you have; export to ADIF or plain text. Records carry DXCC entity, CQ/ITU zones, IOTA and POTA/SOTA references, with a QSL column tracking what's uploaded and confirmed. The decode list exports too — as CSV or as received-report ADIF marked SWL, which an import keeps out of the log.

The SDRoxide SPOTS window listing live FreeDV Reporter and DX cluster spots, with source filters for DX, POTA, SOTA, PSK and FreeDV and an in-view filter

SPOT FEEDS One click from heard to working

A DX cluster over telnet, plus POTA, SOTA, PSK Reporter and FreeDV Reporter. Spots appear as colour-coded markers on the waterfall and as dots on the FT8 world map. Click a spot and SDRoxide tunes the VFO, sets the mode and pre-fills a log entry.

LOOKUP QRZ & HamQTH

Name, QTH, grid and state auto-fill from QRZ.com or HamQTH — on a spot click, at QSO start, as you type a call, or on demand from the entry form.

The SDRoxide awards window showing DXCC, WAZ, WAS and grid tallies with a worked-all-states matrix and a CQ zone grid

AWARDS Worked vs confirmed

Live tallies for DXCC, WAS, WAZ and grid squares, worked against confirmed, with a per-band filter and a full state / zone matrix. Entities resolve from the callsign, so a spot for a new entity is flagged the moment it appears — and with audible alerts on, an FT8, FT4, FT2 or JS8 decode rings on a sound device of its own for a station calling you, a new DXCC entity, a new entity on the band or a new grid, even while the window is behind another.

QSL UPLOAD The services you already use

Push QSOs to eQSL, QRZ Logbook and Club Log, per QSO or automatically. LoTW goes out as ADIF for TQSL signing — and LoTW and eQSL confirmations come back to mark what's confirmed.

Detection and decoding of automated ISM transmissions

ISM BURST DECODING

Around 868 MHz the licence-exempt band is full of small transmitters that wake up, send a few milliseconds of 2-FSK and go back to sleep for a minute. Press ISM and SDRoxide reads them — one row per device, with its readings in real units.

The SDRoxide ISM window listing decoded 868 MHz sensors — how long ago each was heard, its measured frequency, protocol, identity, signal strength, frame count and readings — beside the channel list and the waterfall carrying green device labels

BURST DECODE Four channels watched at once

The ISM channels sit at fixed frequencies, so the decoder parks a receiver on each rather than searching the band — 868.300, 868.420, 868.950 and 869.525 MHz, behind a burst detector with a squelch set in dB above the channel's own noise floor. Those four span about 1.4 MHz: tune to 868.880 MHz and the whole plan fits inside the IQ even a 2 Msps receiver hands over, and any channel outside your window says so instead of quietly missing. On an RX-888 Mk2 the VHF tuner gets you there. Like the skimmers this is a wideband feature — it needs a true IQ source, not a CAT rig's audio.

SENSORS Decode supported sensor data

LaCrosse IT+ — TX29-IT, TX35 and TX35DTH-IT with the Conrad and TFA units that are the same radio in another case. The Fine Offset family, also sold as Ecowitt, Froggit, Ambient Weather, SwitchDoc and Misol: WH51 soil moisture, WH24 outdoor arrays, WS80, WS90 and WS85, WN34 / WN38 soil and water probes, and the WH57 lightning detector with its strike distance and running count. Bresser sensors — Weather Center 6-in-1 and 5-in-1 arrays, soil probe, pool thermometer and water-leakage sensor.

RTL_433 Built-in decoders from the popular rtl_433 project

Supports a wide range of sensors and devices compatible with the rtl_433 project, providing real-time decoding and display of their data. The rtl_433 flex config format is supported for custom signal definitions.

The whole feature sheet

SPECIFICATIONS

Every mode, interface, decoder and toggle in one place.

Modes & modems
Voice & CWLSB · USB · CW · AM · SAM · DSB · NFM · WFM · DRM · HD RADIO · DIGU · DIGL · SPEC (spectrum only)
CWDecoder with automatic speed, threshold and spacing · type-ahead keyboard sending · Farnsworth spacing · speed lock · CQ macro · KEY turns the PC's Space bar into a straight key — ahead of any shortcut bound to it, with a 30-second hold cap, and lifted on a tab switch, when the window loses focus or when a remote client drops
DRMDigital Radio Mondiale — digital shortwave broadcasting, a few hundred OFDM carriers filling 9 or 10 kHz · receive only: it is a broadcast system and there is no amateur DRM to send · dial the channel centre, the figure the broadcaster publishes; the six widths the standard allows (4.5 / 5 / 9 / 10 / 18 / 20 kHz) shade the display, while the decoder reads the real width out of the transmission · a six-stage lock strip — IO · TIME · FRAME · FAC · SDC · AUDIO — where the lights stop is the diagnosis · SNR and MER, robustness mode A–D, 400 ms or 2 s interleave, protection levels, sample-clock offset, Doppler and echo delay · the station's name, country and language, codec, bit rate and its scrolling text message, plus the broadcaster's clock where the multiplex carries one · multiplexes carrying more than one programme get a row of service buttons · QUALITY traces SNR against MER over the last minute — the gap between them is the reading · CONSTELLATION plots the equalised FAC, SDC or MSC symbols, 512 cells taken evenly across the frame, coloured green / amber / red by how close each sits to its decision boundary, so a rising error rate shows before the audio breaks up · audio bypasses the AGC, and plays in stereo where the station is · about 15 dB SNR for a reliable 10 kHz decode · AAC only — xHE-AAC, CELP and HVXC are not decoded, nor are Journaline, MOT slideshows and the programme guide
HD RadioNRSC-5 — the digital sidecar of an FM broadcast, OFDM sidebands roughly 129–198 kHz either side of the analog carrier and about 20 dB below it · HDC audio in stereo, a row of HD-n chips for the HD-2 and further subchannels, back to HD-1 on a retune · the station's name, slogan and the message it is airing · dial the analog carrier's centre, as for WFM · needs at least 400 kHz of complex sample rate — 1 Msps is ample — and names the rate it needs rather than starting on a channel too narrow for both sidebands · a SYNC · AUDIO lock strip, MER of the lower and upper sidebands separately, CBER, carrier offset and the PSMI service mode · decoded on a thread of its own, so it never holds up the panadapter · receive only, FM hybrid only — HD on the AM band, album art and blending back to analog are not there yet
Digital voiceFreeDV RADE V1 — neural speech codec on an OFDM waveform, inside a normal USB channel (~1060–1880 Hz)
FT8 / FT4 / FT2One protocol at three speeds — 15 s / 7.5 s / 3.75 s slots, 50 / 83 / 167 Hz wide, decoding to about −21 / −17 / −14 dB · FT2 turns a contact round in about six seconds · sortable decode list, auto-sequencing QSO engine, dot-matrix world map, automatic logging
JS8All four speeds — Normal 15 s · Fast 10 s · Turbo 6 s · Slow 30 s · heard list, multi-frame free text, heartbeat, directed frames byte-identical to JS8Call's
WSPRBeacon receive and transmit — 10–50% slot duty, the nineteen WSPR power steps, ROAM offset, band hopping between slots · WSPRnet upload and who-heard-me polling · every decode feeds the propagation heat map
Keyboard modesPSK31 (BPSK31, varicode) · RTTY (45.45 / 50 / 75 baud, 170 / 425 / 850 Hz shift, Baudot)
Weak-signal MFSKOlivia (2–64 tones, 125–2000 Hz) · THOR (THOR4 – THOR32) · FSQ (FSQ-2 / 3 / 4.5 / 6) with the FSQCALL directed layer
HellschreiberFeld Hell, Slow, X5, X9, FSK245, FSK105 and Hell80
SSTVReceive and transmit — Scottie 1 / 2 / DX, Martin 1 / 2, Robot 72 / 36, Wraase SC2-180 / SC2-120 and the PD family — PD50 / 90 / 120 / 160 / 180 / 240 / 290, up to 800×616 · Auto picks the mode from the VIS header or the sync cadence, and a header naming a mode that cannot be drawn is reported rather than ignored
RIFPdraft-dulaunoy-rifp-00, profile rifp-cpfsk-4800 — 4800-baud CPFSK, ±4 kHz · G4 fax / PNG / JPEG / packed grayscale at 1, 2, 4 or 8 bpp
Weather faxWEFAX / radiofax, receive only — station and schedule picker, auto start/stop, 60–240 LPM, IOC 576 / 288, phasing and slant correction
RF PaintTransmit only — text & image spectrum painting in a 3 kHz SSB channel, 6–100% scan speed, live preview
AX.25 packetPACKET on FM — 1200 baud Bell 202 and 9600 baud G3RUH (data port required) · PACKET-HF on sideband — 300 baud AFSK, 200 Hz shift · frame monitor with digipeater paths, busy detection and a bad-frame count · KISS server on a socket for Pat, an APRS client or the Linux AX.25 stack · modem validated against Direwolf in both directions
Winlink radio email · experimentalNative client for the amateur store-and-forward network — B2F/FBB forwarding, LZHUF compression, secure login · inbox / outbox / sent / archive with compose, reply and attachments · callsign or SMTP: addressing out to ordinary email · route over the internet to the CMS or on the air by AX.25 packet to RMS Packet gateways · your own gateway list with digipeater path, frequency and speed · connect timer, abortable sessions, protocol transcript · mailbox stored on the machine with the radio and paged to remote clients
ACARSThe airline datalink on VHF airband — 2400-baud MSK (1200 / 2400 Hz tones) carried as the audio of an AM transmitter · dial the carrier, as for AM voice, and a CAT rig is put in AM · channel chips for 131.550 MHz, the European 131.525 / 131.725 / 131.825 and the North American 129.125 / 130.025 / 130.450 / 131.125 / 136.700 MHz · messages newest first with UTC time, aircraft registration, mode, label, acknowledgement, block and text · only messages that pass their block check are listed, damaged blocks counted once · demodulator and block check ported from acarsdec · receive only
ImplementationNative Rust modems in-process, RADE codec linked into the binary — no external decoder, no virtual audio cables · DRM is the Dream receiver (2.2, GPL-2.0-or-later) vendored and wrapped behind a small C API, with faad2 built in and linked rather than dlopened the way Dream does it — which is the difference between a receiver that reads the station label and plays silence and one that works out of the box · in every build, nothing to install · HD Radio is the exception: its HDC codec is proprietary, so it never ships with SDRoxide — the libnrsc5 from the nrsc5 project is loaded at start-up from the machine the radio runs on, and without it the mode stays on the menu, greyed out with the reason
Skimmers & panadapter
SkimmersCW · PSK31 · RTTY — wideband, callsigns labelled straight onto the waterfall
ISM burst decoderThe 868 MHz licence-exempt band — four fixed channels watched at once (868.300 · 868.420 · 868.950 · 869.525 MHz) behind a burst detector with a dB-over-noise squelch, tune to 868.880 MHz for the whole plan · LaCrosse IT+ (TX29-IT / TX35 / TX35DTH-IT and the Conrad and TFA units) · Fine Offset — Ecowitt, Froggit, Ambient Weather, SwitchDoc and Misol — WH51 soil moisture, WH24 outdoor arrays, WS80, WS90, WS85, WN34 / WN38 soil and water probes and the WH57 lightning detector · Bresser Weather Center 6-in-1 and 5-in-1 arrays with their soil and pool members, and the water-leakage sensor · one row per device with age, measured frequency, protocol, identity, signal strength and an accepted-frame count · devices labelled on the waterfall, click a row to tune · needs a true IQ source, so not on a CAT rig's audio
RendererGPU (wgpu) waterfall with a spectrum line above it, at full frame rate
FFT size2048 · 4096 · 8192 · 16384 · 32768
Colour schemesClassic · Viridis · Gray · Icom · Neon · Synthwave · Matrix · Tron, plus a configurable spectrum background gradient
Wideband scopeThe receiver's entire bandwidth in one strip, click anywhere to tune — on direct-sampling front ends such as the RX-888
Display toolsWheel zoom around the cursor, drag-to-pan, peak-hold, FIT auto-contrast, per-digit frequency readout, floor / ceiling
Drag tuningFlywheel tuning with inertia, mimicking a weighted VFO knob
OverlaysColour-coded bandplan strip, RIT/XIT markers, live TX monitor trace, skimmer callsigns, spot markers, broadcast-station labels, bandwidth measurement
Band planBand edges, sub-segments, skimmer windows and calling frequencies all follow the station's IARU region — 1, 2 or 3, applied immediately and announced to every remote client · every number lives in bandplan.json in the config directory and is yours to edit, with a RELOAD BAND PLAN button that re-reads it without a restart
LayoutCustomizable UI with responsive tablet and mobile support · seventeen colour themes applied without a restart — Default, Light, High contrast, green and amber phosphor, Teal / orange, Rainbow, and schemes after the editor palettes Nord, Nord dark, Gruvbox, Everforest, Solarized, Solarized dark, Dracula, Catppuccin Mocha and Latte and Modern minimalist · transmit, SWR and error indications stay red in every one
Radios & platforms
RTL-SDR (USB)RTL2832U dongles on a native pure-Rust driver — no SoapySDR, no libusb · R820T / R820T2 / R828D tuners, 0.9–3.2 Msps, 29-step tuner gain, bias tee, ppm correction · HF via a Blog V4 or direct sampling · receive only
RX-888 (USB)RX-888 and Mk2 (LTC2208 16-bit ADC, Cypress FX3) on a native pure-Rust driver, bundled firmware uploaded automatically — no vendor driver package · 0–32 MHz sampled directly at up to 129.6 Msps · on a Mk2 the built-in R828D tuner is driven too, so the same receiver covers VHF and UHF — the ISM band included — and switches between its two antenna ports by itself · receive only
HackRF (USB)HackRF One, Jawbreaker and rad1o on a native pure-Rust driver — no SoapySDR, no libhackrf · 1 MHz – 6 GHz, 2–20 Msps · wideband IQ receive and transmit, half duplex · LNA / VGA / TX-VGA gains with separate RX and TX settings for the 14 dB RF amp, automatic baseband filter with LO-offset DC-spike avoidance, adaptive IQ correction, bias tee · transmit is off behind a switch by default and has not yet been measured against hardware
Airspy HF+ (USB)HF+ Dual, Discovery and Ranger on a native pure-Rust driver — no SoapySDR, no libairspyhf, so it works in the stock .msi and .dmg · receive only · not yet verified against real hardware
Airspy R2 / Mini (USB)Airspy R2 and Mini on their own native pure-Rust driver — a different receiver from the HF+ · 24 MHz – 1.8 GHz · 10 / 2.5 Msps on an R2, 6 / 3 on a Mini, made complex on the host from the real ADC · Airspy's linearity and sensitivity gain curves, tuner AGC, 12-bit packing, bias tee, DC removal · receive only · not yet verified against real hardware
HydraSDR RFOne (USB) · experimentalHydraSDR RFOne on a native pure-Rust driver — no SoapySDR, no libusb, no libhydrasdr, so it works in the stock .msi and .dmg · 24 MHz – 1.8 GHz, up to 12 Msps · a fork of the Airspy R2, not a relative — same gain curves, but an eight-byte tuning command where the Airspy takes four, so neither driver may touch the other's radio · three RF sockets — ANT / CABLE1 / CABLE2 — with the bias tee on the antenna port alone · seven sample rates — 12 / 10 / 8 / 6 / 5 / 4.096 / 2.5 Msps — four of them from the firmware's alternate table, marked as such and falling back with a note where a firmware lacks them · production boards and prototypes carry different USB ids and are told apart by descriptor and firmware string before anything is programmed · receive only · not yet verified against real hardware
SDRplay (USB) · experimentalRSP1 / RSP1A / RSP1B / RSP2 / RSPduo / RSPdx / RSPdx R2 driven natively through the vendor's SDRplay API service — no SoapySDR in the path · 1 kHz – 2 GHz, up to 10 Msps IQ · receive only
RigExpert FobosSDR (USB)RigExpert FobosSDR over USB on its own native pure-Rust driver — no SoapySDR, no vendor library, so it works in the stock installers · high-performance wideband I/Q · receive only
rtl_tcp / rsp_tcp (network)A dongle on another machine — a Pi at the foot of the mast — published with rtl_tcp, or an SDRplay RSP published with rsp_tcp · the same controls as the USB tab, plus link cost shown against every sample rate and automatic reconnect · an rsp_tcp server started with -E is named properly and unlocks 16-bit samples and the RSP's antenna input, LNA state, IF gain reduction, AGC, notches and reference clock
SpyServer (network)Airspy's own network server — an Airspy R2 / Mini, Airspy HF+ or RTL-SDR at the far end · two interfaces: wideband I/Q for the LAN, and VFO+FFT low bandwidth — a narrow stream that follows the dial plus the server's own FFT of the whole band — for WiFi and cellular links · bandwidth as a decimation stage or Automatic, 8 / 16-bit or float samples, and a Test connection that names the far-end receiver, its rates and whether you may tune it, without starting a stream · receive only
KiwiSDR (network)A KiwiSDR published with its kiwisdr server software, taken as wideband I/Q · one on the LAN, or any of the hundreds of public installations reachable over the internet · receive only
SoapySDRAny SoapySDR device (LimeSDR, bladeRF & friends) — wideband IQ, capability-driven UI, TX where the hardware allows
OpenHPSDRHermes / Apache Labs Ethernet SDRs — Protocol 1 and Protocol 2, LAN discovery, 48 kHz – 1536 kHz DDC rates
TCIExpertSDR3 / SunSDR over WebSocket — wideband IQ receive, audio transmit, rig power control
SmartSDR (network) · experimentalFLEX-6000 / FLEX-8000 as a GUI client on TCP 4992 — DAX IQ receive at 24 / 48 / 96 / 192 kHz, DAX TX with forward power and SWR · LAN discovery or a direct address · not yet verified against real hardware
PlutoSDR (network) ADALM-Pluto (AD9361 / AD9363) over IIOD — no libiio, no SoapySDR, nothing to install · wideband IQ receive and transmit, half duplex · all four AD9361 AGC modes · tuning range read off the board: AD9363 325 MHz – 3.8 GHz, AD9364 70 MHz – 6 GHz · not yet verified against real hardware
ELAD FDM (USB) · experimentalFDM-DUO, FDM-DUOr, FDM-S2 and FDM-S1 on a native pure-Rust driver — no SoapySDR, no libusb, no gr-elad, so it is in every build on every platform · direct sampling behind a switchable low-pass bank and a 12 dB pad, 10 kHz – 54 MHz on an S2 · on an FDM-DUO one interface drives all three of its USB devices: the wideband receiver, the CAT link (dial, mode, PTT, S-meter, SWR and the nine drive steps to 5 W) and the transmit sound card · not yet verified against real hardware
LimeSDR + LimeRFE LimeSDR-USB, Mini v1 / v2, LimeNET-Micro and LimeSDR-PCIe through LimeSuite, found by dlopen at run time so the interface ships in every build · 1–40 Msps wideband I/Q receive and transmit, full duplex — the receiver keeps running through your own over · combined 0–73 dB receive gain, LNAL / LNAH / LNAW port selection or automatic, analog filter following the sample rate, host-side IQ/DC correction on top of the chip's calibration · the LimeRFE over its own serial cable or the radio's GPIO / I²C: band filters, LNA, amplifier, 0–14 dB attenuator, notch and fan, the T/R relay switched to suit the connectors it is wired on, all following the dial · transmit armed behind a switch, and no transmit channel published until it is · not yet verified against real hardware
Which chain, which socketListen on either receive chain, each port named by the socket it actually reaches — LNAL — RX1_L against LNAL — RX2_L, since LNAL is the same word on both chains and the chip's name alone does not say which jack the aerial is in · so a board with the HF matching modification on one low-band input can be told which one that is
Second aerial: QRM & fades · experimentalOn a LimeSDR-USB or PCIe the two receive chains share one synthesiser and one sample clock, so they hear the same span at the same instant — which is what lets a second aerial be combined with the first · CANCEL, the DSP form of a noise-cancelling phaser: it finds the gain, phase and delay that line a local noise source up on both aerials and subtracts it · COMBINE, diversity reception: the two added in the phase that reinforces, each weighted by how well it hears, filling in HF fades · the filter is adaptive and multi-tap, so the null holds across the whole span rather than at one frequency, and can be held once it has converged
PureSignal · experimentalThat second chain fed from a directional coupler on the amplifier's output instead, to linearise it — the technique openHPSDR calls PureSignal · the transmitter compares what came back with what it meant to send and emits the inverse of the difference, for around 20 dB less intermodulation without backing the amplifier off · the correction sits at unity until the feedback lines up with the transmission, and is clamped so it can never ask the converter for more than full scale — an unconnected coupler costs nothing, and a feedback path reading nonsense cannot over-drive anything
Icom LAN (network) IC-7300MK2 / IC-705 / IC-9700 / IC-7610 / IC-905 / IC-R8600 over the radio's own Ethernet or WiFi port on Icom's IP-remote protocol — no RS-BA1 licence, no serial cable, no sound card · CI-V control, two-way audio to 48 kHz and the radio's own 475-point scope on one connection · take the 12 kHz IF instead of AF and SDRoxide's own filters, NR, notches, decoders and skimmer apply across roughly ±12 kHz · not yet verified against hardware
CAT / AudioIcom CI-V, Kenwood, Yaesu and Xiegu rigs over serial, with USB-sound-card audio as demodulated mono or stereo IQ · RIT, XIT and split driven onto the dial over the same link · rig keyer or MCW for CW, with the panel's WPM sent to the rig · Kenwood picks its send command by generation — TX; for TS-2000-class rigs, TX1; (DATA SEND) for the TS-590 / 890 / 990
USB audio radioFor a radio with no control port — VOX-keyed handhelds, walkie-talkies, audio-dongle rigs · receive audio from one sound card, transmit audio into another, picked by name · the radio's own VOX keys it on speech, digital-mode tones and MCW alike · the dial is a label, typed to match the radio's knob, for the log, the spots and the transmit lockout — which still applies, so a licence-free PMR446 / FRS / CB radio stays locked out unless you lift it · both cards handed back before a reconnect opens the new ones · no S-meter, SWR or power readback
Panadapter from a second SDRA transceiver with no wideband output borrows a local SDR's receiver and the two work as one radio — wideband panadapter and waterfall, click-to-tune, sub-receiver, digimodes, skimmers and overlays on the transceiver's own tab, while the dial, mode, filter, transmit, SWR and keying stay with the rig · tap a shared antenna or the rig's I.F., offset in hertz with per-mode offsets and spectrum invert · dial followed in both directions, mute and blank on transmit · listen to either front end · the lent receiver leaves the tab strip while it is borrowed, marked 🔗 in the roster, and returns by itself when released
Front-end convertersUpconverter, transverter or LNB offset — presets or hertz · dial, band plan, memories, log and spots all read the real frequency
Stated tuning rangesManual RX and TX ranges in MHz for radios that report nothing, or more than they can do — 144-146, 430-440
Several radios at onceEach radio in its own tab with its own tuning, mode, panadapter, audio, sub-receiver, digimodes and scanner · puts two or three side by side · a remote SDRoxide server is just another radio — add it from Settings → Remote and operate it beside your local hardware, closing the tab to hang up · shared memories, logbook, spots and awards, and a station-wide transmit interlock so only one radio is ever on the air
Remote sign-inUsername and password asked of every remote client — browser page, --connect client and the 3D view's tab · re-read per sign-in, and an unauthenticated connection never takes the client slot
No hardware needed--siggen built-in signal generator · --file raw CF32 IQ playback · --probe device capability dump
Operating systemsLinux · macOS · Windows — x86-64 and ARM64
Ways to runNative desktop · --server (full UI streamed to a browser as WebAssembly) · --connect native remote, or add the same server from Settings → Remote as an extra radio tab · --console ASCII waterfall
Phones & tabletsFolding control strip, chip-row mode panels, press-and-hold PTT, pinch zoom — automatic or pinned from Settings · work in progress
AccessibilityBuilt-in text-to-speech for vision-impaired operators — a neural voice running locally, no network, no service to install · per-category announcements, three detail levels, phonetic callsigns, digit-by-digit frequencies, spoken SWR warnings, receiver ducking · own output device, speed and volume · plus full exposure to NVDA / Orca / VoiceOver screen readers
Server-side storeImage presets and received pictures live on the server, so every client — native, remote and browser — sees the same slots and gallery
Receiver & DSP
Noise reductionFour engines, three strengths eachRNN (RNNoise) · DFNR (DeepFilterNet3, 6 / 12 / 24 dB) · SPEC (libspecbleach) · built-in spectral NR · keyboard and MIDI cycle the strength without changing engine
Noise blankerImpulse blanker on the raw signal (keyboard N)
Auto-notchANC — adaptive canceller nulling constant tones, heterodynes and tuner-uppers
AGCOff / Slow / Med / Fast, with hang
Filter & squelchPassband edges dragged directly on the spectrum or the waterfall · squelch with an open-threshold readout
Per-mode settingsAGC, squelch, noise reduction, the auto-notch and the stereo switches remembered per mode — each mode starts from conservative values of its own (a slow AGC on the weak-signal digital modes, noise reduction and the notch off), a change is kept for the mode it was made in, and a reset chip beside the controls puts the mode's own values back · applied at startup and when a rig's own controls change the mode
CTCSS & DCSSub-audible tone and coded-squelch decode on NFM, with optional tone squelch on a chosen tone, the one being received, or any DCS · and the transmit half: the 50-entry CTCSS table or the 104 DCS codes in either polarity, sent under the voice on NFM, with MATCH TX arming the receive squelch on whatever this station transmits
RDS / RBDSThe data a broadcast station carries beside its audio, decoded the whole time you are on WFM — station name, programme identification (spelled out as call letters in North America), programme type, 64-character radio text with RadioText+ title and artist lifted onto their own line, traffic flags, station clock and the alternative frequencies · RDS / RBDS / Auto table selector that re-labels everything on screen without re-decoding · a diagnostics tab with sync state, group counts, block error rate and a group log
VFOsA / B with split, swap and copy · sub-receiver on the inactive VFO · RIT and XIT ±9999 Hz in 5 Hz steps, in the IQ stream or over CAT
Repeater operationDUPLEX and TONE in the VFO/RIT module, beside split, RIT and XIT — the other things that decide where the station transmits relative to where it listens · SIMPLEX / − / + with the offset in kilohertz, or to the hertz for a machine that needs it, the magnitude kept when you go back to simplex · AUTO takes the shift from the band plan as you tune, speaking only inside a repeater output sub-band so calling channels stay simplex, and standing down the moment you set direction or offset by hand · the button lights amber whenever the two frequencies differ, and the panadapter draws the transmit frequency the way it draws XIT — a marker and a labelled bracket on screen, the label alone when a 70 cm shift puts it off the edge · a 1750 Hz burst to open a carrier-access machine, 100–2000 ms, SEND now or on EVERY OVER, bindable to a key, mouse button, MIDI pad or footswitch · per radio, remembered across a restart, and stored with the memory channel · built-in shifts are transcribed from published plans and cover only the sub-bands whose shift is settled across a whole IARU region — elsewhere they say nothing, deliberately, since a missing entry leaves you simplex while a wrong one transmits onto somebody else's channel
MemoryNamed memory channels in folders, plus per-band stacks remembering frequency, mode and filter · channel editorEDT turns a row into an editor for the name, the frequency and the mode, and it is the same channel afterwards, same place in the list, same folder, so a typo or a frequency that has moved costs one edit rather than a delete and a fresh store · the filter follows a changed mode, and one you chose yourself is kept · RPT folds out the repeater set-up stored with the channel — shift, offset, CTCSS tone or DCS code, and whether every over opens on the burst — captured as it stands when you store, plainly simplex included, so the next recall takes a shift back off · sort by Stored, Name, Freq or Band, reversible, a preference of the screen you are at rather than of the store, so a memory scan keeps its own order and another operator sorts the same memories their way
ProfilesSave how the station is set up under a name — contest, DX, nets — and put it back with one Apply · both VFOs and their modes, receive and transmit levels, repeater settings, antennas and gain stages, the digital identity and message templates, and the band stacks · the hardware is left out, so a profile follows the way you work rather than yesterday's sound card · refused while the station is on the air · kept on the machine with the radio, so remote and browser clients share the same list
ScanningMemory and frequency-range scan · 5 / 6.25 / 8.33 / 10 / 12.5 / 25 kHz channel grids · FFT sweep on IQ radios, a megahertz of channels at a time · dB or squelch stop threshold, dwell time, per-channel skip · CARRIER / TIMED / MANUAL resume
TransmitPTT, TUNE carrier, drive and tune-drive, mic gain, power / SWR / ALC meter, half- or full-duplex sequencing, ham-band TX lockout on by default
Voice keyerTen recorded slots, keyed from the panel, numpad, a MIDI pad, a footswitch or Hamlib · plain 48 kHz mono WAVs · every voice mode and RADE
RecordingOne-click receive-audio recorder to disk
3D solar system & space weather
SceneSun, Earth and Moon on the real ephemeris — plus the other seven planets and eighteen of their moons — star field, heliographic grid, ±24 h time scrub
Small bodiesForty dwarf planets, asteroids and comets from JPL's close-approach database, with real ion and dust tails · searchable by name, number or designation
ClockUTC and local time with the date · a scrubbed time is flagged SIM in yellow
Solar imageryNASA SDO — HMI continuum · AIA 193 / 304 / 171 / 211 · 211-193-171 composite, with the image age always on show
Solar activitySunspot regions sized by real spot area and coloured by NOAA's next-24-hour flare probability · flare markers · far-side regions hidden
CMEDONKI trajectory cones at the measured speed · Earth-directed alert banner with speed and estimated arrival
AuroraLive NOAA OVATION oval as altitude-resolved emission shells · 10% surface contour · hemispheric power · probability over your grid square · 3-day Kp forecast bars
EarthLive 3D cloud cover and lightning strikes, refreshed every ten minutes · day/night terminator and sub-solar point
SatellitesSGP4 — ten curated amateur birds with orbit rings and labels, or every satellite you track with ALL SATS · live elevation from your QTH · click-through pass tables with AOS/LOS azimuth, duration and max elevation · a LOCK ON button per pass hands the bird straight to satellite mode
Live TLE updatesBackground subscriptions refetched six-hourly and cached offline · one-click CelesTrak groups (amateur, ISS, weather, cubesats, stations, recent launches, geostationary, GNSS) · per-group filters · pasted TLEs override
Satellite frequenciesDownlink, uplink, mode and operating notes per bird — built in for the common satellites, editable by catalogue number
QSO layerDecodes as fading dots, great-circle arcs to the station worked and a pulse along the path while you transmit · paths to weather-fax and broadcast transmitter sites
Propagation panelMUF from the GIRO ionosonde network (with sounder distance) · measured HEARD ≥ floor from your own decodes · Kp / A · F10.7 flux · GOES X-ray class
CameraFocus on SUN / EARTH / MOON / Earth–Moon midpoint · AUTO flies a spline tour through eight framed viewpoints
Satellite operation & propagation
Satellite modePick a bird, LOCK ON, and every voice and digital mode works through it · searchable picker with live elevation and next pass per satellite · azimuth / elevation with compass point, range and range rate, both Doppler corrections in hertz, pass in progress or next
Doppler correctionOrbit propagated with SGP4 a few times a second · receive corrected in the DSP — dial and waterfall stay on the published frequency · transmit pre-corrected and tracked during the over, riding the transmitted IQ
Transponder mappingUplink derived from the published passband mapping — reversed across inverting transponders, sideband flipped for SSB, fixed for FM birds · XIT as a manual trim on the mapped uplink
Rotator controlHamlib rotctld client — GS-232, EasyComm, SPID, AlfaSpid and everything else Hamlib drives · auto-tracks the locked bird, swings to the rise azimuth before AOS, parks after LOS · minimum elevation, azimuth offset, smallest-movement threshold, park position · reported position on the status line
TLE integrationLocks run on the built-in auto-updating TLE database — background subscriptions, cached offline · stale elements suspend the correction, a refresh resumes it · per-bird transponder, beacon and repeater frequencies built in
Propagation heat mapGlobal map of where signals are getting through, on the 2D maps and the 3D globe · paths drawn at their ionospheric midpoint, one control point per hop · ALL BANDS blended hues or ONE BAND colour ramp · 45-minute half-life, adjustable
Propagation sourcesWSPR both ways · FT8 / FT4 · JS8 · logged QSOs · Reverse Beacon Network skimmer spots worldwide — signal reports normalised to each mode's own decode floor and the beacon's declared power
Band conditionsPublished hamqsl.com forecast fetched hourly, next to what was measured from your own QSOs and decodes — paths through, share of the world reached, best margin per band · verdicts colour the band buttons
Measured MUFLocal HEARD ≥ — the highest frequency that demonstrably got through near your QTH, normalised to a 3000 km path — compared against the nearest ionosonde's MUF and its distance
Logbook, spots & awards
LogbookPersistent, grouped into daily sessions with a time span and QSO count · manual entry and automatic FT8/FT4 logging · edit / delete · worked-before badge per band
QSO fieldsCall, frequency, mode, RST sent/received, grid, name, QTH, state, country, power, comment, UTC date & time
Contest fieldsContest id with serial sent and serial received
Resolved per QSODXCC entity, CQ and ITU zones (bundled cty.dat), IOTA, POTA / SOTA references, per-service QSL status
Award trackingDXCC · WAS · WAZ · grid squares — worked vs confirmed, per-band filter, new-entity flag on incoming spots
Audible alertsAn alarm on a sound device of its own when an FT8 / FT4 / FT2 / JS8 decode matters — a station calling you, a CQ you could answer, a new DXCC entity, a new entity on this band or a new grid · five generated sounds to choose per event, volume independent of the AF gain · one alarm per batch of decodes for the most important match, and a quiet period per station · one alarm shared by every radio tab
Spot feedsDX cluster (telnet) · POTA · SOTA · PSK Reporter · FreeDV Reporter — clickable markers on the panadapter and world map; click to tune, set the mode and pre-fill an entry; per-source and in-view filters
Broadcast stationsLongwave and shortwave broadcasters labelled on the waterfall — around 4,600 EiBi transmissions, filtered every minute to those actually on the air · click one to tune it in AM · schedule self-updating, with your own corrections merged over it
Callsign lookupQRZ.com · HamQTH — name, QTH, grid and state auto-filled
QSL uploadeQSL · QRZ Logbook · HamQTH · Club Log — per QSO or automatic · LoTW via ADIF export for TQSL signing
ConfirmationsLoTW and eQSL confirmations downloaded and matched, marking worked against confirmed
Import / exportADIF import with de-duplication · ADIF and plain-text export · the decode list exported as CSV or received-report ADIF, each record marked SWL on the dial it was heard on — and left out, with a count, when an ADIF import meets it

One binary, three ways to operate

RUN ANYWHERE

Native desktop

Launch the egui app straight onto your local SDR or CAT rig for the lowest-latency, full-fat experience.

sdroxide

Server → browser

Start the server and the entire interface streams to any browser on your network — no install on the client.

sdroxide --server

Native remote

Add a remote server from Settings → Remote and it joins as another radio tab — or start straight into one from the command line.

sdroxide --connect host:4950
// WEB CLIENT :: SAME UI, ANY BROWSER
SDRoxide web client running in a browser, showing the same panadapter and waterfall as the desktop app

SCREENSHOTS

Click any capture to enlarge.

The complete User Manual

Every backend, mode, control and keyboard shortcut — panadapter to skimmers to the 3D space-weather view to the logbook — documented in one place on GitHub. It also ships inside the app: just press F1. The built-in copy is searchable in full — type in the bar across the top and every occurrence lights up as you go, with a match tally, F3 to step through them and a contents outline that marks which chapters hold the term and how often.

Open the User Manual ↗

ACQUIRE BINARY

Download SDRoxide

Latest release: . Pick your platform, then expand to choose a package.

WARNING

SDRoxide is a young project under heavy, active development. You may experience bugs, lost QSOs, and QSL cards might arrive folded or soggy. Don't rely on it for mission-critical operating just yet, and please report anything odd on GitHub Issues ↗.

DEFAULT builds run out of the box with nothing else to install — the right pick for most setups, including CAT rigs, FlexRadio, Icom LAN and ADALM-Pluto network radios, receivers served over rtl_tcp / rsp_tcp or spyserver, and the RTL-SDR, HackRF, Airspy, HydraSDR RFOne, ELAD FDM and RX-888 over USB, whose drivers and firmware are built into the binary. The LimeSDR + LimeRFE interface is in every build too and picks up LimeSuite at run time if you have it installed. HD Radio works the same way: its audio codec is proprietary and never ships with SDRoxide, so install libnrsc5 from nrsc5nrsc5-git on Arch, or built from source — and restart; until then the mode is greyed out with the reason. The SoapySDR builds add wideband SoapySDR devices (bladeRF & friends) and need the SoapySDR libraries and your radio's driver module installed.

If a Linux build refuses to start with a message about a missing GLIBC_2.xx version, take the matching file from Linux · older distros instead — the same two builds compiled inside an Ubuntu 22.04 container, linked against glibc 2.35 so they run on Ubuntu 22.04, Linux Mint 21, Debian 12 and Raspberry Pi OS bookworm. Nothing else differs; on a current distribution the regular builds are the ones to take.

The Linux list also carries an AppImage for x86-64 and ARM64 — the whole application in one file, with nothing to install and no package manager involved: chmod +x it and run. It is built from the same glibc 2.35 container as the compat packages, which is why its filename says -compat, so the one file runs on old and current distributions alike. Default build only — for SoapySDR devices take a .deb or tarball.

Looking for something else? Browse all releases & checksums on GitHub ↗, or build from source with cargo install --git https://github.com/dividebysandwich/sdroxide.