80 merged changes from 14 human contributors and two Dependabot updates within that total. SmartSDR 4.3 firmware support brings radio-owned Auto AGC-T, DSP parameter resets, per-band TUNE RCA suppression and PTT Mic Override, with firmware, hardware and entitlement checks on the controls that need them. The DeepCW AI CW decoder joins DeepFist and ggmorse for receive decoding, with models downloaded on first use. Auto squelch gains twelve corrections spanning CW/FT8 mode eligibility, independent slices, pan ownership and manual-threshold recovery. The voice keyer records locally, Elecraft KPA500, KAT500 and KXPA100 panels join the station controls, and more desktop controls move behind the typed backend seam.
SmartSDR 4.3 firmware support and FlexRadio fixes
- Radio-owned Auto AGC-T (#6508). The RX applet gains an A button and the slice Audio tab an Auto button. Supported, entitled firmware supplies the confirmed mode; older firmware, unavailable licences and other families keep manual behavior with a stated reason. Manual threshold edits follow the radio's subsequent Manual readback. Auto cancels host calibration and prevents recalled curves from overwriting radio control; reconnect does not replay a client mode. Live no-TX evidence in the PR used a FLEX-6700 on 4.3.16 with Auto AGC-T enabled.
- DSP parameter Reset (#6509). Choose a Parameters target in the slice DSP tab and explicitly press Reset to request firmware defaults on qualified 4.3.16+ firmware. All resets parameters while preserving enables; individual advanced targets require the appropriate entitlement and hardware. Nothing resets on selection, status, reconnect or initialization, and the client guesses no default values.
- NRL, NRS and ANFL amounts follow their actual radio status keys on connect, profile load and changes from another client (#6449). NRS exposes 0–50 on verified 4.3.16+ firmware and 0–100 on older/unknown firmware; a range change sends no corrective write (#6498).
- Review TUNE suppression after upgrading to SmartSDR 4.3 (#6524). Radio Setup → Transmit → TX Band Settings gains RCA off/TUNE, suppressing TX1/TX2/TX3 together per band. The radio owns RCA suppression on qualified 4.3 firmware whether checked or unchecked; old saved client RCA preferences are not migrated. An unchecked radio value provides no RCA suppression: review each band's setting. ACC remains a separate client preference; older/unknown firmware retains client RCA inhibition.
- Client-managed TUNE restores only the exact output disables the cycle owned, preserving outputs already disabled and explicit TX Band Settings edits (#6526). TGXL autotune carriers stay out of the operator TX timer; an unconfirmed tune may delay that timer by up to 1.5 seconds (#6459). A refusal during reconnect now says the radio must finish connecting (#6548).
- PTT Mic Override (#6445). Radio Setup → Transmit exposes the radio's reported setting. SmartSDR 4.3 hardware PTT otherwise uses the selected TX source, including DAX/PC audio; the override requests the last-used analog microphone under the documented Multi-Flex conditions. The setting itself never keys TX.
- Comma-separated interlock sources such as MIC,VOX reconcile hardware PTT without mistaking VOX alone for intent (#6493). TCI advertises TX permission independently of the selected TX flag, so another eligible, locally owned receiver can request promotion; receive-only, foreign and inhibited receivers remain refused (#6454).
- DAX IQ rates follow the exact Flex model. A limited radio temporarily uses 96 kHz for a saved 192 kHz preference without erasing it, and restores 192 kHz on a capable model; UI, profile recovery and TCI share the limits (#6492).
- SmartLink sends UDP registration throughout the WAN session: 50 ms startup retries, then five-second keepalives after qualified VITA reception (#6491). Outgoing Flex VITA UDP requests DSCP EF/46, with logged, nonfatal fallback if the OS denies it (#6462).
- A refused TCP connection retires Qt's retained native transport before retrying; an explicit source-bind failure can be retried without silently falling back to OS routing (#6484).
- Nickname clearing uses SmartSDR 4.3's clear command and follows sanitized radio identity (#6460); successful acknowledgements reconcile clears/renames even when firmware sends no nickname status echo (#6470).
- Restage firmware cached by older versions (#6479). MSI staging chooses the exact File/Media metadata member, preserving its firmware filename and build version. FLEX-6000 uses FLEX-6x00; FLEX-8000/Aurora uses FLEX-9600. Delete previously staged firmware and select the original installer again if it was staged by an older AetherSDR version; the previous size-based selection could assign the wrong family.
- The firmware status indicator compares the radio against FlexRadio's newest published release in its own major line, links out-of-date firmware to its notes, and leaves unknown/unreachable verdicts neutral. Check for Update lists published releases rather than one maximum (#6177). AetherGPS distinguishes 3D/2D/Time only/No fix from receiver and reference lock (#6505).
DeepCW AI CW decoder and neural CW reception
- DeepCW adds an AI CW receive decoder alongside DeepFist and ggmorse (#6300). On Apple Silicon macOS, Linux and Windows builds with ONNX Runtime, the CW panel offers all three. Models download from their upstream sources on first use, with pinned sizes, hashes and licence notices; they are not bundled. Only the selected RX decoder runs; ggmorse remains the default and the TX decoder. DeepCW commits text five seconds behind the live edge so displayed text does not change. Neural selection disables controls that require ggmorse's pitch; Intel macOS retains ggmorse alone.
Auto squelch across CW, FT8 and multiple receivers
- Twelve Auto SQL corrections keep each slice and pan independent (#6464). A CW receiver or an FT8 receiver in DIGU/DIGL could retain Auto or show SQL lines even while its controls were unavailable. Late SQL-On status could bring that presentation back. Controls, Auto admission and both overlays now share the backend's mode policy; entering an unavailable mode clears the threshold line and Auto floor immediately, without waiting for another FFT. Flex excludes DIGU/DIGL, RTTY, NT, CW aliases and DFM; RADE follows its DIGU/DIGL mode.
- Changing focus no longer changes a neighboring receiver's squelch (#6464). Auto intent and margin used to belong to the applet: selecting an Off voice slice could enable SQL without an Auto click, and selecting a CW/data neighbor could stop the previous voice slice's Auto. Each SliceModel now owns its intent and margin. Four slices on two pans can retain separate Auto settings, and an Off slice stays Off when selected.
- The noise floor comes from the receiver's own pan (#6464). Previously every pan's estimator could write to the active slice, and the active slice's SQL line could be painted on another pan, including an inactive CW, DIGU or SQL-Off pan. Estimates recheck the current slice-to-pan binding; each pan resolves its own display slice and only shows its selected slice's Auto floor.
- Manual thresholds survive Auto and mode changes (#6464). Starting Auto no longer briefly sends a 10 dB relative margin as the absolute radio level
10. Late Auto or fixed data-mode levels cannot overwrite the remembered manual choice. Returning from CW or DIGU to an eligible voice mode restores that slice's manual threshold once, after radio mode readback, independently of focus or widget attachment order. Reconnect, slice removal/reuse and pan migration retire stale context.
Local voice recordings and CW operation
- The voice keyer gains Local recordings (#6292). Twelve slots live in Documents/AetherSDR/VoiceKeyer, with PC-microphone recording, import/export, rename, preview and the existing F1–F12 controls. Local slots allow 30 seconds; Radio slots retain their radio-owned recordings and 10-second limit. Automatic chooses the available source. Playback retains its original session and transmit ownership; recording waits for its own confirmed VOX hold, and Stop cancels even a pending recording. HL2/Icom availability is Beta, without a claim of physical-radio validation. Repeat/CQ automation and external-control extensions remain follow-ups.
- The CW applet's Pitch slider sits below Speed, and Breakin, Iambic and Hold Delay have their own row with room for their labels. RX/TX antenna, filter-width and QSK controls align in one row (#6466).
- CWX sends and macros encode embedded quotation marks using FlexLib's stand-in byte and decode them on readback; the editor and local keyer keep literal quotes. Older-firmware quotation handling remains unverified (#6494).
- RADE V1 periodically normalizes its receive phase accumulators, preventing a long-running session from losing signal level while still reporting sync (#6399).
Controllers and USB devices
- One AetherSDR process owns a CTR2 USB HID path at a time; another is refused with the owner PID when available (#6530).
- Controllers can negotiate a CW-pitch-centered linear spectrum for zero-beating and a confidence-tagged RX CW text feed. Only devices offering each extension receive it; the text feed in this increment excludes DeepFist output (#6431). Validated
Aether…USB product strings let a compatible controller name itself without a new device-table entry (#6414). - Contour ShuttleXpress and ShuttlePro v2 report every button edge in a combined report (#5932). Their spring-loaded outer ring supports continuous variable-speed Tune Slice, RIT or XIT, with Slow/Normal/Fast choices; release or disconnect stops it and Tune Lock remains effective (#5933).
Elecraft and SPE station accessories
- KPA500 amplifier panel and Advanced maintenance (#5991). Local serial or raw TCP, Full/Mini views, confirmed power and Standby/Operate, band following, fault and meter history, and configuration/backup tools. RF ACTIVE follows fresh amplifier power rather than the radio's TX flag; the Full view's DRV row stays radio-sourced. Main VU/PWR can show eligible amplifier output while TX Controls continues to show exciter measurements. Bob Holzer / @WA8PAM supplied the original integration; @Ozy311 extended it with the panel, network transport, maintenance and hardware validation.
- KAT500 tuner panel (#6452). Full/Mini views, confirmed mode/antenna, Tune/Cancel, relay and C/L controls, memories, history and diagnostics over serial or raw TCP. Advanced stages configuration and verifies readback, with native backups, fault export and separately confirmed erase/reset. Firmware-dependent maintenance is qualified for 02.16. Opening Pre-tune bands sends no command; explicit start uses existing TUNE authorization and stops the owned carrier on cancellation or failure. Actual tuner communication and RF were not revalidated in the final landing pass.
- KXPA100 and optional KXAT100 panel (#6475). The KX100 applet supplies amplifier telemetry and manual tuner controls, Full/Mini views, history and Advanced maintenance over serial or raw TCP. Missing tuner controls stay dimmed with reasons. A durable association to the current radio selects eligible VU/PWR telemetry without sending device commands. Firmware-dependent maintenance is qualified for 01.39; no firmware updater or remote power command is added. Physical-device/RF operation was not revalidated in the landing pass.
- Original SPE Expert 1K-FA support (#6163). Select the legacy model in Peripherals for its 9600-baud protocol, streamed status and DTR power handling; this does not cover the later Taurus. Unavailable LCD and ATU-SWR functions state their reasons. Disconnect releases DTR; a brief OS-induced DTR assertion on serial open remains a bench question, and the transmit-time power-release guard remains follow-up work. A network bridge that ignores RFC 2217 now produces a visible power-control note for every SPE model.
Experimental Backends: Hermes-Lite 2, ANAN-G2 and RTL-SDR
- HL2 AM, DSB and simplex FM/NFM transmit through WDSP TXA (#5977). The default TXA build uses symmetric passbands, an explicit AM carrier and FM deviation, and disables default CTCSS. The legacy phasing build retains its receive-only restrictions; SAM, WFM and DRM remain receive-only. No repeater-offset/tone controls are added.
- HL2 hardware PTT is observed as transmit state and mutes RX, without making the host key or generate microphone samples from that observation; live dummy-load validation remains outstanding (#6446).
- Show TX in Waterfall becomes client-owned and persistent on HL2 only; its actual keyed rendering remains unverified (#6139). Graphic EQ bands and enables survive restart on host-modulating radios while Flex retains radio authority (#6444).
- HL2 discovery counts silence only when a probe actually left an interface (#6376). ALC Gain comments describe reduction only (#6348), and the ALC meter description identifies post-ALC audio before modulation, rather than the transmitted envelope (#6542).
- ANAN Front End moves to Radio Setup → Radio (#6146). Its seven settings remain next-connect choices and are available while disconnected. Discovery adds a directed broadcast for each distinct attached IPv4 subnet; same-subnet NICs still use the preferred route. The band-filter selector and speaker-amplifier mute remain follow-ups; no live multi-NIC proof is claimed.
- RTL-SDR SSB/CW and AM/SAM reception (#6432). USB, LSB, CW, CWR, AM and synchronous AM produce receiver audio through the shared capture/WDSP path, with accepted per-mode filters and receive DSP state. The selected receiver feeds CW decoding and Copy Assist before speaker gain/mute, and stale decoder audio is retired on retune/selection. Normal capacity stays one receiver; 2/4/8 remain explicit evaluations. RTL and ANAN remain experimental receive-only families.
Windows, display, audio and accessibility
- SpotHub, Radio Setup and AetherControl move to canon windows (#6401, #6413, #6429). Independent frameless workspaces retain saved positions, with canon colors and close controls. Radio Setup is 960 px wide and vertically resizable, aligns caption/value groups, and keeps long serial descriptions from stretching Peripherals; unavailable peripheral state uses orange. AetherControl releases knob capture on the first Escape and closes on the next.
- Connect to Radio's auto-fit reserves the horizontal scrollbar height when its body is too wide, avoiding an unnecessary vertical scrollbar on Windows/font-dependent layouts (#6540). A saved-left applet panel restores its B1 selector on macOS (#6453).
- The TX timer reserves its title-bar space to stop one-frame audio-control jumps (#6456). The entire Network status block exposes its live tooltip and opens diagnostics by double-click, Return/Enter or accessible Press (#6504).
- Waterfall time labels recover from a sustained bad initial cadence instead of remaining wrong for the whole session; recalibration ignores fallback/TX-paced rows (#6440). Working client-side waterfall gain/black controls no longer raise a false dropped-command notice; unsupported Icom cases retain their reason (#6255).
- Availability reasons no longer erase a control's own tooltip or accessible description (#6253). Radio Audio Outputs captions, values and Mute buttons visibly dim with their unavailable rows (#6388). Stale Channel Strip labels now name Aetherial Audio/AetherTX, preserving the VUDU button and saved layout identifiers (#6536).
- Waterfall-rate persistence is explicitly declared per backend, preserving existing ownership rather than inferring it from family (#6402). Audio-device presence tests distinguish all enumerated devices from Linux's filtered hot-plug arrival list, and the guide names the five filtered ID patterns (#6387, #6403).
Typed backend controls and automation
- Remaining slice/transmit model commands move to typed backend requests with session, owner, lifetime and intent fences; operation-fenced MOX/TUNE/ATU paths retain their admission (#6199).
- Radio Setup, TX Band, transverter and USB configuration move through the same seam, including calibration ordering, input validation and stale-editor refusal (#6426). Profile and memory operations follow, preserving recall order, bounded completions and local memory ownership (#6430). These are scoped M4 migrations, not completion of aetherd or a thin UI client.
- The bridge gains explicit nickname edit/commit actions for the opted-in field (#6470), and an observe-only interlock source probe on an isolated model that captures intents without touching the active session (#6493).
Project and packaging
- ADIF field lengths use overflow-safe bounds checks (#6400). Release tags are rendered as text in update prompts (#6407), and What's New opens only HTTP/HTTPS links (#6549).
- The guide is refreshed against shipped behavior in US spelling (#6396). Agent claims explicitly lock implementation/landing while reviews remain parallel and unclaimed (#6416).
- Tests: HL2 onset analysis bounds failed captures and retains injected unreachable, short and silent cases (#6377, #6404); ADC pairing age is pinned in its snapshot (#6441); model-control tests follow typed routing (#6421); headphone-gate pixel checks avoid antialiasing differences (#6424); KPA500 file dialogs use a temporary test profile (#6554).
- CI passes changed accessibility paths as separate arguments (#6439), rejects reintroduced Q_OS_MAC (#6383), and initializes the legacy squelch unit to avoid repeated warnings (#6357). Dependabot updates actions/download-artifact to 8.0.2 and actions/upload-artifact to 7.0.2 (#6342, #6343).
Contributors
Thanks to @on8st (21 commits — squelch/display ownership, HL2 transmit and metering, waterfall cadence, EQ persistence and regression coverage), @rfoust (21 commits — typed backend controls, SmartSDR compatibility, Auto AGC-T, DSP resets, firmware staging and TUNE ownership), @ten9876 (14 commits — maintainer; canon windows, controller improvements, PTT Mic Override, DSP readback and documentation), @Ozy311 (4 commits — RTL reception, KAT500/KXPA100 panels and KPA500 test isolation), @w5jwp (4 commits — TX timer stability/classification and build/CI cleanup), @NF0T (3 commits — ADIF bounds, RADE phase stability and connection-panel sizing), @jensenpat (2 commits — multi-slice Auto squelch and CW/RX applet layout), @K5PTB (2 commits — local voice keyer and firmware-update indicators), @sq9fk (2 commits — Contour button delivery and variable-speed shuttle tuning), @chibondking (1 commit — Aetherial Audio naming), @custosonlinux (1 commit — original SPE Expert 1K-FA protocol), @skerker (1 commit — neural CW decoder integration), @tropo1234 (1 commit — ANAN discovery and front-end setup), and @WA8PAM (1 commit — KPA500 foundation). Dependabot contributed two dependency updates. Counts cover primary commit authors; co-author credit remains in the commit history. The KPA500 work also includes @Ozy311's substantial continuation of @WA8PAM's original contribution.
Welcome to first-time contributors @custosonlinux!
Downloads
Tag-triggered CI publishes Linux AppImages (x86-64 and aarch64), macOS DMGs (Apple Silicon and Intel), and Windows installers and portable ZIPs as jobs finish. Assets may still be building when this release first appears. macOS signing and notarization, and release checksum and signature generation, run in their respective workflows.
Full diff: v26.10.2...v26.10.3. See verification instructions.
73, Pat KI6BCJ & Codex (AI dev partner)