From ce3f46bb5812fe8c496bb5e9802567d99940f22b Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:06:37 -0700 Subject: [PATCH 1/7] release: prep v26.10.3. Principle VIII. Lead with twelve multi-slice Auto SQL corrections, local voice recordings and neural CW reception. Map all 80 merged PRs, preserve contributor attribution, refresh README/ROADMAP and disclose cutoff CI failures. Co-Authored-By: Codex --- AGENTS.md | 2 +- CHANGELOG.md | 96 +++++++++++++++++++ CMakeLists.txt | 2 +- README.md | 33 ++++--- ROADMAP.md | 71 +++++++++++--- ...io.github.aethersdr.aethersdr.metainfo.xml | 1 + 6 files changed, 177 insertions(+), 28 deletions(-) diff --git a/AGENTS.md b/AGENTS.md index fb595d90bf..7dbd7dc02e 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -274,7 +274,7 @@ Full dependency list is in `README.md`. Adding a test: declare it in ### Version and release files -Current version: **26.10.2**. +Current version: **26.10.3**. Versioning scheme is **CalVer** (`YY.M.patch[.hotfix]`) starting from v26.5.1, the 1.0-equivalent. Hotfix sub-patches use a 4th component (e.g. 26.5.2.1). Earlier tags used semver through v0.9.8. diff --git a/CHANGELOG.md b/CHANGELOG.md index 0f1035c0c2..ce328dace1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,102 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +## [v26.10.3] — 2026-10-18 + +### Auto squelch that stays with its slice, local voice recordings and neural CW decoders · CTR2 firmware management and Elecraft station panels · SmartSDR 4.3 controls and more typed backend requests + +80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally without a SmartSDR+ licence, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. The full-suite and weekly sanitizer failures at the cutoff are recorded below; this release does not claim a clean sweep. + +### 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. +- The merged change includes 55 reconciliation cases, targeted guard-removal checks and a TX-disabled demo bridge round trip: Manual 54 → Auto 66 → CW or DIGU → USB returned to Manual 54. Earlier live observations in the PR are identified separately. **No FT8 decoder or external DAX validation is claimed by the final pass**, and the broader squelch policy work remains open. + +### Local voice recordings and neural CW reception + +- **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 and need no SmartSDR+ licence; Radio slots retain their radio-owned recordings and 10-second limit. Automatic chooses by radio capability/licence. 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. +- **DeepCW and DeepFist join ggmorse as standard receive decoder choices (#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. +- 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). + +### CTR2 and USB controllers + +- **Install and update AetherCTR2 from AetherSDR (#6487).** Settings → Controllers → CTR2… combines the relay and CTR2-Max firmware management. AetherCTR2 updates over its link; a stock unit installs through the ESP32-S3 bootloader. Signed manifests and image hashes are checked before writing, protected flash regions are retained, and installation requires a Lynovation-registered CTR2-Max. The relay can start automatically on radio connection when explicitly configured. +- **Lynovation firmware, per-unit backups and firmware switching (#6527).** Separate AetherCTR2 and Lynovation tabs offer the relevant versions and that unit's backups. Every install first saves the complete flash, keeping the latest three backups per unit. Lynovation images come from the operator's downloaded ZIP/bin; online catalog installation requires a trusted Lynovation key. Only the application partition is written, preserving registration, settings and AetherCTR2. Restart into AetherCTR2, Stock Firmware or Bootloader uses a supported command or explains BOOT+RESET and continues when download mode appears. +- One AetherSDR process owns a CTR2 USB HID path at a time; another is refused with the owner PID when available. AetherCTR2 before 0.9.2 receives manual BOOT/RESET guidance rather than an unsupported bootloader command (#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. + +### FlexRadio firmware, DSP and transmit + +- **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). + +### 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). + +### Known validation failures at the release cutoff + +Required CI passed on cutoff `9eace2448`, but [Full Suite](https://github.com/aethersdr/AetherSDR/actions/runs/39133724639) reported five failures out of 865: `control_receive_test`, `rtl_capture_worker_test`, `rtl_capture_worker_slow_device_test`, `radio_setup_operations_test` and `auto_agc_threshold_gui_test`. The [October 17 weekly sanitizer run](https://github.com/aethersdr/AetherSDR/actions/runs/39032860552) failed `ctr2_hid_thread_port_test` under TSan and `firmware_install_model_test` under ASan/UBSan. These failures are disclosed; the release-prep pass does not resolve or classify them as harmless. + +### 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, CTR2 firmware management, 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**! + +73, Pat KI6BCJ & Codex (AI dev partner) + ## [v26.10.2] — 2026-10-11 ### A unified title bar, a user guide at docs.aethersdr.com and remote operation over CGNAT · the canon windows, DVK import and FFT Smooth and De-comb · RTL-SDR multi-receiver delivery, and the Hermes-Lite 2 and ANAN-G2 remember where you left them · first green sanitizer runs and signed Windows builds diff --git a/CMakeLists.txt b/CMakeLists.txt index b3a739d51b..10acb59b2e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -7,7 +7,7 @@ if(POLICY CMP0156) cmake_policy(SET CMP0156 NEW) endif() -project(AetherSDR VERSION 26.10.2 LANGUAGES C CXX) +project(AetherSDR VERSION 26.10.3 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/README.md b/README.md index c8cc97366a..1a2f143b09 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ AetherSDR brings full FlexRadio operation to Linux, macOS, and Windows — each a native build, no Wine or virtual machines. A native aarch64 build also runs on Raspberry Pi and other embedded ARM devices. Built from the ground up with Qt6 and C++20, it speaks the SmartSDR protocol natively and aims to replicate the full SmartSDR experience. -**Current version: 26.10.2** — CalVer (`YY.M.patch[.hotfix]`). | [Download](https://github.com/aethersdr/AetherSDR/releases/latest) | [Discussions](https://github.com/aethersdr/AetherSDR/discussions) | [What's New](https://github.com/aethersdr/AetherSDR/releases) +**Current version: 26.10.3** — CalVer (`YY.M.patch[.hotfix]`). | [Download](https://github.com/aethersdr/AetherSDR/releases/latest) | [Discussions](https://github.com/aethersdr/AetherSDR/discussions) | [What's New](https://github.com/aethersdr/AetherSDR/releases) > **Native builds for Linux, macOS, and Windows** — Linux AppImage (x86-64 + aarch64), macOS DMG (Apple Silicon + Intel), Windows installer and portable ZIP. Every platform is built, tested in CI, and released together. @@ -31,12 +31,13 @@ AetherSDR brings full FlexRadio operation to Linux, macOS, and Windows — each - **AetherModem packet radio** — KISS-over-TCP TNC, connected-mode AX.25 BBS, a personal mailbox, a WIDE1-1 fill-in digipeater, and an **APRS client** (station table, GPS beacon, messaging) on a Direwolf-derived VHF demodulator - **AetherSweep** — in-panadapter SWR analyzer with log scale, threshold-band shading and interpolated bandwidth at SWR ≤ 1.5 / 2.0 - **SpotHub** — DX Cluster, RBN, WSJT-X, POTA, FreeDV Reporter, N1MM+/DXLog contest bandmap, the EiBi shortwave schedule and the KiwiSDR DX Community database, with auto-mode switch and per-feed colouring -- **CW operator suite** — real-time Morse decoder, MIDI/keyboard straight-key and iambic paddles with full QSK, optional Quindar tones +- **Local voice keyer** — twelve PC-microphone recordings up to 30 seconds each, with preview, import/export and F1–F12 playback; radio DVK remains available separately +- **CW operator suite** — ggmorse plus download-on-demand DeepCW and DeepFist receive decoders where ONNX Runtime is available (ggmorse only on Intel macOS), MIDI/keyboard straight-key and iambic paddles with full QSK, optional Quindar tones - **Copy Assist (speech-to-text)** — on-device transcription of received voice via whisper.cpp, docked under the waterfall with confidence colour-coding, optionally from the audio before noise reduction. CPU or GPU (Vulkan/Metal, auto-detected), download-on-demand models, optional remote OpenAI-compatible endpoint. Not in the Intel macOS build — see [`docs/asr-copy-assist.md`](docs/asr-copy-assist.md) - **FreeDV RADE** — AI digital-voice codec with a client-side neural encoder/decoder - **AetherMap (PSK Reporter) overlays** — optional global precipitation (LibreWXR, with NOAA, ECCC and EUMETNET OPERA regional radar backups and a per-provider legend), NOAA/NWS weather radar with observation playback ([`docs`](docs/psk-reporter-weather-radar.md)) and a NASA/GSFC VIIRS night-lights layer that fades through civil twilight ([`docs`](docs/psk-reporter-city-lights.md)), on both the 2D map and 3D globe - **SmartLink remote, remote over CGNAT, and a TCI v2.0 server** — Auth0/TLS WAN operation; an in-radio Tailscale node that carries AetherSDR to a FLEX-8000 or Aurora radio behind CGNAT; and CAT + audio + IQ + CW + spots + tune and receiver events over a single TCI WebSocket -- **Broad hardware control** — rigctld and virtual-serial CAT, MIDI mapping, the FlexControl knob, serial PTT/CW keying, Multi-Flex operation alongside SmartSDR/Maestro, and a relay that puts a CTR2-Max controller on the radio over Wi-Fi (USB pending CTR2 firmware) +- **Broad hardware control** — rigctld and virtual-serial CAT, MIDI mapping, the FlexControl knob, serial PTT/CW keying, Multi-Flex operation alongside SmartSDR/Maestro, and a CTR2-Max relay over Wi-Fi or compatible USB firmware, with signed AetherCTR2 installation, stock-firmware installation, per-unit backups and firmware switching - **Workspace canvas** — place pans and applets freely as resizable, layered items with edge and grid snapping, across several windows if you want them. Named workspaces recall which applets are open as well as where they sit, and bind to radio profiles. Off by default; the Classic shell is unchanged until you enable it - **A user guide at [docs.aethersdr.com](https://docs.aethersdr.com)** — Stable and Next versions, a printable PDF manual signed with each release, and a Log Analyzer that reads a log or support bundle in your browser without uploading it - **Built-in demo mode** — a synthetic backend generating its own RX audio and matching panadapter, with a fault-injection harness, so you can explore the full UI with no radio attached (it cannot transmit) @@ -77,10 +78,11 @@ Works with any FlexRadio transceiver, including: Supported external devices include the 4O3A/FlexRadio PGXL (Power Genius XL) power amplifier and TGXL (Tuner Genius XL) antenna tuner, and — outside the -radio seam entirely — ACOM S-series and SPE Expert (1.3K-FA / 1.5K-FA / 2K-FA) +radio seam entirely — ACOM S-series and SPE Expert (original 1K-FA / 1.3K-FA / 1.5K-FA / 2K-FA) amplifiers over serial or ser2net TCP, and VK3AMP (600 W / 1000 W / 2000 W) amplifiers over TCP control with UDP telemetry, and the Elecraft KPA1500 over -TCP (not yet validated on hardware). Direct TGXL, PGXL and Antenna Genius +TCP (not yet validated on hardware), plus KPA500, KAT500 and KXPA100/KXAT100 +over local serial or raw TCP, with Full/Mini applets and Advanced maintenance. Direct TGXL, PGXL and Antenna Genius connections authenticate with the device's access code. Active test target is FLEX-8600 firmware 4.2.18 (SmartSDR protocol v1.4.0.0); @@ -90,7 +92,7 @@ earlier 4.x firmware works; v3.x is unsupported. a supported family yet (one Icom model is supported on its own, below), and FlexRadio remains the supported target: -- **Hermes-Lite 2** — **experimental**. Four independent receivers, SSB voice +- **Hermes-Lite 2** — **experimental**. Four independent receivers, SSB, AM, DSB and simplex FM/NFM voice through WDSP's TXA modulator with a reduction-only ALC, CW/RTTY decoding, AX.25 packet, band switching with hardware filters, manual notch filters, a host-side impulse noise blanker, host frequency calibration, a derived dBm @@ -119,12 +121,15 @@ FlexRadio remains the supported target: balance apply, and receive audio also plays through the radio's own speaker. AGC-T spans −20 to 120 dB, NB2 interpolates over impulses, the status bar shows the supply voltage and link, and frequency, mode, step, output level - and dBm range are remembered per radio. Transmit is a future phase. + and dBm range are remembered per radio. Front-end settings are under Radio + Setup → Radio; discovery probes each distinct attached IPv4 subnet. Transmit + is a future phase. - **RTL-SDR** — **experimental, receive-only**, bundled in every official package. Discovers supported USB dongles through `librtlsdr` and provides one panadapter and, at a normal launch, one host-demodulated slice, publishing only the receive state the dongle confirmed, with capture browsing, a - 65,536-point zoom FFT, WFM stereo, live PPM adjustment, per-receiver squelch + 65,536-point zoom FFT, SSB/CW and AM/SAM reception, selected-receiver CW + decoding and Copy Assist, WFM stereo, live PPM adjustment, per-receiver squelch and relative meters, and receive DAX/TCI feeds. Two, four or eight receivers are an explicit evaluation, not yet a production claim. @@ -256,7 +261,8 @@ Currently in flight: vendor-neutral `IRadioBackend` seam that six backends already ride. Local receive control, bounded telemetry and credential-bound transmit grants with Flex PTT handoff have landed, and the desktop's slice receive controls travel - as typed backend requests; per-client propagation, transmit for the other + as typed backend requests. Radio Setup, TX Band, USB, profile and memory + controls now use that seam too; per-client propagation, transmit for the other families and a thin client to replace direct model access have not. - **Non-Flex backends** — Hermes-Lite 2 (experimental), networked Icom (early; the IC-7300MK2 over RS-BA1 is supported), and ANAN-G2 and RTL-SDR @@ -264,11 +270,12 @@ Currently in flight: remaining work for each is under [Supported Hardware](#supported-hardware). - **Workspace canvas** — an experimental alternative shell; remaining work is live cross-window drag and field time against the Classic shell. -- **CTR2 controller relay** — Wi-Fi mode works with today's CTR2 firmware; - USB mode's host side is complete, with per-device link extensions proven on - an AetherKnob, and the CTR2 itself waits on a USB firmware release. +- **CTR2 controller relay and firmware** — Wi-Fi and compatible USB firmware, + with negotiated spectrum/CW text, AetherCTR2 installation and updates, stock + firmware installation, per-unit backups and switching from the CTR2 window. - **The visual canon** — the AetherSDR style guide (RFC #6226) is applied one - surface at a time; ten have moved, and a single base-token flip comes last. + surface at a time; SpotHub, Radio Setup and AetherControl now join the earlier + windows, and a single base-token flip comes last. - **AppSettings nested-JSON refactor** — storage is on SQLite with per-radio versioned feature documents; the legacy flat keys still need migrating. - **Flathub submission** — the AppStream metainfo and manpage are in; the diff --git a/ROADMAP.md b/ROADMAP.md index d7b75b0d22..32aa2775d9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -7,7 +7,7 @@ as direction changes. For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). -## Current cycle: post-v26.10.2 +## Current cycle: post-v26.10.3 ### In flight @@ -44,7 +44,11 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). count above the seam fell from 413 to 369. v26.10.2 kept the new per-radio differences in declared capability records rather than family checks — a line-out control record, client-persisted FFT FPS and dBm range — and carried - WDSP's second noise blanker as a typed blanker kind on the receive route. Remaining: + WDSP's second noise blanker as a typed blanker kind on the receive route. + v26.10.3 moved the remaining slice/transmit model controls, Radio Setup, TX + Band, transverter and USB configuration, and profile/memory operations onto + typed requests, with original-session and owner fencing. These are scoped + M4 increments, not completion of the daemon or the thin UI. Remaining: per-client propagation, transmit for SmartLink and the other families, transmit audio transport, and a replacement thin UI client — UI code still consumes models directly, and that remains correct until that client exists. @@ -101,7 +105,10 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). the G2's own speaker and headphone jack. v26.10.2 restored frequency, mode, tuning step, output level and dBm range per radio, widened AGC-T to −20…120 dB with a working AGC-off gain, published link telemetry and the - supply voltage, and added WDSP's second noise blanker. The codec is + supply voltage, and added WDSP's second noise blanker. v26.10.3 moved the seven + front-end options to Radio Setup → Radio and added discovery per distinct + attached IPv4 subnet; band-filter and speaker-amplifier controls remain + follow-ups under RFC #6209. The codec is multi-DDC capable but `AnanBackend` still drives one; remaining is the `AnanRxDsp` fan-out, then transmit. - **RTL-SDR — experimental, receive-only** — `librtlsdr` discovery with one @@ -120,7 +127,9 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). FM/FM-N gain symmetric filters and squelch. v26.10.2 added WFM stereo, live PPM adjustment and multi-receiver delivery — per-receiver squelch, relative meters, APRS on the selected receiver and receive DAX/TCI feeds — and every - official package now bundles the backend. The normal launch still opens one + official package now bundles the backend. v26.10.3 adds SSB/CW and AM/SAM + reception with accepted filter/DSP state and selected-receiver CW/Copy Assist + audio. The normal launch still opens one receiver. Remaining: production multi-receiver capacity qualification and optional digital FM reception (RFC #6079). - **Workspace canvas — experimental** — [RFC #4887](https://github.com/aethersdr/AetherSDR/issues/4887) landed complete in v26.8.3, @@ -174,7 +183,10 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). receiver's setpoints, manual notches, FFT FPS and the dBm range survive a restart — brought receive audio out of WDSP at unity (12 dB quieter), sent CW at the TUNE carrier level, ramped the TX ALC gain inside each block and - discovered the radio on every local interface. + discovered the radio on every local interface. v26.10.3 enables AM, DSB and + simplex FM/NFM through TXA, retains graphic EQ across restarts, makes Show TX + in Waterfall client-owned on HL2, and observes hardware PTT without keying + the host. Keyed rendering and hardware-PTT validation remain outstanding. **The experimental → supported call itself is still open**; what remains before making it is the rest of panadapter/waterfall parity with the Flex path, arming automatic RF gain by default, and field time on the TXA chain @@ -192,15 +204,20 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). v26.10.2 added per-device link extensions ([RFC #6332](https://github.com/aethersdr/AetherSDR/issues/6332), approved): a device on the USB relay can negotiate an audio-spectrum feed and the relay's UDP port, verified end to end with an AetherKnob on a FLEX-8600, while a stock - CTR2 stays on plain link v0. The CTR2 itself still waits on a USB firmware - release. + CTR2 stays on plain link v0. The CTR2-Max can now install AetherCTR2 from the CTR2 window in v26.10.3, + with signed packages, stock-firmware installation, full-flash per-unit backups + and restart into either firmware. Compatible controllers can negotiate a + CW-pitch-centered linear spectrum and RX CW text. The relay and updater + share exclusive USB device ownership; stock USB relay compatibility still + depends on the controller firmware. - **AetherSDR style guide — the visual canon** ([RFC #6226](https://github.com/aethersdr/AetherSDR/issues/6226), approved; tracking [#6239](https://github.com/aethersdr/AetherSDR/issues/6239)) — the canon is written down in `docs/style/aethersdr-style-guide.md` with its own `color.canon.*` tokens, and v26.10.2 moved the first surfaces onto it: the About window, AetherRX, AetherTX, AetherModem, AetherMap, AetherGPS, Connect to Radio, AGC-T Calibration, the DVK panel and the panadapter header, through `CanonWindow` - and the new in-window `CanonSurface` classes. Remaining: the other surfaces, + and the new in-window `CanonSurface` classes. v26.10.3 adds SpotHub, Radio + Setup and AetherControl to the migrated workspaces. Remaining: the other surfaces, one PR at a time, then a single flip of the base tokens to canon values. - **AppSettings nested-JSON refactor** — ~460 flat call sites today; the new pattern is one nested-JSON value per feature (Principle V). @@ -216,7 +233,10 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). - **Unified client-side voice keyer** ([RFC #4214](https://github.com/aethersdr/AetherSDR/issues/4214), approved) — local per-client recordings, quick-access CQ/Call, external and controller control, - and radio/local routing. Approved, not yet started. + and radio/local routing. Phase 1 shipped in v26.10.3: twelve local slots, + recording, preview/import/export, F1–F12 playback and Local/Radio routing. + Repeat/CQ automation, permanent CQ/Call chrome and external-control + extensions remain; the umbrella is not declared complete. - **KiwiSDR follow-ups** — WebSDR / OpenWebRX support on top of the shipped public-receiver browser (per-receiver passwords, idle-release, and waterfall polish landed in v26.7.2; warm audio through TX and the @@ -294,6 +314,8 @@ implementation**. An approved RFC moves up into the cycle above. Full list: **Panadapter and display** +- [#6394](https://github.com/aethersdr/AetherSDR/issues/6394) — Raw-spectrum waterfall row ownership and interval integration + - [#5711](https://github.com/aethersdr/AetherSDR/issues/5711) — Per-panadapter spot marker visibility toggle - [#5586](https://github.com/aethersdr/AetherSDR/issues/5586) — WSJT-X Rx/Tx frequency overlay on the panadapter/waterfall - [#5350](https://github.com/aethersdr/AetherSDR/issues/5350) — Optional mini-waterfall for Mini-Pan @@ -303,8 +325,8 @@ implementation**. An approved RFC moves up into the cycle above. Full list: **Audio, DSP and transmit** +- [#6417](https://github.com/aethersdr/AetherSDR/issues/6417) — Client-side instant replay audio and waterfall scrubbing - [#5704](https://github.com/aethersdr/AetherSDR/issues/5704) — Operator control of AGC position relative to noise reduction -- [#5682](https://github.com/aethersdr/AetherSDR/issues/5682) — Isolate TCI RX/TX audio from UI scheduling across Flex, HL2 and Icom - [#5448](https://github.com/aethersdr/AetherSDR/issues/5448) — Audio preset workflow: quick selection, profile associations, and starting presets - [#4836](https://github.com/aethersdr/AetherSDR/issues/4836) — TX dynamics: CFC and leveler, with multiband limiter follow-ups - [#4769](https://github.com/aethersdr/AetherSDR/issues/4769) — TX Linearity Analyzer — numeric IMD/shoulder/ACPR measurement from the radio's own transmission @@ -314,6 +336,7 @@ implementation**. An approved RFC moves up into the cycle above. Full list: **Radios, protocol and devices** +- [#6472](https://github.com/aethersdr/AetherSDR/issues/6472) — Client-side transverters for non-Flex radios with separate RX/TX LOs - [#5688](https://github.com/aethersdr/AetherSDR/issues/5688) — SIP session border controller — phone patch and two-ended SIP/RTP relay over RF - [#5468](https://github.com/aethersdr/AetherSDR/issues/5468) — Complete RTL-SDR receive DSP with multiple slices, independent zoom and stereo WFM - [#4840](https://github.com/aethersdr/AetherSDR/issues/4840) — IC-9700 support for dual VFOs / slices for satellite use @@ -325,10 +348,10 @@ implementation**. An approved RFC moves up into the cycle above. Full list: - [#5972](https://github.com/aethersdr/AetherSDR/issues/5972) — Native Xiegu G90 backend — CI-V control and external stereo raw-IQ input - [#6106](https://github.com/aethersdr/AetherSDR/issues/6106) — Backend-owned hardware profiles for openHPSDR Protocol 2 radios - [#6079](https://github.com/aethersdr/AetherSDR/issues/6079) — Optional Digital FM reception and program metadata -- [#6209](https://github.com/aethersdr/AetherSDR/issues/6209) — ANAN-G2 front-end options: a Radio Setup page and the anan/frontend.set extension verb **Interface and workflow** +- [#6515](https://github.com/aethersdr/AetherSDR/issues/6515) — A View → Meter Type submenu for S-Meter and SmartMTR - [#5616](https://github.com/aethersdr/AetherSDR/issues/5616) — Use Case Profile/Settings Manager — combine radio profiles and client presets under one switchable label - [#5304](https://github.com/aethersdr/AetherSDR/issues/5304) — AetherSDR In-App Update Design - [#5270](https://github.com/aethersdr/AetherSDR/issues/5270) — Pluggable applets and the Applet Exchange (ApX) @@ -336,14 +359,13 @@ implementation**. An approved RFC moves up into the cycle above. Full list: - [#5010](https://github.com/aethersdr/AetherSDR/issues/5010) — Status-bar clock display options - [#4287](https://github.com/aethersdr/AetherSDR/issues/4287) — Dock AetherDSP Settings inline in the slice panel, with applet-style header and popout - [#3689](https://github.com/aethersdr/AetherSDR/issues/3689) — Net Reminder Scheduler — post-merge follow-ups (#3684) -- [#3184](https://github.com/aethersdr/AetherSDR/issues/3184) — meta(theme): theming system status + polish roadmap — where to help land this - [#1494](https://github.com/aethersdr/AetherSDR/issues/1494) — CW and RTTY tuning indicators: pitch centering and tone alignment - [#6212](https://github.com/aethersdr/AetherSDR/issues/6212) — Status bar: caption the supply voltage when it is the only PA reading **Project infrastructure** +- [#6435](https://github.com/aethersdr/AetherSDR/issues/6435) — Review routing, TX-path acknowledgement and red-main attribution - [#4496](https://github.com/aethersdr/AetherSDR/issues/4496) — In-repo multilingual user documentation generator — bridge-driven, 5 languages -- [#4031](https://github.com/aethersdr/AetherSDR/issues/4031) — chore(warnings): eliminate all compiler warnings — GCC -Wall/-Wextra/-Wpedantic + MSVC /W3, 4 phases - [#2884](https://github.com/aethersdr/AetherSDR/issues/2884) — feat(smartlink): migrate Auth0 from ROPG to Authorization Code + PKCE on dedicated client - [#6232](https://github.com/aethersdr/AetherSDR/issues/6232) — Official Windows ARM64 build and release support @@ -352,6 +374,29 @@ implementation**. An approved RFC moves up into the cycle above. Full list: Highlights from the current cycle (v26.10.x). Earlier releases and the complete list are in [`CHANGELOG.md`](CHANGELOG.md): +- **Auto squelch stays with its slice and pan** — twelve corrections for CW, + FT8/digital and multi-receiver setups: mode gates and overlays, independent + Auto intent/margins, own-pan noise floors and preserved manual thresholds. + PR #6464 (v26.10.3). +- **Local voice recordings** — twelve 30-second slots, PC-microphone recording, + preview/import/export and F1–F12 playback without a SmartSDR+ licence; the + radio keyer remains selectable (v26.10.3). +- **DeepCW and DeepFist** — standard RX choices beside ggmorse where ONNX + Runtime is available, with pinned upstream model downloads on first use + (v26.10.3). +- **CTR2 firmware management** — install/update AetherCTR2, install stock + Lynovation images, keep per-unit backups and switch firmware from the CTR2 + window, with exclusive USB ownership (v26.10.3). +- **Elecraft station panels** — KPA500, KAT500 and KXPA100/KXAT100 over serial + or raw TCP, with Full/Mini views and Advanced maintenance (v26.10.3). +- **SmartSDR 4.3 controls** — radio-owned Auto AGC-T, DSP parameter reset, + PTT Mic Override and per-band RCA off/TUNE, gated by firmware, hardware and + licence as applicable (v26.10.3). +- **HL2 AM/DSB/FM and RTL SSB/CW/AM/SAM** — TXA adds the HL2 transmit modes; + RTL adds receive DSP and selected-decoder audio, retaining its normal + one-receiver limit (v26.10.3). +- **More canon workspaces** — SpotHub, Radio Setup and AetherControl, plus a + CW Pitch slider and keyer buttons that fit (v26.10.3). - **One 52 px title bar with radio tabs** — the menu, brand, a tab per radio with its link state, the audio cluster and the window controls in one bar on every platform. RFC #4764 (v26.10.2). diff --git a/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml b/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml index 47036d5c3f..331913734f 100644 --- a/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml +++ b/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml @@ -68,6 +68,7 @@ + From d9307f4246aae6c1f9511b9eae7964944c98e7c8 Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:06:37 -0700 Subject: [PATCH 2/7] docs(user): snapshot Stable for v26.10.3. Principle VIII. --- docs/user/stable-version.json | 2 +- .../version-stable/accessibility.md | 1 + .../version-stable/aetherclock-and-gps.md | 6 + .../version-stable/aetherial-audio.md | 2 +- .../version-stable/amplifiers.md | 267 ++++++++++++++- .../versioned_docs/version-stable/anan-g2.md | 24 +- .../version-stable/audio-settings.md | 4 +- .../automation-bridge-and-mcp.md | 14 + .../version-stable/before-you-transmit.md | 3 +- .../version-stable/copy-assist.md | 9 +- .../version-stable/ctr2-proxy.md | 305 ++++++++++++++++-- .../version-stable/cw-decoder.md | 44 ++- .../version-stable/cwx-panel.md | 2 + .../version-stable/dax-iq-streaming.md | 11 +- .../version-stable/dsp-noise-mitigation.md | 26 ++ .../version-stable/dvk-panel.md | 119 +++++-- .../version-stable/firmware-update.md | 43 ++- .../version-stable/first-connection.md | 2 + .../version-stable/flexcontrol-tuning-knob.md | 8 +- .../generated/flexcontrol-actions.md | 2 +- .../generated/log-categories.md | 1 + .../version-stable/generated/midi-actions.md | 2 +- .../generated/ulanzi-dial-actions.md | 2 +- .../version-stable/hermes-lite-2.md | 15 +- .../versioned_docs/version-stable/index.md | 2 +- .../version-stable/kat500-tuner-control.md | 143 ++++++++ .../version-stable/kiwisdr-and-web-888.md | 8 +- .../kxpa100-amplifier-control.md | 122 +++++++ .../low-bandwidth-connections.md | 8 + .../version-stable/manual-connection.md | 4 +- .../version-stable/memory-channels.md | 20 +- .../version-stable/menu-reference.md | 14 +- .../version-stable/midi-controller-mapping.md | 2 +- .../version-stable/networked-icom.md | 3 +- .../version-stable/panadapter-controls.md | 4 +- .../version-stable/peripherals.md | 15 +- .../version-stable/profile-management.md | 2 + .../version-stable/rade-digital-voice.md | 2 +- .../version-stable/radio-setup.md | 79 ++++- .../versioned_docs/version-stable/rtl-sdr.md | 34 +- .../version-stable/runtime-monitor.md | 2 + .../version-stable/rx-controls.md | 63 +++- .../version-stable/slice-colors.md | 2 +- .../version-stable/smartlink-setup.md | 10 +- .../versioned_docs/version-stable/spothub.md | 2 + .../version-stable/tci-server.md | 10 +- .../version-stable/tgxl-tuner-control.md | 6 +- .../tnf-tracking-notch-filters.md | 18 +- .../version-stable/tx-controls.md | 109 ++++++- .../version-stable/ulanzi-dial.md | 4 +- .../version-stable/usb-control-surfaces.md | 23 +- .../version-stable/vfo-widget.md | 9 +- .../version-stable/wsjt-x-integration.md | 1 + .../version-stable/xvtr-transverters.md | 2 +- .../version-stable-sidebars.json | 2 + 55 files changed, 1458 insertions(+), 181 deletions(-) create mode 100644 docs/user/versioned_docs/version-stable/kat500-tuner-control.md create mode 100644 docs/user/versioned_docs/version-stable/kxpa100-amplifier-control.md diff --git a/docs/user/stable-version.json b/docs/user/stable-version.json index 7849fc8bec..d63ddf4f85 100644 --- a/docs/user/stable-version.json +++ b/docs/user/stable-version.json @@ -1,3 +1,3 @@ { - "label": "26.10.2" + "label": "26.10.3" } diff --git a/docs/user/versioned_docs/version-stable/accessibility.md b/docs/user/versioned_docs/version-stable/accessibility.md index 3b85c43549..bd54432a90 100644 --- a/docs/user/versioned_docs/version-stable/accessibility.md +++ b/docs/user/versioned_docs/version-stable/accessibility.md @@ -25,6 +25,7 @@ What you can expect: - **Custom-drawn meters report their values.** Meters and indicators that AetherSDR paints itself expose their current reading to the screen reader. - **Status is given in words, not color alone.** For example, each radio tab in the title bar states its connection state ("Link lost" and so on) as text as well as with the colored dot. - **Unavailable controls say why.** A control your radio or build can't use is dimmed rather than hidden, and the reason is announced along with it (for example, a headphone control on a radio with no headphone output). +- **Available controls keep their descriptions.** When an unavailable control becomes available, its own tooltip and description return. An inactive control may also announce "Available, not currently active". - **Notices are announced.** For example, pressing a shortcut key while keyboard shortcuts are off gives a "Keyboard shortcuts are off" notice that is announced as well as shown. ## Using the keyboard diff --git a/docs/user/versioned_docs/version-stable/aetherclock-and-gps.md b/docs/user/versioned_docs/version-stable/aetherclock-and-gps.md index 2f393be0b2..7ec74f858f 100644 --- a/docs/user/versioned_docs/version-stable/aetherclock-and-gps.md +++ b/docs/user/versioned_docs/version-stable/aetherclock-and-gps.md @@ -54,10 +54,16 @@ The window has no title bar. Drag any empty part of it to move it, and drag an e **GPS FIX**, **SATELLITES**, **10 MHz REFERENCE** and **TELEMETRY** (the age of the latest GPS report). +On FlexRadio firmware that reports fix state, **GPS FIX** shows **3D**, **2D**, **Time only** or **No fix**. **Unknown** means the radio has not reported a recognized fix state, including older firmware and other radio feeds that do not supply it. It does not mean **No fix**. A partial GPS report keeps the last reported fix state; a new connection starts at **Unknown**. + +**Time only** means the receiver reports timing mode without a position fix. Time validity, receiver status (available in the **GPS FIX** tooltip) and **10 MHz REFERENCE** lock are separate readings. A fix label alone does not establish usable time, position or frequency-reference lock. **Time only** and **No fix** prevent use of the reported coordinates as a current position; older feeds continue to use their existing position-validity report. With **No fix**, the status-bar UTC clock uses the computer clock even if the frequency reference remains locked. Hover over **GPS FIX** for the receiver status and an explanation of the fix state. + ### Current Location Position source, **Grid square**, **Latitude**, **Longitude**, the coordinates in the radio's own format, **Altitude**, **Speed** and **Course**, plus the nearest mapped address (an online OpenStreetMap lookup). Buttons: **Copy gridsquare**, **Copy address** and **Refresh address**. +When a valid position returns after **Time only** or **No fix**, the address lookup resumes even if the coordinates have not changed. + ### Station Map A map of the radio's position. Use the arrow keys to pan, plus and minus to zoom, and Home to re-center. diff --git a/docs/user/versioned_docs/version-stable/aetherial-audio.md b/docs/user/versioned_docs/version-stable/aetherial-audio.md index 58a60c925a..3df2a485fc 100644 --- a/docs/user/versioned_docs/version-stable/aetherial-audio.md +++ b/docs/user/versioned_docs/version-stable/aetherial-audio.md @@ -233,7 +233,7 @@ compact companion to the two windows: - The chain strip shows each stage as a box. Single-click a box to switch the stage on or off, double-click it to open that stage's editor, and drag it to reorder. The delay used to tell a single click from a double click is - **Settings → Radio Setup... → Appearance & Behavior → Single-click delay**. + **Settings → Radio Setup... → Appearance & Behavior → Single-Click Delay**. - On the TX side, ⏺ / ▶ drive the same transmit monitor as AetherTX's REC / PLAY. - Compact tiles for individual stages sit below the strip. diff --git a/docs/user/versioned_docs/version-stable/amplifiers.md b/docs/user/versioned_docs/version-stable/amplifiers.md index 9df3bc5769..0ea6ff7e15 100644 --- a/docs/user/versioned_docs/version-stable/amplifiers.md +++ b/docs/user/versioned_docs/version-stable/amplifiers.md @@ -1,12 +1,12 @@ --- title: "Amplifiers" slug: "/amplifiers" -description: "AetherSDR controls several linear amplifiers directly, independent of the radio: the ACOM S-series, the SPE Expert 1.3K-FA / 1.5K-FA / 2K-FA, the VK3AMP 600 / 1000 / 2000 W, and the Elecraft KPA1500." +description: "AetherSDR controls several linear amplifiers directly, independent of the radio: the ACOM S-series, the SPE Expert 1.3K-FA / 1.5K-FA / 2K-FA and the original 1K-FA, the VK3AMP 600 / 1000 / 2000 W, and the Elecraft KPA500 / KPA1500." --- AetherSDR controls several linear amplifiers directly, independent of the -radio: the ACOM S-series, the SPE Expert 1.3K-FA / 1.5K-FA / 2K-FA, the VK3AMP -600 / 1000 / 2000 W, and the Elecraft KPA1500. Each is configured in +radio: the ACOM S-series, the SPE Expert 1.3K-FA / 1.5K-FA / 2K-FA and the +original 1K-FA, the VK3AMP 600 / 1000 / 2000 W, and the Elecraft KPA500 / KPA1500. Each is configured in [Peripherals](./peripherals.md) and gets its own applet in the **Amplifiers** category. Any combination can be connected at once, alongside a PGXL. @@ -51,9 +51,13 @@ The **ACOM Amplifier** applet shows: ## Using the SPE Expert 1.3K-FA / 1.5K-FA / 2K-FA +In Peripherals, leave the **Amplifier Model** on **1.3K / 1.5K / 2K-FA** (the +default). For the original 1K-FA, see +[Using the original SPE Expert 1K-FA](#using-the-original-spe-expert-1k-fa). + The amplifier only answers when polled, so AetherSDR polls it every 100 ms. -The model is identified from its status. If the amplifier goes silent behind a -live ser2net link, the applet reports it as off. +The exact model is identified from its status. If the amplifier goes silent +behind a live ser2net link, the applet reports it as off. **ser2net:** monitoring and control work with the proxy port in raw or telnet mode. Powering the amplifier **on** over the network drives the proxy's @@ -66,7 +70,8 @@ The **SPE Expert Amplifier** applet (button **SPE**): - Gauges for output power (rescaled with the LOW / MID / HIGH level), antenna SWR, and the SWR seen before the ATU. - Temperature, voltage and current readouts, and a warning / alarm banner. -- **ON** (a DTR/RTS power pulse; works over the network with RFC 2217), +- **ON** (a DTR/RTS power pulse; works over the network with RFC 2217; if the + network bridge cannot switch the lines, a note under the buttons says so), **OFF**, **OPER / STBY**, the power level (click to cycle LOW / MID / HIGH), **TUNE** (the ATU), **INPUT** 1/2, **ANT** (cycles the antenna for the current band), and drive up / down. @@ -77,6 +82,56 @@ amplifier's LCD and a **FRONT PANEL** key group: **BAND −** / **BAND +**, keys work only while the LCD mirror is current; if its data goes stale they are dimmed, and the display stays visible. +## Using the original SPE Expert 1K-FA + +The original 1K-FA (the model with only an RS-232 port, not the newer 1K-FA +"Taurus") speaks an older protocol at **9600 8N1** and cannot be detected, so +you choose it: in Peripherals, set **Amplifier Model** to **1K-FA (original, +RS-232)**. The fixed serial settings shown next to it change to 9600 8N1. For +a ser2net proxy, set the proxy's serial side to 9600 baud; raw mode is +preferred, because the 1K-FA's binary status loses an occasional frame in +telnet mode. + +The **SPE Expert Amplifier** applet works as for the newer models, with these +differences: + +- The amplifier streams its status on its own, 5–8 times a second, once + AetherSDR connects. +- The power level reads **HALF** / **FULL**; clicking it toggles between them. +- The antenna SWR is estimated from forward and reflected power while the + amplifier is in OPERATE, and is shown as **SWR ≈**. In STANDBY it is the + value the amplifier reports. +- There is no SWR before the ATU and no LCD mirror, so that gauge row is + dimmed, the popped-out display says so, and the **FRONT PANEL** keys stay + dimmed. Hover over a dimmed control for the reason. + +### Power on and off + +The 1K-FA stays powered while the serial port's DTR line is held high, and +AetherSDR holds it only while it is connected: + +- **ON** raises DTR. The amplifier boots in a few seconds. +- **OFF** sends the amplifier's OFF key and then releases DTR. +- **Disconnect**, quitting AetherSDR, or losing the serial link releases DTR, + and an amplifier that **ON** switched on powers off. Reconnecting, by hand + or with **Reconnect automatically**, does not switch it back on; press + **ON** again. +- In the Windows bench, an amplifier switched on at its own front panel + stayed on when connecting. The final line policy still needs bench + verification, including the brief DTR pulse during serial open on macOS + and Linux. +- While AetherSDR holds DTR, the amplifier refuses its own front-panel power + switch. Use **OFF** in the applet. + +Avoid disconnecting or quitting while transmitting: the amplifier then powers +off mid-transmission. + +Over the network, **ON** and **OFF** need ser2net with RFC 2217 +(`accepter: telnet(rfc2217=true),`) and a serial adapter that has a DTR +line. A plain serial-to-Ethernet converter only passes data: monitoring and +the keys work, but **ON** cannot, so switch the amplifier on at its front +panel. + ## Using the VK3AMP 600 / 1000 / 2000 W A network amplifier controlled over TCP, with live telemetry on UDP. There is @@ -102,6 +157,179 @@ The **VK3AMP Amplifier** applet: The VK3AMP reads **Reconnect automatically** only at startup. +## Using the Elecraft KPA500 + +Choose **Add → Elecraft KPA500** in **Peripherals**, then choose **Connection Type**: + +- **Serial:** choose the local port and speed in **TCP Port/Speed**. Supported + rates are 4800, 9600, 19200 and 38400 baud, using 8N1 with no handshake. + Close any other program using that port first. +- **Network:** enter a ser2net host and raw TCP port (initial value 2000). + Configure 8N1, no flow control, and the amplifier's baud rate on the server. + The local serial speed does not configure the remote port. Use a trusted LAN + or VPN; this raw connection has no authentication or encryption. + +Click **Connect**. The device list shows **DIRECT** for a connected serial port, +**NETWORK** for a connected TCP bridge, and **OFFLINE** when disconnected. +**Cancel** stops a pending network connection. Disconnect +before editing the endpoint. **Connect automatically** controls startup +connection; **Reconnect automatically** also needs to be enabled to retry a +failed or dropped link. Serial and network targets are saved separately. +**Device Information** shows the connected endpoint, amplifier firmware and +serial number from readback; unreported values remain unknown. The same +information appears in the applet's **Settings**. + +KPA500 Full view with output power, SWR and the radio-sourced DRV meter; illustrative replay values. + +*Full view with replayed telemetry illustrating the DRV meter.* + +*The KPA500 applet shows amplifier readback. This capture was taken without RF.* + +The **KP500** applet-bar button opens **Elecraft KPA500 Amplifier**. Its shorter +label fits the standard button width and preserves the full name in the applet title. +The button appears after a valid amplifier reply, not just an open connection. +Once detected, it stays available while that connection remains open, including during +power-off or lost replies, so you can wake the amp or inspect **Debug**. Closing +the connection hides the button; reconnecting requires a fresh reply. +The applet shows power with a peak marker, SWR, temperature, +voltage, current, confirmed band and amplifier state. **Standby**, **Operate**, +**Fan min**, **Speaker alarm**, **Clear fault**, and the **ON**/**OFF** button +send requests; amplifier replies confirm their displayed state. The power button +shows **ON** when the amp is on and **OFF** when it is off; **—** means its +power state is unknown. Click it to request the opposite state. Its tooltip +explains the action, and the label changes only after amplifier readback. +Waking the amp requires its rear power switch to be on. After a power-off request, a confirmed off reply, +or loss of replies, normal telemetry polling stops. A power-status query every +five seconds detects front-panel power-on; a confirmed on reply resumes normal +polling. The check never wakes the amp. Silence does not prove it is off. +**RF ACTIVE** and the red status banner mean the amplifier reports forward +power above zero. Radio TX alone does not indicate amplifier activity. The +published serial protocol does not report the RCA **KEY IN** / PTT input state, +so the applet cannot confirm that the radio has keyed the amplifier. Radio TX +still holds power, mode and band changes until RX. + +Active features use the same green, Standby amber, and unavailable-control +dimming as the PGXL applet. +**Auto** fan minimum permits the fan to stop; the amplifier still manages +cooling automatically. + +**Settings → Follow TX flag** is enabled by default. The amplifier follows +the TX-assigned slice, including split selection, XIT and FM transmit offset, +within the active band plan. Receive-only and Demo radios supply no TX band. +The top band pill shows the confirmed amplifier band and **Follow TX**. +Hover over it, or open **Settings**, for the source frequency, target band and +pending state. Disable the setting to park the amp with the band dropdown +that replaces the pill; it also shows confirmed amplifier readback. Band changes wait while the radio reports TX or the amplifier reports +RF, then send only the latest requested band. Missing readback stops automatic +retries; select again or toggle **Follow TX flag** to retry. Following never +powers the amp on, selects Operate, or keys the radio. + +The meter readouts use compact pills beside scales with major and minor ticks. +In **Full**, **DRV** shows the connected radio's measured forward watts before +cable losses. It is not a measurement at the KPA500 input, an RF-power slider +setting, or amplifier output. The scale is **0–100 W**; the pill retains readings +above the scale. **DRV —** means the radio is disconnected or its forward-power +measurement is missing or more than two seconds old. Other fresh meters cannot +keep an old drive reading alive. The source stays radio forward power when the +shared **VU** and **PWR** meters switch to **AMP**. **TX Controls** continues +to show the radio’s forward power and SWR on the radio scale, so drive remains +visible. Its **RF Power** and **Tune Pwr** sliders show percentages. +**Mini** has no DRV row. + +The shared **VU** and **PWR** meters use KPA500 output only while its power-on, +Operate and forward-power readbacks are current. If amplifier power telemetry +expires while other replies continue, the shared meters and scale return to +the radio until a fresh amplifier measurement arrives. + +The KPA500 SWR scale runs from **1 to 5**, matching the amplifier faceplate; +its display turns amber at 2 and red at 2.5. No RF means SWR is unmeasured. + +**Mini** shows the power control, band header, amplifier mode and faults, with +power and SWR meters at the bottom. It hides mode controls and the bottom +**History** and **Settings** buttons. **Full** restores those controls, the other +meters, and any previously expanded drawers; use it to change Standby/Operate +or clear a fault. **History** adds graphs for power, SWR, temperature, +voltage and current over 1, 5 or 10 minutes. Collection continues with the +history collapsed or in Mini mode. Gaps represent unavailable measurements. +The graphs use fixed scales and display measured peaks; values beyond a +scale are clipped. Floating or placing the applet on the canvas opens the +full view with History. Meters and graphs follow the window width, and History +uses extra height for taller graphs. Controls stay grouped at the top. A vertical +scrollbar keeps expanded History and Debug accessible in a smaller window. + +KPA500 Mini mode with power, SWR, band and amplifier status. + +*Mini mode keeps the essential controls and readings visible.* + +KPA500 expanded history graphs for power, SWR, temperature, voltage and current. + +*History uses amplifier measurements; SWR remains unmeasured without RF.* + +**Settings** includes **Temperature in °F**, connection endpoint (and local serial speed), last valid +reply age, firmware and serial number, plus an explanation of history gaps and +scales. **Debug** normally shows connection and +power transitions, control requests, errors and pending band changes. Enable +**Verbose** to include routine queries, raw amplifier replies and decoded telemetry. +Non-printable replies are discarded before they reach device status or diagnostics. +Raw received bytes are escaped in Verbose so they cannot insert log lines or control sequences. +**TX** in this log means protocol writes, not RF transmission. Switching Verbose +changes the displayed history; polling chatter does not displace normal events. **Pause** freezes the display while each bounded 2,000-line view +continues collecting; **Resume** catches up. **Copy** and **Save…** export the +visible paused log or the current buffer. + + + +*Settings and Debug. Station identifiers are redacted.* + +**NO RESPONSE** means the connection is open without valid amplifier replies. +Cached readings clear after silence; individual missing fast and slow fields +expire after 3 and 8 seconds. The power button shows **—** and remains available +to request wake while the connection is open. A missing mode response is never treated as Standby. **SWR: NO RF** +means SWR is unmeasured, rather than a measured 1:1 ratio. + +Serial connects locally; Network connects directly to a raw TCP serial proxy +and does not require AetherD. Telnet/RFC 2217 and Elecraft Remote Server are +not supported. KAT500 tuner control is not implemented. + +### KPA500 Advanced maintenance + +Open **Peripherals → Elecraft KPA500 → Advanced**, or **Settings → Advanced…** +in the KP500 applet. Maintenance supports confirmed firmware **01.54**. The +amplifier must be powered on, responding and reporting zero RF; radio TX +blocks all maintenance. Reads run only when requested. + +Only one maintenance file chooser opens at a time. Canceling it leaves the +amplifier and files unchanged. Closing Peripherals also closes its chooser; +reopening Advanced lets you start a new selection. + +- **Save backup…** reads the 224-byte configuration and saves a `.KPAConfig` + file with firmware, serial number and CRC32. It includes the power-on banner. +- **Choose backup…** validates a file and shows its identity without changing + the amplifier. To restore, put the amp in **Standby**, select a backup with + the same serial number and firmware, check **Replace this amplifier’s stored + configuration**, then click **Restore selected backup**. AetherSDR verifies + the written bytes by reading them back. Power-cycle the amplifier manually + after successful verification; it does not restart automatically. +- **Read banner** loads the confirmed power-on text. Edit up to eight printable + ASCII characters, then click **Save banner** while in Standby. The confirmed + label changes only after verified readback. +- **Refresh fault history** reads up to 128 stored events, newest first, with + amplifier uptime, band, fault code, raw data and a description. Uptime is not + a calendar timestamp. **Export CSV…** saves the captured table. This history + is separate from the applet’s live telemetry graphs and **Clear fault**. + +Polling, band following and amplifier controls pause during maintenance. +**Cancel operation** stops further requests; it cannot undo bytes already +written. A timeout, disconnect, unexpected response or TX aborts the operation. +Writes are never retried or resumed automatically. An incomplete restore may +have changed part of the configuration; reconnect and inspect the amplifier +before attempting another restore. Fault history is not part of a configuration +backup and is never overwritten by Restore. + +Peripherals with a NETWORK-connected KPA500 and Advanced backup, restore, banner and stored fault history controls. + +*Advanced maintenance after reading the banner and stored fault history. Station identifiers are redacted.* + ## Using the Elecraft KPA1500 > **Not yet validated on real hardware.** The KPA1500 support follows @@ -149,13 +377,16 @@ The **LP-100A Meter** applet is in the **Metering** category and is | Amplifier | Connection | Defaults | |---|---|---| | ACOM Amplifier | Serial, or network through a ser2net proxy in raw mode | 9600 8N1; TCP 7000 | -| SPE Expert Amplifier | Serial, or network through ser2net (raw or telnet) | 115200 8N1; TCP 7000 | +| SPE Expert Amplifier | Serial, or network through ser2net (raw or telnet) | 115200 8N1 (original 1K-FA: 9600 8N1); TCP 7000 | | VK3AMP Amplifier | Network only: TCP control, UDP telemetry | TCP 5005; UDP 5010 | +| Elecraft KPA500 | Serial, or network through a raw TCP ser2net proxy | 4800 8N1; selectable locally, configured on the server for TCP; TCP 2000 | | Elecraft KPA1500 | Network only: TCP | TCP 1500 | | LP-100A Meter | Serial, or network through a ser2net proxy in raw mode | 115200 8N1; TCP 2000 | ## Known issues +- The original 1K-FA briefly disconnects the radio's antenna path while it powers up, and AetherSDR does not yet hold off transmitting during that time ([#6231](https://github.com/aethersdr/AetherSDR/issues/6231)). + - An SPE amplifier set to connect at startup shows connected but no data until you disconnect and reconnect it ([#4893](https://github.com/aethersdr/AetherSDR/issues/4893)). ## Troubleshooting @@ -170,6 +401,25 @@ telnet port cannot do. field has a sample configuration. 2. Reconnect the amplifier in **Peripherals** and press **ON**. +### The original 1K-FA will not power on over the network + +The network bridge cannot switch the serial port's DTR line. A note under the +applet's buttons says so when you press **ON**. + +1. If the bridge is a plain serial-to-Ethernet converter, switch the + amplifier on at its front panel; monitoring and the keys still work. +2. For remote power on, use ser2net with `accepter: telnet(rfc2217=true),` + and a serial adapter that has a DTR line, then reconnect and press **ON**. + +### The original 1K-FA switches off when I disconnect + +AetherSDR holds the 1K-FA's power line only while it is connected, so an +amplifier that **ON** switched on powers off on **Disconnect**, when you quit +AetherSDR, or when the serial link drops. + +1. To keep the amplifier on without AetherSDR, switch it on at its front panel + instead of with **ON**. + ### The VK3AMP takes a long time to connect on Windows After the amplifier has been idle, the first connection can take 9–12 @@ -180,7 +430,8 @@ seconds, because the amplifier answers only broadcast ARP. ### The SPE front-panel keys are dimmed The popped-out **FRONT PANEL** keys work only while the LCD mirror is current. -Its data has gone stale. +Its data has gone stale, or the amplifier is an original 1K-FA, which has no +LCD mirror; on the 1K-FA the keys stay dimmed. 1. Check the amplifier's connection in **Peripherals**. 2. Wait for the LCD mirror to update; the keys come back with it. diff --git a/docs/user/versioned_docs/version-stable/anan-g2.md b/docs/user/versioned_docs/version-stable/anan-g2.md index da94558991..93fac4aa82 100644 --- a/docs/user/versioned_docs/version-stable/anan-g2.md +++ b/docs/user/versioned_docs/version-stable/anan-g2.md @@ -25,15 +25,17 @@ AetherSDR can receive with an Apache Labs **ANAN-G2** over openHPSDR Protocol 2. The G2 is found automatically on your LAN: open **File → Connect to Radio...** → **On This Network**, select it and click **Connect Selected Radio**. -To reach it across a VPN or another subnet, use **Connect by IP** with **Radio type:** set to **ANAN-G2** (see [Manual Connection](./manual-connection.md)). That form also holds the G2's connection options, which apply on both paths: +Discovery also sends a directed broadcast to each attached IPv4 subnet. This can find a G2 on a second NIC with its own subnet. Two NICs sharing a subnet still use the preferred route; VPNs and routers may block broadcast discovery. If the G2 does not appear, use **Connect by IP** with **Radio type:** set to **ANAN-G2** (see [Manual Connection](./manual-connection.md)). + +Configure the receive front end under **Settings → Radio Setup... → Radio → ANAN Front End**. The page is available while disconnected, and while connected to a G2. Its options apply on the next connection, whether you use **Available radios** or **Connect by IP**: | Option | Default | What it does | |--------|---------|--------------| | **Sample rate:** | 48 ksps | DDC0 sample rate: 48, 96, 192, 384, 768 or 1536 ksps. It is also the starting width of the panadapter. Higher rates use more of the radio's Ethernet link. | -| **Select ADC:** | ADC0 (ANT1/2/3) | Which receive chain feeds the receiver: **ADC0 (ANT1/2/3)**, behind the switched antenna relays, or **ADC1 (RX2)**, wired straight to the RX2 jack. | -| **Dither** / **Random** | On | The ADC's linearization bits. Leave them on unless you are testing. | -| **ADC0 RF filter bypass** / **ADC1 RF filter bypass** | On | Routes the antenna around the front-end filter bank. **Leave these checked:** no band filter is selected in this version, so unchecked means nothing reaches the ADC. | -| **Send RX audio to the radio's speaker** | Off | Also plays receive audio through the G2's own speaker and headphone jack. Takes effect on the next connect. | +| **Feed the receiver from:** | ADC0 — behind the ANT1/2/3 relays | Which receive chain feeds the receiver: **ADC0 — behind the ANT1/2/3 relays**, behind the switched antenna relays, or **ADC1 — the RX2 jack**, wired straight to the RX2 jack. | +| **Dither** / **Randomization** | On | The ADC's linearization bits. Leave them on unless you are testing. | +| **Bypass ADC0's bank** / **Bypass ADC1's bank (RX2)** | On | Routes the antenna around the front-end filter bank. **Leave these checked:** no band filter is selected in this version, so unchecked means nothing reaches the ADC. | +| **Send receive audio to the radio** | Off | Also plays receive audio through the G2's own speaker and headphone jack. Takes effect on the next connect. | ## Receiving with the G2 @@ -43,7 +45,7 @@ To reach it across a VPN or another subnet, use **Connect by IP** with **Radio t - **NB** cycles Off → **NB** → **NB2** → Off: WDSP's two impulse blankers, run on this computer before the demodulator. **NB** silences each impulse; **NB2** reconstructs the blanked window from the samples either side, and shows an **NB2** fill selector (**Zero**, **Sample hold**, **Mean hold**, **Hold sample** or **Interpolate**) while it runs. Neither is offered in FM. - **AGC-T** sets the AGC's maximum gain from −20 to 120 dB, 1.4 dB per slider step, starting at 71 (79.4 dB). With AGC off it sets the fixed gain instead, starting at 29 (20.6 dB). AGC-T and the AGC-off level are not remembered across launches; each launch starts at 71 and 29. - **RF Gain** from −31 to 0 dB drives the G2's ADC step attenuator, and is restored per radio. -- **AF gain, mute and balance** apply. With **Send RX audio to the radio's speaker** on, the receiver's mute and volume apply to both the computer and the radio's speaker, and the title-bar speaker button mutes the radio's speaker too. +- **AF gain, mute and balance** apply. With **Send receive audio to the radio** on, the receiver's mute and volume apply to both the computer and the radio's speaker, and the title-bar speaker button mutes the radio's speaker too. - Manual **Black Level** and waterfall **NB Blank**. See [Panadapter Controls](./panadapter-controls.md). - **Status bar:** the **Network:** indicator follows the G2's link (received data and packet loss; round-trip time and jitter are not measured on this radio). The G2's supply voltage is shown in the status bar and the Meter applet. The G2 reports no PA temperature, so that reading is not shown. - **Tools → Radio Health...** @@ -87,17 +89,17 @@ Controls the G2 cannot honor are dimmed with a reason, or refuse with a notice; ### Nothing is received at all -An **RF filter bypass** box is unchecked. No band filter is selected, so an unchecked bypass means nothing reaches the ADC. +A **Bypass ADC0's bank** or **Bypass ADC1's bank (RX2)** box is unchecked. No band filter is selected, so an unchecked bypass means nothing reaches the ADC. 1. Disconnect from the G2. -2. Open **Connect by IP** with **Radio type:** set to **ANAN-G2**. -3. Tick **ADC0 RF filter bypass** and **ADC1 RF filter bypass**, then connect again. +2. Open **Settings → Radio Setup... → Radio → ANAN Front End**. +3. Tick **Bypass ADC0's bank** and **Bypass ADC1's bank (RX2)**, then connect again. ### No audio from the radio's own speaker -**Send RX audio to the radio's speaker** is off, or was turned on during the session. It takes effect on the next connect. +**Send receive audio to the radio** is off, or was turned on during the session. It takes effect on the next connect. -1. Tick **Send RX audio to the radio's speaker** in the ANAN-G2 options. +1. Open **Settings → Radio Setup... → Radio → ANAN Front End** and tick **Send receive audio to the radio**. 2. Disconnect and connect again. 3. Check that the receiver and the title-bar speaker button are not muted; they mute the radio's speaker too. diff --git a/docs/user/versioned_docs/version-stable/audio-settings.md b/docs/user/versioned_docs/version-stable/audio-settings.md index 02a39e2967..79ddf26dfa 100644 --- a/docs/user/versioned_docs/version-stable/audio-settings.md +++ b/docs/user/versioned_docs/version-stable/audio-settings.md @@ -25,7 +25,7 @@ See [Radio Setup](./radio-setup.md). Choose the computer's microphone (**Input**) and speaker (**Output**) devices. The selection is saved and restored at startup, and you can switch devices while connected. -If the saved device is not connected, AetherSDR uses the system default device and keeps your saved choice. It switches back to the saved device when that device connects, without asking. +If the saved device is not connected, AetherSDR uses the system default device and keeps your saved choice. It switches back to the saved device when that device connects, without asking. On Linux, saved devices with IDs containing `.monitor`, `auto_null`, `echo-cancel`, or `combined`, or starting with `pulse_input_loopback`, are used again at the next launch rather than automatically restored when they reappear. AetherSDR handles sample-rate conversion itself. The microphone is captured at whatever rate the device offers, processed at 48 kHz, and converted once to the radio's transport rate. The PC microphone is used for transmit when the radio's mic source is **PC** (see [Choosing the mic source](#choosing-the-mic-source)). @@ -44,7 +44,7 @@ When the operating system adds or removes an audio device, an **Audio Device Det ## Volume and mute - **AF slider** (VFO flag or RX applet): the slice's audio level, 0–100. -- **Mute button:** single-click mutes or unmutes this slice; double-click mutes or unmutes all of your slices. **Radio Setup → Appearance & Behavior → Single-click delay** sets how long AetherSDR waits to tell a single click from a double click (0 makes single clicks instant and turns off the double-click action). +- **Mute button:** single-click mutes or unmutes this slice; double-click mutes or unmutes all of your slices. **Radio Setup → Appearance & Behavior → Single-Click Delay** sets how long AetherSDR waits to tell a single click from a double click (0 makes single clicks instant and turns off the double-click action). - Slice mute belongs to the radio, so it is not restored by AetherSDR on reconnect. - **Title-bar speaker icon and master slider** always show the path you are actually hearing. With **PC Audio** on, they show and control the computer's mute and level. With PC Audio off, they show the radio's Line Out mute and level, including changes made by another Multi-Flex client. - **Clicking the title-bar speaker** mutes or unmutes this computer's output and, on a radio with a line out AetherSDR can control, the radio's Line Out as well. On a radio with no such line out and PC Audio off, there is nothing to mute: the click is refused and the icon stays as it was. diff --git a/docs/user/versioned_docs/version-stable/automation-bridge-and-mcp.md b/docs/user/versioned_docs/version-stable/automation-bridge-and-mcp.md index aa9f9db23a..b0a8347df0 100644 --- a/docs/user/versioned_docs/version-stable/automation-bridge-and-mcp.md +++ b/docs/user/versioned_docs/version-stable/automation-bridge-and-mcp.md @@ -38,6 +38,10 @@ Open **Settings → Radio Setup... → Network** and find the **Advanced** group | **Allow TX via MCP:** "Enable transmit control" | Lets bridge clients key the transmitter. Off by default; turning it on asks for a one-time confirmation. | | **Observe only:** "Read-only (block all driving)" | Blocks every action that changes anything; reads still work. | +The `interlock probe` diagnostic works with **Observe only** enabled. It +checks transmit-state reconciliation on an isolated model without changing +your session or keying the radio. It still requires the access token. + You can also start the bridge for a single run by launching with `AETHER_AUTOMATION=1`. In that case the Enabled/Disabled button is grayed out, because the environment variable wins. ### Access token @@ -66,6 +70,16 @@ The token decides which client you have deliberately let in. It is not a wall ag It offers typed tools (`bridge_status`, `dump_tree`, `grab_widget`, `get_state`, `get_log`, `invoke`, `tune`, `slice`, `pan`, `record`, `menu`, `connect`, `capture_audio`, `wait_for`, `assert_state` and more), plus a raw `bridge_command` for everything else, a `validate_ui_change` prompt, and read-only state resources. The transmit verbs are deliberately reachable only through `bridge_command`. +### Editing the radio nickname + +Open **Settings → Radio Setup... → Radio**. Use `invoke` with target +`radioNicknameEdit`, action `editText`, and the desired `value` (an empty +string clears it). Then invoke action `commit` without a value. The dialog +sends the nickname request; check `get_state` for the radio's accepted nickname. +Repeated commits of an unchanged field do not send another request. These +actions currently support only **Radio nickname**; `setText` alone does not +commit it. + ## Using transmit safety - The bridge refuses to operate any control that keys the transmitter (MOX/PTT, TUNE, ATU, CWX send, packet/APRS send) through its generic "click this control" path, whoever is asking. diff --git a/docs/user/versioned_docs/version-stable/before-you-transmit.md b/docs/user/versioned_docs/version-stable/before-you-transmit.md index 55d7caff5e..1d5d84e5c8 100644 --- a/docs/user/versioned_docs/version-stable/before-you-transmit.md +++ b/docs/user/versioned_docs/version-stable/before-you-transmit.md @@ -47,7 +47,7 @@ The checks are written so you can do them without putting a signal on the air. W - [ ] **The transmit antenna is the one you mean.** The RX applet header shows the RX and TX antenna buttons, with the names you gave them in **Settings → Radio Setup... → Antennas**. See [RX Controls](./rx-controls.md). - [ ] **The antenna is matched.** Run the radio's **ATU** from the TX applet (FlexRadio), or your external tuner, at low tune power, and check the **SWR** gauge. A Tuner Genius XL has its own applet; see [TGXL Tuner Control](./tgxl-tuner-control.md). **Tools → Pre-tune ATU Bands...** keys the transmitter repeatedly, so make sure the bands are clear first. - [ ] **External amplifiers are in STANDBY** until everything above checks out, and while you tune or sweep. The amplifier applets have **STANDBY** / **OPERATE** buttons; the PGXL has a **STBY** key. See [Amplifiers](./amplifiers.md) and [Peripherals](./peripherals.md). -- [ ] **(FlexRadio)** **TUNE will not key anything you don't want it to:** **Settings → Inhibit during TUNE ▸** chooses which outputs (ACC TX, TX1, TX2, TX3) are held while the radio tunes. See [TX Controls](./tx-controls.md). +- [ ] **(FlexRadio)** **TUNE will not key anything you don't want it to:** on firmware 4.3 and later, check **RCA off/TUNE** for each band you use under **Radio Setup → Transmit → TX Band Settings**. **Settings → Inhibit during TUNE ▸** selects ACC TX inhibition, and also selects individual RCA outputs on firmware 4.2 and older. See [TX Controls](./tx-controls.md#tune). ### Digital modes @@ -63,6 +63,7 @@ The checks are written so you can do them without putting a signal on the air. W - Controller buttons can be bound to PTT, MOX or TUNE: [USB Control Surfaces](./usb-control-surfaces.md) (including serial PTT and foot switches), [MIDI Controller Mapping](./midi-controller-mapping.md), [Ulanzi Dial](./ulanzi-dial.md), [StreamDeck](./streamdeck.md) and the [FlexControl Tuning Knob](./flexcontrol-tuning-knob.md). - CAT and TCI clients can key the radio. See [CAT Control](./cat-control.md) and [TCI Server](./tci-server.md). - The automation bridge cannot key the transmitter unless **Allow TX via MCP** is ticked, which is off by default. Leave it off unless you need it. See [Automation Bridge and MCP](./automation-bridge-and-mcp.md). +- [ ] **(FlexRadio, firmware v4.3 and later)** **You know what your footswitch transmits.** A hardware PTT now sends the selected TX source, DAX or PC audio included, unless **PTT Mic Override** is on. See [Hardware PTT and the TX source](./tx-controls.md#hardware-ptt-and-the-tx-source). - [ ] **(FlexRadio)** **The radio's transmit time-out and interlocks are set:** **Timeout (sec):** and the **Interlocks - TX REQ** group on the **Transmit** page of Radio Setup. See [Radio Setup](./radio-setup.md). - [ ] **You can see when you are transmitting.** A green `M:SS` transmit timer appears in the title bar, just left of **PC Audio**, for each of your own transmissions, and the VFO marker turns orange/red. If an interlock blocks transmit, a notification says why. See [TX Controls](./tx-controls.md). diff --git a/docs/user/versioned_docs/version-stable/copy-assist.md b/docs/user/versioned_docs/version-stable/copy-assist.md index d4173168f7..1c664cdce0 100644 --- a/docs/user/versioned_docs/version-stable/copy-assist.md +++ b/docs/user/versioned_docs/version-stable/copy-assist.md @@ -86,6 +86,12 @@ Either one shows or hides the panel, which docks under the waterfall of the acti - A band-stack recall or a disconnect does **not** close an open panel, so transcription survives a band change. - Whenever the panel is open, the ASR toggle is lit and clickable, so you can always close it by hand. +### Which receiver is transcribed + +On RTL-SDR, Copy Assist uses the selected slice's independent audio before speaker volume, mute and client DSP. Other audible slices do not enter that feed. **Transcribe from unprocessed audio (bypasses NR and RX effects)** is unavailable for this route and explains why; its saved preference is retained for radios that use the presentation stream. Retuning, switching slices or parking the receiver starts a fresh transcription context. A parked receiver supplies no audio until it returns to capture. + +Other radios retain their existing presentation-audio route and pre/post-DSP choice. Selecting a slice controls mode availability; it does not isolate that slice from a shared presentation mix. + ### Transcribing 1. Open the panel and click **Disabled** so it reads **Enabled**. @@ -101,7 +107,8 @@ Text is **colored by recognition confidence**, the same way as the [CW Decoder]( | Orange | Questionable | | Red | Low | -By default Copy Assist hears the audio after AetherSDR's noise reduction and RX effects, as you hear it, so a suitable [DSP Noise Mitigation](./dsp-noise-mitigation.md) setting can improve the transcript as well as your own listening. Noise-reduction artifacts can also confuse the speech model more than the noise does; to transcribe the audio before them, turn on **Transcribe from unprocessed audio (bypasses NR and RX effects)** in Copy Assist Settings. What you hear is unchanged. +On radios using the presentation stream, the default processed-audio setting hears client-side [DSP Noise Mitigation](./dsp-noise-mitigation.md), which can affect transcription as well as listening. The unprocessed setting and RTL's independent receiver feed bypass those client effects. +Noise-reduction artifacts can confuse the speech model more than noise does. On presentation-stream radios, turn on **Transcribe from unprocessed audio (bypasses NR and RX effects)** in Copy Assist Settings to bypass those effects for transcription. What you hear is unchanged. ### Context diff --git a/docs/user/versioned_docs/version-stable/ctr2-proxy.md b/docs/user/versioned_docs/version-stable/ctr2-proxy.md index c66e3cdf4a..e42595db0e 100644 --- a/docs/user/versioned_docs/version-stable/ctr2-proxy.md +++ b/docs/user/versioned_docs/version-stable/ctr2-proxy.md @@ -1,7 +1,7 @@ --- title: "CTR2 Proxy" slug: "/ctr2-proxy" -description: "The CTR2 Proxy applet connects a CTR2-Max controller to your FlexRadio through AetherSDR." +description: "The CTR2 window relays a CTR2-Max controller to your FlexRadio through AetherSDR, and installs AetherCTR2 on it." status: "Early" applies_to: ["FlexRadio"] --- @@ -12,8 +12,8 @@ applies_to: ["FlexRadio"] ::: -The **CTR2 Proxy** applet connects a CTR2-Max controller to your FlexRadio -through AetherSDR. The CTR2 talks to the radio exactly as it would directly; +The **CTR2** window connects a CTR2-Max controller to your FlexRadio through +AetherSDR, and installs AetherCTR2 on a CTR2-Max. The CTR2 talks to the radio exactly as it would directly; AetherSDR forwards every byte unchanged in both directions over its own network route to the radio, including a VPN or tailnet route the CTR2 could not reach by itself. @@ -26,33 +26,52 @@ AetherSDR's own command or transmit paths. - AetherSDR connected to a radio that accepts more than one client, over the LAN or a VPN. The proxy is unavailable on SmartLink connections. - **Wi-Fi (TCP) mode** works with current CTR2 firmware. -- **USB mode** needs CTR2 firmware with USB mode, which has not been released - yet, or an AetherKnob, and a build with USB HID support (hidapi). +- **USB mode** needs a CTR2-Max running AetherCTR2 (AetherSDR installs it; + see [Installing AetherCTR2 on a CTR2-Max](#installing-aetherctr2-on-a-ctr2-max)) + or an AetherKnob, and a build with USB HID support (hidapi). The CTR2-Max's + stock firmware has no USB mode. ## Setup -The applet's button is **CTR2**, in the **Integration** category. It is not in -the default applet bar; right-click any applet button to open the picker and -add it. +Open **Settings → Controllers → CTR2...**. The window has two parts: **CTR2 +Relay** at the top, and **CTR2-Max Firmware** below it (see +[Installing AetherCTR2 on a CTR2-Max](#installing-aetherctr2-on-a-ctr2-max)). +Closing the window does not stop the relay. -The proxy is **off at every launch** and nothing about it is saved: mode, -address and device are chosen again each session, and it only starts when you -press **Start**. +The relay starts when you press **Start**, or by itself with **Start +automatically** (see [Starting automatically](#starting-automatically)). Each +time it starts, its setup (mode, device, listen address and port) is saved and +offered again at the next launch. The **Mode** selector offers **Wi-Fi (TCP)** and **USB**. CTR2 Proxy applet. Mode is set to USB with a Rescan button, the USB selector reads Select CTR2 USB device, and the Radio row (blacked out here) sits beside a dimmed Start button. An amber hint reads Select the CTR2 USB device, followed by State: Stopped and traffic counters of 0 B to the radio and to the CTR2. -*The CTR2 Proxy applet before a CTR2 is selected. The radio's address is blacked out.* +*The CTR2 relay controls before a CTR2 is selected, from before they moved into the CTR2 window. The radio's address is blacked out.* -> **Check the mode every time.** On builds with USB support, USB is the -> default and the choice is not saved. USB mode waits on a CTR2 USB firmware -> release, so with current CTR2 firmware pick **Wi-Fi (TCP)** at every launch. +> **Check the mode the first time.** On builds with USB support, USB is the +> default until the relay has been started once. A CTR2 on its stock firmware +> works only in **Wi-Fi (TCP)** mode, so pick it unless the CTR2-Max runs +> AetherCTR2. + +## Starting automatically + +Tick **Start automatically when AetherSDR connects to a radio** to have the +relay start by itself, with the setup it last started with, whenever AetherSDR +connects to a radio. The choice is saved. + +- If the CTR2 is not plugged in yet, AetherSDR keeps looking every few seconds + and starts the relay when it appears. +- Pressing **Stop** holds it off until AetherSDR next connects to a radio. +- In USB mode it starts only a CTR2-Max running AetherCTR2, or an AetherKnob. + A CTR2 on its stock firmware has no USB mode. +- **Linux:** if the CTR2 udev rule is not installed yet, press **Start** once + to install it. ## Using Wi-Fi (TCP) mode 1. On the CTR2, set the radio IP address to **this PC's LAN address**. -2. In the applet, pick the **Listen** address: one of this PC's local IPv4 +2. In the CTR2 window, pick the **Listen** address: one of this PC's local IPv4 addresses. The listen port is 4992; it can be changed while stopped. 3. Press **Start**. @@ -63,13 +82,15 @@ features of the CTR2 that rely on UDP may not work this way. ## Using USB mode -The host side is complete: the CTR2's traffic travels in USB HID reports, and -AetherSDR starts the link, so you only pick the device and press **Start**. It -needs CTR2 firmware with USB mode, which has not been released yet. +The CTR2's traffic travels in USB HID reports, and AetherSDR starts the link, +so you only pick the device and press **Start**. It needs a CTR2-Max running +AetherCTR2 (see below) or an AetherKnob. - The **USB** device list shows candidate HID devices, with known CTR2 boards - and the AetherKnob named and listed first. **Rescan** refreshes the list - (and the local addresses). + and the AetherKnob named and listed first. While the relay is stopped the + list refreshes itself every 2 seconds, so a CTR2-Max that switches between + its stock firmware and AetherCTR2 shows up as it is now; **Rescan** refreshes + it (and the local addresses) at once. - **Linux:** a udev rule for the CTR2 ships with the build. If the device cannot be opened, **Start** offers to install the rule (`/etc/udev/rules.d/70-aethersdr-ctr2.rules`) through `pkexec`, asking for @@ -81,23 +102,207 @@ needs CTR2 firmware with USB mode, which has not been released yet. spectrum for its center display. While receiving it shows the audio you are hearing (after the radio's DSP, AetherSDR's noise reduction and the RX chain up to the EQ) across the active slice's filter width, for - example 20–600 Hz for a 600 Hz CW filter. While transmitting it shows your + example 20–600 Hz for a 600 Hz filter. While transmitting it shows your transmit audio across the TX filter width. Either way it reaches at most half the audio sample rate (12 kHz for 24 kHz audio), and the bars are spaced logarithmically in frequency, as on an audio analyzer, so the low end gets more detail. AetherSDR also tells it the UDP port the relay uses, so its meters update. A CTR2 never receives either. +- **CW on a controller.** Controller firmware that supports them can take two + more things while you receive CW: + - **A zero-beat spectrum.** The bars are spaced evenly across a window + centered on your CW pitch: the filter's passband, plus half its width + on each side. For a ±200 Hz filter at a 600 Hz pitch that is 200–1000 Hz, + with the pitch in the middle of the display, so you can see how far a + signal is from zero beat. The window follows the pitch and the filter. + Near 0 Hz it narrows so the pitch stays centered. Firmware without this + keeps the logarithmic spectrum described above. + - **The CW decode.** The text the [CW decoder](./cw-decoder.md) reads + from the active slice, as it arrives, with its confidence. The decoder + must be running (**Decode: RX** on in **Settings → Radio Setup... → + Phone & CW**), and the CW panel's **Sens** slider filters what is sent, + as it filters the panel. Only plain ASCII is sent, and line breaks + become spaces. DeepFist's decode is not sent yet. + + A CTR2 never receives either. +- Other controller firmware that speaks the same USB link can name itself: + a `303A:1001` device whose USB product name starts with **Aether** (that + exact case) and continues with at least one more character appears in the + list under that name, as long as the whole name is printable ASCII and at + most 32 characters long. + +## Installing AetherCTR2 on a CTR2-Max + +AetherCTR2 is firmware for the CTR2-Max that adds USB mode. It is installed +**beside** the stock firmware, which stays on the unit with its settings and +registration: the CTR2-Max can restart into either one. AetherCTR2 builds on +the work of Dariusz Socha, SQ5X ([smartmtr.net](https://smartmtr.net)), and +Lynn Hansen, Lynovation ([lynovation.com](https://lynovation.com)). + +The **CTR2-Max Firmware** part of the CTR2 window (**Settings → Controllers → +CTR2...**) has two tabs, one per firmware: + +- **AetherCTR2:** the AetherCTR2 releases AetherSDR can install, newest first, + from the list on aethersdr.com. Pick a release and press **Install…**; an + older one can be picked to go back to it. +- **Lynovation:** the CTR2-Max's own firmware, from files you downloaded from + Lynovation (see + [Updating the CTR2-Max's own firmware](#updating-the-ctr2-maxs-own-firmware)). + +Both lists end with the connected unit's backups (see +[Backups](#backups)). Below the tabs, **Status** shows what the window found: + +- **AetherCTR2** (cyan): the unit runs AetherCTR2. An AetherCTR2 update goes + over the USB cable. +- **Stock firmware** (gold): the unit runs its stock firmware. +- **Bootloader** (aqua): the unit is in download mode (its ROM bootloader). + Its screen stays dark; that is normal. +- **No CTR2-Max**: nothing was found. + +**Restart into** **AetherCTR2**, **Stock Firmware** or **Bootloader** (download +mode) restarts the unit into what is installed on it, writing nothing but the +choice of firmware to start. The one it runs now is dimmed. + +Installs, restores and restarts run in download mode. From AetherCTR2 0.9.2 +or later the window restarts the unit into it by itself, and so it does from +CTR2-Max firmware releases that support it. With older AetherCTR2, an unknown +version, or other stock firmware it asks you to, in an alert: hold **BOOT** (through the hole in the back), press and release +**RESET**, then release **BOOT**. It then carries on by itself. + +### Requirements + +- **The CTR2-Max must be registered** with its stock firmware, v1.02.00m or + later (your call and registration key, entered on the unit). A unit + registered with an earlier version is taken once it has run v1.02.00m or + later: update its firmware first (see + [Updating the CTR2-Max's own firmware](#updating-the-ctr2-maxs-own-firmware)). + AetherSDR reads the registration before writing anything, and refuses an + unregistered unit; AetherCTR2 also checks it at every start. +- **Linux:** download mode uses the unit's USB serial port. If AetherSDR + cannot open it, add yourself to the group that owns the port (`dialout` or + `uucp`, depending on the distribution) and log in again. +- A build with serial-port support (Qt Serial Port) for download mode, and + USB HID support (hidapi) for updates over the cable. + +### First install + +1. Connect the CTR2-Max with a USB cable. +2. On the **AetherCTR2** tab, pick the release and press **Install…**, then + **Install**. +3. If the unit runs its stock firmware, put it in download mode when the + alert asks. +4. AetherSDR backs up the whole flash (about a minute), checks the unit + (chip, flash size, partition layout and registration), writes AetherCTR2 + and selects it, then restarts the unit into it. + +Only the parts that change are written; the stock firmware, its settings and +its registration are never written. If anything is not as expected, nothing +is written. + +### Updating AetherCTR2 (over the USB cable) + +With **Status** reading **AetherCTR2**, pick the release and press +**Install…**. The relay stops for the update and starts again afterwards. +The update takes about three minutes. The CTR2-Max checks the firmware's +signature, restarts into it and keeps it only once it has connected again; if +anything goes wrong it goes back to the version it had. + +### Switching between AetherCTR2 and the stock firmware + +Both firmwares stay installed; switching only changes which one the CTR2-Max +starts. + +**To the stock firmware**, from AetherCTR2, either: + +- press **Restart into → Stock Firmware** in the CTR2 window, or +- on the CTR2-Max, tap **CTR2-Max firmware** on AetherCTR2's status screen, + then tap it again (**Tap again to restart**) to confirm. + +**Back to AetherCTR2**, from the stock firmware, either: + +- with CTR2-Max firmware v1.02.00 or later, choose **Run AetherCTR2** at the + bottom of page 1 of the CTR2-Max's **Settings** menu (it reads + **AetherCTR2 n/a** when AetherCTR2 is not installed), or +- with any version, press **Restart into → AetherCTR2** in the CTR2 window. + It only changes which firmware the unit starts; nothing else is written. + +The CTR2 window notices the switch by itself: the device list and **Status** +follow within a couple of seconds, with no **Rescan** needed. With **Start +automatically** ticked, the relay starts again once the CTR2-Max is back in +AetherCTR2. + +### Backups + +Every install first saves the unit's whole flash to the **CTR2-Max Backups** +folder in your Documents folder, with a description beside it (`.json`, same +name). The latest three of each unit are kept. + +The connected unit's backups are listed at the end of both tabs' lists, by +date, including any saved with **Back Up…** in earlier versions of AetherSDR +(in the Documents folder itself), as long as each backup's `.json` is beside +it. Installing one restores it: the whole flash goes back exactly as it +was, both firmwares, the settings and the registration included, and anything +since is lost. A backup restores only onto the unit it came from (matched by +its MAC address), and only if the file is unchanged since it was made. + +### Cancelling + +**Cancel** stops between steps: a write already started finishes, and no new +one starts. While the window waits for download mode, Cancel ends the wait. +A unit interrupted part way through a download-mode install stays in download +mode, so you can install again or restore a backup. An update over the cable +that is cancelled leaves the firmware the unit had. + +## Updating the CTR2-Max's own firmware + +AetherSDR also installs updates to the CTR2-Max's own firmware, the one +Lynovation makes, from the file Lynovation publishes. AetherSDR does not +supply this firmware: download it from Lynovation's +[CTR2-Max firmware page](https://ctr2.lynovation.com/ctr2-max-firmware/). + +1. Download the firmware zip from Lynovation's page. There is no need to + unzip it. +2. In the CTR2 window, choose the **Lynovation** tab, press **Open File…** + and choose the zip (or the `.bin` file inside it). The firmware is added + to the tab's list, for example **CTR2-Max firmware v1.02.00n**, and + chosen. +3. Connect the CTR2-Max with a USB cable and press the tab's **Install…**, + then **Update**. +4. If the CTR2-Max is running its stock firmware, put it in download mode + when the alert asks. The update then starts by itself. From AetherCTR2 + 0.9.2 or later, or already in download mode, no buttons are needed. Older or unknown + AetherCTR2 versions need the same BOOT/RESET steps when asked. + +AetherSDR backs up the whole flash first (about a minute), writes the new +firmware, and restarts the CTR2-Max into it. + +- **What is written:** only the firmware itself. The CTR2-Max keeps its + settings, its registration and AetherCTR2, if installed. +- **What is checked first:** that the file is intact CTR2-Max firmware for + the CTR2-Max's chip, and that the unit's flash is laid out as the firmware + expects. If anything is not as expected, nothing is written. +- **Earlier versions:** AetherSDR keeps a copy of each version you open, in + its own data folder, and lists them all on the tab, newest first. To go + back to an earlier version, choose it and press **Install…**. +- **Releases from lynovation.com:** when Lynovation publishes its releases + for AetherSDR, the tab also lists them, marked **(lynovation.com)**. + **Install…** on one downloads it from Lynovation's site first; it is then + kept like a file you opened. +- **No registration is needed** to update the CTR2-Max's own firmware. ## Reference ### Status -While running, the applet shows: +While running, the **CTR2 Relay** part of the window shows: - **State:** Stopped, Listening, Connecting, Relaying, Closing or Error. - The endpoints: the listener, the connected CTR2, and the radio. -- Byte counters in each direction (`↑ Radio`, `↓ CTR2`) with queued bytes, and - in USB mode a UDP counter. +- A table of counters, toward the radio (`↑ Radio`) and toward the CTR2 + (`↓ CTR2`): **Bytes** relayed, bytes **Queued** and not yet sent, and in USB + mode **UDP** datagrams relayed and datagrams **Dropped** because the link to + the CTR2 was backed up. In Wi-Fi mode, **Rejected** counts extra CTR2 + connections that were turned away. - The last error, kept apart from the relayed data. Stop the proxy to change its settings. @@ -139,6 +344,15 @@ The build was made without hidapi. 1. Pick **Wi-Fi (TCP)** mode instead. +### "... is in use by another AetherSDR" + +Another AetherSDR on this computer has the CTR2 open over USB. Two relays on +one CTR2 break each other's link, so only one AetherSDR may use it at a time. + +1. In the other AetherSDR, press **Stop** in the CTR2 window, or close that + AetherSDR. +2. Press **Start** here. + ### The proxy stopped on its own It stops when AetherSDR disconnects or switches radios. @@ -146,6 +360,44 @@ It stops when AetherSDR disconnects or switches radios. 1. Reconnect AetherSDR to the radio. 2. Check the mode and settings again, then press **Start**. +### "This CTR2-Max is not registered" + +AetherSDR installs AetherCTR2 only on a unit registered with CTR2-Max +firmware v1.02.00m or later. + +1. If its CTR2-Max firmware is older than v1.02.00m, update it first (see + [Updating the CTR2-Max's own firmware](#updating-the-ctr2-maxs-own-firmware)). +2. Start the stock firmware (press **RESET**), and if it is not registered, + enter your call and registration key on the unit. +3. Put it in download mode and install again. + +### The CTR2-Max's screen is dark and nothing happens + +The CTR2-Max is in download mode, waiting. To leave it without installing +anything, press **RESET**: the unit starts the firmware it was running. + +### The CTR2-Max's screen is dark after an install or restore failed + +It is still in download mode, which is safe. + +1. Install again, or restore the backup. +2. To leave without changing anything, press **RESET**: the unit starts the + firmware it had. + +### "This is not a CTR2-Max firmware file as Lynovation publishes it" + +The file opened is not the CTR2-Max firmware, or is damaged. + +1. Download the zip again from Lynovation's + [CTR2-Max firmware page](https://ctr2.lynovation.com/ctr2-max-firmware/). +2. Open the zip, or the `.bin` file inside it, with **Open File…**. + +### "This CTR2-Max's flash is not laid out as the firmware expects" + +The unit's partition layout is not the one this firmware runs in, so +AetherSDR did not write anything. Use Lynovation's own instructions on its +firmware page for this update. + ### Settings are locked: "Stop the proxy to change its settings" The proxy is running. @@ -159,4 +411,5 @@ The proxy is running. - [MIDI Controller Mapping](./midi-controller-mapping.md) - [Tailscale Remote Access](./tailscale-remote-access.md) - [docs/ctr2-tcp-proxy-design.md](https://github.com/aethersdr/AetherSDR/blob/main/docs/ctr2-tcp-proxy-design.md): Wi-Fi relay and operator controls -- [docs/ctr2-usb-relay-design.md](https://github.com/aethersdr/AetherSDR/blob/main/docs/ctr2-usb-relay-design.md): USB link format and firmware status +- [docs/ctr2-usb-relay-design.md](https://github.com/aethersdr/AetherSDR/blob/main/docs/ctr2-usb-relay-design.md): USB link format and firmware installation +- [AetherCTR2 releases](https://github.com/aethersdr/AetherCTR2) diff --git a/docs/user/versioned_docs/version-stable/cw-decoder.md b/docs/user/versioned_docs/version-stable/cw-decoder.md index 9a38eece6c..a69efeec99 100644 --- a/docs/user/versioned_docs/version-stable/cw-decoder.md +++ b/docs/user/versioned_docs/version-stable/cw-decoder.md @@ -1,7 +1,7 @@ --- title: "CW Decoder" slug: "/cw-decoder" -description: "AetherSDR includes a built-in CW (Morse code) decoder powered by ggmorse (MIT license)." +description: "AetherSDR includes a built-in CW (Morse code) decoder: ggmorse by default, with two optional neural decoders, DeepFist and DeepCW." status: "Supported" applies_to: ["FlexRadio", "Hermes-Lite 2 (experimental)", "Networked Icom (early; IC-7300MK2 supported)"] --- @@ -14,11 +14,13 @@ applies_to: ["FlexRadio", "Hermes-Lite 2 (experimental)", "Networked Icom (early AetherSDR includes a built-in CW (Morse code) decoder powered by [ggmorse](https://github.com/ggerganov/ggmorse) (MIT license). It automatically detects the CW tone pitch and keying speed, and displays decoded text in real time in a panel below the waterfall. It can decode what you receive, what you send, or both. -The decoder works on every radio family that has a CW mode: FlexRadio, the [Hermes-Lite 2](./hermes-lite-2.md), and [Networked Icom](./networked-icom.md) radios (it opens when an Icom slice is in CW). +On Apple Silicon Macs, Linux and Windows you can also choose one of two neural decoders, **DeepFist** or **DeepCW**, which can copy weak or irregular signals that ggmorse misses. See [Choosing a decoder](#choosing-a-decoder). + +The decoder works on every radio family that has a CW mode: FlexRadio, the [Hermes-Lite 2](./hermes-lite-2.md), [Networked Icom](./networked-icom.md), and experimental [RTL-SDR](./rtl-sdr.md) reception. ## Requirements -- The selected slice is in **CW** or **CWL**. +- The selected slice is in a supported CW mode: **CW**, **CWU**, **CWL** or **CWR** (reverse CW on RTL-SDR). - On a FlexRadio, a **DAX RX channel** (1–8) assigned to the selected slice is recommended, so the decoder hears that slice alone. See [Which audio is decoded](#which-audio-is-decoded). ## Setup @@ -38,7 +40,7 @@ Both appear in the same panel. Your own sending is shown in **cyan**, so it stan ## Using the CW decoder -When the selected slice is in **CW** or **CWL**, the decode panel appears below the waterfall, and it hides again when you switch to another mode. +When the selected slice is in **CW**, **CWU**, **CWL** or **CWR**, the decode panel appears below the waterfall, and it hides again when you switch to another mode. Drag the grip on the panel's edge to resize it; the height is remembered. Right-click the text for font size and Clear. @@ -46,6 +48,31 @@ Drag the grip on the panel's edge to resize it; the height is remembered. Right- *The CW decoder pane under the waterfall, with its sensitivity, pitch and speed controls.* +### Choosing a decoder + +The decoder selector in the panel's toolbar picks which decoder reads the received CW. Only the selected decoder runs. Your own sending (the **TX** toggle) is always decoded by ggmorse. + +| Decoder | Text appears | Typical use | Model | +|---|---|---|---| +| **ggmorse** (default) | About half a second after each character | Clean, steady signals | None; built in | +| **DeepFist** | About 2 seconds behind the signal | Weak and hand-sent CW | Downloaded on first use, about 13 MB | +| **DeepCW** | About 6–8 seconds behind the signal, a few characters at a time; it holds text back so later audio can correct it | Weak signals | Downloaded on first use, about 15 MB | + +No decoder is best on every signal. Try each on the signals you work. DeepCW analyzes tones from **400 to 1200 Hz**; keep the received CW tone in that range. + +The neural decoders' models are not part of the AetherSDR download. The first time you select one, AetherSDR downloads its model from the model's own published source and checks it before use; the status beside the selector shows the progress. **Cancel** stops a download, and **Retry** appears if it fails. Once downloaded, the model is kept and works offline. If a model cannot be downloaded, the decoder shows **Model unavailable** and you can switch back to ggmorse. + +With a neural decoder selected: + +- **Sens**, the lock buttons and the Pitch and WPM ranges are unavailable; they apply to ggmorse only. +- Characters are coloured by the model's own confidence, on the same green-to-red scale, and are never hidden. +- Callsign contact cards and the MQTT text stream come from ggmorse only. +- AetherSDR's **Zero Beat** button is unavailable; it needs ggmorse's pitch estimate. A FlexRadio's own **Autotune** (on radios with SmartSDR+) works with any decoder. + +DeepCW discards its provisional text (about 5–7 seconds) when the source changes, audio is interrupted, or decoding stops. Its worker finishes the current inference or model load before stopping, so switching decoders can pause the interface until that work finishes. + +The neural decoders are not available on Intel Macs; there the selector does not appear and ggmorse decodes as before. + ### How it works The decoder processes the received audio on a separate worker thread. It detects the dominant tone frequency, then uses a Goertzel filter and timing analysis to decode Morse characters. @@ -60,6 +87,7 @@ Retuning resets the decoder state; pitch and speed locks survive a retune. The decoder follows the **selected slice**, independently of speaker volume or mute: +- **On RTL-SDR**, CW and CWR use the selected slice's independent audio. Speaker gain and mute do not affect decoding. Moving that receiver outside capture suspends decoding until it can receive again. - **On a FlexRadio, assign a DAX RX channel to the selected slice** (1–8). The decoder then reads that slice's audio alone, regardless of speaker gain, mute, or other audible slices. - Without a DAX channel, it uses the shared receive audio, which mixes every audible slice and follows speaker gain and mute. The panel shows **RX: shared audio**; hover it for the explanation. @@ -73,7 +101,7 @@ Turn on **View → Show live CW contacts** to see the station the decoder copies ### MQTT -Decoded text is published to the MQTT topic `aethersdr/cw/decode`, one JSON message per character, with `"rx": false` marking text from the TX decoder. See [MQTT Station Automation](./mqtt-station-automation.md). +Decoded text is published to the MQTT topic `aethersdr/cw/decode`, one JSON message per character, with `"rx": false` marking text from the TX decoder. Received text is published only while ggmorse is the selected decoder. See [MQTT Station Automation](./mqtt-station-automation.md). ### Tips for best results @@ -91,7 +119,8 @@ Decoded text is published to the MQTT topic `aethersdr/cw/decode`, one JSON mess | Control | What it does | |---|---| -| **Stats** | Detected pitch (Hz) and speed (WPM) | +| **Decoder** | ggmorse, DeepFist or DeepCW (Apple Silicon, Linux and Windows); see [Choosing a decoder](#choosing-a-decoder) | +| **Stats** | Detected pitch (Hz) and speed (WPM); with a neural decoder, its status | | **Sens** | 0–100 (default 30). Hides low-confidence characters: 0 shows everything, higher values show only confident decodes. | | **🔒P** | Lock the decoder's pitch at the current value | | **🔒S** | Lock the decoder's speed at the current WPM | @@ -116,7 +145,8 @@ Colors are based on ggmorse's cost function: ### Technical details - Library: [ggmorse](https://github.com/ggerganov/ggmorse) by Georgi Gerganov (MIT license) -- Bundled directly — no external dependency +- Neural decoders: DeepFist ([n9bc/DeepFist](https://github.com/n9bc/DeepFist), downloaded with the pinned upstream release’s GPL-3.0-or-later notice) and DeepCW ([e04/deepcw-engine](https://github.com/e04/deepcw-engine), AGPL-3.0); both run with ONNX Runtime, and their models are downloaded, not bundled +- ggmorse is built in — no external dependency - Runs on a dedicated worker thread — does not block audio playback - CPU usage: negligible diff --git a/docs/user/versioned_docs/version-stable/cwx-panel.md b/docs/user/versioned_docs/version-stable/cwx-panel.md index 4acac5d7f6..343743f748 100644 --- a/docs/user/versioned_docs/version-stable/cwx-panel.md +++ b/docs/user/versioned_docs/version-stable/cwx-panel.md @@ -93,6 +93,8 @@ To watch your own sending, turn on the **TX** decode of the [CW Decoder](./cw-de ### Special characters +On FlexRadio with SmartSDR 4.3 firmware, double quotation marks (`"`) are preserved in **Send**, **Live**, and stored macros, including macros received from the radio. Enter them directly; no escaping is needed. Quotation-mark handling is unverified on earlier firmware. + The legend under the macros lists the special characters: - **Prosigns:** `=` (BT), `+` (AR), `(` (KN), `&` (BK), `$` (SK) diff --git a/docs/user/versioned_docs/version-stable/dax-iq-streaming.md b/docs/user/versioned_docs/version-stable/dax-iq-streaming.md index 471b80ef7c..db1a5f711e 100644 --- a/docs/user/versioned_docs/version-stable/dax-iq-streaming.md +++ b/docs/user/versioned_docs/version-stable/dax-iq-streaming.md @@ -12,7 +12,7 @@ applies_to: ["FlexRadio"] ::: -DAX IQ delivers raw I/Q samples from the radio's digital down-converter to other SDR programs. Regular [DAX Virtual Audio](./dax-virtual-audio.md) carries demodulated audio from a slice; DAX IQ carries the unprocessed complex signal of a **panadapter**, before any mode, filter or AGC. AetherSDR offers **four IQ channels** at 24, 48, 96 or 192 kHz. DAX IQ is a FlexRadio feature. +DAX IQ delivers raw I/Q samples from the radio's digital down-converter to other SDR programs. Regular [DAX Virtual Audio](./dax-virtual-audio.md) carries demodulated audio from a slice; DAX IQ carries the unprocessed complex signal of a **panadapter**, before any mode, filter or AGC. AetherSDR offers **four IQ channels** at 24, 48, 96 or 192 kHz, depending on the radio model. DAX IQ is a FlexRadio feature. Typical uses: @@ -67,16 +67,21 @@ The applet has one row per channel, **IQ 1** to **IQ 4**: | Control | What it does | |---|---| -| Rate | 24k, 48k, 96k or 192k | +| Rate | 24k, 48k, 96k or 192k; unsupported rates remain visible and disabled, with a reason | | **Off / On** | Creates or removes the IQ stream for that channel | | Level meter | Signal level in dBFS over a −70 to −10 dBFS window. Normal signals sit low; a full bar means you are near overload. | -The rate and on/off state of each channel are saved and restored at startup. +The rate and on/off state of each channel are saved and restored at startup. A saved 192k selection uses 96k when connecting to a model limited to 96 kHz. This fallback does not overwrite the saved preference: it returns to 192k on a model that supports it, unless you choose another rate. + +The same rate limits apply when IQ streams are recreated after a profile load. Higher rates use more of the radio's resources and more network bandwidth. ### Limits +- FLEX-6300, FLEX-6400/6400M, FLEX-8400/8400M and AU-510/510M support 24, 48 and 96 kHz. +- FLEX-6500, FLEX-6600/6600M, FLEX-6700/6700R, FLEX-8600/8600M, AU-520/520M, ML-9600/W/X, MLS-9601, CL-9300, CLS-9301 and RT-2122 also support 192 kHz. +- Until a supported model is identified, IQ rate selection and stream creation are unavailable. TCI rate requests follow the same model limits. - The radio reports how many IQ channels it can supply; four is the maximum. - Receivers on the same panadapter share that panadapter's IQ stream, so four independent band views need four panadapters. diff --git a/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md b/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md index e1432cd00d..63c04059fc 100644 --- a/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md +++ b/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md @@ -26,11 +26,35 @@ On a FlexRadio these run on the radio's FPGA — zero CPU cost to your PC (the n The radio-side buttons are on the VFO flag's **DSP** tab: NR, NB, ANF and APF on the first row; NRL, NRS, RNN and NRF on the second. +The **NRL**, **NRS** and **ANFL** amount controls show the radio's reported levels. Profile recalls and changes made by another client update the displayed values. AetherSDR accepts the NRS readback without restoring a previously selected amount over it. + ### NB — Noise Blanker Blanks short impulse noise (ignition interference, switching power supplies). Has an adjustable level (0-100) in the DSP side panel. On the [Hermes-Lite 2](./hermes-lite-2.md) and the [ANAN-G2](./anan-g2.md), AetherSDR runs the noise blanker on the computer, and the NB button cycles **Off → NB → NB2 → Off**; its label shows which blanker is running. NB blanks each impulse to silence. NB2 instead reconstructs the blanked window from the samples either side, which sounds better when the impulse lands on a signal and worse when the noise is dense. While NB2 runs, an **NB2** fill row appears under the DSP buttons: **Zero** (silence, as NB does), **Sample hold**, **Mean hold**, **Hold sample** or **Interpolate**. On other radios the blanker is the radio's own and NB is a plain on/off toggle. +### Resetting radio DSP parameters + +In the slice's **DSP** tab, choose a **Parameters:** target and press **Reset**. +Selecting a target does not send a reset. Reset is unavailable when no valid +target is selected. The radio chooses the defaults and reports the resulting +levels; every algorithm's on/off state stays unchanged. +**All** resets every DSP block's parameters, including NB and APF levels. +It does not reset AetherRX processing or WNB. + +Parameter reset requires FlexRadio SmartSDR **4.3.16 or later**, a connected +slice owned by this client, and a supported receive mode. It is unavailable +in FM modes. ANF, ANFL and ANFT resets are unavailable in CW, RTTY, DIGU, +DIGL and FreeDV modes. Unsupported reset actions remain visible and dimmed; +the Reset button's tooltip explains the reason. + +**All** and **NRS** parameter resets are Basic controls. Individual **NR**, +**ANF**, **NRL**, **ANFL**, **NRF** and **ANFT** resets require the radio to +report Advanced Noise Mitigation entitlement. Retained entitlement works +even when a SmartSDR+ subscription has expired. **NRS** and **NRF** additionally +require a FLEX-8000 or Aurora platform. NRS resets its level only; it has no +advanced parameters. + ### NR — Noise Reduction General-purpose noise reduction. Adjustable level (0-100). Good starting point for noisy bands. @@ -70,6 +94,8 @@ Spectral subtraction estimates and removes broadband noise from each frequency b Spectral subtraction combined with Voice Activity Detection (VAD). Best for SSB/AM voice operation in consistent noise environments. +The **NRS** amount slider ranges from **0 to 50** on SmartSDR **4.3.16 and later**, and **0 to 100** on older firmware. AetherSDR updates the range when the radio identifies its firmware. Unknown firmware uses 0 to 100 until the radio's information reply identifies it. Automatic LAN reconnects retain the selected radio's last known firmware range. Radio-reported levels remain authoritative; a range update does not change the radio's level. If the radio reports a level above the slider's maximum, the numeric readout retains that level; activating the slider's maximum with the mouse or **End** requests the permitted maximum. + *Available on FLEX-8000 (BigBend) and Aurora series only.* ### RNN — Recurrent Neural Network Suppression diff --git a/docs/user/versioned_docs/version-stable/dvk-panel.md b/docs/user/versioned_docs/version-stable/dvk-panel.md index e651a7bc96..b065ac1b53 100644 --- a/docs/user/versioned_docs/version-stable/dvk-panel.md +++ b/docs/user/versioned_docs/version-stable/dvk-panel.md @@ -1,30 +1,39 @@ --- title: "DVK Panel" slug: "/dvk-panel" -description: "The DVK (Digital Voice Keyer) panel enables recording and playback of up to 12 voice messages stored on the radio, commonly used for contesting and repetitive voice operations." +description: "The DVK (Digital Voice Keyer) panel records and plays up to 12 voice messages, stored on the radio or on this computer, commonly used for contesting and repetitive voice operations." status: "Supported" -applies_to: ["FlexRadio"] +applies_to: ["FlexRadio", "Hermes-Lite 2 (local keyer: beta)", "Networked Icom (local keyer: beta)"] --- :::info[Status] -**Status:** Supported · **Applies to:** FlexRadio +**Status:** Supported · **Applies to:** FlexRadio, Hermes-Lite 2 (local keyer: beta), Networked Icom (local keyer: beta) ::: -The DVK (Digital Voice Keyer) panel enables recording and playback of up to 12 voice messages stored on the radio, commonly used for contesting and repetitive voice operations. DVK is a FlexRadio feature and requires the radio's SmartSDR+ subscription. +The DVK (Digital Voice Keyer) panel records and plays up to 12 voice messages, commonly used for contesting and repetitive voice operations. The messages are kept in one of two places: + +- **Radio DVK** — on the radio, using the FlexRadio's own voice keyer. It requires the radio's SmartSDR+ subscription. +- **Local** — on this computer, recorded from the PC microphone and played through AetherSDR's transmit audio. It needs no subscription, works with any radio AetherSDR can transmit on, and the recordings go with you from radio to radio. + +The panel, its buttons and the F1–F12 keys work the same way with either keyer. + +The local keyer is verified on FlexRadio. On the Hermes-Lite 2 and Networked Icom radios it is **Beta**: it is expected to work, has not yet been tested on the air there, and the panel title says **Beta** while one of those radios is connected. Reports from those radios are welcome on [GitHub](https://github.com/aethersdr/AetherSDR/issues). ## Requirements -- **Radio:** a FlexRadio Aurora, FLEX-8000 series or FLEX-6000 series radio. The DVK indicator is **hidden** on radios that have no radio-side voice keyer, such as the [Hermes-Lite 2](./hermes-lite-2.md) and [Networked Icom](./networked-icom.md) radios, and the panel closes with it. -- **SmartSDR+ subscription:** DVK requires an active SmartSDR+ subscription on the radio. See [SmartSDR+ license](#smartsdr-license). -- **Mode:** DVK plays on the **transmit slice**, so it is available when the TX slice is in a **voice mode** (USB, LSB, AM, SAM, FM, NFM, DFM). The indicator is grayed out in digital and CW modes, and switching to a non-voice mode closes the panel. +- **Mode:** the DVK plays on the **transmit slice**, so it is available when the TX slice is in a **voice mode** (USB, LSB, AM, SAM, FM, NFM, DFM). The indicator is grayed out in digital and CW modes, and switching to a non-voice mode closes the panel. A local message playing when the TX slice leaves voice mode stops at once. +- **Radio DVK:** a FlexRadio Aurora, FLEX-8000 series or FLEX-6000 series radio with an active SmartSDR+ subscription. See [SmartSDR+ license](#smartsdr-license). +- **Local:** a radio AetherSDR can transmit on. Recording uses the PC microphone, so on a FlexRadio the mic source must be **PC**. + +The DVK indicator is hidden only on a radio that can neither transmit nor host a voice keyer, such as an RTL-SDR or an ANAN-G2. ## Using the DVK panel ### Opening DVK -Click the **DVK** indicator in the status bar at the bottom of the screen. The panel opens beside the panadapter. +Click the **DVK** indicator in the status bar at the bottom of the screen. The panel opens beside the panadapter. Its title names the keyer in use, for example **Digital Voice Keyer (Local)**. The DVK panel and the [CWX Panel](./cwx-panel.md) share the same space — opening one closes the other. @@ -32,17 +41,35 @@ The DVK panel and the [CWX Panel](./cwx-panel.md) share the same space — openi *The DVK panel, opened from DVK in the status bar.* +### Choosing where recordings are kept + +Right-click the **DVK** indicator, or choose **Settings → Voice Keyer Source...**. With the indicator focused, the context-menu key or **Shift+F10** opens the same menu. + +- **Automatic by radio licence** — the default. Uses the Radio DVK when the radio has one and has not reported that SmartSDR+ is missing, and Local otherwise. The menu shows which one it chose, for example `(now: Local)`. +- **Radio DVK — recordings on the radio** — grayed out, with the reason, on a radio with no voice keyer or no SmartSDR+. +- **Local — recordings on this computer**. +- **Open Local Recordings Folder** — opens the folder the local recordings are kept in. + +A change made while a recording, playback or preview is running waits for it to end, so STOP and the F-keys keep driving the keyer that started it. The status line says so, for example `On air · slot 1 · 2.6s of 3.0s · Radio keyer when this ends`. + +If the source changes while you are renaming a slot or using its context menu or file dialog, the pending action is canceled. Open it again on the keyer you want to change. + ### Recording 1. Click a slot to select it (the row takes the highlight). -2. Click **● REC** to start recording. The status line reads `Recording · slot 1 · 0.4s of 10.0s`; a slot holds up to 10 seconds. +2. Click **● REC** to start recording. The status line reads `Recording · slot 1 · 0.4s of 10.0s`. A Radio DVK slot holds up to 10 seconds, the radio's own limit; a local slot holds up to 30 seconds, enough for a contest exchange or a longer CQ. 3. Click **■ STOP** to end recording. -4. The radio stores the recording and updates the duration. +4. The recording is stored and the slot shows its duration. + +Recording never transmits. With the local keyer: + +- **VOX is held off while you record.** If VOX is on, AetherSDR turns it off before recording starts — only once the radio has confirmed it — so your voice cannot key the transmitter, and turns it back on afterwards. If you have just turned VOX off yourself and the radio has not confirmed it yet, recording asks the radio again and starts once it answers; VOX stays off afterwards. The status line shows `· VOX held off` meanwhile. If you change VOX yourself during the recording, your setting is kept, and turning VOX on stops the recording without saving it. On a radio with no VOX that AetherSDR controls, such as the Hermes-Lite 2, there is nothing to hold. +- **STOP works while recording is starting.** Pressing STOP before the radio has confirmed VOX is off cancels the recording. ### Playback (on-air) - Click **▶ PLAY** or press the **F-key button** to transmit the recording. -- The radio keys TX automatically during playback. +- The radio keys TX automatically during playback and unkeys at the end. - PLAY, the playing slot's F-key and its progress bar take the MOX (transmit) colors, and the bar fills in proportion to elapsed/total time. - The status line reads `On air · slot 3 · 0.4s of 4.2s`. @@ -59,11 +86,11 @@ Only one operation runs at a time. STOP is enabled only while something is runni Right-click any slot row to access: - **Rename…** — inline text editor (also available via double-click on name). A name holds up to 61 UTF-8 bytes; quotes and `|` are removed. Enter saves, Escape cancels. -- **Clear** — erase the recording (grayed out for empty slots and while the DVK is busy). The radio decides whether the slot keeps its name. -- **Import WAV…** — upload a WAV file to this slot (see [WAV file requirements](#wav-file-requirements)) -- **Export WAV…** — download the recording as a WAV file (grayed out for empty slots) +- **Clear** — erase the recording (grayed out for empty slots and while the DVK is busy). The Radio DVK decides whether the slot keeps its name. +- **Import WAV…** — load a WAV file into this slot (see [WAV file requirements](#wav-file-requirements)) +- **Export WAV…** — save the recording as a WAV file (grayed out for empty slots) -If an import or export fails, the destination is left intact — a failed export never leaves a half-written file over an existing one. After an import, **Import WAV…** and **Export WAV…** stay grayed out for about 3 seconds while the radio's file server finishes. +If an import or export fails, the destination is left intact — a failed export never leaves a half-written file over an existing one. With the Radio DVK, **Import WAV…** and **Export WAV…** stay grayed out for about 3 seconds after an import while the radio's file server finishes. ## Reference @@ -89,16 +116,26 @@ Screen readers announce each slot as, for example, "Slot 3: CQ Contest, 4.2s", a F1–F12 follow the transmit slice's mode: in voice modes they play DVK recordings, in CW they send CWX macros (see [CWX Panel](./cwx-panel.md)), and only one of the two responds. +### Local recordings folder + +Local recordings are kept in `Documents/AetherSDR/VoiceKeyer`, one file per slot, named `slot-01.wav` to `slot-12.wav`. On Windows, when the Documents folder is redirected to OneDrive, the folder is inside OneDrive and the recordings sync with it. + +A WAV file copied into the folder under a slot's name appears in that slot the next time you choose **Local** in the keyer menu. It is checked when it plays, so a file longer than 30 seconds is refused then. + ### WAV file requirements -The DVK plays audio at 24 kHz mono. **Import WAV…** converts the file for you, so most WAV files import as they are: +**Import WAV…** converts the file for you, so most WAV files import as they are. The two keyers accept slightly different files: -- **Encoding:** PCM 8, 16, 24 or 32-bit, or 32-bit float (plain or WAVE_FORMAT_EXTENSIBLE) -- **Channels:** 1 to 8, mixed down to mono -- **Sample rate:** 8 kHz to 384 kHz, resampled to 24 kHz -- **Length:** at most 10 seconds +| | Radio DVK | Local | +|---|---|---| +| **Encoding** | PCM 8, 16, 24 or 32-bit, or 32-bit float | PCM 8, 16, 24 or 32-bit, or 32 or 64-bit float | +| **Header** | plain or WAVE_FORMAT_EXTENSIBLE | plain or WAVE_FORMAT_EXTENSIBLE | +| **Channels** | 1 to 8, mixed down to mono | 1 to 8, mixed down to mono | +| **Sample rate** | 8 kHz to 384 kHz | 8 kHz to 192 kHz | +| **Length** | at most 10 seconds | at most 30 seconds | +| **File size** | — | at most 100 MB | -The file is sent to the radio as 24 kHz mono 16-bit PCM. Files that can't be converted are rejected with a specific error message, such as `Recording is 12.0 s long; a DVK slot holds at most 10 s`. +Every file is resampled to 24 kHz. The Radio DVK receives it as 24 kHz mono 16-bit PCM; a local slot stores it as 24 kHz 16-bit PCM. Files that can't be converted are rejected with a specific error message, such as `Recording is 12.0 s long; a DVK slot holds at most 10 s`. ### Status bar indicator @@ -106,35 +143,59 @@ The DVK label in the status bar has three visual states: - **Bright cyan** — panel is open - **Dim white** — available (voice mode), click to open -- **Dark gray** — unavailable (not in a voice mode, or not licensed) +- **Dark gray** — unavailable (not in a voice mode, or the Radio DVK is not licensed) The indicator can also be reached with the keyboard: Tab to it and press Enter. ### SmartSDR+ license -When the radio reports that the feature is not licensed, or refuses a DVK command or transfer with the SmartSDR+ error, the **DVK indicator itself is disabled** — grayed out with an arrow cursor and the tooltip "Digital Voice Keyer — requires an active SmartSDR+ subscription". The F1–F12 shortcuts and any open panel are gated the same way, and the panel status reads `Disabled · SmartSDR+ required`. +When the Radio DVK is in use and the radio reports that the feature is not licensed, or refuses a DVK command or transfer with the SmartSDR+ error, the **DVK indicator itself is disabled** — grayed out with an arrow cursor and the tooltip "Digital Voice Keyer — requires an active SmartSDR+ subscription". The F1–F12 shortcuts and any open panel are gated the same way, and the panel status reads `Disabled · SmartSDR+ required`. With **Automatic by radio licence** selected, the same report switches the panel to the local keyer instead. -AetherSDR only applies this once the radio positively says no; if the radio never reports the license, DVK stays available. If the radio later reports the license as enabled, for example after a subscription is activated mid-session, DVK becomes available again without reconnecting. +AetherSDR only applies this once the radio positively says no; if the radio never reports the license, the Radio DVK stays available. If the radio later reports the license as enabled, for example after a subscription is activated mid-session, the Radio DVK becomes available again without reconnecting. ## Troubleshooting ### The DVK indicator is grayed out -The transmit slice is not in a voice mode, or the radio reports no SmartSDR+ license. +The transmit slice is not in a voice mode; or **Radio DVK** is selected and the radio reports no SmartSDR+ license, or has no voice keyer of its own (a Hermes-Lite 2 or Networked Icom radio). 1. Switch the TX slice to a voice mode (USB, LSB, AM, SAM, FM, NFM or DFM). -2. Hover the indicator. If the tooltip says it requires an active SmartSDR+ subscription, renew SmartSDR+ on the radio. +2. Hover the indicator. If the tooltip says it requires an active SmartSDR+ subscription, renew SmartSDR+ on the radio, or right-click the indicator and choose **Local — recordings on this computer**. +3. On a radio with no voice keyer of its own, right-click the indicator, or choose **Settings → Voice Keyer Source...**, and pick **Local — recordings on this computer** or **Automatic by radio licence**. + +### REC says to set the mic source to PC + +The local keyer records the PC microphone, and the radio is taking its transmit audio from one of its own inputs. + +1. Set **Mic source** to **PC** in the P/CW applet (see [TX Controls](./tx-controls.md)). +2. Click **● REC** again. + +### Recording does not start: the radio did not confirm VOX is off + +VOX is on, and the radio did not confirm that it had turned VOX off for the recording. Some radios never confirm it. + +1. Turn VOX off yourself. +2. Click **● REC** again. +3. Turn VOX back on when you have finished recording. + +### A local recording is empty or says no microphone audio arrived + +The PC microphone is not capturing. + +1. Check the microphone in [Audio Settings](./audio-settings.md). +2. Make sure your operating system allows AetherSDR to use the microphone. +3. Record again. ### The DVK indicator is missing -The radio has no radio-side voice keyer, as on the [Hermes-Lite 2](./hermes-lite-2.md) and [Networked Icom](./networked-icom.md) radios. DVK is not available there. +The radio can neither transmit nor host a voice keyer, as with an [RTL-SDR](./rtl-sdr.md) or an [ANAN-G2](./anan-g2.md). DVK is not available there. ### A WAV import is rejected -The file can't be converted, is longer than 10 seconds, or the radio is busy. +The file can't be converted, is too long for the keyer in use, or the radio is busy. 1. Read the message in the panel's status line. -2. If it says the file is too long, trim it to 10 seconds or less. +2. If it says the file is too long, trim it to 10 seconds or less for the Radio DVK, or 30 seconds for Local. 3. If it names an unsupported encoding, save the file as PCM or 32-bit float WAV. 4. If it says the voice keyer or file server is busy, stop the running operation, wait a few seconds and try again. 5. Import it again with **Import WAV…**. diff --git a/docs/user/versioned_docs/version-stable/firmware-update.md b/docs/user/versioned_docs/version-stable/firmware-update.md index 1d18f80d54..c48ad2e56e 100644 --- a/docs/user/versioned_docs/version-stable/firmware-update.md +++ b/docs/user/versioned_docs/version-stable/firmware-update.md @@ -48,6 +48,23 @@ AetherSDR does not download the installer for you. - an already extracted **`.ssdr`** firmware file. 3. AetherSDR extracts the firmware for your radio's model family and shows its progress. When staging finishes, **Upload Firmware** becomes available. +For an **`.msi`** installer, AetherSDR identifies the firmware by the installer's +recorded filename and cabinet metadata. It checks that the extracted file's size +matches that record. A missing or ambiguous firmware entry stops staging. +The staged file keeps the installer's firmware filename, including its build +number when present; the upload confirmation and log use that same name. +The firmware log records the staged filename, byte count, and MD5 for diagnostics. +For FLEX-8000 and Aurora radios, a note below the staged filename explains: +"FLEX-8000 and Aurora radios use FLEX-9600 firmware." +An already extracted **`.ssdr`** file whose name identifies the other firmware +family is rejected instead of being renamed for your radio. +Manually selected **`.ssdr`** files keep their original filename. If the name +contains no version, the staged version is reported as `unknown`. + +Delete firmware files staged by earlier AetherSDR versions and select the +original installer again. Those cached **`.ssdr`** files can contain firmware +for a different family despite their filename; renaming them cannot fix it. + ### Upload 1. Click **Upload Firmware**. @@ -74,10 +91,18 @@ Closing Radio Setup during an upload asks for confirmation first. Closing it sto | File | Models | |------|--------| -| `FLEX-6x00_vX.Y.Z.ssdr` | All consumer radios (6000, 8000, Aurora series) | -| `FLEX-9600_vX.Y.Z.ssdr` | Government only (FLEX-9600 / DragonFire) | +| `FLEX-6x00_vX.Y.Z[.build].ssdr` | FLEX-6000 series (Microburst and DeepEddy) | +| `FLEX-9600_vX.Y.Z[.build].ssdr` | FLEX-8000 and Aurora series (BigBend), in SmartSDR 4.2/4.3 MSI installers | + +The MSI's `FLEX-9600` filename also identifies the firmware used by FLEX-8000 +and Aurora radios. Choose firmware for the radio's hardware platform; neither +file size nor a renamed filename establishes compatibility. FlexRadio's +[update instructions](https://helpdesk.flexradio.com/hc/en-us/articles/50209943129371-Upgrading-your-FLEX-6000-8000-Aurora-Radio-using-SmartSDR-for-Mac) +distinguish FLEX-6000 and FLEX-8000 firmware. -All consumer FlexRadios (Microburst, DeepEddy, BigBend, Aurora platforms) use the same `FLEX-6x00` firmware. +Automatic staging stops for an unknown model or an unverified firmware family, +including RT-2122 (DragonFire). For commercial radios, obtain the appropriate +software from FlexRadio; its public SmartSDR download is for amateur models. ### Firmware compatibility @@ -89,6 +114,18 @@ The active test target is FLEX-8600 firmware 4.2.18 (SmartSDR protocol v1.4.0.0) ## Troubleshooting +### The installer cannot be staged + +The installer may be incomplete, use unsupported metadata, or lack an unambiguous +firmware entry for your radio. + +1. Download the original SmartSDR installer from FlexRadio again. +2. Select the installer with **Select Installer...**. +3. If staging still fails, use SmartSDR for Windows to extract the appropriate + **`.ssdr`** file and select that file instead. In SmartSDR 4.2/4.3 MSI + installers, FLEX-6000 radios use **`FLEX-6x00`**, while FLEX-8000 and Aurora + radios use **`FLEX-9600`**. Renaming a file does not change its compatibility. + ### The Firmware Update group is missing You are connected to a radio that is not a FlexRadio, so the group is hidden. diff --git a/docs/user/versioned_docs/version-stable/first-connection.md b/docs/user/versioned_docs/version-stable/first-connection.md index d22b5c08dc..fd74335295 100644 --- a/docs/user/versioned_docs/version-stable/first-connection.md +++ b/docs/user/versioned_docs/version-stable/first-connection.md @@ -32,6 +32,8 @@ This page walks through connecting to a FlexRadio for the first time. AetherSDR The window has no title bar. It opens above the status bar; drag any empty part of it to move it, and drag an edge or corner to resize it. Close it with the round **✕** in the top-right corner, **Esc** or **Ctrl+W** (**⌘W** on macOS). **View → Frameless Window** does not apply to it, and pressing **Return** in a field (an IP address, a SmartLink password) does only what that field does. +The window automatically fits its height to the available screen space, including room for a horizontal scrollbar when the contents are wider than the window. On a smaller screen, scroll the body to reach its controls; the connection status and **Disconnect** button remain below it. + 1. **Launch AetherSDR.** The **Connect to Radio** window opens. You can reopen it at any time with **File → Connect to Radio...**, or from the **+** button beside the title bar's radio tabs. 2. Choose **On This Network** ("Recommended for new users when the radio and computer are on the same LAN"). 3. Your radio appears under **Available radios** within a few seconds. diff --git a/docs/user/versioned_docs/version-stable/flexcontrol-tuning-knob.md b/docs/user/versioned_docs/version-stable/flexcontrol-tuning-knob.md index 4276b215d8..163e4291a0 100644 --- a/docs/user/versioned_docs/version-stable/flexcontrol-tuning-knob.md +++ b/docs/user/versioned_docs/version-stable/flexcontrol-tuning-knob.md @@ -19,7 +19,7 @@ The FlexControl is a USB serial device (VID `0x2192`, PID `0x0010`) running at 9 ## Setup -Open **Settings → Radio Setup... → Serial & Controllers** and find the **FlexControl Tuning Knob** group. Shortcuts straight to it: **Settings → FlexControl Knob & Buttons...**, or the **Settings…** button in the AetherControl window. +Open **Settings → Radio Setup... → Serial & Controllers** and find the **FlexControl Tuning Knob** group. Shortcuts straight to it: **Settings → Controllers → FlexControl Knob & Buttons...**, or the **Settings…** button in the AetherControl window. | Control | What it does | |---------|--------------| @@ -45,9 +45,11 @@ Actions whose name starts with **Wheel** do not fire once: they change what the ## Using AetherControl (virtual FlexControl) -**Settings → AetherControl...** opens **AetherControl**, a "Virtual Tuning Controller" window laid out like the FlexControl. It shares its button assignments with the physical knob and mirrors it when one is connected. +**Settings → Controllers → AetherControl...** opens **AetherControl**, an on-screen tuning controller laid out like the FlexControl. It shares its button assignments with the physical knob and mirrors it when one is connected. -AetherControl window headed Virtual Tuning Controller, with Detect, Settings… and Compact buttons. MODE, ON/OFF and TOGGLE indicators sit above three buttons Aux1, Aux2 and Aux3, with their Single Tap actions Step Up, MOX and Toggle Mute and Double Tap actions Step Down, Toggle Tune and Toggle Lock. A large tuning knob fills the bottom. +The window has no title bar. Drag any empty part of it to move it, and drag an edge or corner to resize it; it reopens at the size and place you left it. Close it with the round **✕** in the top-right corner, **Esc** or **Ctrl+W** (**⌘W** on macOS); while the knob has the mouse captured, **Esc** releases it instead. It's a window of its own, with its own taskbar entry, so you can minimize it from the taskbar or park it on another monitor. **View → Frameless Window** does not apply to it. + +AetherControl window with Detect, Settings… and Compact buttons under its header. MODE, ON/OFF and TOGGLE indicators sit above three buttons Aux1, Aux2 and Aux3, with their Single Tap actions Step Up, MOX and Toggle Mute and Double Tap actions Step Down, Toggle Tune and Toggle Lock. A large tuning knob fills the bottom. *AetherControl, the on-screen FlexControl knob.* diff --git a/docs/user/versioned_docs/version-stable/generated/flexcontrol-actions.md b/docs/user/versioned_docs/version-stable/generated/flexcontrol-actions.md index 9a9d0c4342..7c04be949c 100644 --- a/docs/user/versioned_docs/version-stable/generated/flexcontrol-actions.md +++ b/docs/user/versioned_docs/version-stable/generated/flexcontrol-actions.md @@ -13,7 +13,7 @@ This page is generated from `src/gui/FlexControlDialog.cpp` by `tools/docs/gen_r ::: -The FlexControl knob's three Aux buttons can each run one action on a single tap and another on a double tap. Set them in **Settings → FlexControl Knob & Buttons...**. +The FlexControl knob's three Aux buttons can each run one action on a single tap and another on a double tap. Set them in **Settings → Controllers → FlexControl Knob & Buttons...**. ## Default button actions diff --git a/docs/user/versioned_docs/version-stable/generated/log-categories.md b/docs/user/versioned_docs/version-stable/generated/log-categories.md index a6f615f54d..8aabd525f8 100644 --- a/docs/user/versioned_docs/version-stable/generated/log-categories.md +++ b/docs/user/versioned_docs/version-stable/generated/log-categories.md @@ -32,6 +32,7 @@ These are the logging categories listed in **Help → Support & Diagnostics...** | Transmit | `aether.transmit` | TX state, ATU, profiles, power control | | Firmware | `aether.firmware` | Firmware download, staging, upload | | Tuner/AGM | `aether.tuner` | TGXL tuner, Antenna Genius state | +| KAT500 Tuner | `aether.kat500` | Independent tuner connection, confirmed readbacks, configuration and maintenance diagnostics | | Peripheral Authorization | `aether.peripheral.auth` | Credential store availability and save failures; code values are never logged | | GUI | `aether.gui` | Window, applets, dialogs | | DX Cluster | `aether.dxcluster` | DX cluster telnet connection and spot parsing | diff --git a/docs/user/versioned_docs/version-stable/generated/midi-actions.md b/docs/user/versioned_docs/version-stable/generated/midi-actions.md index 278b05690f..9ceeeeab19 100644 --- a/docs/user/versioned_docs/version-stable/generated/midi-actions.md +++ b/docs/user/versioned_docs/version-stable/generated/midi-actions.md @@ -13,7 +13,7 @@ This page is generated from `src/gui/MainWindow_Controllers.cpp`, `src/gui/MainW ::: -These are the controls you can map to a MIDI controller in **Settings → MIDI Mapping...**. The same list feeds the Ulanzi Dial button menus. +These are the controls you can map to a MIDI controller in **Settings → Controllers → MIDI Mapping...**. The same list feeds the Ulanzi Dial button menus. - **Slider**: a continuous control (knob, fader, pitch bend), scaled to the range shown. - **Toggle**: on/off. A CC above 63 is on; a note toggles. diff --git a/docs/user/versioned_docs/version-stable/generated/ulanzi-dial-actions.md b/docs/user/versioned_docs/version-stable/generated/ulanzi-dial-actions.md index 137f8f004e..757c534dee 100644 --- a/docs/user/versioned_docs/version-stable/generated/ulanzi-dial-actions.md +++ b/docs/user/versioned_docs/version-stable/generated/ulanzi-dial-actions.md @@ -13,7 +13,7 @@ This page is generated from `src/gui/UlanziDialMapperDialog.cpp`, `src/core/Ulan ::: -Set the Ulanzi Dial up in **Settings → Ulanzi Dial Mapping...**. +Set the Ulanzi Dial up in **Settings → Controllers → Ulanzi Dial Mapping...**. - The **wheel** runs one of the actions below. - Each **button** can run any action from [Default Keyboard Shortcuts](./default-shortcuts.md), or any Toggle, Trigger or Gate control from [MIDI Controller Actions](./midi-actions.md). diff --git a/docs/user/versioned_docs/version-stable/hermes-lite-2.md b/docs/user/versioned_docs/version-stable/hermes-lite-2.md index e82bef4bb9..918d57f028 100644 --- a/docs/user/versioned_docs/version-stable/hermes-lite-2.md +++ b/docs/user/versioned_docs/version-stable/hermes-lite-2.md @@ -58,7 +58,7 @@ The HL2 IO board's amplifier control follows the band. 1. Let the radio warm up for 15 minutes. 2. Pick a **Reference:** (WWV/WWVH 2.5–25 MHz, CHU 3.330 / 7.850 / 14.670 MHz, or **GPSDO / signal generator (custom)** with its frequency). Attenuate a GPSDO by at least 30 dB. -3. Zero-beat the reference with normal tuning, then click **Calibrate from current VFO**. +3. Zero-beat the reference with normal tuning, then click **Calibrate from Current VFO**. 4. Fine-tune with **Trim:** − / + (steps of 0.1, 1 or 10 Hz at 10 MHz), or type the **Error:** in ppb (±50,000 ppb). **Reset** returns to 0. One value corrects every band, receive and transmit. It is stored per radio (by MAC), so a second HL2 does not inherit it. While **External 10 MHz reference at CL1** is on, the manual calibration is zeroed and disabled. @@ -128,12 +128,16 @@ RIT and XIT work per receiver, ±9999 Hz. When transmit passes to another receiv - **SSB voice** uses WDSP's TXA modulator. The EQ, PROC, TX low/high cut, eSSB, ALC and compression gauges act on the HL2. - **The Mic Level slider is the transmit level.** The ALC only ever reduces. The Phone panel shows the **ALC Gain** the radio reports. +- **The ALC gauge shows the audio peak after the ALC, before the modulator.** It sits at the ALC target while the ALC is reducing. It is not the transmitted envelope, which can stand above it when the audio is limited or compressed. - **Data:** WSJT-X and similar programs work over the [TCI Server](./tci-server.md). Their power slider changes RF output, and the speech ALC does not raise client audio. The WSPR beacon defaults to −3 dBFS and is not moved by the mic slider. - **CW** is keyed with host-timed edges, with sidetone, at the same carrier level as TUNE. CW settings are restored after a restart. +- **A key or PTT on the radio's own jack** shows as transmit and mutes the receiver for as long as the radio reports it. AetherSDR does not key or modulate because of it. - **TUNE** keys at **Tune Power**, and moving Tune Power during a tune changes the carrier. Tune Power is remembered per band. +- **Show TX in Waterfall:** **Settings → Radio Setup... → Transmit → Show TX in Waterfall** lets the waterfall draw spectrum rows over the TX passband while transmitting. It starts off, and AetherSDR remembers your choice separately for each HL2 across reconnects and restarts. The control does not key the radio. - **Max Power:** **Settings → Radio Setup... → Transmit → Max Power** shows the HL2's rated watts, read-only. The power gauge uses a 5 W scale, and forward power reads near PEP on speech. - **RF power slider:** the radio has 16 drive steps, so several slider positions do nothing and then one position adds about 1.25 dB. -- **Modes that refuse to transmit:** AM, SAM, DSB, FM, NFM, WBFM and DRM refuse MOX and TUNE, because the HL2 modulator is SSB only. A mode the HL2 cannot demodulate is refused everywhere. +- **AM, DSB and FM** transmit through the same TXA modulator as SSB. FM is simplex and carries no CTCSS tone. +- **Modes that refuse to transmit:** SAM, WBFM and DRM refuse MOX and TUNE. SAM is a receive detector choice; wide FM has no transmit modulator, and DRM has no encoder. A mode the HL2 cannot demodulate is refused everywhere. - **TX drive and LNA gain** are remembered per band. > **Upgrading from an older version:** CW keys at the same carrier level as TUNE, about 6 dB (four times the power) above earlier versions at the same RF power setting. Check your RF power before you key CW into an amplifier or a low-power load. @@ -159,8 +163,7 @@ RIT and XIT work per receiver, ±9999 Hz. When transmit passes to another receiv ## Known issues -- Graphic EQ band values are lost when you restart AetherSDR ([#5611](https://github.com/aethersdr/AetherSDR/issues/5611)). -- Keying with the HL2's hardware PTT jack does not show as transmit in AetherSDR, and does not carry host audio ([#5998](https://github.com/aethersdr/AetherSDR/issues/5998)). +- Keying with the HL2's hardware PTT jack shows as transmit in AetherSDR and mutes the receiver, but does not carry host audio: only the radio is keyed, and AetherSDR sends no modulation ([#5998](https://github.com/aethersdr/AetherSDR/issues/5998)). - Each over starts with about 100 ms of keyed silence before your audio is transmitted ([#6052](https://github.com/aethersdr/AetherSDR/issues/6052)). - Changing CW break-in or its delay shows a "nothing was sent to the radio" notice, although both settings take effect ([#6153](https://github.com/aethersdr/AetherSDR/issues/6153)). @@ -195,9 +198,9 @@ The receivers share one sample rate, and only one pane controls it. ### MOX or TUNE is refused -The HL2 modulator is SSB only, so AM, SAM, DSB, FM, NFM, WBFM and DRM refuse to transmit. +SAM is receive-only. WBFM has no transmit modulator, and DRM has no encoder, so those modes also refuse to transmit. -1. Switch the slice to USB, LSB, CW or a data mode before keying. +1. Switch the slice to USB, LSB, AM, DSB, FM, CW or a data mode before keying. ### The Calibration controls are disabled diff --git a/docs/user/versioned_docs/version-stable/index.md b/docs/user/versioned_docs/version-stable/index.md index c29d184650..ae8c7458c9 100644 --- a/docs/user/versioned_docs/version-stable/index.md +++ b/docs/user/versioned_docs/version-stable/index.md @@ -112,7 +112,7 @@ Prefer paper? Download the [printable manual](pathname:///AetherSDR-Manual.pdf) - [Ulanzi Dial](./ulanzi-dial.md) — Ulanzi Dial knob and keys: wheel actions, key mapping, PTT and CW keying - [USB Control Surfaces](./usb-control-surfaces.md) — RC-28, PowerMate, Contour Shuttle, Stream Deck+ and serial PTT/CW interfaces - [MIDI Controller Mapping](./midi-controller-mapping.md) — Map any MIDI controller, with Learn mode and profile import/export -- [CTR2 Proxy](./ctr2-proxy.md) — Relay a CTR2-Max controller to the radio over Wi-Fi (USB pending CTR2 firmware) +- [CTR2 Proxy](./ctr2-proxy.md) — Relay a CTR2-Max controller to the radio over Wi-Fi or USB, and install AetherCTR2 on it ## Remote Operation diff --git a/docs/user/versioned_docs/version-stable/kat500-tuner-control.md b/docs/user/versioned_docs/version-stable/kat500-tuner-control.md new file mode 100644 index 0000000000..e6906c88be --- /dev/null +++ b/docs/user/versioned_docs/version-stable/kat500-tuner-control.md @@ -0,0 +1,143 @@ +--- +title: "KAT500 Tuner Control" +slug: "/kat500-tuner-control" +description: "Connect an Elecraft KAT500 and use its operating, configuration, backup and memory controls." +status: "Experimental" +applies_to: ["All radios"] +platforms: ["Linux", "macOS", "Windows"] +--- + +:::info[Status] + +**Status:** Experimental · **Applies to:** All radios · **Platforms:** Linux, macOS, Windows + +::: + +The **KT500** applet controls an independently connected Elecraft KAT500 tuner. Its values come from tuner readbacks. Connecting or opening the applet does not send Tune, key a radio, or recall stored client-side tuner settings. + +## Requirements + +Use a local USB serial port or a raw TCP serial bridge such as ser2net or aether-serial-bridge. Only one application can own the tuner connection. Configuration, EEPROM and memory tools support the verified firmware **02.16** schema; other firmware shows an availability reason. Firmware updating uses Elecraft's official Utility. + +## Setup + +1. Open **Settings → Radio Setup... → Peripherals → Elecraft KAT500**. +2. Select **Serial** and the tuner port/baud (4800, 9600, 19200 or 38400), or **Network** and the raw TCP host/port. The network bridge owns baud and 8N1 line settings. Telnet/RFC 2217 and Elecraft Remote authentication are not supported. +3. Click **Connect**. **Auto-connect** reconnects using the saved client connection preferences when enabled. +4. The **KT500** button appears after KAT500 identification. It remains available during logical power-off or stale replies and disappears when the transport closes. + +For **Network**, enter a hostname or IP address without a URL scheme, path, spaces or control characters, and a port from 1 to 65535. Invalid entries are rejected before connecting. + +## Using the applet + +**ON/OFF** shows confirmed power. Click it to request the opposite state; the label changes after readback. Silence is stale, not OFF. **Tune** requests tuner search only after your explicit click; supply RF according to the Elecraft manual. **Cancel** requests cancellation while the tuner reports an active search. AetherSDR does not generate a radio carrier for these controls. + +**Auto**, **Manual** and **Bypass** select the tuner mode. **ANT 1**, **ANT 2** and **ANT 3** remain visible. The applet automatically reads antenna availability for the confirmed band after connecting and when a new band is reported. Buttons become available after those replies; antennas disabled in the tuner configuration remain dimmed with a reason. Confirmed mode and antenna selections remain visible with dimmed text while actions are unavailable. **Clear fault** clears the current fault, not stored fault history. + +The main buttons have hover help describing their actions. When a control is unavailable, its tooltip also explains why. + +**Bypass mode and BYP ON are different:** + +- **Bypass** selects the operating mode that bypasses the matching network and disables tuning. +- **BYP ON** means the physical bypass relays are bypassing the matching network. Clicking the pill changes those relays without changing the operating mode. Recall or tuning in Auto/Manual can engage the network again. +- **Auto + BYP ON** can be normal: a tune can find that the antenna is already well matched and save bypass as the best setting. + +**Mini** is about half the height of Full. It keeps **ON/OFF**, **Tune/Cancel** and **Full**, with readouts for mode, antenna, frequency/band, SWR and fault/readiness. Switch to **Full** to change mode or antenna, clear faults, view the physical-state pills, or open a drawer. The normal docked view uses compact 22 px buttons without scrolling. Expanded drawers and short popped-out windows scroll when needed. **BYP** and **ATT** show physical bypass and attenuator state. Click either pill to request the opposite state. **KEY PASS** means the KAT500 key-line relay is connected; click to block amplifier keying. **KEY BLOCK** means it is interrupted; click to allow keying. These three pills are toggles: they retain confirmed state until the tuner replies and are unavailable during RF, tuning, maintenance or missing readback. Hover over each for its full function, current state and next action. This affects the amplifier only if its key line passes through the tuner, and does not indicate amplifier transmission; READY, WAIT, TUNING, OFF or STALE describes availability. In Mini, the middle pill combines mode, selected antenna and availability. **READY** means the tuner can accept an operating request; it does not indicate a tuned match. The pill is yellow when Bypass mode or physical bypass is active. Hover over a pill for its full description. + +The single **SWR** meter shows adjusted SWR. Press and hold its pill with the mouse to preview the last bypass SWR in the same meter; the pill becomes yellow and reads **BYP**. Release to return to adjusted SWR. This is a display-only comparison: it does not switch the tuner into bypass. Readings remain after RF stops; the tooltip identifies adjusted SWR without a fresh RF indication, and bypass preview always shows the last observed reading. **—** means no reading is available. The meter uses the TX Controls scale: 1–3, amber from 2 and red from 2.5, with labeled major ticks every 0.5 and minor ticks every 0.1. The pill still shows the exact reading above 3. + +Expand **Manual** for C/L totals and eight relay checkboxes each. Checkbox labels show component values, largest first: capacitance in pF and inductance in nH, matching the Elecraft Utility. Numeric **Set** maps to the largest available relay combination at or below the entered value. These requests can change the signal path. **Match frequency**, in kHz, starts at the confirmed tuner frequency and selects the frequency used by **Recall** and **Memorize**. Once you edit it, status refreshes preserve your choice. Both actions require 1800–54000 kHz, matching the [KAT500 operating range](https://elecraft.com/products/kat500-high-power-autotuner); an unknown or unsupported frequency sends no command. Recall retrieves the stored match; Memorize stores and verifies a match for that frequency. **Full tune without saving** requests FTNS explicitly. + +**History** plots last-observed SWR and forward/reflected ADC counts for five minutes. Each graph includes a trace legend, latest value, vertical scale and time labels; gaps mean missing replies. ADC counts are not watts. SWR can describe an earlier physical RF measurement. The graphs grow and shrink with the popout; smaller windows scroll when the expanded controls no longer fit. + +**Settings → Signal path** contains **Capacitor on antenna side**; checked places the capacitor on the antenna side. The **BYP**, **ATT** and **KEY** controls are directly available as pills in Full view. **BYP** operates only the matching-network bypass relays and leaves Auto/Manual mode unchanged; recall or tuning can engage the network again. Use the main **Bypass** mode button to disable tuning. All signal-path controls require confirmed readback and the same fresh, idle, no-RF conditions as Manual. + +Settings also shows identity, installed firmware, serial, DIRECT/NETWORK endpoint, baud where applicable, freshness, availability explanations and the last operation result. **Last observed** exposes the tuner readings: + +| Reading | Meaning | +|---|---| +| ATU selection (F) | Frequency used to select a stored match; also shown in the applet header | +| XCVR / CAT (FX) | Last frequency received by the tuner through CAT or Elecraft AUXBUS | +| RF counter (FC) | Last measured RF frequency, in 8 kHz steps | +| ATU bin (FY) | Frequency range covered by the selected tuning-memory bin | +| Adjusted / bypass SWR | Last readings with the selected match and with the matching network bypassed | + +F, FX and FC are displayed in kHz; FY is a range in kHz. They can remain after RF stops. A raw zero frequency is not a usable frequency; **—** means no reply has been received. Milliseconds since the SWR reply measure communication freshness, not the age of the physical RF measurement. + +**Debug** offers normal state/errors or **Verbose** wire and wake traffic, with copy, atomic save, clear and paused display. New entries stay in view when scrolled to the bottom. Scroll up to inspect older entries without jumping, or pause the display; resuming catches up to the newest entry. Debug TX means serial writes, not RF. Drawer triangles point down when expanded and right when collapsed. + +**Follow TX frequency** defaults off. Enabling it follows the effective TX slice frequency, including XIT and split offsets. When eligibility returns, a frequency change that has not yet been attempted can proceed. A failed or canceled request is not retried for the same frequency; change the effective TX frequency or switch Follow off and on to authorize a fresh attempt. It does not key a radio. The applet’s own **Tune** button remains a tuner-only request. + +### Dedicated tuner controls and pre-tune + +**TX Controls** always operates the radio's internal ATU and memories. Connecting a KAT500 or changing its mode does not replace ATU/MEM or bypass the radio tuner. Use this applet for external tuning and **Manual → Memorize** for saving a match. + +Open **Settings → Pre-tune bands…** for a KAT500 Step/Auto sweep using its memory-bin spacing and the active band plan. Opening the window sends no radio or tuner command. Starting a sweep explicitly authorizes a carrier at the existing radio **Tune Pwr**; it first confirms internal ATU bypass, selects the TX frequency, and waits for the KAT500 search request before starting RF. Abort, timeout, lost connection or changed authorization stops the carrier. The sweep restores the original frequency and never falls back to the radio's internal tuner. A new sweep requires a new operator action. + +When **KEY BLOCK** is confirmed, the shared **VU** and **PWR** meters use radio watts and the radio scale instead of KPA500 output. A radio-integrated amplifier keeps its existing meter priority. The KPA500 applet still shows amplifier readback; **TX Controls** retains radio measurements and scale throughout. + +## Using Advanced + +Open **Peripherals → Elecraft KAT500 → Advanced**, or **Settings → Open Advanced settings** in the applet. Opening the panel sends no maintenance request. Sections fit the detail pane and scroll vertically; wide fault and memory tables scroll within their own table. + +### Configuration + +Click **Read configuration** before editing. Double-click an **Edit** cell and enter a documented numeric value (0/1 for off/on). Choose an individual band or **All bands**. **Mixed** stays mixed until you edit that field; editing it expands only that field across eleven bands. **Readback** remains device readback. Compact setting names have tooltips with units, ranges and special values. **Apply changed fields** sends deliberate changes and verifies each GET; **Cancel edits** discards staging. At least one antenna must remain enabled, and a preferred antenna must be enabled. + +| Category | Values | +| --- | --- | +| Amplifier key interrupt power | 0–1500 W; 1500 means unlimited interrupt threshold | +| Power on when DC applied | 0/1 | +| Sleep when idle | 0/1; the connection handles wake handshakes | +| Enabled/preferred antennas | ANT 1–3 enabled; preferred 0 means last used | +| ATU slots per bin | 1–6; six physical slots are shared among antennas | +| SWR thresholds | Auto tune 1.5–99.99; bypass/key interrupt 1–99.99 | +| Auto fine tune | 0/1 per band | +| Additional retune distance | 0–65535 | + +**Optimize for KPA500** explicitly stages the 1500 unlimited interrupt threshold. Click **Apply changed fields** to send it. It is not a transmit-power target and is never applied merely because an amplifier is present. Fixed-point readbacks remain authoritative. On a partial failure, review confirmed fields and unresolved staging before retrying; already confirmed writes cannot be undone by cancellation. + +### Backup and restore + +**Read and save backup...** acquires both EEPROM regions (66,560 bytes) and saves an atomic native `.KAT500Config` file. **Choose backup...** validates bounded size, complete coverage and checksum locally, then previews identity and firmware. Choosing a file does not change the tuner. + +Restore requires a complete firmware 02.16 backup matching the connected tuner serial/firmware, fresh idle state and zero forward ADC count. Review the replacement explanation and check **Confirm backup replacement**, then click **Restore and verify**. Each permitted block is verified by exact readback; identity and fault history ranges are excluded. Progress and **Cancel operation** are available. Cancellation or failure leaves confirmed blocks applied; no automatic write retry, replay or reboot occurs. Manually power-cycle after success to load restored settings. + +### Fault history, memories and reset + +**Read fault history** shows newest records first, elapsed device seconds, decoded fault, ADC counts, SWR and raw bytes. Power On records differ from the current no-fault state. Unknown records remain visible. **Export CSV...** saves the captured records. + +**Inspect bin** reads matches for a selected kHz frequency, or **Current frequency**. Stored antenna/C/L rows do not alter live controls. To clear every stored match, select **All 11 bands** and **All antennas**, check **Confirm erasing all KAT500 matches**, and click **Clear all ATU memories…**. This preserves configuration and the radio’s own ATU memories. For a narrower erase, select a band/antenna, review the target, check **Confirm selected erase**, and click **Erase selected memories**. Single-frequency erasure is not supported by the documented protocol. Completion confirms the command barrier; inspect the bin to verify the resulting contents. **Confirm factory reset** has a separate explanation of erased settings/matches, restart and default-baud reconnection. Neither action runs on connect or page open. + +## Troubleshooting + +### Controls are disabled + +Open **Settings** for the availability explanation, or read the control's tooltip or accessible description. Connect and identify the tuner, wait for fresh replies, turn it on, and keep it idle with no RF before writes. Configuration and memory tools require firmware 02.16. Bootloader identity directs you to the official Utility. + +### A requested value is not confirmed + +Operating setters allow a finite GET-only settling window for transient old replies. The setter is not resent. If the operation fails, read the current device state before another deliberate request. Reconnecting discards queued mutations and staged edits. + +### Memory verification disconnects the tuner + +If a memory response is incomplete, AetherSDR closes the stream so leftover memory data cannot be mistaken for live status. Open **Settings → Radio Setup... → Peripherals → Elecraft KAT500** and click **Connect**. The failed command is not retried. Check **Match frequency** before making another explicit Recall or Memorize request. + +### A file dialog is already open + +Return to the existing dialog to complete or cancel file selection. Advanced permits one asynchronous native file dialog at a time; closing the panel safely closes its owned dialog. + +## See also + +- [Peripherals](./peripherals.md) +- [Amplifiers](./amplifiers.md) +- [Settings and Backups](./settings-and-backups.md) +- [Elecraft KAT500 software](https://elecraft.com/pages/kat500-software) + +## Screenshots + +Current Full and Mini applets, captured from the Mac connected to a KAT500 with no RF: + +KAT500 Full applet with confirmed Auto mode, antenna 1, SWR and signal-path toggles. + +KAT500 Mini applet with power, Tune, fault status, mode and SWR. diff --git a/docs/user/versioned_docs/version-stable/kiwisdr-and-web-888.md b/docs/user/versioned_docs/version-stable/kiwisdr-and-web-888.md index 48de828034..be492030dd 100644 --- a/docs/user/versioned_docs/version-stable/kiwisdr-and-web-888.md +++ b/docs/user/versioned_docs/version-stable/kiwisdr-and-web-888.md @@ -23,7 +23,7 @@ Open **Tools → Configure KiwiSDR...**. It opens **Settings → Radio Setup... Each receiver has: -KiwiSDR RX Antennas group. A note says passwords are kept only for the current session. Configured Receivers reads No KiwiSDR receivers configured. Under Add Receiver, the Name field holds Example Kiwi, the Server field kiwi.example.org:8073, the Password field is empty and Type is KiwiSDR, with an Auto-connect checkbox and Browse public… and Add receiver buttons. Import… and Export… buttons sit at the bottom right. +KiwiSDR RX Antennas group. A note says passwords are kept only for the current session. Configured Receivers reads No KiwiSDR receivers configured. Under Add Receiver, the Name field holds Example Kiwi, the Server field kiwi.example.org:8073, the Password field is empty and Type is KiwiSDR, with an Auto-connect checkbox and Browse Public… and Add Receiver buttons. Import… and Export… buttons sit at the bottom right. *The KiwiSDR RX Antennas group on the Antennas page, with a receiver typed in but not yet added.* @@ -37,7 +37,7 @@ Each receiver has: | **Keep audio during TX** | Off (default): the receiver's audio is silenced while you transmit and resumes immediately at unkey. The stream stays warm, so there is no gap or re-sync. On: keep listening while you transmit. | | **Resume audio after TX delay** | After unkey, wait out this receiver's stream delay before unmuting, so you don't hear your own delayed transmission. No effect while **Keep audio during TX** is on. | -Each row also has **Connect** / **Disconnect** and a **Remove** (bin) button. To add a receiver by hand, fill in the empty row at the bottom (name, `host:8073`, optional password and type) and click **Add receiver**. +Each row also has **Connect** / **Disconnect** and a **Remove** (bin) button. To add a receiver by hand, fill in the empty row at the bottom (name, `host:8073`, optional password and type) and click **Add Receiver**. ### Import and export @@ -45,7 +45,7 @@ Each row also has **Connect** / **Disconnect** and a **Remove** (bin) button. To ### Browsing public KiwiSDRs -Click **Browse public…** to open **Browse public KiwiSDR receivers**: +Click **Browse Public…** to open **Browse public KiwiSDR receivers**: - A filter box ("Filter by name, location, or host…") and **Refresh list**. - Columns **Receiver**, **Location**, **Users**, **API** and **Limits**. @@ -109,7 +109,7 @@ Every channel on the receiver is in use. 1. Leave the slice on the receiver: AetherSDR waits for a free slot and connects when one opens. 2. Accept a monitor (camp) session if one is offered. -3. Or choose another receiver with **Browse public…**. +3. Or choose another receiver with **Browse Public…**. ### The receiver shows Error diff --git a/docs/user/versioned_docs/version-stable/kxpa100-amplifier-control.md b/docs/user/versioned_docs/version-stable/kxpa100-amplifier-control.md new file mode 100644 index 0000000000..07df95d0bc --- /dev/null +++ b/docs/user/versioned_docs/version-stable/kxpa100-amplifier-control.md @@ -0,0 +1,122 @@ +--- +title: "KXPA100 Amplifier and Tuner" +slug: "/kxpa100-amplifier-control" +description: "Connect an Elecraft KXPA100, control its amplifier and optional tuner, and associate its amplifier metering with a radio." +status: "Experimental" +applies_to: ["All radios"] +platforms: ["Linux", "macOS", "Windows"] +--- + +:::info[Status] + +**Status:** Experimental · **Applies to:** All radios · **Platforms:** Linux, macOS, Windows + +::: + +The **KX100** applet combines KXPA100 amplifier controls, meters and optional KXAT100 tuner controls. Selections and measurements come from device readback. Connecting does not key the radio or load stored client-side amplifier settings. + +## Requirements + +Use a local serial connection or raw TCP serial bridge such as ser2net or the companion **aether-serial-bridge** project for remote access. Only one client can own the serial port. Network mode does not support Telnet/RFC 2217 negotiation. The bridge controls baud, 8N1 format and handshake lines. + +Configuration, backup restore and memory tools support the verified firmware **01.39** layout. Other firmware shows an availability explanation. Use Elecraft's official Utility for firmware updates; AetherSDR has no firmware updater or raw Command Tester. + +Connect the radio PTT output to the KXPA100 **PA KEY** input as required by your station. Software association does not create that physical keying connection. Turn on the amplifier locally: the protocol has no remote power command. **Standby** bypasses amplification; it does not turn off DC power. + +## Setup + +1. Open **Settings → Radio Setup... → Peripherals**, click **Add**, and select **Elecraft KXPA100**. +2. Select **Serial** and the port/baud, or **Network** and your bridge host/port. Click **Connect**. +3. The **KX100** applet button becomes available after identification. It remains available while the transport is open, including stale replies, and disappears when the connection closes. +4. To use amplifier output on the shared **VU** and **PWR** meters, select the intended radio and click **Use with current radio** in the peripheral page or applet **Settings**. This explicitly associates the amplifier serial number with that radio. + +Connection preferences are client settings. The metering association belongs to the selected radio and works with or without the optional KXAT100 tuner. Switching radios does not transfer that association. + +For **Network**, enter a hostname or IP address without a URL scheme, path, spaces or control characters, and a port from 1 to 65535. Invalid entries are rejected before connecting. + +## Using the applet + +**Standby** and **Operate** control the PA. **Auto**, **Manual** and **Bypass** control the separate tuner mode. **ANT 1** and **ANT 2** select the tuner antenna. The selected state changes after readback. Missing tuner hardware leaves tuner controls dimmed with an explanation while PA controls remain available. + +**Tune** starts a tuner search; it does not generate a radio carrier. Supply RF according to the Elecraft instructions. **Cancel** requests an end to the search. **Clear fault** clears the current fault, leaving stored fault history intact. + +Full view shows output power and SWR, followed by **DRV** input power measured by the KXPA100 (0–10 W), reflected power, dissipated power, temperature, supply voltage and drain current. Power meters use watts; SWR uses a 1–5 scale. The pill retains the exact reading beyond the scale. SWR is the last observed measurement and can remain after RF stops. Press and hold the **SWR** pill to preview bypass SWR without changing any relays; release to return to adjusted SWR. A dash means the reading is unavailable. + +**Mini** keeps the **OPR/STBY** PA toggle, **Tune/Cancel**, a mode/antenna/status readout, output power and SWR. **Full** restores the other controls. Expanded drawers and small popouts scroll when needed. + +The **ATU BYP** pill toggles the physical matching-network bypass relay. It leaves Auto/Manual mode unchanged; a recall or tune may engage the network again. Use the main **Bypass** mode button to disable tuning. **ATT** toggles the input attenuator when software control is available. The rear-panel switch or firmware protection can override it. Hover over these pills for the complete meaning. Requests require fresh, idle readback with no RF. + +KXPA100 Full applet with amplifier and tuner controls, DRV and output meters; illustrative replay values. + +*Full view with replayed telemetry illustrating the meters.* + +KXPA100 Mini view with PA, tune, mode and antenna status, output power and SWR. + +### Manual, History and Settings + +**Manual** exposes capacitance in pF and inductance in nH, with each relay labeled by its component value. Numeric **Set** selects the nearest available relay combination to the entered total. The capacitor-side control changes which side of the matching network contains the capacitors. **Match frequency** selects the kHz frequency for **Recall** and **Memorize**. These commands require 1800–54000 kHz; an unknown frequency sends nothing. Recall loads a stored match; Memorize saves and verifies the current match. Neither generates RF. + +**History** plots forward power, reflected power and last-observed SWR, with a selectable time window, scales and legends. Missing replies leave gaps. The graph shrinks as well as grows with its popout. + +**Settings** shows radio association, identity, firmware, serial, DIRECT/NETWORK endpoint, freshness and operation results. **Open Advanced settings** opens the same maintenance page as Peripherals. **Debug** shows bounded diagnostics; **Verbose** includes wire traffic. New entries follow the bottom unless you scroll up or pause. Debug TX means serial output, not RF transmission. + +### Radio controls and shared metering + +**TX Controls** always operates the radio's own tuner and memories. Connecting or associating a KXPA100 never replaces ATU/MEM, adds an overlay, or bypasses the internal tuner. A radio without an internal tuner shows those controls dimmed with an explanation. Use **KX100 → Tune** and **Manual → Memorize** for the external tuner. + +The shared **VU** and **PWR** meters use associated KXPA100 output on the amplifier scale when PA Operate and idle-tuner readback are fresh. This does not require an installed KXAT100. An operating radio-integrated amplifier has priority, followed by an operating KPA500; confirmed KAT500 KEY BLOCK retains the radio fallback for that KPA500 path. Otherwise fresh eligible KXPA100 telemetry is used, falling back to the radio when unavailable. The KX100 applet always shows the amplifier's own readings. **TX Controls** keeps radio watts/SWR and the radio scale; its RF Power and Tune Pwr readouts show percentages. + +Radio-side TX Controls with ATU/MEM, radio power and SWR scales, and percentage power sliders. + +*Current Mac capture while disconnected; no RF or simulated meter values.* + +## Using Advanced + +Open **Peripherals → Elecraft KXPA100 → Advanced**, or the applet shortcut. Opening the page performs no maintenance action. + +### Configuration + +Click **Read configuration** before editing. The matrix shows enabled ANT1/ANT2 choices for eleven bands and an **All bands** row. Checkboxes stage edits; **Readback** stays authoritative. Mixed values remain mixed until edited. At least one antenna must remain enabled on every band. **Apply changed fields** sends only deliberate changes and verifies readback. **Cancel edits** discards staging. + +### Backup and restore + +**Read and save backup…** reads both EEPROM regions, totaling 17,408 bytes, and atomically writes a native `.KXPAConfig` file. **Choose backup…** validates size, coverage and checksum locally and previews identity. Choosing a file sends nothing to the amplifier. + +Restore requires firmware 01.39, matching backup serial/firmware, fresh identification, idle state and no RF. Review the preview, check **Confirm backup replacement**, and click **Restore and verify**. Each permitted block is acknowledged and read back; identity and fault-history regions are preserved. Confirmed blocks remain applied if canceled or interrupted. There is no blind retry. Successful restore restarts the device; reconnect and inspect readbacks before use. + +### Faults, memories and reset + +**Read fault history** shows newest records first, elapsed device seconds, frequency, fault-specific value/unit and raw bytes. Elapsed time is not a calendar timestamp. Unknown records remain visible. **Export CSV…** saves the displayed records. + +**Inspect bin** reads stored matches at the selected kHz frequency without changing the live matching network. For erasure, choose band and antenna, review the target, check **Confirm selected erase**, and click **Erase selected memories**. Single-frequency erasure is not offered. **Factory reset** requires its separate confirmation and clears settings and matches, then restarts the unit. These actions never run merely because the device connects. + +## Troubleshooting + +### A control is disabled + +Read its tooltip or open Settings for the reason. Wait for identification and fresh idle measurements. Stop RF before switching antennas, relays or configuration. Tuner-only controls require the optional KXAT100. Advanced schema-dependent tools require firmware 01.39. + +### VU/PWR does not show KXPA100 output + +Confirm **Use with current radio** was applied to the intended radio, the amplifier reports Operate, and power/idle readbacks are fresh. A higher-priority amplifier or active tuner search prevents KXPA100 metering. A missing physical PA KEY cable cannot be fixed by association. + +### Radio association cannot be saved + +A rejected settings write leaves the previous association in effect and logs an `aether.kxpa100` warning. Applet **Settings** also displays the failure beside the operation result. Resolve the read-only or busy settings store, then click **Use with current radio** again. Association changes are not retried automatically. + +### An operation fails or the connection closes + +A timeout closes the stream to prevent a late response from confirming a later request. Reconnect, inspect the current state and make a new deliberate request. Writes are not replayed automatically. A canceled restore can leave some confirmed blocks applied; use the retained backup to recover deliberately. + +For a repeated idle disconnect, enable **Settings → Debug → Verbose** and retain the replies around the timeout. SWR replies such as `^SW01.3;` and `^SW013;` both mean 1.3:1 and are supported. The documented zero reply `^SW00.0;` is also valid and does not cause a disconnect. + +### ANT1 appears after power-off + +The physical off-state routes to ANT1. Reconfirm the desired antenna after power cycling and before transmitting. Do not infer ANT2 from a previous session or saved UI preference. + +## See also + +- [Peripherals](./peripherals.md) +- [Amplifiers](./amplifiers.md) +- [KAT500 Tuner Control](./kat500-tuner-control.md) +- [Elecraft KXPA100 software](https://elecraft.com/pages/kxpa100-software) diff --git a/docs/user/versioned_docs/version-stable/low-bandwidth-connections.md b/docs/user/versioned_docs/version-stable/low-bandwidth-connections.md index 26ba5693d6..5de67d8cd5 100644 --- a/docs/user/versioned_docs/version-stable/low-bandwidth-connections.md +++ b/docs/user/versioned_docs/version-stable/low-bandwidth-connections.md @@ -113,6 +113,14 @@ You can reduce traffic further from the panadapter's **Display** panel (right-cl **Tools → Network Diagnostics...** shows latency, jitter, packet loss by stream, stream rates and audio-buffer health over time, with symptom search. See [Runtime Monitor](./runtime-monitor.md). +### Network priority (DSCP EF) + +AetherSDR automatically requests **DSCP EF (46)** for outgoing traffic from the FlexRadio streaming socket on macOS, Linux and Windows. This includes transmit audio, UDP registration and keepalives on LAN and SmartLink connections. The separate CTR2 USB controller relay socket is not marked. There is no AetherSDR setting to disable marking. + +This is best effort: if the operating system does not support or allow marking, the connection and streaming continue. The log reports either `VITA UDP DSCP EF configured` or `VITA UDP DSCP EF unavailable; streaming continues`. Windows uses its native QoS API; requesting the exact EF value may be denied by account privileges or system policy. An administrator can configure a Windows QoS policy for the relevant outgoing UDP traffic if needed. + +EF marking can help on a congested network that honors DSCP. Switches, routers, VPNs and Wi-Fi equipment may ignore or rewrite it, and Wi-Fi priority also depends on the operating system and access point. It does not reduce bandwidth or change the markings of incoming radio audio, spectrum or waterfall packets. If your network handles EF traffic poorly, ask your network administrator to remark this outgoing UDP traffic to best effort at the network boundary. + ## Reference ### Recommended settings by connection type diff --git a/docs/user/versioned_docs/version-stable/manual-connection.md b/docs/user/versioned_docs/version-stable/manual-connection.md index 74a1142ef1..d4397c72e7 100644 --- a/docs/user/versioned_docs/version-stable/manual-connection.md +++ b/docs/user/versioned_docs/version-stable/manual-connection.md @@ -29,7 +29,7 @@ The **Radio IP address** group starts with two rows: | **Radio type:** | The radio family to look for: **FlexRadio**, **Hermes-Lite 2**, **ANAN-G2**, **Icom (network)** or **RTL-SDR (USB)**. Only this family is probed. | | **Radio IP:** | The IP address or host name, for example `10.0.0.25`. | -**RTL-SDR (USB)** appears only in builds that include the RTL-SDR backend. Choosing **Icom (network)** or **ANAN-G2** adds that family's own rows; see [Networked Icom](./networked-icom.md) and [ANAN-G2](./anan-g2.md). For every family's status, see [Supported Radios](./supported-radios.md). +**RTL-SDR (USB)** appears only in builds that include the RTL-SDR backend. Choosing **Icom (network)** adds its connection rows. **ANAN-G2** shows a pointer to **Settings → Radio Setup... → Radio → ANAN Front End**, where its receive options are configured before connecting; see [Networked Icom](./networked-icom.md) and [ANAN-G2](./anan-g2.md). For every family's status, see [Supported Radios](./supported-radios.md). ## Using Connect by IP @@ -58,6 +58,8 @@ For a networked Icom behind NAT, see the **Icom ports:** row on [Networked Icom] ### Auto-reconnect +If a FlexRadio connection drops unexpectedly, AetherSDR retries every five seconds. During a radio reboot, **Connection refused** can appear until the radio's command service is ready. The retries continue in the same running app. If an explicitly selected source interface is unavailable, AetherSDR keeps retrying that source instead of switching interfaces. Disconnecting deliberately stops these retries. + Connect by IP remembers the radio type you chose and the addresses you have used. With **Connect to last radio on start up** checked, AetherSDR reconnects to the last radio on the next launch. If startup auto-connect gives up, the Connect to Radio window opens again. ## Reference diff --git a/docs/user/versioned_docs/version-stable/memory-channels.md b/docs/user/versioned_docs/version-stable/memory-channels.md index 4f0f7e3d12..f36bf81979 100644 --- a/docs/user/versioned_docs/version-stable/memory-channels.md +++ b/docs/user/versioned_docs/version-stable/memory-channels.md @@ -47,6 +47,8 @@ opens a browse panel (see [Memory browse panel](#memory-browse-panel)). The result reads "Imported N … (format)". Export always writes SmartSDR CSV. +An import stops if the original radio connection or memory store changes. Records already completed remain in that store; unfinished records are not redirected to another radio. If a new radio slot cannot be populated, AetherSDR attempts cleanup only while that original slot is still identifiable. An unanswered request can leave a partial slot; inspect the memory list before retrying. + To move a whole radio database (memories along with profiles) between SmartSDR and AetherSDR, use **Profiles → Import/Export Profiles...**; see [Profile Management](./profile-management.md). @@ -99,7 +101,7 @@ Sortable columns: |---|---| | **Import...** | Import memories from a CSV file (see below) | | **Export...** | Export the displayed memories to CSV | -| **Add** | Create a new memory from the active slice | +| **Add** | Create a new memory from the active slice, preserving its mode and receive-filter edges | | **Tune** | Tune the active slice to the selected memory (also: double-click any row) | | **Select All** | Select every visible row | | **Remove** | Delete the selected memory or memories | @@ -116,8 +118,11 @@ The selection count is shown beside the buttons. bank** used by all such radios, not one per radio. - **Networked Icom:** where the radio supports it, a **Sync Memories** button reads the radio's memory channels into the list (on the IC-705, choose a - memory group first). Where the radio's memories are read-only, Add, Import - and in-place editing are disabled with the reason in the tooltip. + memory group first). The imported channels join the shared computer-side + bank. Editing that bank does not write channels back to the Icom radio; + Sync updates tuning data while preserving your name, owner and group annotations. + +Computer-side changes are coalesced before writing to `AetherSDR.db` and flushed on disconnect or exit. A storage failure is reported; seeing a row in the current list alone does not prove it was saved to disk. ## Troubleshooting @@ -128,12 +133,13 @@ The **Profile** filter is showing one profile's memories, or the search box is f 1. Set **Profile** to "All Memories". 2. Clear the **Search** box. -### Add, Import and editing are grayed out on my Icom +### An import or removal stopped after reconnecting -The radio's memories are read-only. +The operation belongs to the connection and slots you originally selected. -1. Hover over the grayed control; the tooltip gives the reason. -2. Where the dialog has a **Sync Memories** button, use it to read the radio's channels into the list, then recall them as usual. +1. Let the current connection finish loading its memory list. +2. Check which records completed and whether any partial slot remains. +3. Select the intended records again before retrying. ### Memories don't appear as markers on the panadapter diff --git a/docs/user/versioned_docs/version-stable/menu-reference.md b/docs/user/versioned_docs/version-stable/menu-reference.md index e91bd7c109..1af6d543b5 100644 --- a/docs/user/versioned_docs/version-stable/menu-reference.md +++ b/docs/user/versioned_docs/version-stable/menu-reference.md @@ -28,20 +28,16 @@ The top-level menus are **File · Settings · Profiles · Tools · View · Windo | Item | What it does | |------|-------------| | **Radio Setup...** | The main multi-page configuration dialog. See [Radio Setup](./radio-setup.md). On macOS: AetherSDR → Preferences…. | -| **AetherControl...** | Opens the AetherControl controller window. | -| **FlexControl Knob & Buttons...** | Jumps to the FlexControl section of Radio Setup → Serial & Controllers. See [FlexControl Tuning Knob](./flexcontrol-tuning-knob.md). | +| **Controllers ▸** | Every controller's settings: **CTR2...** (the CTR2 relay and CTR2-Max firmware; see [CTR2 Proxy](./ctr2-proxy.md)), **AetherControl...** (the on-screen AetherControl window), **FlexControl Knob & Buttons...** (the FlexControl section of Radio Setup → Serial & Controllers; see [FlexControl Tuning Knob](./flexcontrol-tuning-knob.md)), **MIDI Mapping...** (see [MIDI Controller Mapping](./midi-controller-mapping.md)), **Icom RC-28 Remote Encoder...** (see [USB Control Surfaces](./usb-control-surfaces.md)) and **Ulanzi Dial Mapping...** (see [Ulanzi Dial](./ulanzi-dial.md)). Some appear only in builds with MIDI, USB HID or serial-port support. | | **Receive Sync ▸** | Timing alignment between the radio and a KiwiSDR receiver: Sync Kiwi Audio & Display, **Manual Offset** / **Auto Assist**, Delay KiwiSDR 50 ms, Delay Flex 50 ms, Reset Offset, and **Latency ▸** Normal (360 ms) / More Stable (520 ms) / High Jitter (1000 ms). See [KiwiSDR and Web-888](./kiwisdr-and-web-888.md). | | **MQTT...** | Broker, subscriptions and publish buttons. See [MQTT Station Automation](./mqtt-station-automation.md). | -| **MIDI Mapping...** | See [MIDI Controller Mapping](./midi-controller-mapping.md). | -| **Icom RC-28 Remote Encoder...** | See [USB Control Surfaces](./usb-control-surfaces.md). | -| **Ulanzi Dial Mapping...** | See [Ulanzi Dial](./ulanzi-dial.md). | | **USB Cables...** | See [USB Cable Management](./usb-cable-management.md). | | **Keyboard Shortcuts** | Checkable. Turns operating shortcuts on or off; **off by default**. See [Keyboard Shortcuts](./keyboard-shortcuts.md). | | **Configure Shortcuts...** | The shortcut editor. | | **SpotHub...** | See [SpotHub](./spothub.md). | | **multiFLEX...** | The multi-client dashboard. See [Multi-Flex](./multi-flex.md). | | **TX Band Settings...** | Per-band RF power, tune power and inhibit choices. | -| **Inhibit during TUNE ▸** | Picks which integrations are held while the radio tunes. | +| **Inhibit during TUNE ▸** | Selects ACC TX inhibition during TUNE. On Flex firmware 4.2 and older, also selects TX1/TX2/TX3. On 4.3 and later, the submenu contains **ACC TX** and **Configure RCA suppression…**, which opens **TX Band Settings** directly for per-band RCA suppression. | | **AetherRX...** | The receive audio chain. See [Aetherial Audio](./aetherial-audio.md). | | **Settings Browser...** | Browse and edit stored settings. See [Settings and Backups](./settings-and-backups.md). | | **Autostart CAT with AetherSDR** / **Autostart TCI…** / **Autostart DAX…** | Start those services automatically. | @@ -137,7 +133,7 @@ The Minimize and Full Screen keys can be rebound in **Settings → Configure Sho | **AetherSDR Documentation** | Opens this documentation site in your browser. | | **Printable Manual (PDF)** | Opens the [printable manual](pathname:///AetherSDR-Manual.pdf), all of these pages in one PDF. | | **Log Analyzer** | Opens the [Log Analyzer](/log-analyzer), which checks a log or support bundle for known problems in your browser. | -| **Getting Started...**, **AetherSDR Help...**, **What's New...** | Built-in guides, each in its own window. They work offline, and each guide links its page on this site. | +| **Getting Started...**, **AetherSDR Help...**, **What's New...** | Built-in guides, each in its own window. They work offline, and each guide links its page on this site. In **What's New...**, only web links (http and https) open; any other kind of link in the release notes is ignored. | | **Understanding Noise Cancellation...**, **Configuring AetherSDR Controls...**, **Configuring Data Modes...** | Topic guides, also offline. | | **AetherSDR Website**, **Donate to AetherSDR** | Open the web pages. | | **Submit your Idea... 💡** | The AI-assisted feature-request helper. | @@ -180,7 +176,9 @@ The main window has one 52 px title bar. From left to right: ### Transmit timer -A green outlined `M:SS` readout (`H:MM:SS` past an hour) just left of **PC Audio**. It appears when you key up, starts from 0:00 for each transmission, holds the final time for 15 seconds after you unkey, then fades out. It counts operator transmissions only (MOX, PTT, footswitch, VOX, CW, tune) and never TCI or DAX transmissions from other programs. +A green outlined `M:SS` readout (`H:MM:SS` past an hour) just left of **PC Audio**. It appears when you key up, starts from 0:00 for each transmission, holds the final time for 15 seconds after you unkey, then fades out. It counts transmissions you key yourself (MOX, PTT, footswitch, VOX, including digital modes keyed with MOX). CW, TUNE/ATU, a TGXL autotune, and transmissions keyed by other programs through TCI, DAX or CAT are excluded. + +The audio controls stay in place as the timer appears and fades. In minimal mode, the hidden timer reserves no space. ### Speaker and master slider diff --git a/docs/user/versioned_docs/version-stable/midi-controller-mapping.md b/docs/user/versioned_docs/version-stable/midi-controller-mapping.md index 0f3fa1d1cf..dc2a6ba8e3 100644 --- a/docs/user/versioned_docs/version-stable/midi-controller-mapping.md +++ b/docs/user/versioned_docs/version-stable/midi-controller-mapping.md @@ -14,7 +14,7 @@ AetherSDR supports class-compliant USB MIDI controllers for hands-on control of ## Setup 1. Plug in your MIDI controller. -2. Open **Settings → MIDI Mapping...**. +2. Open **Settings → Controllers → MIDI Mapping...**. 3. Click **Refresh**, pick your controller from the **Port** list and click **Connect** — the status turns green. 4. Move a knob or fader — the activity line shows the MIDI message. 5. Choose a parameter (for example "AF Gain"). diff --git a/docs/user/versioned_docs/version-stable/networked-icom.md b/docs/user/versioned_docs/version-stable/networked-icom.md index 5d479c603a..144119d2f4 100644 --- a/docs/user/versioned_docs/version-stable/networked-icom.md +++ b/docs/user/versioned_docs/version-stable/networked-icom.md @@ -104,7 +104,7 @@ The FM controls set tone, duplex and offset where the model supports them. On an ### Controllers -The Icom RC-28 remote encoder is supported (**Settings → Icom RC-28 Remote Encoder...**); see [USB Control Surfaces](./usb-control-surfaces.md). +The Icom RC-28 remote encoder is supported (**Settings → Controllers → Icom RC-28 Remote Encoder...**); see [USB Control Surfaces](./usb-control-surfaces.md). ## Reference @@ -142,7 +142,6 @@ The Icom RC-28 remote encoder is supported (**Settings → Icom RC-28 Remote Enc - On the IC-7300MK2, transmit audio drops out for about a third of a second roughly every 1.2 seconds while the radio stays keyed ([#6169](https://github.com/aethersdr/AetherSDR/issues/6169)). - CW speed, break-in and pitch do nothing on models without a CW text keyer, such as the IC-9700 ([#6110](https://github.com/aethersdr/AetherSDR/issues/6110)). - On the IC-9700, the panadapter trace can sit on the bottom line and look blank on a quiet band with the preamp off ([#4814](https://github.com/aethersdr/AetherSDR/issues/4814)). -- On the IC-9700, the waterfall rate returns to 100 after you restart AetherSDR. This is fixed for the next release ([#5996](https://github.com/aethersdr/AetherSDR/issues/5996)). ## Troubleshooting diff --git a/docs/user/versioned_docs/version-stable/panadapter-controls.md b/docs/user/versioned_docs/version-stable/panadapter-controls.md index 6e12768775..fac68dffec 100644 --- a/docs/user/versioned_docs/version-stable/panadapter-controls.md +++ b/docs/user/versioned_docs/version-stable/panadapter-controls.md @@ -161,6 +161,8 @@ Use the icons at the right of the title bar: - **Dock left** / **Dock right** — put the panel on that side of the panadapters. Clicking the side it is already on hides it. - **Pop out** — float the panel in its own window (also **Ctrl+Shift+S**). Popped-out applets have a pin for always-on-top. +The dock side is remembered when you restart AetherSDR. + ### The button bar The top row of the panel holds **five favorite buttons** (by default VU, PWR, RX, TX and P/CW) and a **▼/▲** drawer button that shows the rest. Right-click the bar (or the drawer button) and choose **Customize Button Bar** to pick your favorites and hide buttons you don't use; the first five active entries fill the bar and the rest go in the drawer. Hiding a button also closes its applet. Buttons for accessories you don't have (tuner, amplifier, Antenna Genius and so on) appear only when that hardware is present. @@ -188,7 +190,7 @@ Drag an applet by its title bar (⋮⋮ grip) to reorder it. The order is rememb - **Frequency scale** — between spectrum and waterfall, in MHz - **Waterfall** — scrolling time-versus-frequency history - **dBm scale** — right edge of the spectrum -- **Time scale** — right edge of the waterfall +- **Time scale** — right edge of the waterfall. It is measured from the rows as they arrive and then held steady, so jitter between rows does not move the labels. If the rows settle at a different pace for a sustained stretch (after a slow start, or a change of **FPS** on a radio whose rows follow it), the scale recalibrates once to the new pace. At slow **WtrFall Rate** settings that takes longer, up to most of a minute at one row per second. - **Band plan** — colored strip along the bottom of the spectrum - **Overlay menu** — the button column at the left: **+RX**, **+TNF**, **Band**, **ANT**, **Display**, **Memory**, **DAX** (the DAX flyout holds the **IQ Ch** selector and the **WFM** demodulator, and only appears on radios with DAX) diff --git a/docs/user/versioned_docs/version-stable/peripherals.md b/docs/user/versioned_docs/version-stable/peripherals.md index a62ae6fc52..ff2b4d2d14 100644 --- a/docs/user/versioned_docs/version-stable/peripherals.md +++ b/docs/user/versioned_docs/version-stable/peripherals.md @@ -10,7 +10,7 @@ description: "the station accessories it talks to directly, over the network or the station accessories it talks to directly, over the network or a serial port, rather than through the radio. It covers the 4O3A Tuner Genius XL (TGXL), Power Genius XL (PGXL) and Antenna Genius (AG), the ShackSwitch, ACOM, -SPE Expert, VK3AMP and Elecraft KPA1500 amplifiers, and the TelePost LP-100A +SPE Expert, VK3AMP and Elecraft KPA1500 amplifiers, the Elecraft KAT500 tuner, and the TelePost LP-100A wattmeter. Each device has its own applet once it is connected. Those are described on @@ -39,9 +39,9 @@ coming from: | Word | Meaning | |---|---| -| `● DIRECT` | Connected directly to the device | -| `● RADIO` | Not connected directly, but the radio relays the device (TGXL and PGXL only) | -| `● OFFLINE` | No connection | +| `● DIRECT` | Connected directly to the device (green dot) | +| `● RADIO` | Not connected directly, but the radio relays the device (TGXL and PGXL only; yellow dot) | +| `● OFFLINE` | No connection (orange dot) | | `Connecting…` | A connection attempt is in progress | The TGXL, PGXL and Antenna Genius applets use the same words. A device that @@ -73,6 +73,9 @@ Ports**. The ShackSwitch page has a **⚙ Web UI** button that opens the device's own web interface. Connection defaults for every device type are under [Reference](#reference). + +The **Elecraft KXPA100** page combines amplifier and optional tuner controls. Click **Use with current radio** to associate it explicitly; this enables its VU/PWR metering and applet frequency context for that radio. TX Controls remains radio-side. The **Advanced** section provides antenna configuration, native backup/restore, faults and memory tools. See [KXPA100 Amplifier and Tuner](./kxpa100-amplifier-control.md). + ### Connecting automatically TGXL, PGXL, Antenna Genius and ShackSwitch each have a toggle, **on by @@ -110,7 +113,7 @@ device accepts it. ("Code for this session only"). - The code is hidden unless you click **Show**, is concealed again when you change page, and is kept out of logs, the automation bridge and widget - grabs. **Clear code** deletes the saved code. + grabs. **Clear Code** deletes the saved code. - After repeated failures with a saved code, the device is blocked: "Authorization blocked; enter a code and click Connect to retry". - If direct authentication fails, a TGXL or PGXL falls back to the radio @@ -266,6 +269,8 @@ The fields are locked while the device is connected. - [Radio Setup](./radio-setup.md) - [Amplifiers](./amplifiers.md) - [TGXL Tuner Control](./tgxl-tuner-control.md) +- [KAT500 Tuner Control](./kat500-tuner-control.md) +- [KXPA100 Amplifier and Tuner](./kxpa100-amplifier-control.md) - [ShackSwitch](./shackswitch.md) - [Green Heron Everyware](./green-heron-everyware.md) - [AetherSweep](./aethersweep.md) diff --git a/docs/user/versioned_docs/version-stable/profile-management.md b/docs/user/versioned_docs/version-stable/profile-management.md index bb6da12baa..09c3326544 100644 --- a/docs/user/versioned_docs/version-stable/profile-management.md +++ b/docs/user/versioned_docs/version-stable/profile-management.md @@ -61,6 +61,8 @@ On each profile tab: A status line reports what the radio did: `Saving ""…`, `Saved profile "".`, "Radio refused save of …", "Not connected — cannot save …", or "No response from the radio …". A blank name field never overwrites the highlighted profile. +Profile names must contain printable text, at most 256 characters, without double quotes, backslashes or `|`. An invalid name is not sent to the radio. If the connection changes during a save or confirmation, the operation is cancelled; your name remains available to retry. A successful save reply does not replace the radio's active-profile status. + ### Auto-Save With **Auto-save profile changes** enabled on the Auto-Save tab, changes you make to TX and Mic settings are saved to the active TX and Mic profiles as you go. diff --git a/docs/user/versioned_docs/version-stable/rade-digital-voice.md b/docs/user/versioned_docs/version-stable/rade-digital-voice.md index 5a6b6e3cfc..6209b2f0ed 100644 --- a/docs/user/versioned_docs/version-stable/rade-digital-voice.md +++ b/docs/user/versioned_docs/version-stable/rade-digital-voice.md @@ -57,7 +57,7 @@ While RADE is active, the VFO flag shows: The same readouts are in the **RADE Status** applet (button **RADE**, in the applet drawer, closed by default), which shows "RADE inactive" when RADE is off. -The RADE modem uses pilot symbols for synchronization and can acquire signals down to approximately 0 dB SNR. +The RADE modem uses pilot symbols for synchronization and can acquire signals down to approximately 0 dB SNR. Its receive filter and frequency tracking hold their level for as long as RADE runs, so the SNR readout does not fall away over a long session. ### End-of-over callsign diff --git a/docs/user/versioned_docs/version-stable/radio-setup.md b/docs/user/versioned_docs/version-stable/radio-setup.md index 46454dda01..504a4bcb3a 100644 --- a/docs/user/versioned_docs/version-stable/radio-setup.md +++ b/docs/user/versioned_docs/version-stable/radio-setup.md @@ -21,10 +21,14 @@ Open Radio Setup from the menu: Several menu items open Radio Setup straight at the right page: -- **Settings → FlexControl Knob & Buttons...** → Serial & Controllers +- **Settings → Controllers → FlexControl Knob & Buttons...** → Serial & Controllers - **Settings → USB Cables...** → USB Cables - **Tools → Configure KiwiSDR...** → Antennas +The window has no title bar. Drag any empty part of it to move it, and drag its top or bottom edge to make it taller or shorter; its width is fixed. It reopens at the height and place you left it. Close it with the round **✕** in the top-right corner, **Esc** or **Ctrl+W** (**⌘W** on macOS). It's a window of its own, with its own taskbar entry, so you can minimize it from the taskbar or park it on another monitor. **View → Frameless Window** does not apply to it. + +On/off buttons (**Enabled** / **Disabled**) fill green when on. Where you pick one of a set (**DHCP** / **Static**, **Radio Side** / **Client Side**, **CWU** / **CWL**), the chosen one fills cyan. A control the connected radio cannot use is dimmed, never hidden. + ## Finding a setting Radio Setup is a searchable browser: a categorized tree of pages on the left and the selected page on the right. @@ -38,8 +42,35 @@ Radio Setup is a searchable browser: a categorized tree of pages on the left and ## Reference +On Flex radios, **Nickname** and **Callsign** use the radio display's supported +characters: letters, digits, `.`, `,`, `/` and `-`. Spaces and other characters +are removed; callsigns are uppercased. Blank or symbol-only callsign edits keep +the previous callsign rather than replacing it. **Station Name** keeps spaces +but removes characters the radio cannot accept. The locally saved station name +is unchanged. Your callsign and station name are saved locally even if the radio +copy cannot be dispatched. + +**Network → Static** requires complete IPv4 addresses and a nonzero contiguous +subnet mask. **Apply** stays disabled while a field is invalid; hover the field +to see the reason. **TX Band Settings** limits RF and tune power to 0–100 percent +and restores the radio's reported value for malformed entries. + ### RADIO +On a FlexRadio, edit **Nickname** under **Settings → Radio Setup... → Radio** +and press Enter or leave the field to save an edit on the radio. An untouched +field follows the radio's current nickname and does not rename or clear it. +When the radio accepts the edit, the nickname in the station label and status +bar updates without reconnecting. If the radio rejects it, the field returns +to the confirmed nickname. A confirmed clear also empties the nickname in the +status bar. On **SmartSDR 4.3 +or later**, leave the field empty to clear the saved nickname. The radio accepts +letters, digits, `.`, `,`, `/` and `-`; spaces and other characters are removed. +If no supported characters remain, SmartSDR 4.3 or later clears the nickname. +If the firmware is older or its version is not yet known, clearing is unavailable +and the field returns to the radio's current nickname. Other radio families keep +their nicknames on this computer. + | Page | What it covers | |------|----------------| | **Radio** | Radio information (serial, hardware version, region, options), identification (model, nickname, callsign), license info and [Firmware Update](./firmware-update.md) | @@ -48,14 +79,28 @@ Radio Setup is a searchable browser: a categorized tree of pages on the left and | **Calibration** | Host-side frequency calibration in ppb, for radios that cannot calibrate themselves ([Hermes-Lite 2](./hermes-lite-2.md)). Hidden on FlexRadio, which calibrates on the Receive page. | | **RTL Receiver** | ppm correction, IQ DC suppression and serial for an [RTL-SDR](./rtl-sdr.md) dongle. Only when one is connected. | | **HL2 Hardware** | Board variant, dither, companion filter board, CL1 external 10 MHz reference and tuner for the [Hermes-Lite 2](./hermes-lite-2.md). Only when an HL2 is connected. | +| **ANAN Front End** | Starting sample rate, ADC choice, dither, randomization, filter-bank bypass and radio-speaker audio for the [ANAN-G2](./anan-g2.md). Available while disconnected or connected to a G2; changes apply on the next connect. | | **Droop Correction** | Panadapter edge-droop correction for the [ANAN-G2](./anan-g2.md). Only when one is connected. | ### RECEIVE & TRANSMIT +Open **TX Band Settings** on the **Transmit** page to configure each band's +TX outputs. On a FlexRadio with SmartSDR 4.3 or later, the **RCA off/TUNE** +column controls all three RCA keying outputs (TX1/TX2/TX3) for the +named band. The existing columns remain usable on newer firmware: **RCA TX1**, +**RCA TX2** and **RCA TX3** still set which outputs are enabled for that band. +Each new checkbox follows that band's value on the radio; it does not +follow the selected panadapter. Editing it never starts TUNE. A dimmed checkbox +has a tooltip explaining missing support, missing readback or a pending request. +After connecting or reconnecting, the column becomes available once the radio +has reported both supported firmware and the band's value, in either order. +See [TX Controls](./tx-controls.md#tune) for the output scope and older firmware's +**Inhibit during TUNE** settings. + | Page | What it covers | |------|----------------| | **Audio** | The radio's Line Out, Headphone and Front Speaker outputs; audio compression for SmartLink and tailnet connections; packet-loss smoothing; **Prevent system sleep while connected**; PC audio devices, Audio Boost and Audio Buffer; recording. See [Audio Settings](./audio-settings.md). | -| **Transmit** | TX timings (ACC TX, TX delay, timeout), TX REQ interlock polarity (RCA, Accessory), Max Power, Show TX in Waterfall, Slice/TX Follow, and **TX Band Settings** (per-band RF/tune power, PTT inhibit and interlocks). See [TX Controls](./tx-controls.md). | +| **Transmit** | TX timings (ACC TX, TX delay, timeout), TX REQ interlock polarity (RCA, Accessory), **PTT Mic Override** (firmware v4.3 and later; see [TX Controls](./tx-controls.md#hardware-ptt-and-the-tx-source)), Max Power, Show TX in Waterfall, Slice/TX Follow, and **TX Band Settings** (per-band RF/tune power, PTT inhibit, interlocks and RCA suppression during TUNE on firmware 4.3 and later). The Show TX in Waterfall choice is remembered per [Hermes-Lite 2](./hermes-lite-2.md); a FlexRadio owns and reports its setting. See [TX Controls](./tx-controls.md). | | **Phone & CW** | Microphone bias and +20 dB boost; CW iambic mode, paddle swap, sideband and CWX sync, and CW decoder RX/TX decode; Digital (RTTY mark default). See [CW Decoder](./cw-decoder.md) and [CWX Panel](./cwx-panel.md). | | **Receive** | Frequency offset (GPSDO detection, manual calibration) and the 10 MHz reference source | | **Filters** | Voice, CW and Digital filter sharpness (Low Latency ↔ Sharp Filters) with Auto buttons, and **Use Low Latency Filters for Digital Modes** | @@ -75,7 +120,7 @@ Radio Setup is a searchable browser: a categorized tree of pages on the left and | Page | What it covers | |------|----------------| -| **Appearance & Behavior** | Slice Letter Display (see [Multi-Flex](./multi-flex.md)), slice colors (see [Slice Colors](./slice-colors.md)), Single-click delay and mouse-wheel behavior. Themes are under **View → Theme**. See [Themes and Theme Editor](./themes-and-theme-editor.md). | +| **Appearance & Behavior** | Slice Letter Display (see [Multi-Flex](./multi-flex.md)), slice colors (see [Slice Colors](./slice-colors.md)), Single-Click Delay and mouse-wheel behavior. Themes are under **View → Theme**. See [Themes and Theme Editor](./themes-and-theme-editor.md). | | **SmartLink** | Pinned SmartLink certificates. See [SmartLink Setup](./smartlink-setup.md). | | **QRZ & Callsigns** | QRZ.com account and lookup cache. See [Callsign Lookup](./callsign-lookup.md). | @@ -89,6 +134,8 @@ Radio Setup is a searchable browser: a categorized tree of pages on the left and Radio Setup hides pages for hardware the connected radio does not have. For example, **Calibration** is hidden on a FlexRadio, and **HL2 Hardware**, **RTL Receiver** and **Droop Correction** appear only when that radio is connected. +**ANAN Front End** is also listed while disconnected so you can configure the first G2 connection. Connecting another radio family hides that page. + 1. Check which radio you are connected to. 2. Use **Search settings** (Ctrl+F, ⌘F on macOS) to find where the setting lives on this radio. For example, a FlexRadio calibrates on the **Receive** page. @@ -98,6 +145,32 @@ The connected radio or this build cannot use that control. 1. Hover the control. Its tooltip gives the reason. +### A timing edit is not applied + +The **Timings (in ms)** group on **Transmit** requires a connected radio that +supports those controls. **Timeout (sec):** is entered in seconds; the other +timings are entered in milliseconds. The Demo does not implement these settings. + +1. Connect to your radio before editing a timing. +2. Enter a whole number. Negative delays are treated as zero; invalid or + excessively large entries are not sent and restore the radio's reported value. + +### Calibration is interrupted by a disconnect + +On **Receive → Frequency Offset**, **Start** begins radio-side calibration. +An accepted request is not a completed calibration; completion comes from the +radio's status. The reference frequency and correction reset must each be +accepted before calibration starts. A rejected or unanswered step stops the +operation. If the connection ends, the operation stops waiting and shows +**Disconnected**. + +1. Reconnect to the radio. +2. Start calibration again when the reference signal is ready. + +After switching radios or reconnecting, close and reopen **TX Band Settings** +or **Radio Setup** before editing an existing transverter. An editor from the +previous session cannot change a reused band or transverter identifier. + ### You can't find where to connect to a radio Radio connection is not part of Radio Setup. diff --git a/docs/user/versioned_docs/version-stable/rtl-sdr.md b/docs/user/versioned_docs/version-stable/rtl-sdr.md index d4e1cece92..c612139578 100644 --- a/docs/user/versioned_docs/version-stable/rtl-sdr.md +++ b/docs/user/versioned_docs/version-stable/rtl-sdr.md @@ -26,9 +26,11 @@ Building from source: the `ENABLE_RTL` option is on by default and takes effect 2. Open **File → Connect to Radio...** → **On This Network**. Supported dongles on USB are listed with the network radios. 3. Select the dongle and click **Connect Selected Radio**. +The radio tab shows **Connected** with a green status dot once the USB connection is established. Amber indicates discovery; a USB receiver does not need a network heartbeat to show its connected state. + ## Using an RTL-SDR -- **Modes:** AM, SAM, FM, FM-N, WFM, USB, LSB, CW and CW-R. +- **Modes:** AM, SAM, FM, FM-N, WFM, USB, LSB, CW and CWR. - **Tuning range:** 24 kHz to 1.766 GHz. Below 24 MHz the dongle uses direct sampling; HF reception on particular dongles (for example ones with an upconverter or the RTL-SDR Blog V4) has not been qualified. - **Sample rates** up to 3.0 MS/s; 2.4 MS/s is the default. - **Browsing the capture:** pan around the captured bandwidth and your slice keeps its frequency and settings. A slice that falls outside the usable capture is parked (silent) and resumes when it fits again. @@ -40,6 +42,34 @@ Building from source: the `ENABLE_RTL` option is on by default and takes effect Normal launches admit **one receiver**, even though the capture is wide. +The **RX ANT** controls show the dongle's fixed **RX** input. They do not offer FlexRadio antenna ports. The RX applet and VFO antenna button are dimmed unless a configured virtual receiver is available. **TX ANT** shows **None** and is dimmed because RTL-SDR cannot transmit. + +### SSB and CW + +Select **USB** or **LSB** for single-sideband reception, or **CW** / **CWR** (reverse CW) for Morse. These modes use independent receive DSP and 48 kHz audio. Filter presets and draggable edges change the actual receive passband. The CW marker remains on the station carrier; **Pitch** changes the audio tone without moving the dial frequency. Pitch is shared by the RTL session's CW receivers. + +**AGC** offers Off, Slow, Med and Fast. **AGC-T** sets the local DSP's maximum gain; with AGC Off, **Off Level** controls fixed gain. These are local receiver controls, not a calibrated match for a FlexRadio's AGC-T scale. **NB** operates on receiver IQ; **APF** narrows CW audio around the selected pitch. **RIT** offsets reception while keeping the displayed dial frequency. These settings belong to each slice, except the shared CW pitch, and survive parking and reconnecting. + +The speaker icon opens a slice's audio controls; right-click it to toggle mute. A crossed speaker marks muted audio. The RX Controls speaker button also follows the selected slice's mute state. + +The [CW decoder](./cw-decoder.md) follows the selected CW or CWR slice. [Copy Assist](./copy-assist.md) follows the selected voice slice's independent audio before speaker volume, mute and client audio effects. A muted slice can still decode; a parked slice cannot. Selecting another slice or parking it discards queued audio from the old source. Copy Assist needs a downloaded speech model. + +Each slice remembers its last accepted filter separately for each mode. Switching from USB to FM and back recalls that slice’s USB passband, including after reconnecting. A mode you have not used on that slice starts with its normal default filter. Pending or refused filter changes do not replace the remembered passband. + +**NR**, **ANF** and **MN** run independently inside each SSB/CW receiver. NR reduces noise, ANF suppresses sustained tones, and MN places a fixed-width notch within the passband. Their settings use the local WDSP algorithms, so the values are not equivalent to a FlexRadio's settings. [Tracking notch filters](./tnf-tracking-notch-filters.md) stay at an RF frequency as receivers tune past them. + +Client **AetherDSP** voice processing applies to the speaker stream; it is not independent per-slice processing and is not included in the native Copy Assist feed. + +### AM and synchronous AM + +**AM** uses envelope detection. **SAM** follows the station carrier with a phase-locked synchronous detector; it combines both received sidebands. Both modes have independent 48 kHz audio and the same **AGC**, **AGC-T**, **Off Level**, **NB**, **NR**, **ANF** and **RIT** controls described above. **APF** remains a CW control, and squelch remains available only in FM and FM-N. + +Filter edges describe RF relative to the displayed carrier. Each edge can be moved independently, from −12,000 to −100 Hz below the carrier and +100 to +12,000 Hz above it. Narrow the interfered side while keeping the other side wide. Switching between AM and SAM preserves these cuts. SAM needs a received carrier within its tracking range (up to ±2 kHz); tune close to the station for acquisition. If the carrier jumps after a dropout and does not recover, retune to restart acquisition. It is not a suppressed-carrier SSB decoder. + +**MN** places a 400 Hz notch in both RF sidebands at the selected audio frequency, leaving the carrier intact. Tracking notches keep their absolute RF positions; placing one on the station carrier can prevent SAM acquisition. The receiver removes demodulated carrier/DC from its audio, independently of **Suppress IQ DC**. Copy Assist, TCI and DAX receive the independent audio before speaker mute and volume. + +Tuning or using **Move capture away from DC** places the carrier away from the converter's centre where possible. Free panning preserves station frequencies. If you bring an AM/SAM carrier onto the capture centre while **Suppress IQ DC** is enabled, move the capture away or disable that correction: removing the wanted carrier distorts AM and can break SAM tracking. + ### Broadcast FM Select **WFM** to use the **Broadcast FM** applet. It shows the selected slice letter and confirmed frequency. **Mono / Auto Stereo**, **De-emphasis** (50 or 75 µs) and **Bandwidth** belong to that receiver. **Auto Stereo** falls back to mono without a detected stereo pilot. The observed pilot status is separate from your selected audio mode; parking clears observations while retaining the controls. @@ -58,7 +88,7 @@ Use the [TCI Server](./tci-server.md) on Linux, macOS or Windows. On Linux and m The process-only evaluation setting admits 2, 4 or 8 receivers on Linux x86-64, Windows x64 and macOS arm64. It requires both `AETHER_AUTOMATION=1` and `AETHER_RTL_EVALUATION_RECEIVERS=2`, `4` or `8` at launch; it is not saved and cannot resize a running session. Use an isolated settings profile for evaluation. It does **not** change the one-receiver production limit or qualify a platform for sustained multi-receiver use. -FM, FM-N and analog WFM can share the capture in this evaluation. Each receiver retains its frequency, filter, squelch and audio controls when parked. Selecting another slice does not retune the capture or change its audio settings. AM, SAM, USB, LSB, CW and CW-R remain singleton configurations, even if another configured receiver is parked. See the [evaluation procedure](https://github.com/aethersdr/AetherSDR/blob/main/docs/rtl-multirx-analog.md) for the validation boundaries. +AM, SAM, FM, FM-N, analog WFM, USB, LSB, CW and CWR can share the capture in this evaluation. Each receiver retains its frequency, filter, squelch and audio controls when parked. Selecting another slice does not retune the capture or change its audio settings. See the [evaluation procedure](https://github.com/aethersdr/AetherSDR/blob/main/docs/rtl-multirx-analog.md) for the validation boundaries. ## Reference diff --git a/docs/user/versioned_docs/version-stable/runtime-monitor.md b/docs/user/versioned_docs/version-stable/runtime-monitor.md index 4f5c9d29d3..5dc4837785 100644 --- a/docs/user/versioned_docs/version-stable/runtime-monitor.md +++ b/docs/user/versioned_docs/version-stable/runtime-monitor.md @@ -73,6 +73,8 @@ Radio Health is a different thing from the **HLTH** (Antenna Health) applet, whi **Tools → Network Diagnostics...** shows the health of the link between AetherSDR and the radio. A **Connect by IP** connection also has a **Network Diagnostics** button beside the connect button. +In the status bar, hover anywhere over the **Network:** block, including its heading and quality readout, for live link statistics. Double-click anywhere in that block to open or raise **Network Diagnostics**. You can also Tab to **Network diagnostics** and press Return or Enter, or use your screen reader's Press action. + Pages are grouped in a tree on the left: Network Diagnostics window. A sidebar lists Status (Overview, Connection Details), Trends (Latency & Jitter, Stream Rates, Packet Loss, Audio Health) and Support (Application Logs, TCI Clients). The Overview page shows cards for Status Excellent, Latency in ms, Packet Loss 0.00% and Audio Buffer, above charts of Latency and Jitter, Recent Packet Loss, Total Stream Rates and RX Audio Timing over the last minute. diff --git a/docs/user/versioned_docs/version-stable/rx-controls.md b/docs/user/versioned_docs/version-stable/rx-controls.md index 9d4bcdc7ea..7dbb7f8039 100644 --- a/docs/user/versioned_docs/version-stable/rx-controls.md +++ b/docs/user/versioned_docs/version-stable/rx-controls.md @@ -14,9 +14,9 @@ Most of this page describes a FlexRadio. On other radio families, controls the radio cannot honor are dimmed with the reason in their tooltip, or refuse with a notice; see [Using the controls on other radios](#using-the-controls-on-other-radios) below. -RX Controls applet. The top row shows the slice buttons A (lit), B, C and D, a lock button, RX antenna ANT1, TX antenna ANT1 and filter width 2.7K. Below are a red TX badge, the mode selector set to USB and the frequency 14.250.000, then the tuning step selector at 500 and the AF gain and pan sliders, filter preset buttons 1.8K, 2.1K, 2.4K, 2.7K (lit), 2.9K and 3.3K beside the SQL and AGC (Med) controls, a passband graphic reading 100, 2.7K and 2800, and RIT and XIT offsets of +0 Hz. +RX Controls applet tuned to 14.250.000 USB. The filter presets and passband graph sit beside the audio, squelch and AGC controls. The Med selector, enabled threshold slider at 41 and lit A button share one row; RIT and XIT are below. -*The RX Controls applet for the active slice.* +*The RX Controls applet with the compact A button beside the AGC-T slider.* ## Using the RX applet @@ -29,7 +29,11 @@ with a notice; see [Using the controls on other radios](#using-the-controls-on-o you set in **Settings → Radio Setup... → Antennas** (for example "80m Dipole"), while the radio still uses ANT1/ANT2. - **Filter width** — current filter bandwidth (reads **AUTO** while the - adaptive RX filter is fitting) + adaptive RX filter is fitting); grouped at the right of the header, + beside **QSK** in CW modes +- **QSK** — read-only full break-in indicator shown in CW modes. It follows + the radio's state, including changes made at the radio or by another client. + Use **Breakin** in the P/CW applet to request a change. - **TX badge** — shows whether this slice transmits - **Frequency** — double-click to enter directly @@ -89,15 +93,34 @@ The **SQL** button cycles through three states: | **AUTO** | amber, labeled AUTO | A margin of **5–20 dB** above the measured panadapter noise floor (default 10 dB) | - In **AUTO**, squelch tracks the band's noise floor as it changes, opening - only for signals that stand the margin above it. + only for signals that stand the margin above it. On FlexRadio, AUTO and its + margin belong to each slice. Selecting another slice does not enable AUTO + there or stop a background AUTO slice. Each slice uses only its own + panadapter's noise floor; its SQL lines appear only on that panadapter. + When multiple slices share a panadapter, the SQL overlay follows the selected + slice on that pan, or the slice shown in its title while another pan is selected. + AUTO starts at the remembered manual threshold until that pan supplies a floor. - In **SQL**, a threshold line shows on the panadapter while you adjust it and hides itself 3 seconds after you stop. - Your manual level is remembered **per slice**, whichever control changes it (applet, VFO flag, MIDI or other controllers, the radio or another client). Auto tracking never overwrites it, so switching back from AUTO returns to your manual level. -- Switching a slice to **RTTY** turns squelch off, because squelch breaks the - decode. +- On FlexRadio, SQL and AUTO are unavailable in **DIGU, DIGL, RTTY, NT, + DFM and CW**. **RADE** follows its underlying DIGU/DIGL slice. Both panadapter + squelch lines disappear and Auto tracking stops in these modes, including + after incoming radio status. Data modes request SQL Off; firmware may reject + that request and report its fixed native state. The client still stops AUTO + and clears both lines. CW retains the radio's own squelch state without + client Auto updates. Leaving AUTO through an unavailable mode cancels AUTO; + returning to a supported mode restores SQL at that slice's remembered manual + threshold after the radio reports the returning mode. Selecting + another slice does not transfer or discard the pending recovery. DFM and + RADE use digital-voice synchronization, so an analog squelch threshold does + not control their decoder. +- On Hermes-Lite 2 and Icom profiles without mode-independent squelch, the + existing CW, RTTY and data-mode restrictions also apply. Supported mode-independent + Icom profiles retain native manual SQL in those modes. - The squelch scale, the panadapter SQL line and Auto SQL follow each radio's own scale. On radios where Auto SQL is not available, a slice set to AUTO drops to manual at its manual level. @@ -108,18 +131,38 @@ On RTL-SDR FM/FM-N, **AUTO** uses each receiver's own detector noise estimate, i ### AGC -AGC-T Calibration window. The heading reads AGC: MED, finding the knee (agc_threshold) just above the noise floor, with a warning that a signal is in the passband and you should tune to a clear spot. An empty plot with an AGC-T axis from 0 to 100 and a dashed marker fills the center, above Auto Sweep and Apply buttons and a hint: tune to a clear spot, then Auto Sweep, or move the AGC-T slider and watch where the noise bends. +AGC-T Calibration window. The heading reads AGC: MED, finding the knee (agc_threshold) just above the noise floor, with a warning that a signal is in the passband and you should tune to a clear spot. An empty plot with an AGC-T axis from 0 to 100 and a dashed marker fills the centre, above Auto Sweep and Apply buttons and a hint: tune to a clear spot, then Auto Sweep, or move the AGC-T slider and watch where the noise bends. *The AGC-T Calibration window.* - **Mode** — Off, Slow, Med, Fast - **AGC-T slider** — the AGC threshold +- **A** to the right of the RX applet's AGC slider, or **Auto** to the right of + the slice flag's Audio-tab slider — requests radio Auto AGC-T. A lit button means + the radio reports automatic threshold control; an unlit button means manual. + This requires SmartSDR 4.3.16 or later and the radio's enabled **Auto AGC-T** + entitlement (SmartSDR+ Early Access). Until support, entitlement and slice + status are confirmed, the button is dimmed with the reason in its tooltip + and screen-reader description. Other radio families keep it dimmed. + +Auto AGC-T adjusts the threshold as band noise changes; the Off / Slow / Med / +Fast speed selector remains independent. The threshold slider stays enabled and +follows the radio. Moving it by hand requests a manual threshold; the **A** and +**Auto** indicators follow the mode the radio reports afterward. Click either +button again to request manual mode without changing +the current threshold. AetherSDR does not save or reapply the radio's automatic +or manual selection on reconnect. **AGC-T calibration:** right-click the AGC-T slider, or use **Tools → Calibrate AGC-T...**, to calibrate the threshold against the measured noise floor on the active slice. It does not transmit. Close the window with the corner ✕, Esc or Ctrl+W; closing it during an Auto Sweep stops the sweep and puts back the AGC-T it started from. +Select manual AGC-T before calibrating. If radio Auto AGC-T or an external +receiver takes over, or the radio disconnects, calibration discards its curve +and recommendation without restoring its old threshold. Returning to manual +AGC-T does not resume the old sweep. After reconnecting, reopen +**Tools → Calibrate AGC-T...** to record a fresh manual curve. On the Hermes-Lite 2, AGC runs on the computer: with AGC **Off**, the AGC-T slider sets a fixed gain (4–64 dB, default 10 dB) remembered per receiver, and @@ -193,7 +236,9 @@ the client NR2 method, because the radio has no NR of its own. See [Supported Ra ## Known issues -- The squelch line, or Auto squelch, can appear in CW, RTTY and digital modes, where the SQL control is disabled ([#6276](https://github.com/aethersdr/AetherSDR/issues/6276)). +- Programmatic/manual SQL admission across CAT, TCI, controllers, automation + and memory recall remains under review + ([#6276](https://github.com/aethersdr/AetherSDR/issues/6276)). - Switching a slice from DIGU to USB can turn squelch on, silencing the audio until you switch it off ([#3505](https://github.com/aethersdr/AetherSDR/issues/3505)). ## Troubleshooting @@ -212,7 +257,7 @@ when you reconnect, so the slice keeps the mute state the radio reports. The single-click delay is set to 0, which disables double-click actions. 1. Open **Settings → Radio Setup... → Appearance & Behavior**. -2. Raise **Single-click delay** above 0, or press **Reset** for the platform +2. Raise **Single-Click Delay** above 0, or press **Reset** for the platform default. ### Squelch switched off when you changed to RTTY diff --git a/docs/user/versioned_docs/version-stable/slice-colors.md b/docs/user/versioned_docs/version-stable/slice-colors.md index 1db9eb703d..1e483f2918 100644 --- a/docs/user/versioned_docs/version-stable/slice-colors.md +++ b/docs/user/versioned_docs/version-stable/slice-colors.md @@ -10,7 +10,7 @@ Each slice (A–H) has its own color, used for its frequency marker, filter pass Open **Settings → Radio Setup... → Appearance & Behavior** and find the **Slice Colors** group: -Appearance & Behavior page. Slice Letter Display offers Global slot index (selected) or Radio-assigned letter with global subscript. Slice Colors offers Use Aether defaults or Custom colors (selected), with eight color buttons A to H in cyan, magenta, green, yellow, orange, teal, pink and purple and a Reset All to Defaults button. Further down, Single-click delay is 400 ms with a Reset button, and Mouse wheel has a Reverse mouse-wheel tuning direction checkbox. +Appearance & Behavior page. Slice Letter Display offers Global slot index (selected) or Radio-assigned letter with global subscript. Slice Colors offers Use Aether defaults or Custom colors (selected), with eight color buttons A to H in cyan, magenta, green, yellow, orange, teal, pink and purple and a Reset All to Defaults button. Further down, Single-Click Delay is 400 ms with a Reset button, and Mouse Wheel has a Reverse mouse-wheel tuning direction checkbox. *Radio Setup, Appearance & Behavior page with Custom colors chosen, so each slice letter's color can be changed.* diff --git a/docs/user/versioned_docs/version-stable/smartlink-setup.md b/docs/user/versioned_docs/version-stable/smartlink-setup.md index 5a26327043..d497027176 100644 --- a/docs/user/versioned_docs/version-stable/smartlink-setup.md +++ b/docs/user/versioned_docs/version-stable/smartlink-setup.md @@ -61,10 +61,10 @@ AetherSDR pins each SmartLink radio's TLS certificate on first use, to protect y ### Managing pins -**Settings → Radio Setup... → SmartLink → Pinned SmartLink Certificates** lists each pinned radio with its **Host**, **SHA-256 fingerprint** and the date it was **Pinned**. +**Settings → Radio Setup... → SmartLink → Pinned SmartLink Certificates** lists each pinned radio with its **Host**, **SHA-256 Fingerprint** and the date it was **Pinned**. -- **Forget selected** removes one pin. -- **Forget all** clears every pin after confirmation. Each radio is pinned again, silently, on its next connection. +- **Forget Selected** removes one pin. +- **Forget All** clears every pin after confirmation. Each radio is pinned again, silently, on its next connection. Forget a pin only when you have deliberately changed a radio's certificate. @@ -76,6 +76,10 @@ Forget a pin only when you have deliberately changed a radio's certificate. - Your password is not stored. The SmartLink **refresh token** is saved in the operating system's keychain, so AetherSDR signs you in automatically on the next launch. Builds without keychain support keep it for the current session only. See [Settings and Backups](./settings-and-backups.md). - Logs redact email addresses, tokens, IP addresses and serial numbers — see [Support and Logging](./support-and-logging.md). +### UDP session maintenance + +AetherSDR registers the SmartLink UDP endpoint every 50 ms until it receives a packet with a complete Flex VITA-49 preamble, including compressed audio. It then sends a registration keepalive every five seconds for the rest of the connection to maintain the NAT mapping. Disconnecting stops these keepalives; reconnecting registers the new session. This happens automatically and needs no client-side setting. + ### Limitations - Port forwarding (or working UPnP) is required at the radio's location. diff --git a/docs/user/versioned_docs/version-stable/spothub.md b/docs/user/versioned_docs/version-stable/spothub.md index 7b4cd75783..8a3b080c37 100644 --- a/docs/user/versioned_docs/version-stable/spothub.md +++ b/docs/user/versioned_docs/version-stable/spothub.md @@ -24,6 +24,8 @@ All spot sources run on a worker thread, and spots are forwarded to the radio in Open SpotHub from **Settings → SpotHub...** +The window has no title bar. Drag any empty part of it to move it, and drag an edge or corner to resize it; it reopens at the size and place you left it. Close it with the round **✕** in the top-right corner, **Esc** or **Ctrl+W** (**⌘W** on macOS). It's a window of its own, with its own taskbar entry, so you can minimize it from the taskbar or park it on another monitor. **View → Frameless Window** does not apply to it. + SpotHub has ten tabs: **Cluster**, **RBN**, **WSJT-X**, **SpotCollector**, **POTA**, **EiBi**, **N1MM**, **FreeDV**, **Spot List** and **Display**. The FreeDV tab is only present in builds with Qt WebSockets. Every source tab has an **Auto-Start** (or **Auto-Connect**) toggle that starts it when the radio connects, a **Start / Stop** (or **Connect**) button, a status line and a console. Each console has a **Clear** button, which clears the console and deletes its stored log. diff --git a/docs/user/versioned_docs/version-stable/tci-server.md b/docs/user/versioned_docs/version-stable/tci-server.md index 5a739820ff..10decabf29 100644 --- a/docs/user/versioned_docs/version-stable/tci-server.md +++ b/docs/user/versioned_docs/version-stable/tci-server.md @@ -95,7 +95,7 @@ WSJT-X takes CAT, PTT **and audio** over TCI, so there are no sound-card devices ### CW Skimmer and SDC -Point SDC or CW Skimmer at AetherSDR's TCI port. IQ flows as DAX IQ at 24, 48, 96 or 192 kHz (SDC negotiates 96 kHz), and `dds:` follows the panadapter center. Up to **four** IQ subscriptions can run at once, so several skimmers can share one server. Receivers on the same panadapter share its IQ stream, so four independent bands need four panadapters. IQ is not offered as int16 or over `wss`. +Point SDC or CW Skimmer at AetherSDR's TCI port. IQ flows as DAX IQ at 24, 48, 96 or 192 kHz within the connected model’s [DAX IQ limits](./dax-iq-streaming.md#limits) (SDC negotiates 96 kHz), and `dds:` follows the panadapter center. Up to **four** IQ subscriptions can run at once, so several skimmers can share one server. Receivers on the same panadapter share its IQ stream, so four independent bands need four panadapters. IQ is not offered as int16 or over `wss`. Requests outside an identified model’s supported `iq_samplerate` rates leave the rate unchanged and return the current rate. A valid rate negotiated before model identification is remembered without starting IQ streams; it is applied within the model’s limits once the model is known. A retained 192 kHz subscription uses 96 kHz on a model limited to 96 kHz, then returns to 192 kHz when a capable model is connected. ### JTDX @@ -189,9 +189,15 @@ Notes: - `volume` is in dB, as the spec defines it; the older percent form is still accepted. It is the same master level as the title-bar slider: the computer's level with PC Audio on, the radio's Line Out level with it off. `mic_level` is a global 0–100 %. - The server also broadcasts which slice has focus in the GUI, plus DSP, squelch, RIT/XIT and TX power when they change. -- Opening a slice announces its receiver with `rx_enable:,true;`. Closing a slice announces `rx_enable:,false;` after approximately 500 ms. A band-change recreation that returns the same slice within that window keeps its receiver and sends neither notification; surviving receivers keep their numbers. `trx_count` is not re-sent. +- Opening a slice announces `rx_enable:,true;` and its `tx_enable` permission. Closing a slice sends `tx_enable:,false;` and `rx_enable:,false;` after approximately 500 ms. A band-change recreation within that window keeps its receiver number and sends no close notifications; surviving receivers keep their numbers. TX permission still follows ownership, mode, and panadapter inhibits. `trx_count` is not re-sent. - Malformed arguments (for example to `volume:` or `modulation:`) are rejected, never applied to slice 0. - A `vfo:` confirmation reports the frequency the radio actually reached. +- `tx_enable:,true;` means that receiver may request PTT. It is not the + current TX-slice assignment: AetherSDR routes a PTT request when it arrives, + and the radio still enforces its own frequency and safety interlocks. + Permission is withheld while disconnected, on receive-only backends or modes, + and for transmit-inhibited panadapters. On multi-client radios, the receiver's + ownership must be confirmed as belonging to this AetherSDR session first. - **Panadapter spectrum forwarding:** subscribed clients receive the panadapter's FFT rows. ### Tune notifications diff --git a/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md b/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md index d332411387..84dd7c8e3b 100644 --- a/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md +++ b/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md @@ -16,9 +16,9 @@ using with an indicator at the end of its readout row: | Indicator | Path | |---|---| -| `● DIRECT` | A direct TCP connection to the tuner on port 9010 | -| `● RADIO` | Through the FlexRadio, which relays the tuner's status and commands | -| `● OFFLINE` | Neither is available | +| `● DIRECT` | A direct TCP connection to the tuner on port 9010 (green) | +| `● RADIO` | Through the FlexRadio, which relays the tuner's status and commands (yellow) | +| `● OFFLINE` | Neither is available (orange) | When a TGXL is connected to your FlexRadio, the radio reports its address and AetherSDR opens the direct connection automatically. For a tuner the radio diff --git a/docs/user/versioned_docs/version-stable/tnf-tracking-notch-filters.md b/docs/user/versioned_docs/version-stable/tnf-tracking-notch-filters.md index f75d9a8057..bb9f716ff2 100644 --- a/docs/user/versioned_docs/version-stable/tnf-tracking-notch-filters.md +++ b/docs/user/versioned_docs/version-stable/tnf-tracking-notch-filters.md @@ -3,12 +3,12 @@ title: "TNF (Tracking Notch Filters)" slug: "/tnf-tracking-notch-filters" description: "Tracking Notch Filters remove persistent interfering carriers from the audio passband." status: "Supported" -applies_to: ["FlexRadio", "Hermes-Lite 2 (experimental)"] +applies_to: ["FlexRadio", "Hermes-Lite 2 (experimental)", "RTL-SDR (experimental)"] --- :::info[Status] -**Status:** Supported · **Applies to:** FlexRadio, Hermes-Lite 2 (experimental) +**Status:** Supported · **Applies to:** FlexRadio, Hermes-Lite 2 (experimental), RTL-SDR (experimental) ::: @@ -69,6 +69,12 @@ Permanent** entries are not offered. A notch (or a very narrow CW filter) lengthens the receive filter slightly, which adds a little audio delay. See [Hermes-Lite 2](./hermes-lite-2.md). +### RTL-SDR + +RTL-SDR supports up to 32 shared tracking notches in USB, LSB, CW and CWR. Each notch stays at its RF frequency and affects only receivers whose passbands overlap it. RIT and CW pitch changes preserve that RF position. Notches do not affect FM, FM-N or WFM. + +Add, move, resize and remove notches using the same gestures. The minimum width is 200 Hz. Changes appear after the receiver accepts them. The computer saves the notch bank with the RTL radio settings, including the global enabled state; **Depth** and **Make Permanent** are not offered. A parked receiver retains its notches and applies them when reception resumes. + ## Reference ### Permanent vs temporary @@ -78,8 +84,10 @@ lengthens the receive filter slightly, which adds a little audio delay. See | Temporary | Yellow | No | Yes | | Permanent | Green | Yes | No | -TNF removal and permanent-state changes are applied straight away in the +FlexRadio TNF removal and permanent-state changes are applied straight away in the display; the radio does not send a status confirmation for these commands. +RTL-SDR waits for accepted state before changing its markers. The temporary/permanent +distinction above applies to radio-stored FlexRadio notches, not the locally saved RTL bank. ## Troubleshooting @@ -91,11 +99,11 @@ supports. 1. Remove a notch you no longer need (right-click it → **Remove TNF**), then try again. 2. If the entry never appears, your radio doesn't offer notches. TNFs work on - FlexRadio and Hermes-Lite 2. + FlexRadio, Hermes-Lite 2 and RTL-SDR. ### My notches disappeared after the radio restarted -They were temporary (yellow). Temporary notches don't survive a power cycle. +On FlexRadio, temporary (yellow) notches do not survive a power cycle. RTL-SDR instead restores its locally saved notch bank. 1. Add the notch again. 2. Right-click it and choose **Make Permanent**. It turns green. diff --git a/docs/user/versioned_docs/version-stable/tx-controls.md b/docs/user/versioned_docs/version-stable/tx-controls.md index 162636c7a1..97cb2e6e14 100644 --- a/docs/user/versioned_docs/version-stable/tx-controls.md +++ b/docs/user/versioned_docs/version-stable/tx-controls.md @@ -13,6 +13,8 @@ transmit. Before you key up for the first time, read [Before You Transmit](./bef *The TX Controls applet.* +These controls operate the radio. External Elecraft tuners have their own applets and maintenance controls. **RF Power** and **Tune Pwr** display percentages; the meters show measured radio watts and SWR. + ## Using the TX applet - **Fwd Power gauge** (0–200 W barefoot, 0–2000 W with a PGXL amplifier), with @@ -31,6 +33,7 @@ transmit. Before you key up for the first time, read [Before You Transmit](./bef can train its predistortion against the output of an external linear amplifier rather than its own PA. + Hover **RF Pwr** or **SWR** for a floating badge with the exact value (for example `12 W` or `1.12:1`). Forward power drops to zero as soon as you unkey, and SWR does not show a stale reading while you receive. @@ -48,11 +51,42 @@ the Tuner Genius XL. - TUNE and CW keying lock each other out: while TUNE is on, a paddle, straight key, keyboard CW or CWX text does not transmit, and TUNE will not start while a key is down or CWX is sending. -- **Settings → Inhibit during TUNE ▸** chooses which integrations are held - while the radio is tuning. +- On a **FlexRadio running SmartSDR 4.3 or later**, open **Radio Setup → + Transmit → TX Band Settings** and use the **RCA off/TUNE** + column. Each checkbox edits its named band's value on the radio, independently + of the active slice or panadapter. Editing it never starts TUNE. + When checked, firmware suppresses all three RCA keying outputs (TX1/TX2/TX3) + during TUNE. Normal PTT uses the band's configured TX outputs. This setting + does not disable TX REQ safety inputs or control other amplifier-keying connections. +- Each checkbox follows radio readback. It is dimmed until a supported radio + and that band's reported value are available, and while its request awaits + confirmation. Hover over it for the reason. A rejected or unconfirmed request + retains the last confirmed value and does not become a saved client preference. +- If the firmware version arrives while TUNE is running, the cycle still + restores RCA outputs it temporarily disabled before identifying the firmware. + The next TUNE cycle uses the identified firmware's suppression behavior. +- On **SmartSDR 4.2 and older**, **Settings → Inhibit during TUNE ▸** retains + its **ACC TX**, **TX1**, **TX2** and **TX3** selections. On 4.3 and later, + **ACC TX** remains a separate client setting, shown as a checkable menu item, + and **Configure RCA suppression…** + opens **TX Band Settings** directly. **ACC TX** inhibits the separate accessory + connector's keying output during TUNE; the firmware RCA suppression setting + does not cover it. Saved legacy RCA preferences remain available when using + older firmware. AetherSDR does not copy them over the + radio's per-band suppression values. No automatic migration or upgrade notice + is shown; review each band's radio value in the table. +- For client-managed outputs, AetherSDR restores only outputs it temporarily + disabled on the original band. Outputs already disabled stay disabled. + Changing inhibit selections during TUNE applies to the next cycle; an explicit + output edit in **TX Band Settings** takes precedence over current restoration. + After a lost connection, check the band's output settings: temporary changes + are not replayed on reconnect. ### ATU, MEM and pre-tuning + + + - **MEM** shows the tuner's real memory state as the radio reports it, not just your last click. - ATU tune failures are reported in the status bar. @@ -63,7 +97,7 @@ the bands you choose, tunes the ATU at each point and stores the result in the ATU memory, so later band changes recall a match instead of re-tuning. On channelised bands such as US 60 m it uses one point per channel. -- **MEM must be on**; otherwise the entry is disabled with +- **For the internal radio ATU, MEM must be on**; otherwise the entry is disabled with "Enable MEM before running the pre-tune sweep". It is hidden or disabled on radios without ATU memory, and a disabled entry says why. - **Mode:** *Step (confirm each point)*, with Tune / Skip / Abort per point, or @@ -71,12 +105,14 @@ channelised bands such as US 60 m it uses one point per channel. - **License class** limits the points to sub-bands your class may use, where the active band plan has class data (the ARRL US plan has T/G/E). - Safety nets: a warning with an estimated duration above 100 points; a - warning when Auto-mode tune power is above 20 W; an audible cue on a + warning when the Auto-mode **Tune Pwr** setting is above 20; an audible cue on a per-point timeout; and after 3 consecutive failed or bypassed results on one band, the sweep skips the rest of that band and moves on. - **The sweep keys the transmitter repeatedly. Make sure the bands are clear before you start.** +KAT500 sweeps require the external tuner to remain connected in Auto/Manual. They use KAT500 memory-bin spacing, do not require the radio's MEM setting, and stop on an unsuccessful or unconfirmed result. + **Clear ATU memories.** **Tools → Clear ATU Memories...** or right-click **ATU** → **Clear ATU memories…** erases the stored tuner solutions after a confirmation. @@ -102,6 +138,14 @@ confirmation. Hover the Level, Compression or ALC gauge for its exact value. In CW modes the applet switches to keyer controls, including the APF toggle and level. +**Pitch** sits directly below **Speed**: use its slider or enter a frequency +in Hz in the value field. Pitch follows the radio's supported range and step. +**Breakin**, **Iambic**, and **Hold Delay** share a separate row. +**Hold Delay** re-sends your break-in delay after CW speed changes made here; +it does not cover speed changes made at the radio or by another client. +In CW modes, the RX Controls header shows the receive filter width beside the +read-only **QSK** indicator. QSK follows the radio's break-in state, including +changes made at the radio or by another client; **Breakin** requests a change. ## Using the Phone applet @@ -133,25 +177,63 @@ CW is excluded, and the card is not available on the Hermes-Lite 2. - ±10 dB vertical sliders per band - Independent **RX** and **TX** views; the view you chose is remembered - **ON** toggle + reset button +- On a radio whose audio is processed in AetherSDR, such as the Hermes-Lite 2, + the bands and both **ON** settings are remembered across restarts. They are + saved while you are connected to that radio. A FlexRadio keeps its own EQ in + the radio and AetherSDR does not save it; after a FlexRadio session, the + saved settings come back when you connect the other radio again. Receive-only + radios do not save the EQ. ## Transmitting - Press **MOX** (or use PTT) to transmit - The VFO marker turns orange/red during TX -- The waterfall switches to FFT-derived rows during TX, scrolling at the same - rate as on receive, masks the TX passband on every overlapping panadapter, - and holds its dBm range until you return to receive +- With **Show TX in Waterfall** enabled in **Settings → Radio Setup... → Transmit**, + the waterfall draws FFT-derived rows during TX at the receive scroll rate + and masks the TX passband on every overlapping panadapter. With it disabled, + those panes hold their waterfall rows until receive resumes. The dBm range + stays fixed during TX. On a Hermes-Lite 2, AetherSDR remembers the choice per + radio; on a FlexRadio, the radio owns and reports it - Interlock problems that block transmit (amplifier warming up, ATU busy, band not allowed) appear as notifications, only when transmit is actually blocked +### Hardware PTT and the TX source + +**(FlexRadio)** A hardware PTT is a footswitch or keying line on the RCA PTT +jack, the ACC connector or a supported mic-jack PTT input. On firmware before +SmartSDR v4.3, a hardware PTT always transmits the analog microphone. **From +v4.3, a hardware PTT transmits whatever TX source is selected**, just as MOX +does. If DAX is on for a digital-mode program, or the mic source is PC, a +footswitch press puts that audio on the air, not your microphone. + +To restore the old behavior, turn on **PTT Mic Override** in the +**Interlocks - TX REQ** group of **Settings → Radio Setup... → Transmit**. +With it on, a hardware PTT transmits the analog mic input you last used, even +while DAX or PC audio is selected. It changes nothing when an analog input +(MIC, BAL, LINE or ACC) is already selected. The radio stores the setting and +shares it with every client connected to it. With several clients connected +(Multi-Flex), FlexRadio says the override applies when the client whose +hardware PTT is pressed is also the transmitting client. On firmware before +v4.3 the control is grayed out. + +On SmartSDR v4.3, the radio can report several held PTT sources at once. +AetherSDR keeps its TX meters and local audio gate in the transmit state +while the radio confirms your hardware PTT transmission, including when VOX +is also active. VOX reconciliation requires VOX to be enabled. +Another client's transmission does not open your local TX audio gate. +These status reports do not start a transmission or send a PTT command. + ### Transmit timer While you transmit, a green `M:SS` timer (`H:MM:SS` after an hour) appears in the title bar, just left of the **PC Audio** button. It counts each key-down from 0:00, holds the final time for 15 seconds after you unkey and then fades -out. It runs for your own transmissions (MOX, PTT, footswitch, VOX, CW and -tune), never for TCI or DAX transmissions from other programs. +out. It runs for any transmission you key yourself (MOX, PTT, footswitch, VOX, +including digital modes keyed with MOX) and never for CW, TUNE/ATU, a TGXL +autotune, or transmissions keyed by other programs through TCI, DAX or CAT. + +The audio controls stay in place as the timer appears and fades. In minimal mode, the hidden timer reserves no space. ## Using AetherTX (Aetherial Audio) @@ -222,6 +304,15 @@ The ATU pre-tune sweep needs ATU memory, so the entry is disabled with 2. Open **Tools → Pre-tune ATU Bands...** again. If the entry is still disabled, hover it: the radio may have no ATU memory. +### Transmit is unavailable until the radio has connected + +During a reconnect attempt, transmit stays blocked until the radio connects. +A transmit request can show "Transmit is unavailable until the radio has +connected." + +1. Wait for the radio to reconnect. +2. Confirm the connection before trying to transmit again. + ### A notification says transmit is blocked An interlock is holding transmit off: for example an amplifier warming up, the diff --git a/docs/user/versioned_docs/version-stable/ulanzi-dial.md b/docs/user/versioned_docs/version-stable/ulanzi-dial.md index 215ae3e6b6..282d9a3464 100644 --- a/docs/user/versioned_docs/version-stable/ulanzi-dial.md +++ b/docs/user/versioned_docs/version-stable/ulanzi-dial.md @@ -36,7 +36,7 @@ Windows cannot take exclusive control of the dial, so each key press also still ## Using the mapper -Open **Settings → Ulanzi Dial Mapping...** ("Ulanzi Dial — Control Mapping"). The dialog shows a picture of the dial with a drop-down "pill" on each physical control, plus: +Open **Settings → Controllers → Ulanzi Dial Mapping...** ("Ulanzi Dial — Control Mapping"). The dialog shows a picture of the dial with a drop-down "pill" on each physical control, plus: Ulanzi Dial Control Mapping window. A picture of the dial sits in the center with a label beside each of its controls: three top buttons (unassigned, RIT/XIT toggle, unassigned), two side buttons on each side (unassigned and Next Slice), the Tuning knob set to Frequency Tune Slice and its Single tap set to Audio Mute Toggle. The status at the bottom left reads Disconnected, beside Last event, Reset to Defaults and Close. @@ -110,7 +110,7 @@ Zoom and other actions the connected radio cannot perform are refused rather tha The dial is turned off in Radio Setup, or AetherSDR has not claimed it. 1. Check that **Use a Ulanzi Dial when detected** is ticked in **Settings → Radio Setup... → Serial & Controllers**. -2. Open **Settings → Ulanzi Dial Mapping...** and turn the knob: the **Last event** line should change. +2. Open **Settings → Controllers → Ulanzi Dial Mapping...** and turn the knob: the **Last event** line should change. 3. Turn on the **Ext Devices** log category (see [Support and Logging](./support-and-logging.md)) to see dial detection and connection events. ### Linux: the mapper says "needs permission" diff --git a/docs/user/versioned_docs/version-stable/usb-control-surfaces.md b/docs/user/versioned_docs/version-stable/usb-control-surfaces.md index 207d8e4b01..ff2efbb281 100644 --- a/docs/user/versioned_docs/version-stable/usb-control-surfaces.md +++ b/docs/user/versioned_docs/version-stable/usb-control-surfaces.md @@ -4,7 +4,7 @@ slug: "/usb-control-surfaces" description: "AetherSDR works with hardware knobs, jog wheels, button decks and keying interfaces connected to the computer." --- -AetherSDR works with hardware knobs, jog wheels, button decks and keying interfaces connected to the computer. Most of them are set up on one Radio Setup page, **Settings → Radio Setup... → Serial & Controllers**, which you can also reach from **Settings → FlexControl Knob & Buttons...**. +AetherSDR works with hardware knobs, jog wheels, button decks and keying interfaces connected to the computer. Most of them are set up on one Radio Setup page, **Settings → Radio Setup... → Serial & Controllers**, which you can also reach from **Settings → Controllers → FlexControl Knob & Buttons...**. These are host devices: they plug into your computer, not the radio, so the page and its controllers stay available on every radio family. Actions the connected radio cannot perform (for example band zoom on some radios) are refused with a notice rather than sent. @@ -18,7 +18,7 @@ These are host devices: they plug into your computer, not the radio, so the page | Device | Connection | Where it is set up | |--------|-----------|--------------------| | FlexRadio FlexControl | USB serial | [FlexControl Tuning Knob](./flexcontrol-tuning-knob.md) | -| Icom RC-28 remote encoder | USB HID | **Settings → Icom RC-28 Remote Encoder...** | +| Icom RC-28 remote encoder | USB HID | **Settings → Controllers → Icom RC-28 Remote Encoder...** | | Griffin PowerMate | USB HID | Serial & Controllers → HID encoder groups | | Contour ShuttleXpress / ShuttlePro v2 | USB HID | Serial & Controllers → HID encoder groups | | ELAD / WoodBoxRadio TMate 2 | USB HID | Serial & Controllers → TMate 2 groups | @@ -72,7 +72,7 @@ The full action lists are under [Reference](#reference). The RC-28 is a weighted tuning knob with **F1**, **F2** and a **TX** bar. A community Arduino emulator (`aether-pad`) that speaks the same protocol is also recognized. 1. Tick **Enable HID encoders / StreamDeck+** (see [Setup](#setup)). -2. Open **Settings → Icom RC-28 Remote Encoder...** ("Icom RC-28 Button Mapping"). +2. Open **Settings → Controllers → Icom RC-28 Remote Encoder...** ("Icom RC-28 Button Mapping"). The dialog has: @@ -95,6 +95,23 @@ Tuning speed follows how fast you turn the knob. Auto-snap rounds to the nearest The PowerMate (one knob with a push) and the Contour ShuttleXpress (5 buttons) and ShuttlePro v2 (15 buttons) work as single-encoder devices. Enable HID encoders, then choose the knob or jog wheel's action as **Encoder 1**. Their buttons are numbered from 1 and use the **Key 1–8** slots in **StreamDeck+ LCD Button Actions**; the PowerMate's push is Key 1. +Contour reports can contain several button changes together. Every press and release is handled, and turning the jog wheel while pressing a button still tunes normally. + +On ShuttlePro v2, buttons 1–8 use **Key 1–8**, buttons 9–12 use **StreamDeck+ Encoder Push Actions**, and buttons 13–15 have no action mapping. + +### Contour shuttle ring + +The spring-loaded outer ring tunes continuously while held. A small deflection tunes slowly; full deflection sweeps at about 100 kHz/s at **Normal** speed. Releasing the ring stops tuning. A new deflection applies its first step after about 60 ms; larger tuning steps have a minimum step rate so the inner positions remain usable. + +Set it up under **Settings → Radio Setup... → Serial & Controllers → Shuttle Ring (ShuttleXpress / ShuttlePro)**: + +| Setting | Choices | Default | +|---------|---------|---------| +| **Action** | Tune Slice, RIT (Receive Incremental Tuning), XIT (Transmit Incremental Tuning), None | Tune Slice | +| **Speed** | Slow (×0.5), Normal, Fast (×2) | Normal | + +The ring uses the same direction setting as the jog wheel. Tune Slice respects the active slice's Tune Lock. RIT and XIT move in 10 Hz increments, capped at 1 kHz/s and ±9999 Hz. Unplugging the controller stops ring tuning. The ring does not trigger auto-snap on release. + ## Using the TMate 2 The TMate 2 (three encoders, six function keys and an LCD) has its own groups on the same page: **TMate 2 Key Actions** (F1–F6), **TMate 2 Encoder Actions**, **TMate 2 Encoder Push Actions** and **TMate 2 Display**. Its LCD shows the frequency, mode, S-meter and transmit state. diff --git a/docs/user/versioned_docs/version-stable/vfo-widget.md b/docs/user/versioned_docs/version-stable/vfo-widget.md index 2f5a7d6619..da2a7cf66f 100644 --- a/docs/user/versioned_docs/version-stable/vfo-widget.md +++ b/docs/user/versioned_docs/version-stable/vfo-widget.md @@ -63,14 +63,17 @@ Click a label along the bottom of the flag to open its tab. Controls the slice's #### 🔊 Audio -VFO flag with the speaker tab open below the frequency. It holds an AF slider at 50, a SQL slider at 20, an AGC mode selector set to Med with its threshold slider at 65, and a DIV button next to a left-right pan slider. +VFO flag tuned to 14.250.000 USB with the speaker tab open. AF, SQL and pan sliders are shown. The AGC row contains a Med selector, enabled threshold slider at 41 and a lit Auto button on the right. -*The VFO flag with the audio tab open.* +*The VFO flag audio tab with radio Auto AGC-T enabled.* - **AF** slider with mute - **Pan** (left/right) with a center marker - **SQL** — squelch on/off and level - **AGC-T** — AGC mode (Off / Slow / Med / Fast) and threshold +- **Auto** — radio-controlled AGC threshold, independent of AGC speed. The + slider remains enabled; moving it returns threshold control to manual. + Availability and license requirements match the [RX applet](./rx-controls.md#agc). #### DSP @@ -82,6 +85,8 @@ from the samples on either side instead of silencing it, and while it runs an **NB2** fill row appears: **Zero**, **Sample hold**, **Mean hold**, **Hold sample** or **Interpolate**. +The **Parameters:** selector and **Reset** button restore radio DSP parameters to firmware defaults. Choose a target, then press **Reset**; selecting alone does nothing. **All** includes NB and APF levels and preserves every algorithm's on/off state. Reset requires supported firmware, mode, slice ownership and, for advanced targets, entitlement. Unavailable targets stay visible and dimmed with reasons; if the selected target becomes unavailable, Reset is also dimmed and explains the restriction. See [Resetting radio DSP parameters](./dsp-noise-mitigation.md#resetting-radio-dsp-parameters) for requirements and scope. + The same tab has the **AetherRX** and **AetherTX** launchers, always the same width, which open AetherSDR's own receive and transmit audio chains. The client-side noise reduction methods (NR2, RN2, NR4, NNR, DFNR, BNR, MNR) live in **AetherRX**, not on this tab; see [Aetherial Audio](./aetherial-audio.md) and [DSP Noise Mitigation](./dsp-noise-mitigation.md). The **DSP** tab label is color-coded: green when any radio DSP or client noise reduction is active, gray when everything is off, cyan while the tab is open. diff --git a/docs/user/versioned_docs/version-stable/wsjt-x-integration.md b/docs/user/versioned_docs/version-stable/wsjt-x-integration.md index 48689d32ed..9588b50299 100644 --- a/docs/user/versioned_docs/version-stable/wsjt-x-integration.md +++ b/docs/user/versioned_docs/version-stable/wsjt-x-integration.md @@ -82,6 +82,7 @@ AetherSDR can listen to WSJT-X's UDP decode messages and put the stations it dec - FT8 transmitted on slice B can show heavy ALC and be decoded far less often than the same signal on slice A ([#5340](https://github.com/aethersdr/AetherSDR/issues/5340)). - Over TCI, the mic profile, **MIC** level and **PROC** in the Phone/CW applet change the transmitted digital signal ([#5844](https://github.com/aethersdr/AetherSDR/issues/5844)). - Over TCI, the transmitted FT8 signal can show random jumps ([#5133](https://github.com/aethersdr/AetherSDR/issues/5133)). +- **(FlexRadio, firmware v4.3 and later)** A footswitch or other hardware PTT transmits the selected TX source, so with DAX on it sends WSJT-X's audio, not your microphone. Turn on **PTT Mic Override** to make a hardware PTT use the microphone instead. See [Hardware PTT and the TX source](./tx-controls.md#hardware-ptt-and-the-tx-source). - On macOS, DAX transmit can stop sending audio to the radio until AetherSDR is restarted ([#5870](https://github.com/aethersdr/AetherSDR/issues/5870)). ## Troubleshooting diff --git a/docs/user/versioned_docs/version-stable/xvtr-transverters.md b/docs/user/versioned_docs/version-stable/xvtr-transverters.md index 732e0d35de..3383f2e505 100644 --- a/docs/user/versioned_docs/version-stable/xvtr-transverters.md +++ b/docs/user/versioned_docs/version-stable/xvtr-transverters.md @@ -27,7 +27,7 @@ the FlexRadio's XVTR configuration and its XVTA / XVTB antenna ports. panadapter's Band panel, which jumps there). 2. Click **Create New Transverter**. 3. Fill in: - - **Name** — e.g., "2m" + - **Name** — up to four characters, e.g., "2m" - **RF Freq (MHz)** — transverter RF frequency (e.g., 144.000) - **IF Freq (MHz)** — radio IF frequency (e.g., 28.000) - **LO Freq (MHz)** — calculated for you (RF − IF) diff --git a/docs/user/versioned_sidebars/version-stable-sidebars.json b/docs/user/versioned_sidebars/version-stable-sidebars.json index 63966f0a88..1bfb853554 100644 --- a/docs/user/versioned_sidebars/version-stable-sidebars.json +++ b/docs/user/versioned_sidebars/version-stable-sidebars.json @@ -104,6 +104,8 @@ "peripherals", "amplifiers", "tgxl-tuner-control", + "kat500-tuner-control", + "kxpa100-amplifier-control", "shackswitch", "green-heron-everyware", "usb-cable-management" From c9bdfd2c59962f63772b3751f20f1b4df4017822 Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:14:09 -0700 Subject: [PATCH 3/7] release: refine v26.10.3 public notes. Principle XIII. Keep validation-failure evidence in the prep PR per the operator release decision; retain feature limits and the multi-slice Auto SQL highlights in the public notes. --- CHANGELOG.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce328dace1..482b53908c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ### Auto squelch that stays with its slice, local voice recordings and neural CW decoders · CTR2 firmware management and Elecraft station panels · SmartSDR 4.3 controls and more typed backend requests -80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally without a SmartSDR+ licence, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. The full-suite and weekly sanitizer failures at the cutoff are recorded below; this release does not claim a clean sweep. +80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally without a SmartSDR+ licence, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. ### Auto squelch across CW, FT8 and multiple receivers @@ -92,10 +92,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). - 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). -### Known validation failures at the release cutoff - -Required CI passed on cutoff `9eace2448`, but [Full Suite](https://github.com/aethersdr/AetherSDR/actions/runs/39133724639) reported five failures out of 865: `control_receive_test`, `rtl_capture_worker_test`, `rtl_capture_worker_slow_device_test`, `radio_setup_operations_test` and `auto_agc_threshold_gui_test`. The [October 17 weekly sanitizer run](https://github.com/aethersdr/AetherSDR/actions/runs/39032860552) failed `ctr2_hid_thread_port_test` under TSan and `firmware_install_model_test` under ASan/UBSan. These failures are disclosed; the release-prep pass does not resolve or classify them as harmless. - ### 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, CTR2 firmware management, 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. From c100a07e49ef2a91c5e8aefd55764021978a90dd Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:15:09 -0700 Subject: [PATCH 4/7] release: refine voice keyer summary. Principle XIII. --- CHANGELOG.md | 4 ++-- ROADMAP.md | 3 +-- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 482b53908c..02a130f8c8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -12,7 +12,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ### Auto squelch that stays with its slice, local voice recordings and neural CW decoders · CTR2 firmware management and Elecraft station panels · SmartSDR 4.3 controls and more typed backend requests -80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally without a SmartSDR+ licence, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. +80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. ### Auto squelch across CW, FT8 and multiple receivers @@ -24,7 +24,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ### Local voice recordings and neural CW reception -- **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 and need no SmartSDR+ licence; Radio slots retain their radio-owned recordings and 10-second limit. Automatic chooses by radio capability/licence. 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 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. - **DeepCW and DeepFist join ggmorse as standard receive decoder choices (#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. - 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). diff --git a/ROADMAP.md b/ROADMAP.md index 32aa2775d9..18819585a9 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -379,8 +379,7 @@ complete list are in [`CHANGELOG.md`](CHANGELOG.md): Auto intent/margins, own-pan noise floors and preserved manual thresholds. PR #6464 (v26.10.3). - **Local voice recordings** — twelve 30-second slots, PC-microphone recording, - preview/import/export and F1–F12 playback without a SmartSDR+ licence; the - radio keyer remains selectable (v26.10.3). + preview/import/export and F1–F12 playback; the radio keyer remains selectable (v26.10.3). - **DeepCW and DeepFist** — standard RX choices beside ggmorse where ONNX Runtime is available, with pinned upstream model downloads on first use (v26.10.3). From 2f8f116ffe3c9b79720e77164038eaff40bfb239 Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:16:28 -0700 Subject: [PATCH 5/7] release: focus Auto SQL notes on operator fixes. Principle XIII. --- CHANGELOG.md | 1 - 1 file changed, 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02a130f8c8..45c7ad8ea5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,7 +20,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). - **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. -- The merged change includes 55 reconciliation cases, targeted guard-removal checks and a TX-disabled demo bridge round trip: Manual 54 → Auto 66 → CW or DIGU → USB returned to Manual 54. Earlier live observations in the PR are identified separately. **No FT8 decoder or external DAX validation is claimed by the final pass**, and the broader squelch policy work remains open. ### Local voice recordings and neural CW reception From 280904bdc06e56526034f6cb742e4143057d9a21 Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:21:09 -0700 Subject: [PATCH 6/7] release: lead with SmartSDR 4.3 and DeepCW. Principle XIII. Remove controller-firmware promotion from the public release material; retain controller fixes and preserve internal mapping and contributor credit. --- CHANGELOG.md | 51 ++++++++++++++++++++++++++------------------------- README.md | 7 +++---- ROADMAP.md | 26 ++++++++++++-------------- 3 files changed, 41 insertions(+), 43 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 45c7ad8ea5..afd71e41b5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,9 +10,29 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ## [v26.10.3] — 2026-10-18 -### Auto squelch that stays with its slice, local voice recordings and neural CW decoders · CTR2 firmware management and Elecraft station panels · SmartSDR 4.3 controls and more typed backend requests +### SmartSDR 4.3 firmware support and the DeepCW AI CW decoder · Multi-slice Auto SQL fixes, local voice recordings and Elecraft station panels · Controller improvements and typed backend controls -80 merged changes from 14 human contributors and two Dependabot updates within that total. Auto squelch gains twelve corrections spanning mode eligibility, independent slices, pan ownership and manual-threshold recovery, especially relevant to CW and FT8 stations running several receivers. The voice keyer records locally, DeepCW and DeepFist join the CW decoder selector, and the CTR2 window installs and switches controller firmware. Elecraft KPA500, KAT500 and KXPA100 panels join the station controls; Flex gains radio-owned Auto AGC-T, DSP parameter resets and per-band TUNE RCA suppression. Underneath, another three groups of desktop controls move behind the typed backend seam. +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 @@ -21,19 +41,16 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). - **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 neural CW reception +### 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. -- **DeepCW and DeepFist join ggmorse as standard receive decoder choices (#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. - 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). -### CTR2 and USB controllers +### Controllers and USB devices -- **Install and update AetherCTR2 from AetherSDR (#6487).** Settings → Controllers → CTR2… combines the relay and CTR2-Max firmware management. AetherCTR2 updates over its link; a stock unit installs through the ESP32-S3 bootloader. Signed manifests and image hashes are checked before writing, protected flash regions are retained, and installation requires a Lynovation-registered CTR2-Max. The relay can start automatically on radio connection when explicitly configured. -- **Lynovation firmware, per-unit backups and firmware switching (#6527).** Separate AetherCTR2 and Lynovation tabs offer the relevant versions and that unit's backups. Every install first saves the complete flash, keeping the latest three backups per unit. Lynovation images come from the operator's downloaded ZIP/bin; online catalog installation requires a trusted Lynovation key. Only the application partition is written, preserving registration, settings and AetherCTR2. Restart into AetherCTR2, Stock Firmware or Bootloader uses a supported command or explains BOOT+RESET and continues when download mode appears. -- One AetherSDR process owns a CTR2 USB HID path at a time; another is refused with the owner PID when available. AetherCTR2 before 0.9.2 receives manual BOOT/RESET guidance rather than an unsupported bootloader command (#6530). +- 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). @@ -44,22 +61,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). - **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. -### FlexRadio firmware, DSP and transmit - -- **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). - ### 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. @@ -93,7 +94,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ### 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, CTR2 firmware management, 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. +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**! diff --git a/README.md b/README.md index 1a2f143b09..efdfaf9c9d 100644 --- a/README.md +++ b/README.md @@ -37,7 +37,7 @@ AetherSDR brings full FlexRadio operation to Linux, macOS, and Windows — each - **FreeDV RADE** — AI digital-voice codec with a client-side neural encoder/decoder - **AetherMap (PSK Reporter) overlays** — optional global precipitation (LibreWXR, with NOAA, ECCC and EUMETNET OPERA regional radar backups and a per-provider legend), NOAA/NWS weather radar with observation playback ([`docs`](docs/psk-reporter-weather-radar.md)) and a NASA/GSFC VIIRS night-lights layer that fades through civil twilight ([`docs`](docs/psk-reporter-city-lights.md)), on both the 2D map and 3D globe - **SmartLink remote, remote over CGNAT, and a TCI v2.0 server** — Auth0/TLS WAN operation; an in-radio Tailscale node that carries AetherSDR to a FLEX-8000 or Aurora radio behind CGNAT; and CAT + audio + IQ + CW + spots + tune and receiver events over a single TCI WebSocket -- **Broad hardware control** — rigctld and virtual-serial CAT, MIDI mapping, the FlexControl knob, serial PTT/CW keying, Multi-Flex operation alongside SmartSDR/Maestro, and a CTR2-Max relay over Wi-Fi or compatible USB firmware, with signed AetherCTR2 installation, stock-firmware installation, per-unit backups and firmware switching +- **Broad hardware control** — rigctld and virtual-serial CAT, MIDI mapping, the FlexControl knob, serial PTT/CW keying, Multi-Flex operation alongside SmartSDR/Maestro, and a CTR2-Max relay over Wi-Fi, with negotiated spectrum and CW-text extensions for compatible USB controllers - **Workspace canvas** — place pans and applets freely as resizable, layered items with edge and grid snapping, across several windows if you want them. Named workspaces recall which applets are open as well as where they sit, and bind to radio profiles. Off by default; the Classic shell is unchanged until you enable it - **A user guide at [docs.aethersdr.com](https://docs.aethersdr.com)** — Stable and Next versions, a printable PDF manual signed with each release, and a Log Analyzer that reads a log or support bundle in your browser without uploading it - **Built-in demo mode** — a synthetic backend generating its own RX audio and matching panadapter, with a fault-injection harness, so you can explore the full UI with no radio attached (it cannot transmit) @@ -270,9 +270,8 @@ Currently in flight: remaining work for each is under [Supported Hardware](#supported-hardware). - **Workspace canvas** — an experimental alternative shell; remaining work is live cross-window drag and field time against the Classic shell. -- **CTR2 controller relay and firmware** — Wi-Fi and compatible USB firmware, - with negotiated spectrum/CW text, AetherCTR2 installation and updates, stock - firmware installation, per-unit backups and switching from the CTR2 window. +- **CTR2 controller relay** — Wi-Fi operation, with negotiated spectrum/CW + text for compatible USB controllers and exclusive USB device ownership. - **The visual canon** — the AetherSDR style guide (RFC #6226) is applied one surface at a time; SpotHub, Radio Setup and AetherControl now join the earlier windows, and a single base-token flip comes last. diff --git a/ROADMAP.md b/ROADMAP.md index 18819585a9..39d5ef155c 100644 --- a/ROADMAP.md +++ b/ROADMAP.md @@ -204,12 +204,10 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). v26.10.2 added per-device link extensions ([RFC #6332](https://github.com/aethersdr/AetherSDR/issues/6332), approved): a device on the USB relay can negotiate an audio-spectrum feed and the relay's UDP port, verified end to end with an AetherKnob on a FLEX-8600, while a stock - CTR2 stays on plain link v0. The CTR2-Max can now install AetherCTR2 from the CTR2 window in v26.10.3, - with signed packages, stock-firmware installation, full-flash per-unit backups - and restart into either firmware. Compatible controllers can negotiate a - CW-pitch-centered linear spectrum and RX CW text. The relay and updater - share exclusive USB device ownership; stock USB relay compatibility still - depends on the controller firmware. + CTR2 stays on plain link v0. v26.10.3 adds a CW-pitch-centered linear spectrum + and RX CW text for compatible controllers, and exclusive USB device ownership between AetherSDR + processes. Stock USB relay compatibility still depends on the controller + firmware. - **AetherSDR style guide — the visual canon** ([RFC #6226](https://github.com/aethersdr/AetherSDR/issues/6226), approved; tracking [#6239](https://github.com/aethersdr/AetherSDR/issues/6239)) — the canon is written down in `docs/style/aethersdr-style-guide.md` with its own `color.canon.*` tokens, @@ -374,23 +372,23 @@ implementation**. An approved RFC moves up into the cycle above. Full list: Highlights from the current cycle (v26.10.x). Earlier releases and the complete list are in [`CHANGELOG.md`](CHANGELOG.md): +- **SmartSDR 4.3 controls** — radio-owned Auto AGC-T, DSP parameter reset, + PTT Mic Override and per-band RCA off/TUNE, gated by firmware, hardware and + licence as applicable (v26.10.3). +- **DeepCW and DeepFist** — standard RX choices beside ggmorse where ONNX + Runtime is available, with pinned upstream model downloads on first use + (v26.10.3). - **Auto squelch stays with its slice and pan** — twelve corrections for CW, FT8/digital and multi-receiver setups: mode gates and overlays, independent Auto intent/margins, own-pan noise floors and preserved manual thresholds. PR #6464 (v26.10.3). - **Local voice recordings** — twelve 30-second slots, PC-microphone recording, preview/import/export and F1–F12 playback; the radio keyer remains selectable (v26.10.3). -- **DeepCW and DeepFist** — standard RX choices beside ggmorse where ONNX - Runtime is available, with pinned upstream model downloads on first use +- **Controller improvements** — exclusive CTR2 USB ownership, negotiated + CW-centered spectrum/text and variable-speed Contour shuttle tuning (v26.10.3). -- **CTR2 firmware management** — install/update AetherCTR2, install stock - Lynovation images, keep per-unit backups and switch firmware from the CTR2 - window, with exclusive USB ownership (v26.10.3). - **Elecraft station panels** — KPA500, KAT500 and KXPA100/KXAT100 over serial or raw TCP, with Full/Mini views and Advanced maintenance (v26.10.3). -- **SmartSDR 4.3 controls** — radio-owned Auto AGC-T, DSP parameter reset, - PTT Mic Override and per-band RCA off/TUNE, gated by firmware, hardware and - licence as applicable (v26.10.3). - **HL2 AM/DSB/FM and RTL SSB/CW/AM/SAM** — TXA adds the HL2 transmit modes; RTL adds receive DSP and selected-decoder audio, retaining its normal one-receiver limit (v26.10.3). From 56219c14ebbe4efdd7d22be3e39987d5111f08ee Mon Sep 17 00:00:00 2001 From: jensenpat Date: Sun, 18 Oct 2026 08:34:08 -0700 Subject: [PATCH 7/7] release: label experimental backend notes. Principle XIII. --- CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index afd71e41b5..8b5ce44ce0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -61,7 +61,7 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). - **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. -### Hermes-Lite 2, ANAN-G2 and RTL-SDR +### 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).