Skip to content

Releases: aethersdr/AetherSDR

AetherSDR v26.8.4 — Evidence-Backed Icom, Client-Timed HL2 CW & Faster PSK Reporter Maps

Choose a tag to compare

@jensenpat jensenpat released this 23 Aug 03:03
v26.8.4
acbc8c0

48 commits across 14 contributors since v26.8.3. Full detail in CHANGELOG.md.

Headlines

Icom support now grows by model and evidence, not assumption. The IC-705,
IC-7300MK2 and IC-9700 gain typed capability profiles that fail closed for
unknown radios. That foundation brings radio-authoritative FM repeater tone,
duplex and momentary XFC; real IF-width/PBT and TX-cut readback; the radio's
network name; the CI-V CW text keyer; WFM and correct VHF/UHF band limits; plus
bounded IC-9700 CI-V recovery when the RS-BA1 transport remains alive.

CW timing and Hermes-Lite 2 operation move onto the right clock. HL2 gains
client-timed CW transmit with restart persistence, while scheduled key edges now
drive the sidetone, trace and netcw paths consistently. Late edges, PortAudio's
default-device route and cramped CWX macro rows all receive focused fixes.

Maps, audio and station controls are smoother and more trustworthy. PSK
Reporter renders more stations and paths with less per-item overhead and gains
trackpad pinch-to-zoom; NR2 recovers cleanly across AGC-T changes; microphone
capture stays float through the 48 kHz voice strip; MIDI profiles round-trip
safely; TCI stops duplicating channel-0 VFO updates; and Workspace Canvas,
Ulanzi, FlexControl and fractional-scale slider behavior are tightened up.

Networked Icom

  • Evidence-backed model capability profiles (#5151). IC-705, IC-7300MK2
    and IC-9700 behavior is described by independently attested facets instead of
    scattered address checks. Unknown and unprofiled radios hide unsupported
    controls and telemetry instead of borrowing another model's commands or
    calibration.
  • Real RX filters, twin PBT and TX cuts (#5076). The app reads the radio's
    actual IF width, keeps filter slot/width/shift separate, writes only
    model-supported TX edges and publishes the radio's readback.
  • FM repeater tone, duplex, offset and momentary XFC (#5140). State is
    read-first and profile-gated, recalled in radio-safe order, and XFC always
    releases on hide, deactivation, capability change or disconnect.
  • Network Radio Name in the status bar (#5148). A custom RS-BA1 radio name
    is kept distinct from canonical model, hostname and callsign.
  • CI-V CW text keying as CWK (#5113) and a focus fix that prevents incoming
    CWK updates from stealing the VFO editor (#5134).
  • The radio's own mode vocabulary reaches the UI (#5106), making WFM
    selectable where the model advertises it.
  • Correct RF decks and tune guards: 2 m/70 cm are admitted on the IC-705
    (#5108), and IC-9700 band power limits are modelled explicitly (#5117).
  • Hardened lifecycle and IC-9700 recovery (#5145). Cancelled scheduler work
    receives terminal outcomes, stale-session frames cannot publish state, and a
    confirmed IC-9700 CI-V stall gets bounded serial-stream recovery before a
    full reconnect.
  • Icom logging now registers its categories and records every CI-V frame
    (#4965); the scheduler-safe trace regression was fixed (#5046).

CW and Hermes-Lite 2

  • Client-timed HL2 CW transmit and persistence (#5061). Host-scheduled key
    edges drive Protocol 1 CW safely, and client-owned CW operating state returns
    after restart.
  • First-connect setup is presented reliably and test FFTW planning is bounded
    (#5062).
  • Scheduled key instants now flow to sidetone, trace and netcw (#4942), and late
    edges shift the sidetone anchor forward rather than being clamped (#4934).
  • PortAudio's real default-device path is reachable for the default sidetone
    selection (#5085), and CWX macro rows remain readable at minimum window
    height (#5125).

Audio and noise reduction

  • Microphone capture stays float32 through the 48 kHz voice strip (#5017).
  • TX-accumulator clears are serialized on the AudioEngine thread (#5095).
  • NR2 recovers from residual noise when AGC-T changes (#5045), and RN2 frame
    accumulation is unified (#5039).
  • Automation proof modes now exercise RN2 more completely (#5043).

PSK Reporter and the panadapter

  • PSK Reporter map coverage and responsiveness improve through batched marker
    and path rendering, wrapped-map geometry and live-update work (#5110).
  • Smooth trackpad pinch-to-zoom reaches the map (#5103).
  • DIGL is no longer misclassified as RTTY, restoring the normal carrier marker
    and removing meaningless mark/space cues (#5167).
  • Duplicate pan wiring callbacks are removed (#5038).

Controllers, MIDI and TCI

  • macOS Ulanzi input no longer seizes unrelated trackpads (#5147).
  • AetherControl gains a direct Settings link for FlexControl configuration
    (#5157).
  • MIDI profile Save reports its real outcome (#5127); dotted profile names and
    paths round-trip safely (#5083); the app's own Pitch Bend export re-imports
    (#5054); and SmartSDR .map files translate direct band/mode selection
    (#5053).
  • TCI starts only after readiness, echoes start/stop correctly (#5082), and no
    longer double-broadcasts vfo: on channel 0 (#5088).

App workflow and automation

  • Workspace Canvas pan layouts reflow correctly after surface changes (#5152).
  • Slider hover events no longer leave stale pixels at fractional UI scale
    (#4923).
  • MainWindow disconnects the global focus-change signal before member teardown
    (#4927).
  • PHONE low/high TX cuts accept exact typed values while preserving radio
    readback (#5064).
  • The automation bridge gains doubleClick and doubleClickAt (#5069).
  • Accessibility announcement tests skip only where the platform has no
    accessibility backend (#4949).

Diagnostics, documentation and CI

  • Startup logs and support bundles record CPU SIMD, RAM and GPU capability
    inventory (#4988).
  • MCP token guidance keeps AETHER_MCP_TOKEN out of persistent configuration
    (#5158).
  • HL2 documentation and tools move into their maintained repository homes
    (#5035).
  • The Linux gate runs midi_settings_test (#5025); digital-voice ASan opt-in no
    longer breaks TSan (#4947); and release signing archives the tag build rather
    than main (#5029).

Contributors

Big thanks to @jensenpat (10 commits), @skerker (9), @rfoust (8),
@fklassen (3), @nigelfenton (3), @Ozy311 (3), @M7HNF-Ian
(2), @ten9876 (maintainer, 2), @w5jwp (2), @aethersdr-agent
(the AetherClaude orchestrator, 2), @chibondking (1), @K5PTB (1),
@NF0T (1), and @tropo1234 (1).

We are excited to welcome our first-time contributors this cycle:
@fklassen and @tropo1234.

73, Pat KI6BCJ & Codex (AI dev partner)


Downloads

Linux AppImage (x86_64 / aarch64), macOS DMG (Apple Silicon + Intel, signed + notarized), Windows installer (setup.exe) + portable ZIP, and the Stream Deck plugin are attached below — built and signed by CI workflows on this tag.

Full diff: v26.8.3...v26.8.4

Verifying releases: see docs/VERIFYING-RELEASES.md. Signing key: docs/RELEASE-SIGNING-KEY.pub.asc.

AetherSDR v26.8.3 — The Workspace Canvas, an Icom Command Plane & HL2 Noise Blanking

Choose a tag to compare

@github-actions github-actions released this 16 Aug 19:34
v26.8.3
3e467fa

53 commits across 14 contributors since v26.8.2. Full detail in CHANGELOG.md.

A new shell — the workspace canvas

View ▸ Workspace Canvas turns pans and applets into freely placed, resizable, layered items on a canvas that can span several top-level windows. Named workspaces recall which applets are open as well as where they sit, and can be bound to radio profiles so recalling a profile switches your layout with it.

It is opt-in and off by default. If you never open that menu, this release changes nothing about how AetherSDR looks or behaves — and an install that never enables it never even gains a settings key. Enabling it migrates your current layout into a "Classic" workspace you can always reset back to, and disabling it restores the shell exactly while keeping your placement for next time.

A deliberate limitation this release: items move between canvas windows through a right-click Move to ▸ menu rather than by dragging across windows. Cross-window drag is a cross-top-level reparent, which is the crash lineage behind #2495 / #4617 / #4319, so it goes through one deliberate, safe path for now.

We want to hear from you. Layout is personal, and this is the feature most likely to meet a station setup we did not imagine — file a bug report or a feature request and say what you were arranging.

Experimental radio families — Hermes-Lite 2 and networked Icom

Both continue to move fast this release, and both are still experimental: neither is a supported radio family yet, and FlexRadio remains the supported target. See Supported Hardware for what each backend does and does not do today. Reports from testers are how these families move from experimental to supported — please say which radio and which firmware you are on.

Headlines

Icom — a command plane, the IC-7300MK2, and WSPR on the air.

  • A CI-V command scheduler. Every meter read, control write, reconciliation poll and PTT transition now goes through one ordered command plane instead of independent timers calling the transport directly. Dispatches are paced into 25 ms slots with one reply-bearing transaction in flight, prioritised emergency-unkey → operator → PTT → active meter → control → maintenance, with duplicate reads and rapid writes coalesced by semantic register. The case that forced it: a pre-key PTT poll requested OFF, the client then issued ON, and the delayed OFF reply arrived after that intent — stopping transmit audio before the radio's real ON confirmation. Stale completions after a newer intent are now rejected. Icom-only; Flex and HL2 command, meter and PTT behaviour is untouched. (#5006)
  • The IC-7300MK2 control surface is complete against live hardware — 18 operator-visible defects, including RF Gain that did not survive an ANT-menu close or a reconnect, an ATU button that could not be clicked back into bypass, no RF Power or SWR meter at all, MIC Gain that was never subscribed, MON and Monitor Level that neither worked nor subscribed, notches that ignored front-panel changes, and preamp/attenuator conflated with display RF Gain. (#4981)
  • WSPR transmits from an Icom. prepareWsprTransmit() armed the seam-audio path correctly, but the readiness check accepted that latch only when hostModulates was true — and Icom deliberately reports it false, because the radio's own firmware modulates from the PCM this computer ships. PSK Reporter therefore never considered the stream ready and never advanced to PTT. Confirmed on the air: 20 reception reports across the continental US and Alaska, −22 to +4 dB SNR. (#5016)
  • RS-BA1 lease renewal. The frozen panadapter was a media-lease failure, not a renderer failure — serial CI-V and audio stopped together while the outer control socket still looked healthy. The inner renewal sequence was encoded as a shifted little-endian field, accidentally byte-identical only through sequence 255; at 256 it overwrote the next byte and the radio answered 0xffffffff. (#4995)
  • The connect path asks the radio for its own CI-V address. An Icom connected with the CI-V field blank was addressed at a hardcoded 0xA4 — the IC-705's address — so every other model silently ignored the traffic, and because a wrong address produces no error the session came up looking healthy with no frequency, no scope and no transmit. Measured on an IC-9700 with the same probe built in both trees: 0.000000 MHz before, 445.841350 MHz USB after. Type an address deliberately and it is still honoured, and not rescued — that is what makes the auto-detect trustworthy. (#4991)
  • DATA mode reaches the radio. DIGU/DIGL carried the sideband but left the DATA flag clear (#4989), and DFM was missing from the mode map entirely — so selecting it simply reverted, and a radio already in FM-D reported back as plain FM, meaning the next mode write silently took it out of data mode and put room noise on the air from the microphone on a 2 m AX.25 frame. (#4994)
  • PC Audio routing, on verified models. PC Audio now switches only the model-specific DATA OFF modulation input — WLAN on the IC-705, LAN on the IC-7300MK2 — and only on an operator click; the connect edge publishes state and advises on a mismatch rather than writing, because that register is a SET-menu value the radio persists. Switching it off restores the value your radio had rather than assuming MIC, so an operator running USB for a rig interface gets USB back. An unverified model declines the write rather than guessing, and Radio Health no longer shows a MOD Input row it would have to label from the IC-705's enum — which is how an IC-9700 correctly set to LAN reported "USB" and got warned at, every session. (#5016)
  • The PC Audio button is now unlockable on Icom, since a backend that ships TX audio over the seam without host-modulating no longer forces it on — an Icom's own microphone is a real alternative. And every CW gate now recognises the normalized CWU an Icom reports, not just the decoder's; the same sweep caught three places testing bare "CW" that were sending a CWL slice to the SSB settings bucket. (#5016)

Hermes-Lite 2 — noise blanking, a real BFO, and a TX ALC that respects your client.

  • A working NB button. The HL2 ships raw IQ and runs no firmware DSP, so it correctly reports "no radio-side DSP" — and the UI hid NB alongside NR and ANF. That was the right conclusion about the command and the wrong one about the control: WDSP's impulse blanker can run here, and on this radio here is the only place it can run at all. It runs on the raw IQ ahead of the demodulator, because an impulse is short in time and wide in frequency — once an 8192-tap bandpass has smeared it there is no spike left to blank. (#4908)
  • CW gets a real BFO. The panadapter drew its passband skirt entirely to the right of the marker, where a USB filter sits. On this radio that is worse than cosmetic: the gateware generates the shaped CW carrier at the TX NCO, which is the marker — so the receiver was listening 600 Hz from where the radio transmits. (#4914)
  • AGC mode and threshold survive a restart. Set Slow/40, quit, relaunch, and the session came up on Med/65. The AGC loop for this radio runs in WDSP on the host, so the client is the only place the setting can live — and it was living nowhere. (#4911)
  • Your client's level control works again. WSJT-X's Pwr slider is not a rig command, it is a digital attenuator on the audio the client streams over TCI. The host speech ALC ran over that audio, so the control was either normalised away or frozen into a path-dependent gain: TUNE at a low setting made no RF, sliding up mid-key wound the gain up, and sliding back retained it. The bypass is deliberately one-sided — client audio is never lifted, but it is still reduced, because removing that half left the modulator's hard clamp as the only thing between a hot client and the band. DAX clients get the same fix. (#4910)
  • The meter surface is certified on real hardwareTX:MICPEAK tracked a −20 dBFS tone to +0.023 dB while TX:ALC did not move at all across a 20 dB sweep, which is the ALC normalising, measured rather than assumed. Every meter on the radio was correct; two of the concerns the certification tool reported on a clean run were not, and five defects in the tool are fixed with it. (#4916, #4917)

VK3AMP amplifiers — 600 W / 1000 W / 2000 W.

  • A third peripheral amplifier alongside ACOM and SPE, entirely outside the radio seam: TCP control and status plus UDP telemetry, with calibration curves for output, reflected, current and input power unit-tested against real capture values. Idle-aware keepalive and watchdog, a bypass and voltage-rail safety interlock, hold-to-confirm reset, and a dockable panel with Power / Reflected / SWR gauges. A persisted variant selector rescales the forward-power gauge to each unit's rated output plus 25% headroom. Connection reliability came straight out of hardware testing — the amp's network stack answers only broadcast ARP, so a cold connect can stall 9–12 s on Windows' unicast-first neighbour-cache reconfirmation. (#4919)

Transmit audio, DAX and CAT.

  • The TX voice chain moves to 48 kHz float. The channel strip was performing several rate conversions...
Read more

AetherSDR v26.8.2 — Experimental Hermes-Lite 2 & Icom IC-705, SPE Expert Amps

Choose a tag to compare

@github-actions github-actions released this 09 Aug 22:36
v26.8.2
40e0c03

57 commits across 14 contributors since v26.8.1. Full detail in CHANGELOG.md.

New radio families — Hermes-Lite 2 and Icom IC-705

This release introduces experimental support for two more radios on the vendor-neutral IRadioBackend seam: the Hermes-Lite 2 and the Icom IC-705. Experimental means exactly that — both are new, neither is a supported radio family yet, and FlexRadio remains the supported target. See Supported Hardware for what each backend does and does not do today.

We want to hear from you on both. Bug reports and feature requests against the experimental backends are open and wanted — file a bug report or a feature request, and say which radio and which firmware you are on. Reports from testers are how these families move from experimental to supported.

Headlines

SPE Expert amplifiers — 1.3K-FA / 1.5K-FA / 2K-FA.

  • A second peripheral amplifier following the ACOM precedent, entirely outside the radio seam. Serial (115200 8N1) or ser2net TCP, raw or telnet, both verified on real hardware; poll-silence detection, so a TCP link that outlives the amp being switched off is reported as such; model identification from the status ID field; and an RFC 2217 DTR/RTS power-ON pulse that works over the network. The applet carries power / antenna-SWR / ATU-SWR gauges — the power gauge rescales with the selected LOW/MID/HIGH level, matching the amp's own display — plus V/I/temperature readouts, warning and alarm banners, and the front-panel keystrokes. (#4531)

Spots, schedules and band data — three new overlays.

  • N1MM+ / DXLog contest bandmap spots over a SmartSDR-CAT-compatible UDP XML listener, with dupe / needed-multiplier / CQ / busy / bust status on the panadapter and eight configurable status→colour swatches. Default port 12060 matches the FocusHelperN1MMPort SmartSDR documents, so existing broadcast configs work unchanged. N1MM is the only feed that explicitly says when to add, update and remove, so spots are keyed by callsign+band rather than deduped by frequency. (#4678)
  • The EiBi shortwave broadcast schedule in its own SpotHub tab — auto-start, live spot counter, forced re-download, conditional If-Modified-Since updates on a 7-day threshold, and a customisable spot colour that repaints active markers live. Resolves 289 country codes, 560 language/mode codes, target areas and 1,629 transmitter sites into rich-text tooltips. (#4822)
  • The KiwiSDR DX Community database as an independent, opt-in overlay for shortwave utility, beacon, broadcast and DX spots: cyan diamond markers on the band-plan strip, tooltips with frequency, station, mode, passband cuts and notes, and click-to-tune that sets frequency, filter bandwidth and — with SpotHub's Auto on — the mode, through a normalising whitelist so an unrecognised mode string can never reach the radio as a command. (#4828)
  • US 60m follows the FCC Report & Order that took effect on 13 February 2026. The ARRL plan still carried the pre-2026 five-channel allocation, drawing a 100 W channel over spectrum capped at 9.15 W ERP and omitting 15 kHz US operators have had since February. The new 5351.5 – 5366.5 kHz segment is added with its own colour so the power boundary reads straight off the panadapter, the retired 5358.5 kHz channel is removed, and the four retained channels keep their historic numbering (1, 2, 4, 5) so markers still agree with your existing logs. Separately, the 60m band edges clipped the top 1.3 kHz of the 5405 kHz channel, so band-stack entries in that sliver saved under "Other" and digital-mode band matching failed. (#4762)
  • Smaller items in the same area: the SpotHub Time column sorts at last (only Freq ever returned a sort value, so once you sorted by frequency there was no way back) (#4751); a status-message field in the FreeDV Reporter panel that stays in sync with SpotHub → FreeDV (#4757); and KiwiSDR receiver lists import and export as CSV, merging on a normalised endpoint so re-importing the same file is idempotent — passwords are never exported, they stay in the OS keychain (#4753).

Spectrum, waterfall and 3D FFT.

  • K4-style mini-pan — a small, detachable ±5/±10 kHz window centred on the active VFO, independent of the main panadapter and usable when it is hidden (Minimal Mode) or alongside third-party contest logging. It is an independent top-level window, so it floats over other applications and survives AetherSDR being minimised. Live on a FLEX-6500 at ~26 Hz/bin, five times finer than the 200 kHz main pan. (#4562)
  • The 3D stacked-trace wedges close. Every row covered the same frequency span while the far rows narrowed with perspective, leaving two empty black triangles flanking the surface. A new 3D Span slider sits under Display → 3D VIEW, and 0 restores today's rendering exactly. (#4779)
  • 3D FFT works on the Raspberry Pi 5 againdss_mesh is the only shader using the flat qualifier, no 140 slice existed, and the Pi's v3d driver fell back to a 120 slice the shader cannot compile against. Desktop GPUs picked the 150 slice, which is why CI never saw it. (#4754) 3D FFT history outlines render on Linux/OpenGL too. (#4730)
  • Windows panadapters are no longer blank under software OpenGL — with AETHER_NO_GPU or QT_OPENGL=software, the panadapter chose OpenGL while the hidden WAVE scope had already chosen D3D11 for the same top-level window, and Qt rejects mixed QRhi APIs in one backing store (13,804 QRhiWidget: No QRhi messages, every panadapter transparent). The default D3D11 path is unchanged. (#4748)
  • A headless Wayland session automatically prefers xcb — the typical VNC/wayvnc case, where there is no DRM scanout, so every frame's makeCurrent fails with EGL_BAD_MATCH and AETHER_NO_GPU=1 does not help. Detection is deliberately tri-state, a user-set QT_QPA_PLATFORM still wins, and the decision is logged at startup so it is diagnosable from a support bundle. (#4755)
  • Waterfall interpolation is clamped at history boundaries, ending the occasional bright, dark or scrambled horizontal line during rapid pan or zoom (#4794), and Waterfall Blanker rows stay in one frequency frame instead of permanently retaining a shifted row (#4802).
  • A GPU that fails mid-session now says sorenderFailed() fired with nothing listening, leaving a blank panadapter and no explanation. Each GPU spectrum widget now shows a persistent warning card over the affected pan. (#4787)
  • Off-screen slice indicators centre on a single click — the active indicator, the one you are most likely to be chasing, emitted nothing at all. (#4795)

Receive DSP and audio.

  • MNR delivers the attenuation it advertised — its minimum-statistics estimator took a raw minimum across 25 periodograms and left the Wiener gain near unity; maximum-strength stationary attenuation goes from 4.54 dB to 24.4 dB, scale-invariant within 1 dB, with +18.8 dB SNR improvement on speech-like input for −2.8 dB of desired-signal level. Your existing strength setting now removes far more noise than it did, so start lower than you are used to. The redundant Enable MNR checkbox is gone with it — the method selector is the sole enable, consistent with every other AetherDSP method. (#4807)
  • DFNR no longer pumps on stereo — it drove a delayed dry stereo signal with a fast processed-to-dry power envelope, the same family of fault already fixed in RN2. (#4788)
  • The AetherVoice EQ canvas caches its layers instead of rebuilding the band response, grid, labels and band-plan decoration on the GUI thread every analyzer frame: on the same Windows VM, 73.1% → 37.4% of one core at 1280×900, and 82.8% → 43.1% at 2200×1300. (#4808)
  • Audio mute commands reach the model. The three mute setters sent their command and returned, never assigning and never emitting, and FlexBackend is the only parser of those statuses — so on every other backend the flags sat at their false initialisers for the whole session: mute the headphones, nudge the volume, and the glyph silently flipped back. (#4772) The title-bar headphone mute also reconciles with the radio, so a second Multi-Flex client changing it no longer leaves the icon lying (#4733), and the header speaker emoji follows local PC audio mute (#4628).

CW keying, to spec.

  • Iambic sidetone timing. workerLoop() armed each deadline as now() + duration, read after the previous wait returned, so every element ran long by a fresh error that never self-corrected. Deadlines now advance on an absolute steady_clock grid anchored at squeeze start, tracked in nanoseconds, and key transitions are timestamped into a lock-free ring and mapped to exact sample offsets instead of being quantised to an audio-block boundary. Measured on real hardware (Intel MBP, HaliKey Serial): 45.70 ms/unit → 40.002 ms/unit at a 30 WPM setting — 26.26 WPM → 29.998 WPM. (#4823)
  • Mode B no longer drops the trailing element on a clean simultaneous release. The memory latch ran only at condition-variable wakes, and a wake caused by a release always observes post-release state, so the keyer behaved like Mode A — routine on the serial path, where a 10 ms poll collapses both edges into one event. (#4810)

Copy Assist (speech-to-text).

  • A GPU that cannot be used falls back to CPU instead of taking the app down. On a machine whose Vulka...
Read more

AetherSDR v26.8.1 — Settings Store, TCI Rig Control & Metering Accuracy

Choose a tag to compare

@ten9876 ten9876 released this 02 Aug 20:58
v26.8.1
4037d2d

118 commits across 15 contributors since v26.7.4.1. Full detail in CHANGELOG.md.

Before you upgrade

Three things change what runs where. Everything else is a straight upgrade.

  • Intel Macs: speech-to-text is no longer included. The Intel DMG now targets macOS 12.0, down from 13.0, so it reaches the older hardware it exists for. That is only possible without Copy Assist: the speech runtime is published with a macOS 15.5 minimum, and macOS applies the highest minimum of anything inside an app bundle to the whole app — so shipping it meant shipping a DMG most Intel Macs could not launch at all. Apple Silicon is unaffected and keeps Copy Assist in full.
  • Raspberry Pi / ARM: the aarch64 AppImage now needs Raspberry Pi OS Trixie. It moves to Qt 6.8.3 LTS, which raises its glibc floor to 2.38. Bookworm cannot run it — as was already true of the builds it replaces. In exchange the ARM AppImage finally renders the spectrum on the GPU instead of falling back to CPU drawing.
  • Building from source now requires Qt 6.8 or newer. Nothing changes if you use the released binaries — they were already built against 6.8.3. Distro Qt satisfies this on Debian Trixie, Ubuntu 25.10+, Fedora 41+ and Arch. On Ubuntu 24.04 LTS it does not; build against a Qt from aqtinstall or the Qt online installer and pass -DCMAKE_PREFIX_PATH=/path/to/Qt/6.8.3/gcc_64.

Your settings migrate to the new store automatically on first launch. The old AetherSDR.settings file is left in place untouched, so rolling back to an older release keeps the settings you had at upgrade time.

Headlines

Your settings move to a real database.

  • Settings now live in a SQLite store instead of the XML file, with transactional saves rather than a full-file rewrite every time, startup integrity checks, automatic verified backups, and quarantine + restore if the store is ever damaged — with a notice telling you which backup was used. (#4612)
  • Credentials leave the settings file entirely. The MQTT password, automation-bridge token and remote-ASR API key move to your OS keychain during the upgrade. (#4612)
  • New Settings Browser (Settings ▸ Settings Browser…) — browse and edit the whole store with live filtering, guarded editing, and a sanitized diagnostic export. Credential-shaped values are masked and read-only. (#4631)
  • New --config command lineaethersdr --config list|get|set|unset|export|path inspects or repairs settings without starting the GUI, which is the escape hatch when a bad stored value stops the app from launching. (#4612)
  • Bookmarks are durable the moment you make one: the band stack writes through immediately instead of riding on a later save that a crash could beat. (#4621)

TCI rig control keys the slice you asked for.

  • Since v26.7.4 no TCI client could activate the slice it named — keying stayed pinned to wherever transmit already sat. Before that, every client's trx:0 promoted the first slice, so a second WSJT-X instance yanked transmit off the slice the first one was working. Both are fixed, and satellite and cross-band split are preserved. (#4547)
  • Three further faults in the same path go with it: a cached route can no longer outlive the live transmit slice and move transmit onto a stale slice's band and antenna, an unresolvable receiver is declined instead of transmitting on the first slice, and two clients on one radio each resolve against the receiver they declared. Refusals now reply rather than failing silently. (#4547)
  • Receiver numbers stay stable when a slice is closed mid-session, so a live client's binding no longer goes stale. (#4567)
  • The routing decision is now logged, which is what makes a report diagnosable at all. (#4547)

The interface follows what your radio actually reports.

  • GPS status is gated on live hardware presence as well as the radio family, so a Flex with the GPSDO option not fitted no longer shows a GPS stack. (#4598)
  • The DVK button follows your radio's SmartSDR+ entitlement — without it, DVK read as broken rather than unlicensed, after you had already recorded into a slot that was never going to work. (#4653)
  • The status bar's PA supply voltage no longer renders a fabricated 0.00 V on radios that never report one. (#4597)

Metering accuracy.

  • Forward power kept reporting for about three seconds after unkey — the raw meter read zero within 200 ms while the derived watts value decayed exponentially from full power. (#4540)
  • SWR no longer reports a stale reading while receiving. With no transmit for sixteen minutes the meter kept showing the value measured during the previous transmit, which reads as a live antenna fault on a station that is working perfectly. (#4533)
  • Amplifier bar gauges no longer keep painting the old scale after an auto-range or a LOW/MID/HIGH change. Measured on the bench: an ACOM reflected-power gauge showed 206 W for 120 W and stayed there. Reflected power is the worst case, because that is the reading you use to decide whether to stop transmitting. (#4636)
  • The TX filter now tells you when it is removing your transmit audio — a low/high cut that excludes the audio keys the radio normally and produces almost no RF, and in DIGU/DIGL there was no cue at all. (#4649)

Noise reduction.

  • RN2 no longer pumps on stereo and binaural receive audio. If you listen with binaural or diversity audio, the noise floor no longer rises every time someone talks. RN2 was deriving one gain envelope from an L/R downmix and applying it to both channels, which is exact for mono and wrong for binaural. Nothing changes for duplicated-mono slices, or in how much noise RN2 removes. (#4584)
  • New, off by default: RN2 ▸ Noise Floor. RNNoise gates hard, which some operators hear as the receiver going dead rather than quiet. This leaves a percentage of the original signal under the denoised audio so the band still sounds live between phrases. 10–20% is a usable floor.
  • Transmit audio no longer breaks up with RN2 enabled — the pacer could never repay a missed deadline, so recovered microphone frames accumulated until the queue cap discarded audio outright. Reported by @Bill6000 on a FLEX-6500 under Linux Mint. (#4584)

Receive and squelch.

  • Manual squelch is remembered per slice again on every path — from a non-active slice's VFO flag, a MIDI or controller knob, or the radio itself. Previously only the RX applet kept that memory current, so cycling the SQL button pushed a stale value back to the radio and quietly undid what you had set. (#3326, #4592)
  • Squelch is no longer saved between sessions; it belongs to the radio, and new slices now start from the radio's own level. (#4592)
  • The CW APF level slider follows APF engagement instead of dragging, updating and commanding the radio while the audio is untouched. (#4658)

Spectrum and waterfall.

  • Changing the waterfall Scheme now recolours the history you are already looking at, instead of only the rows that arrive next. Switching themes does the same. Nothing moves while it happens — scroll position, paused scrollback and the scroll animation are all preserved. (#4694)
  • 3D FFT and waterfall history are stabilised against repeated zoom, pan, band changes and window resizing: false spikes, flat floor sections, bouncing boundary rows, shimmer, and pan previews that snapped back on release. (#4539)
  • Fixed a stack overflow that could crash the app on a waterfall source switch. (#4595)
  • A band change can no longer black out the waterfall. (#4522)
  • The AetherVoice channel-strip waveform no longer starves the waterfall of render time when you enlarge it. (#4616)

KiwiSDR.

  • RX audio stays warm through transmit, so unkey no longer costs about a second of silence and an audible re-sync. There is a per-profile Keep audio during TX option, and a new Resume audio after TX delay for receivers far enough away to hear your own tail. (#4380, #4571)
  • A tuned carrier in CW is audible again — the BFO is now offset by the radio's CW pitch instead of landing the carrier at 0 Hz. (#4423)
  • A Kiwi pan keeps its zoom through a tune-driven recentre instead of snapping back mid-drag. (#4424)

Themes.

  • The compiled fallback table is now generated from the bundled theme rather than hand-maintained, and pinned in CI. It had drifted on 9 tokens — it said slice A was red while both bundled themes say cyan — and 24 more tokens had no fallback at all, resolving to transparent on older themes, which could leave the waterfall with no colormap. (#3184)
  • Radial gradients no longer lose their centre on every save, and two more silent round-trip losses in save / export / template resolve are fixed. (#4573)
  • "Reset to default" follows the theme you are actually editing — on Default Light it restored the dark value for 96 of the 147 shared tokens. (#4575)
  • A themed widget reparented after it was styled is re-resolved, fixing the frequency display reverting to the default font after a band change. (#4520)

Controllers, spotting and operating.

  • Stream Deck becomes slice-aware: a Slice Target action cycles TRX0 → TX → ACTIVE across mode, DSP, squelch, lock, RIT/XIT, split, volume, mute and the VFO dial, and keys now show live values from the radio instead of static manifest labels. The default is unchanged, so an existing deck behaves exactly as before. (#4513)
  • Ulanzi Dial buttons can hold PTT and key CW, and remember what you mapped them to. Only the button-down half of each press was being read, so PTT (Hold) and CW keys did nothing at all. If the dial disconnects mid-transmission, everything it was holding is released immediately. (#4611)
  • FlexControl recovers on its own after losing its USB port instead of staying dead until you restart the PC. (#4574)
  • SpotHub gains...
Read more

AetherSDR v26.7.4.1 — TCI Rig Control Hotfix

Choose a tag to compare

@ten9876 ten9876 released this 27 Jul 02:07
v26.7.4.1
9f5730e

Hotfix release. This is v26.7.4 plus one fix and nothing else. If you are on v26.7.4 and use TCI, update. If you are on v26.7.3 or earlier, this is your upgrade target — the full v26.7.4 notes follow below.

The fix

TCI rig control is restored for WSJT-X and control surfaces. (#4500, #4493 — fixed in #4501)

v26.7.4 broke WSJT-X rig control over TCI. Band changes failed, the reported dial frequency was wrong, and transmissions could go out of band — which is why this is a same-day hotfix rather than something held for the next release.

The v26.7.4 TCI refactor replaced the model-driven tune with a raw slice tune written straight at the radio connection, then read the frequency back out of the slice model when the radio's reply arrived. Two things defeated that: the raw command bypasses the slice model, so nothing updated it — and the radio does not answer a tune with a frequency status either. The read-back could only ever observe the pre-tune value, so every vfo: confirmation echoed the frequency the slice had already left.

WSJT-X waits on that echo. It concluded the radio had not moved and reported a rig-control failure on every band change, while the radio was in fact sitting on the new band. Any client that accumulates a relative change — a Stream Deck tuning encoder, a band stepper — had its position reset by the stale echo and oscillated around one frequency instead of walking.

A second short-circuit in the same refactor confirmed a frequency without commanding the radio whenever the request matched what the model held. Once the model and the radio had diverged, that silently dropped real tunes and acknowledged them as successful.

Tuning now goes back through the slice model on every command plane. That setter is the command path — it sends the identical wire command, and additionally updates the model, honours a locked slice, and passes the transmit-inhibit guard the raw command bypassed. Confirmations now carry the frequency the radio actually reached.

Reported independently by @rah501xx (WSJT-X) and @milenjb (Stream Deck tuning encoder), whose packet captures pinned the missing status echo.


Everything in v26.7.4

94 commits across 14 contributors since v26.7.3. Full detail in CHANGELOG.md.

Headlines

Copy Assist — on-device speech-to-text, new in this release.

  • AetherSDR now transcribes received voice locally via whisper.cpp, docked under the waterfall with confidence colour-coding. CPU or GPU (Vulkan / Metal, auto-detected), download-on-demand models, and an optional remote OpenAI-compatible endpoint if you would rather run it elsewhere. Nothing leaves the machine unless you point it somewhere. (#4338)
  • Pick the transcription language rather than relying on auto-detection — a real difference on weak or accented signals. (#4399)
  • Copy Assist settings now live under a single configuration key, so they default, migrate, and save as one unit. (#4420)
  • The settings window honours frameless mode like the rest of the app. (#4417)

Copy Assist and NR2 now work properly together.

  • Copy Assist was fed from a visualization signal that drops any block arriving within 8 ms of the previous one — and it discards the whole block rather than merely skipping a repaint. With NR2 engaged, blocks arrive 5.33 ms apart, so roughly half the speech samples were being thrown away and the remainder spliced together with a discontinuity at every join. The resampler and voice-activity detector assume contiguous audio and had no way to see the gaps. Copy Assist now reads the unconditional presentation tap instead. No audio processing changed — the speaker path was never affected, which is exactly why this read as an NR2 speech-quality problem rather than a dropped-samples one. (#4486, #4488)
  • The same fix follows a single receiver: a station running a KiwiSDR alongside a Flex was previously feeding two receivers interleaved into one transcript.
  • NR2 itself gets better suppression quality and more reliable settings behaviour. (#4400)

Demo mode — run the full UI with no radio attached.

  • A synthetic backend generates its own receive audio and a matching panadapter, so you can explore AetherSDR, learn the interface, or develop against it with no hardware at all. Ten independently-enabled noise and signal channels make it a genuine test bench for the noise-reduction engines. It synthesizes receive audio only and cannot transmit. (#4473, #4490)

The 3D spectrum gets its largest polish pass yet.

  • Slice shadows are now surface-mapped onto the 3D FFT, with cached elevation shadows on slice flags. (#4439, #4442)
  • History is preserved across smooth-scroll boundaries, the rear edge stays stable when rows arrive late, and the floor resynchronizes after a bandwidth zoom. (#4432, #4476, #4477)
  • Waterfall and 3D motion are smoother for both Flex and KiwiSDR sources; the DC-edge comb, the wide right-edge artifact, and flat traces after a dBm scale change are all fixed. (#4425, #4413, #4371, #4279)
  • Panadapter Center Lock survives band changes, overlay wheel events stay contained, and the FFT trace line colour is now independent of the fill. (#4327, #4463, #4239)

Time, location, and station awareness.

  • AetherClock decodes NIST time signals and shows an alignment display, so you can see your clock's offset against the broadcast standard. (#4336, #4337)
  • A new GPS and station-location dashboard brings position and timing together in one place. (#4290)

Automation, TCI, and spotting.

  • The automation bridge gains an operator-controlled observe-only mode, phaseful pointer gestures, cross-platform subsystem memory telemetry, and a secured fresh-build MCP auth handoff. (#4188, #4355, #4293, #4356)
  • The bridge tune verb takes an optional slice id, so scripts can drive a non-active slice directly. (#4325)
  • TCI now broadcasts which slice has GUI focus, plus DSP, squelch, RIT/XIT and TX power on model change. (#4160, #4430)
  • Slice Link lets you right-click a panadapter to link two slices so tuning either retunes the other — across panadapters, including Kiwi-sourced slices. (#4326)
  • SpotHub gains a column-visibility menu and shrinkable width, and PSK Reporter gains a one-shot WSPR beacon transmitter. (#4157, #4435)

Operating polish and hardware support.

  • ACOM S-series amplifier support over serial / ser2net. (#4298)
  • Keyboard shortcuts can be exported and imported as backups, and an animated community credits experience joins the About dialog. (#4226, #4250)
  • Profile Manager Save now names its target and reports the result, deferred pan writes during profile loads are fixed, and container dock transitions persist immediately. (#4396, #4224, #4427)
  • TX power sliders stay stable during a drag, the status-bar TX timer is gated during tune carriers, and stale CW / RTTY panels after pan routing are fixed. (#4351, #4422, #4410)
  • macOS gets fixes for native Metal backing-store growth, waveform resize geometry, and clean failure without GUI services. (#4352, #4386, #4238)

Build and packaging.

  • CI now verifies that system libraries build, superseded workflow runs auto-cancel, and compiler and linker warnings are cleaned up. (#4256, #4346, #4369)
  • Windows local-build prerequisites are documented and fixed, and the RtMidi system dependency propagates correctly. (#4378, #4255)

Contributors

Big thanks to @rfoust (33 commits — the 3D FFT and waterfall pass, macOS fixes, automation gestures and MCP auth, NR2, and a long run of GUI polish), @jensenpat (15 commits — GPS dashboard, WDSP vendoring, WSPR beacon, TCI and controller work), @ten9876 (maintainer, 10 commits — Copy Assist and its audio-tap fix, observe-only bridge mode, CI and documentation), @nigelfenton (7 commits — demo mode, reconnect state, band-name aliases, waterfall split), @Ozy311 (6 commits — AetherClock engine and applet, Profile Manager Save, SWR guide memoization, Windows build prerequisites), @aethersdr-agent (the AetherClaude orchestrator, 6 commits — FFT trace colour, dock persistence, DAX nudge gating, amp-handle guard, spot feedback, redacted issue-report logs), @dawkagaming (3 commits — system-library CI, RtMidi, udev rules), @quelleck (2 commits — Slice Link, bridge tune slice id), @K5PTB (2 commits — Copy Assist language selector, toggle labels), @milenjb (2 commits — TCI broadcasts), @NF0T (1 commit — ACOM S-series amplifiers), @wa2n-code (1 commit — Kiwi diversity volume), @M7HNF-Ian (1 commit — SpotHub columns), and @skerker (1 commit — MIDI VFO self-heal). Dependabot contributed 4 dependency bumps.

73, Jeremy KK7GWY & Claude (AI dev partner)


Downloads

Linux AppImage (x86_64 / aarch64), macOS DMG (Apple Silicon + Intel, signed + notarized), Windows installer (setup.exe) + portable ZIP, and the Stream Deck plugin are attached below — built and signed by CI workflows on this tag.

Full diff: v26.7.4...v26.7.4.1 (this hotfix) · v26.7.3...v26.7.4.1 (since the last full release)

Verifying releases: see docs/VERIFYING-RELEASES.md. Signing key: docs/RELEASE-SIGNING-KEY.pub.asc.

AetherSDR v26.7.4 — Copy Assist, NR2 & Demo Mode

Choose a tag to compare

@ten9876 ten9876 released this 26 Jul 20:30
v26.7.4
9075955

94 commits across 14 contributors since v26.7.3. Full detail in CHANGELOG.md.

Headlines

Copy Assist — on-device speech-to-text, new in this release.

  • AetherSDR now transcribes received voice locally via whisper.cpp, docked under the waterfall with confidence colour-coding. CPU or GPU (Vulkan / Metal, auto-detected), download-on-demand models, and an optional remote OpenAI-compatible endpoint if you would rather run it elsewhere. Nothing leaves the machine unless you point it somewhere. (#4338)
  • Pick the transcription language rather than relying on auto-detection — a real difference on weak or accented signals. (#4399)
  • Copy Assist settings now live under a single configuration key, so they default, migrate, and save as one unit. (#4420)
  • The settings window honours frameless mode like the rest of the app. (#4417)

Copy Assist and NR2 now work properly together.

  • Copy Assist was fed from a visualization signal that drops any block arriving within 8 ms of the previous one — and it discards the whole block rather than merely skipping a repaint. With NR2 engaged, blocks arrive 5.33 ms apart, so roughly half the speech samples were being thrown away and the remainder spliced together with a discontinuity at every join. The resampler and voice-activity detector assume contiguous audio and had no way to see the gaps. Copy Assist now reads the unconditional presentation tap instead. No audio processing changed — the speaker path was never affected, which is exactly why this read as an NR2 speech-quality problem rather than a dropped-samples one. (#4486, #4488)
  • The same fix follows a single receiver: a station running a KiwiSDR alongside a Flex was previously feeding two receivers interleaved into one transcript.
  • NR2 itself gets better suppression quality and more reliable settings behaviour. (#4400)

Demo mode — run the full UI with no radio attached.

  • A synthetic backend generates its own receive audio and a matching panadapter, so you can explore AetherSDR, learn the interface, or develop against it with no hardware at all. Ten independently-enabled noise and signal channels make it a genuine test bench for the noise-reduction engines. It synthesizes receive audio only and cannot transmit. (#4473, #4490)

The 3D spectrum gets its largest polish pass yet.

  • Slice shadows are now surface-mapped onto the 3D FFT, with cached elevation shadows on slice flags. (#4439, #4442)
  • History is preserved across smooth-scroll boundaries, the rear edge stays stable when rows arrive late, and the floor resynchronizes after a bandwidth zoom. (#4432, #4476, #4477)
  • Waterfall and 3D motion are smoother for both Flex and KiwiSDR sources; the DC-edge comb, the wide right-edge artifact, and flat traces after a dBm scale change are all fixed. (#4425, #4413, #4371, #4279)
  • Panadapter Center Lock survives band changes, overlay wheel events stay contained, and the FFT trace line colour is now independent of the fill. (#4327, #4463, #4239)

Time, location, and station awareness.

  • AetherClock decodes NIST time signals and shows an alignment display, so you can see your clock's offset against the broadcast standard. (#4336, #4337)
  • A new GPS and station-location dashboard brings position and timing together in one place. (#4290)

Automation, TCI, and spotting.

  • The automation bridge gains an operator-controlled observe-only mode, phaseful pointer gestures, cross-platform subsystem memory telemetry, and a secured fresh-build MCP auth handoff. (#4188, #4355, #4293, #4356)
  • The bridge tune verb takes an optional slice id, so scripts can drive a non-active slice directly. (#4325)
  • TCI now broadcasts which slice has GUI focus, plus DSP, squelch, RIT/XIT and TX power on model change. (#4160, #4430)
  • Slice Link lets you right-click a panadapter to link two slices so tuning either retunes the other — across panadapters, including Kiwi-sourced slices. (#4326)
  • SpotHub gains a column-visibility menu and shrinkable width, and PSK Reporter gains a one-shot WSPR beacon transmitter. (#4157, #4435)

Operating polish and hardware support.

  • ACOM S-series amplifier support over serial / ser2net. (#4298)
  • Keyboard shortcuts can be exported and imported as backups, and an animated community credits experience joins the About dialog. (#4226, #4250)
  • Profile Manager Save now names its target and reports the result, deferred pan writes during profile loads are fixed, and container dock transitions persist immediately. (#4396, #4224, #4427)
  • TX power sliders stay stable during a drag, the status-bar TX timer is gated during tune carriers, and stale CW / RTTY panels after pan routing are fixed. (#4351, #4422, #4410)
  • macOS gets fixes for native Metal backing-store growth, waveform resize geometry, and clean failure without GUI services. (#4352, #4386, #4238)

Build and packaging.

  • CI now verifies that system libraries build, superseded workflow runs auto-cancel, and compiler and linker warnings are cleaned up. (#4256, #4346, #4369)
  • Windows local-build prerequisites are documented and fixed, and the RtMidi system dependency propagates correctly. (#4378, #4255)

Contributors

Big thanks to @rfoust (33 commits — the 3D FFT and waterfall pass, macOS fixes, automation gestures and MCP auth, NR2, and a long run of GUI polish), @jensenpat (15 commits — GPS dashboard, WDSP vendoring, WSPR beacon, TCI and controller work), @ten9876 (maintainer, 10 commits — Copy Assist and its audio-tap fix, observe-only bridge mode, CI and documentation), @nigelfenton (7 commits — demo mode, reconnect state, band-name aliases, waterfall split), @Ozy311 (6 commits — AetherClock engine and applet, Profile Manager Save, SWR guide memoization, Windows build prerequisites), @aethersdr-agent (the AetherClaude orchestrator, 6 commits — FFT trace colour, dock persistence, DAX nudge gating, amp-handle guard, spot feedback, redacted issue-report logs), @dawkagaming (3 commits — system-library CI, RtMidi, udev rules), @quelleck (2 commits — Slice Link, bridge tune slice id), @K5PTB (2 commits — Copy Assist language selector, toggle labels), @milenjb (2 commits — TCI broadcasts), @NF0T (1 commit — ACOM S-series amplifiers), @wa2n-code (1 commit — Kiwi diversity volume), @M7HNF-Ian (1 commit — SpotHub columns), and @skerker (1 commit — MIDI VFO self-heal). Dependabot contributed 4 dependency bumps.

73, Jeremy KK7GWY & Claude (AI dev partner)


Downloads

Linux AppImage (x86_64 / aarch64), macOS DMG (Apple Silicon + Intel, signed + notarized), Windows installer (setup.exe) + portable ZIP, and the Stream Deck plugin are attached below — built and signed by CI workflows on this tag.

Full diff: v26.7.3...v26.7.4

Verifying releases: see docs/VERIFYING-RELEASES.md. Signing key: docs/RELEASE-SIGNING-KEY.pub.asc.

whisper-gpu 1.9.1 (CI cache)

Pre-release

Choose a tag to compare

@ten9876 ten9876 released this 22 Jul 15:11
9f6535b

Prebuilt whisper.cpp + ggml-vulkan static libs for AetherSDR's Windows CI.

Not an app release — this is a CI-time cache. GitHub's stock
windows-latest runners (4 core / 16 GB) hit the 4-hour step timeout
when they try to compile whisper/ggml-vulkan from source. This asset
lets windows-installer.yml skip that build and consume the pinned libs.

Contents:

  • libs/ggml-base.lib, libs/ggml.lib, libs/ggml-cpu.lib,
    libs/ggml-vulkan.lib, libs/whisper.lib
  • NOTICE.txt — build provenance

Built with:

  • whisper.cpp v1.9.1 (commit 080bbbe8)
  • Vulkan SDK 1.4.350.0
  • MSVC 14.44 (VS 2022 17.14), Release / /MD / -std:c++20

Consumers must match the compiler / runtime / language standard listed
above. To bump any of them, cut a new asset rather than mixing configs.

sherpa-onnx runtime libraries

Pre-release

Choose a tag to compare

@github-actions github-actions released this 21 Jul 20:27
1accafe

Self-built sherpa-onnx C-API shared libraries (Apache-2.0, k2-fsa) for platforms k2-fsa doesn't prebuild (linux-aarch64), each bundling ONNX Runtime (MIT). Built by .github/workflows/build-sherpa-onnx-aarch64.yml. See THIRD_PARTY_LICENSES.

ASR models (Whisper ggml) — mirror

Pre-release

Choose a tag to compare

@ten9876 ten9876 released this 21 Jul 10:21
139acb2

Lightweight mirror of the default ggml Whisper model (ggml-base.bin) for Copy Assist (RFC #4333) — a fallback for when Hugging Face is unavailable. Byte-identical to ggerganov/whisper.cpp on Hugging Face, verified against the SHA-256 pinned in AsrModelCatalog. Other tiers (tiny/small/large-v3-turbo) are fetched from Hugging Face. MIT-licensed weights (OpenAI Whisper / ggml).

Also mirrored for the optional Copy Assist ONNX features (download-on-demand fallbacks, byte-identical to upstream, SHA-256 pinned in the app):

See THIRD_PARTY_LICENSES in the AetherSDR repository for full attribution.

AetherSDR v26.7.3 — Cross-Needle Meter & Operating Polish

Choose a tag to compare

@jensenpat jensenpat released this 19 Jul 01:57
v26.7.3
9634c35

25 commits across 7 contributors since v26.7.2. Full detail in CHANGELOG.md.

Headlines

New meter choices with more trustworthy readings.

  • A new cross-needle PWR / SWR applet brings the classic forward-power, reflected-power, and SWR view into AetherSDR. (#4246)
  • The analog S-meter now offers configurable face themes, while the SWR meter response and scale math are more accurate. (#4274)
  • The HLTH applet no longer raises false SWR warnings during normal transmit transitions. (#4268)

Radio-authoritative display and slice behavior.

  • Panadapters now honor the radio's live display state and place a firm bound on hidden-pan rendering work, preventing stale client state from fighting the radio. (#4261)
  • KiwiSDR band changes retain RX correctly and restore mute state on exit, D-STAR slice claims reconcile cleanly, and CWX availability follows the actual TX slice. (#4204, #4219, #4269)

A tighter operating workflow from the VFO to small screens.

  • The VFO DSP badge now shows when noise reduction is active, the SPLIT / SWAP badge follows the slice's current role, the RX applet's frequency font survives restart correctly, and Add Memory remains reachable in short drawers. (#4241, #4262, #4267, #4272)
  • Connect to a Radio keeps its local-radio list scrollable on compact displays, including 1024x600 Raspberry Pi panels with several discovered radios. (#4284)
  • Aetherial Audio regains reliable frameless edge resizing, and update-dialog title-bar spacing no longer clips message text. (#4266, #4245)

Better audio handoff diagnostics and agent automation.

  • Linux PC Audio capture no longer stalls after a TCI transmit handoff, and opt-in TX capture health summaries make future TCI handoff problems easier to diagnose. (#4251, #4233)
  • The automation status chip now uses the same canonical agent identity as the bridge, while MCP grab_widget can write directly to an optional output path. (#4283, #4270)

Packaging, build, and documentation maintenance.

  • macOS notarization now signs the bundled aether-dv-waveform helper and keeps AetherDV.cfg in Contents/Resources; the cached Intel Qt build cuts the from-source path from roughly 2.5 hours to about 20 minutes. (#4213, #4218, #4217)
  • The README and showcase image were refreshed, local DFNR setup now calls out the optional setup script prerequisite, and the release action dependency moved to 3.0.2. (#4244, #4282, #4285)

Contributors

Big thanks to @jensenpat (9 commits — panadapter state, audio / TCI, CWX, VFO and memory polish), @ten9876 (maintainer, 7 commits — macOS packaging, KiwiSDR band recall, documentation and build work), @rfoust (4 commits — cross-needle and analog meters, D-STAR reconciliation, automation identity), @nigelfenton (1 commit — compact-screen radio selection), @aethersdr-agent (the AetherClaude orchestrator, 1 commit — update-dialog layout), @Ozy311 (1 commit — SPLIT / SWAP badge state), and @skerker (1 commit — MCP screenshot output). Dependabot contributed 1 dependency bump.

73, Pat KI6BCJ & Codex (AI dev partner)


Downloads

Linux AppImage (x86_64 / aarch64), macOS DMG (Apple Silicon + Intel, signed + notarized), Windows installer (setup.exe) + portable ZIP, and the Stream Deck plugin are attached below — built and signed by CI workflows on this tag.

Full diff: v26.7.2...v26.7.3

Verifying releases: see docs/VERIFYING-RELEASES.md. Signing key: docs/RELEASE-SIGNING-KEY.pub.asc.