Skip to content

Releases: OK1BR/sdr-for-linux

SDR for Linux 0.5.1

Choose a tag to compare

@OK1BR OK1BR released this 12 Sep 16:13
77dde70

SDR for Linux 0.5.1

A control-surface release: two VFOs, CTUN, the filter and AGC controls in their own dialogs, a draggable spectrum/waterfall divider and the TX filter drawn on the TX display. Everything below was run live on the ANAN G2E over the past week.

Two VFOs

  • A/B and A=B — the classic rig model: A/B swaps what you hear, tune and transmit on, A=B copies the active VFO into the other one. The other VFO reads under the frequency readout (VFO B 7.025.000 · CW) with the two buttons right after it; key b = A/B. The other VFO is free across bands; both persist.

CTUN

  • With CTUN on (strip button after BIN), dragging the spectrum pans the DDC centre while the RX dial stays where it is; the green passband is the tuning handle — drag it, wheel over it, double-click to recentre. The offset lives in the WDSP receiver shifter as in piHPSDR, so the TCI IQ stream stays the raw DDC.

Filter and AGC dialogs

  • The Filter and AGC dropdowns are gone from the top strip. Two header-bar icons (left of the menu) open the Filter dialog — a passband graph you drag by its edges or as a whole, the mode's presets and Var1/Var2, Low/High rows — and the AGC dialog — Off/Long/Slow/Med/Fast with the hang/decay of the chosen one, a live gain bar and AGC-T mirroring the footer slider. The readout's filter and AGC texts open them too.
  • Any preset's edges drag on the spectrum; a dragged preset becomes Var1 with the preset untouched. LSB, CWL and DIGL filters now read as audio Hz, low to high, in the readout and the dialog.
  • The frequency readout is plain white text at the top-left (frequency, VFO, band, mode, passband, AGC, the other VFO); the S-meter stays top-right.

Display

  • Draggable spectrum/waterfall divider — persisted as a fraction so resizes keep the proportion; double-click on the line resets to 50/50.
  • TX filter footprint in red on the TX spectrum and, with "Filter on waterfall", on the TX waterfall; CW and TUNE show the carrier line only, RTTY the FSK pair. RX is green and TX is red throughout the display now.
  • The AF slider's floor is a true mute (asked for by FT8 operation, where the side-listen only annoys).
  • 60 m starts in USB, with a one-time migration of the saved per-band levels.

Fixes

  • The receiver no longer dies when the process is paused (a debugger, SIGSTOP, any ptrace stop): the Protocol 2 listener treated the EINTR of its timed socket as a dead link, stopped the keepalives, and the radio's watchdog stopped streaming — display frozen, process alive. It now rides the pause out and the radio re-arms itself on the next keepalive.
  • Discovery keeps one entry per radio even when it answers on several interfaces (link-local included) and the data socket binds on the in-subnet interface — no more 169.254.x.x data links behind a radio that also has a proper address.
  • The TX over-stats log line reports mic counters only for overs that actually used the mic (no phantom "mic drops" after TUNE).

TCI

  • dds and vfo are broadcast immediately on every tuning step, so skimmers and loggers follow the dial without waiting for the periodic tick.
  • Opt-in IQ centre stamps — the per-block DDC centre and the retune boundary in the stream header — for a CTUN-aware skimmer.

Downloads: AppImage (any distro), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+). Arch users: sdr-for-linux on the AUR. The headless probes (sdrfl-*probe) are dev-tree binaries — build from source for those.

SDR for Linux 0.5.0

Choose a tag to compare

@OK1BR OK1BR released this 25 Aug 17:11
3943ee4

SDR for Linux 0.5.0

The release that marks the ANAN G2 (Saturn) as live-tested. W1IZZ ran a second test round on 0.4.2 (issue #3) and closed every question the first round left open; this release carries the fixes his feedback asked for, and the record.

ANAN G2 / Saturn — live-tested by an external operator

What his two rounds confirmed on a real G2:

  • receive probes clean (antenna against the dummy-load baseline),
  • per-band PA calibration against an LP-100A — now including 30 m and 60 m on the buttons added in 0.4.2 — with our wattmeter within 1–2 W,
  • SWR tracking against external equipment, a voice QSO,
  • PureSignal with numbers: a two-tone into the dummy load reads feedback 151 — inside the 129–181 target window — attenuation 14 dB, "correcting",
  • the per-model supply-voltage readout confirmed (raw 544 → 13.9 V against a nominal 13.8 V supply),
  • the DUC sequence errors log spam of 0.4.1 confirmed gone.

Still not calibrated by us — nobody on the project owns a G2, and the wording stays honest about that. The radio still starts safe (PA off, 1 W, no stored PA calibration), so ⛔ the first transmission on your own G2 still belongs into a dummy load — step by step in docs/RADIOS-SCOPE.md §7 (§7.1–7.2 are his results). Thank you, Larry — the credit is in the README.

The supply readout, reworked from his feedback

  • The footer supply voltage is now averaged on a wall clock (~1.5 s) and shown at 0.1 V resolution — no more last-digit dancing from the ±1-count telemetry jitter.
  • The in-band value renders in the theme foreground like the neighbouring labels; the previous fixed green was unreadable on light themes. Amber (excursion) and red (fault) colours stay. The same applies to the Hermes Lite 2 die-temperature readout, which shares the footer slot.
  • The readout sits a few pixels off the window edge now.

Nothing protective reads the smoothed value — SWR, thermal and drive protections keep acting on the raw numbers.


Downloads: AppImage (any distro), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+). Arch users: sdr-for-linux on the AUR. The headless probes (sdrfl-*probe) are dev-tree binaries — build from source for those.

SDR for Linux 0.4.2

Choose a tag to compare

@OK1BR OK1BR released this 23 Aug 19:42
bc9b613

SDR for Linux 0.4.2

A maintenance release built from the first ANAN G2 (Saturn) test report (W1IZZ, issue #3). Nothing changes on the air for the ANAN G2E, 10E/100B or Hermes Lite 2 — two small visible things aside, listed below.

ANAN G2 / Saturn — what the first test found, fixed

  • Supply voltage read 0.10 V. The Saturn carries its supply voltage in a different status word than the G2E (bytes 57-58 × 0.02553 V/count, as in piHPSDR and Thetis). The readout is now per model. ⚠️ This mapping comes from the reference sources, not from a G2 in front of us — if you own one, the footer should read your PSU voltage; SDRFL_DEBUG_LEVELS=1 prints the raw words if it does not.
  • No 60 m / 30 m band buttons — added, so those bands can be selected and power-calibrated like the others.
  • The terminal filled with p2: DUC sequence errors: … lines on the G2. Those status bytes are FIFO telemetry on the Saturn, not the G2E's sequence-error counter; the counter is now read on the G2E only.

For every radio

  • Transmit-IQ stream start hardened. The TX-IQ sender ring is gated on the live link, so nothing stale can be queued before the radio is up, and the start prints a one-line baseline of the radio's sequence-error counter. Healthy log = at most one DUC sequence errors: N (+1) right after p2: started and nothing afterwards. Live-verified on a G2E: 2.8 h, 85 FT8/FT4 overs, exactly that.
  • ANAN 10E: the Supply readout is hidden — neither piHPSDR nor Thetis documents a supply-voltage word for that model, and the number shown before came from an unknown one.
  • The GtkImage … reported baselines of minimum -2147483648 warnings some of you may see on GTK 4.22 are diagnosed (GTK/Pango under a transient font-metrics failure, cosmetic, not the app) — documented, no code change.
  • The window's minimum width grows by the two band buttons (1618 → 1704 px).

G2 status after this release

From "unlocked, unproven" to "first live pass done by an external tester, not calibrated by us": receive probes clean, per-band PA calibration against an LP-100A with our wattmeter within 1–2 W, SWR tracking, a voice QSO; PureSignal reported working (no numbers yet). The radio still starts safe — PA off, 1 W, no stored calibration — so the first transmission still belongs into a dummy load (docs/RADIOS-SCOPE.md §7; §7.1 is what his run showed).

What would help most from G2 owners on 0.4.2: the footer Supply reading next to your PSU voltage; whether the DUC sequence errors lines are gone; the footer PureSignal numbers during a two-tone (feedback level / state); and the 30 m / 60 m PA calibration now that the buttons exist.


Downloads: AppImage (any distro), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+). Arch users: sdr-for-linux on the AUR. The headless probes (sdrfl-*probe) are dev-tree binaries — build from source for those.

SDR for Linux 0.4.1

Choose a tag to compare

@OK1BR OK1BR released this 21 Aug 17:11
3f3298f

SDR for Linux 0.4.1

Support for the Apache Labs ANAN G2 (Saturn) — receive, transmit and PureSignal. Nothing changes for the radios already supported.

⚠️ If you have a G2, read this first

This model is enabled from an audit of the piHPSDR sources, not from a test on the hardware — nobody working on this program owns a G2. Every per-device value (the two Alex filter boards, the second ADC, the DDC mapping, the ANAN-7000 band-pass knees and wattmeter constants, the PureSignal peak 0.6121) comes from upstream piHPSDR and is pinned by an offline byte-level test, but none of it has ever been confirmed against a real radio.

The radio therefore starts safe — PA off, ANT1, 1 W, no stored PA calibration — so your first keying is a dry key. ⛔ Your first transmission belongs into a dummy load: dry key → 1 W → walk the per-band PA calibration up against an external meter → confirm the SWR protection acts → then CW/voice, and PureSignal last. Until someone does that, treat our wattmeter reading on this model as indicative, not measured. The step-by-step is in docs/RADIOS-SCOPE.md §7, and a report back — good or bad — is what turns "should work" into "works".

What is in it

  • ANAN G2 / Saturn (Protocol 2) — discovery, receive, transmit and PureSignal. The G2-specific wire differences are implemented: both Alex filter boards enabled, two ADCs declared, the receiver on DDC2, the ANAN-7000 band-pass table, the ANAN-7000 wattmeter branch, and ps_setpk 0.6121 — roughly double what every other Protocol-2 radio uses, so the generic value would mis-scale the PureSignal feedback.
  • Per-radio calibration stays per radio — a G2 session keeps its transmit calibration in its own [tx-saturn] section and can never overwrite a G2E's.
  • A new offline test (sdrfl-p2dev-test, 163 checks, in CI) pins every per-device byte against piHPSDR and asserts the packets for the already-supported radios are byte-identical.
  • No change for the ANAN G2E, ANAN 10E/100B or Hermes Lite 2 — and that is verified, not assumed: the G2E was re-tested on the air after the change, receive and transmit including PureSignal.

Close behind, but not enabled

The ORION2 family (ANAN-7000/8000, DLE 7000) shares almost all of the G2's wire behaviour and now rides along in the code, but stays refused until someone tests it.


Downloads: AppImage (any distro), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+). Arch users: sdr-for-linux on the AUR.

SDR for Linux 0.4.0

Choose a tag to compare

@OK1BR OK1BR released this 17 Aug 12:36
5ed300e

SDR for Linux 0.4.0

A native RTTY mode, an important transmit noise-gate fix, and proper meter ballistics.

RTTY

  • Native RTTY — direct-FSK transmit (45.45 Bd / 170 Hz shift, phase-continuous, constant envelope), keyed from text over TCI (rtty_macros:), with its own filter presets, an FSK monitor tone with its own level trim (pitch adjustable, default 2210 Hz → the classic 2125/2295 pair), the sent-text HUD strip, and the r hotkey. The dial reads the FSK pair centre; spot clicks stay Hz-exact. Decoding is left to your skimmer/TCI tools by design — verified on the air against an IC-705 and a KiwiSDR.
  • TCI trx reports the real keyed state (CW/RTTY keying included), not just the MOX button — loggers see the actual over.

Transmit audio

  • Fixed: the noise gate deformed speech. Since the gate moved to the WDSP downward expander, its parameters were re-pushed ~20× a second and every push silently reset the gate's detector — chopping roughly a third of all speech by ~9 dB whenever the gate was enabled. This was issue #1 ("monitor noisy/distorted with the gate on"), and it was on the air, not just in the monitor. Parameters now apply only on change, with a regression test guarding the setters.
  • Noise-gate redesign — the threshold and the Mic meter now share one dBFS scale, the threshold is drawn on the TX HUD Mic bar (white = open, red = gating), and the previously hardwired attenuation is an operator control: Gate depth (default 10 dB).
  • TX monitor below 192 kHz — fixed choppy monitor audio caused by the PureSignal TX feed pacing at 48/96 kHz sample rates.

Meters

  • RX S-meter ballistics — the needle no longer flickers at frame rate: display-side smoothing with a new Averaging → S-meter preference (default 330 ms), and the numeric dBm readout updates 4×/s while the bar stays full-rate. Protection paths and TCI keep reading the raw meter.
  • TX Mic / Lev / ALC meters — the same ballistics family: instant attack, smooth decay.

Appearance

  • Redesigned application icon, plus a 16×16 symbolic (monochrome) variant per the GNOME HIG.

Packages

AppImage (x86_64, glibc ≥ 2.39), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+) attached below; Arch users: sdr-for-linux on the AUR.

SDR for Linux 0.3.0

Choose a tag to compare

@OK1BR OK1BR released this 09 Aug 16:24
1744b68

SDR for Linux 0.3.0

Smooth rendering: the spectrum display moves to the GPU.

Rendering

  • GL renderer by default on GTK ≥ 4.22 — collapses frame jitter on 60 FPS displays (>40 ms hitches went from hundreds per minute to ~2/min in measurement). Cairo stays the default on older GTK (including the AppImage); an explicit GSK_RENDERER env always wins. The startup log prints the choice.
  • GPU waterfall — the waterfall is now a GPU-scaled texture and cairo draws only the spectrum strip; the app's own frame cost dropped to ~1.1 ms. Details and diagnosis techniques: docs/RENDERING.md.

Features & fixes

  • About → Troubleshooting — the About dialog now carries debug info (app + library versions, active renderer, connected radio, TCI state, config/wisdom paths) pasteable straight into a bug report via its Copy button.
  • TCI — client-sent spot clicks are relayed to the other TCI clients, so clicking a spot in a skimmer reaches the logbook.
  • Desktop entry — the launcher now also works for plain source builds (meson install), and StartupWMClass covers X11 sessions.

Build

  • Requires GTK ≥ 4.10 (snapshot API); GL rendering kicks in on GTK ≥ 4.22.

Packages

AppImage (x86_64, glibc ≥ 2.39), .deb (Ubuntu 24.04+ / Debian 13+), .rpm (Fedora 40+) attached below; Arch users: sdr-for-linux on the AUR.

SDR for Linux 0.2.0

Choose a tag to compare

@OK1BR OK1BR released this 13 Jul 14:25

sdr-for-linux 0.2.0

First regular release — version numbers from here on are plain semver (0.x while the app matures), no more alpha/beta suffixes. Everything below has been live-verified on real hardware, most of it in a real contest.

New supported radios

Radio Protocol Status
ANAN G2E 2 RX + TX + PureSignal (as before)
ANAN 10E / 100B (Hermes) 2 RX + TX — new. PureSignal is locked out: fw 10.3 wedges mid-TX (root cause + the Thetis-proven fix documented in docs/TX-DESIGN.md §9)
Hermes Lite 2 1 RX + TX + PureSignal — new, including brand-new Protocol 1 (METIS) support: discovery, N2ADR filter-board control, LNA slider, temperature/overload telemetry, thermal trip at 60 °C

Per-radio TX profiles keep power ratings, wattmeter constants and PA calibrations separate per model — calibrations can never leak between radios that share a config.

Contest hardening

Deployed in a CW contest (~130 QSOs) two days after the alpha; every finding fixed and re-verified live:

  • CW keying latency (TCI→RF) 320 → 32-42 ms, turnaround 445 → 201 ms
  • per-mode AGC presets (SSB/CW/AM/digi remember their own AGC)
  • mode-aware TX HUD: CW sent-text strip with a playhead, WPM/KEY/hang indicators; digi TX-audio level with a clip latch
  • SWR alarm reads genuine coupler samples only (no more stale-reading false trips), radio picker de-duplicates multiple radios on the LAN, the app starts the radio you picked

TX transport & audio chain

  • Paced TX IQ senders on both protocols — the radio's DUC FIFO is never burst-fed or starved; on P2 the TX chain is clocked by the radio's own mic stream and the DUC stream runs continuously (Thetis-style), so there is no key-down transient and the radio's sequence-error counter becomes a genuine lost-packet tripwire
  • TX monitor now plays the processed TX audio (what actually goes on air — gate/processor/TX filter included) with a jitter buffer; the raw low-latency mic tap is still available as an option
  • Audio preferences: microphone gain, noise gate (true downward expander) and speech processor — voice modes with a live mic only; digi/TCI audio stays a bit-exact clean chain, enforced by the engine
  • TCI: audio_start/audio_stop are ACK-echoed (stops client retry loops), stuck-MOX fixed (keyer tracking across disconnects, dead clients with a held key are reaped in ~28 s)

Known limitations

  • Single receiver (no RX2 yet), no FM, no diversity
  • CAT: not built in — use tciadapter for hamlib-only programs; the TCI server covers SDC, Decodium & co.
  • Audio flows through the PC only (the radio's own phones/mic jacks are not used)
  • AUR: still blocked by the upstream registration freeze; the PKGBUILD ships in packaging/

Install — pick your format

All three artifacts below are built from this tag and the packages are install-tested in fresh containers by CI:

  • AppImage — any distro with glibc ≥ 2.39 (Ubuntu 24.04+, Fedora 40+, Mint 22, openSUSE, Arch): chmod +x and run
  • .deb — Ubuntu 24.04+ / Debian 13+ / Mint 22+: sudo apt install ./sdr-for-linux_0.2.0_amd64.deb
  • .rpm — Fedora 40+: sudo dnf install ./sdr-for-linux-0.2.0-1.x86_64.rpm
  • Arch: packaging/PKGBUILD builds with makepkg (AUR pending the upstream registration freeze)

Or build from source: meson setup build && meson compile -C build — see the README.

SDR for Linux 0.1.0-alpha

Pre-release

Choose a tag to compare

@github-actions github-actions released this 11 Jul 11:01

First alpha release of SDR for Linux — a modern GTK4/libadwaita application for HPSDR Protocol 2 radios, built on the piHPSDR engine and the WDSP DSP library.

⚠️ Supported hardware: Apache Labs ANAN G2E only

Every feature below was developed and verified live on a real ANAN G2E. Other radio models are refused by a safety whitelist — a wrong relay or filter bit in the HPSDR control words can physically damage a PA, so untested models stay blocked until they are brought up on real hardware. Have a different Apache Labs / Hermes P2 board and a dummy load? Open an issue.

Highlights

  • RX: full-resolution floating-point panadapter + waterfall (6 palettes), SSB/CW/AM/SAM/DIGU/DIGL, AGC, NR/NB/ANF, binaural mode, low-latency PipeWire audio (~15 ms), band-plan overlay, DX-spot overlay with click-to-tune
  • TX: SSB voice (speech processor, noise gate), CW with clean break-in, separate MOX/TUNE drive, true-PEP wattmeter, SWR protection, PureSignal linearization with Thetis-style auto-attenuate, TX panadapter + monitor, footswitch PTT
  • Integration: ExpertSDR3-compatible TCI server (control, CW, RX/TX audio, wideband IQ, spots) — verified with SDC, CW Skimmer and Decodium; CAT/hamlib apps work through tciadapter

Install

AppImage (below): needs glibc ≥ 2.39 (Ubuntu 24.04+, Fedora 40+, Mint 22, Arch, …) and PipeWire as the sound server.

chmod +x SDR_for_Linux-*.AppImage && ./SDR_for_Linux-*.AppImage

Or build from source — see the README.

First run: the app plans FFTW transforms once (~6 minutes, progress window) and caches the result; every later start is instant.

Known limitations

  • One radio (ANAN G2E), one receiver (RX2 planned), no FM yet
  • Wattmeter: single per-band calibration factor — accurate on HF, over-reads ~25 % on 6 m
  • Alpha software: expect rough edges, and please report them

73 de OK1BR

Full Changelog: https://github.com/OK1BR/sdr-for-linux/commits/v0.1.0-alpha