diff --git a/AGENTS.md b/AGENTS.md index 7dbd7dc02e..0dbdf442ff 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.3**. +Current version: **26.10.4**. 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 8b5ce44ce0..5bdcd7c31c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,78 @@ Format follows [Keep a Changelog](https://keepachangelog.com/). ## [Unreleased] +## [v26.10.4] — 2026-10-25 + +### The Updates window and an automatic update check · SmartSDR 4.3 Noise Floor Range, CW profiles, APD and meter fixes · RF-KIT RF2K-S, the Icom SCROLL-F panadapter and ANAN-G2 band-pass filters · typed slice and panadapter lifecycle + +72 merged changes from 13 human contributors and one Dependabot update within that total. AetherSDR now checks for its own updates at launch, at most once every 24 hours, and shows the result as a title-bar badge, and File → Update... opens one window for the AetherSDR release and the radio's firmware. Underneath it, the signed update manifest, the patch stager and the Windows swap helper are built and tested, ready for the install button that follows. SmartSDR 4.3 support continues with the radio's Noise Floor Range, CW profiles, the APD state machine and unsigned amplifier and tuner meter handles. A wide Retina panadapter no longer stops a FLEX-8600's display output for every client. Station accessories gain the RF-KIT RF2K-S, the Icom panadapter scrolls instead of recentering, and the ANAN-G2 selects its receive band-pass filters. Upgraded Windows installs get HTTPS back, and touch screens get pinch-zoom and press-and-hold. Slice lifecycle, split routing and panadapter/waterfall control move behind typed backend requests. + +### In-app updates + +- **An automatic update check and an UPDATE badge (#6715).** The check runs 15 seconds after launch and at most once every 24 hours, and a failed attempt counts toward the wait. A newer release only lights the **UPDATE** pill beside the AetherSDR wordmark: nothing pops up, and "up to date" or a network failure stays silent. The badge survives a restart inside the wait, clears when you upgrade, and never shows for a release you skipped with the new **Skip This Version** button. Store-managed installs never show it. It is on by default. A manual check during the startup check keeps the daily wait, and redirects are refused (#6716). +- **The Updates window, File → Update... (#6717).** A canon window that shows the release, its version and date, and a chip for each chapter of its notes. **Get AetherSDR** opens the download built for this computer: the Windows setup or portable ZIP, the macOS Apple Silicon DMG, or the Linux x86_64/aarch64 AppImage. When none fits, it opens the release page. +- **Radio firmware moves into the Updates window (#6718).** The **YOUR RADIO** section lists FlexRadio's published SmartSDR releases, one lane per major line, with the installed release outlined and the newest release in the radio's own line preselected when the radio is behind. A v3 radio is offered v3, never v4. **Install** downloads the installer from FlexRadio, checks it against FlexRadio's MD5, extracts the firmware and uploads it after one confirmation; if the MD5 cannot be fetched, it stops and asks again, saying the integrity was not checked. Radio Setup keeps only the FW Version. +- The update pipeline behind the next step. Every release now publishes a signed manifest and per-file patch bundles for the last four stable releases (#6737), with a publication check that reports each failed read and repairs a torn `latest/` (#6746). `UpdateStager` applies a signed update into a copy of the install, and falls back to the full signed portable ZIP when no patch applies; a staged release is kept across launches (#6747, #6771). On Windows, `AetherSDRUpdater` swaps a staged release in after AetherSDR exits, checks it and rolls back on failure (#6767). Nothing starts an install yet: the Install and Restart to update buttons come next. + +### SmartSDR 4.3 and FlexRadio + +- **Noise Floor Range (#6660).** SmartSDR 4.3.16 lets the radio's Auto FFT floor tolerate 0–10 dB of noise-floor movement before it repositions the panadapter, which reduces oscillation at high zoom. An **NF Range** slider under FFT Floor shows the pan's reported value and requests a new one on release, click or keystroke. It is dimmed, with its reason, until the radio is a FLEX-8000 or Aurora on 4.3.16 or later, the SmartSDR+ license is confirmed and the pan has reported a value. The radio owns the value; nothing is stored or re-sent by the client. +- **CW profiles (#6668).** On 4.3.16 and later, the profile list, load, create, delete and reset verbs reach SmartSDR's new CW profile type, with its unsaved-changes flag, gated by a `cwProfileControl` capability record. +- **A wide Retina pan no longer stops the radio's display (#6728).** A FLEX-8600 on 4.3.16 accepts a pan width of 4093 pixels or more and then sends no FFT or waterfall data to any client until it reboots. AetherSDR caps the request at 3840. +- **One owner for the transmit DAX flag (#6593).** The radio's `transmit dax` bit is shared by every client. TCI no longer latches it on, so the next microphone transmission is modulated again, and RADE sets it on Windows, so DAX no longer has to be pressed and released around it. +- SmartCAT and rigctld map SmartSDR 4.3's `FDVU`/`FDVL` FreeDV modes, so a logger no longer reads USB and switches the slice out of FreeDV (#6657). Amplifier and tuner meter handles at or above `0x80000000` parse as unsigned, so PGXL meters stay on the amplifier panel and TGXL meters stay off it (#6658). APD follows the radio's `state=` lifecycle and applies equalizer status only for the matching transmit slice, antenna, frequency and power (#6659). +- CW key and PTT commands send the client handle as eight hex digits, as FlexLib does (#6612). The slice's processing chain and the radio's IARU region are retained read-only and exposed through the automation bridge and troubleshooting JSON (#6613). +- A host firewall that drops unsolicited UDP no longer leaves a LAN connection with no spectrum, audio or meters: a keepalive to the radio's VITA source port 4993 holds the return path open, and the no-spectrum warning names the firewall as a likely cause (#6704). +- A radio reached over IPv6 binds its LAN sockets in the right address family (#6700), and its CTR2 relay, VPN source path picker, VITA QoS marking and diagnostics work over IPv6 too (#6708). The Tailscale Remote Access guide states the 4.2.18 firmware minimum for the in-radio container (#6651). + +### Icom, ANAN-G2 and Hermes-Lite 2 + +- **The Icom panadapter scrolls instead of recentering (#6688).** On the IC-7300MK2, IC-705 and IC-9700 the scope runs in SCROLL-F, so clicking, the wheel and slice-marker drags tune the VFO without moving the window, a pan drag scrolls without retuning, and the window follows only at its margins, as on a Flex. A new Icom-only **Scope** row in the Display panel selects Center, Scroll-F or Fixed. +- The IC-705's preamp cycles OFF/P.AMP1 at and above 74.8 MHz instead of requesting the P.AMP2 stage the radio rejects (#6679). A networked Icom that releases the current audio and CI-V streams now disconnects and reconnects instead of staying falsely connected (#6682). +- **ANAN-G2 band-pass filters and speaker mute (#6673).** RFC #6209 parts 2 and 3: **Filter bank: Follow the tuned frequency** selects the receive band-pass filter on both ADCs as DDC0 tunes (Bypassed remains the default), and **Mute the radio's speaker amplifier** mutes the G2's amplifier independently of the title-bar mute. ANAN discovery logs bind and send failures once per condition and keeps sweeping after a bind failure (#6666). +- The Hermes-Lite 2 reads the N2ADR IO board's status registers — the input pins, ATU progress, fault code and firmware version — over the I2C read path as `ioboard.status`, with no new write path (#6703). + +### Station accessories and controllers + +- **RF-KIT RF2K-S amplifier (#6596).** A standalone peripheral over the amplifier's REST API: forward and reflected power, SWR, temperature, supply, current, band, frequency and tuner status, with OPERATE/STANDBY, internal antenna selection and a confirmed error reset. Tested on an RF2K-S at firmware G200C267; other RF-KIT models are untested. Clearing a peripheral's address in Radio Setup now also stops a reconnect loop aimed at it. +- The TGXL power gauge follows the shared transmit meter selection, so it no longer pins at 200 W with a KPA500 in operate (#6707). +- **The CTR2 relay over USB with Lynovation's firmware (#6698).** CTR2-Max firmware v1.02.00 and later relays over USB, and the relay starts it automatically. A USB relay with no answer for 10 seconds says which firmware it needs. **Wide reports** carry up to seven link reports per USB transfer, about 49 KB/s each way, for devices that offer them (#6713, #6714); on Windows, update AetherSDR before installing firmware that uses them. +- On Linux, one click installs the udev rule that lets the logged-in user flash a CTR2-Max in download mode (#6741). The CTR2 window's questions use canon message boxes, and a restart on request no longer leaves the relay in Error or the firmware offer stale (#6736, #6766). +- CTR2 device rescans enumerate only the known CTR2 VID:PIDs and run off the GUI thread, ending the periodic spectrum freezes on Windows (#6583, #6645), and HID discovery is serialized process-wide, so concurrent rescans no longer crash macOS (#6606). + +### Windows, display and operation + +- **Touch gestures (#6772).** Pinch-zoom on the panadapter, press-and-hold as a right-click, and kinetic scrolling in lists and menus, for the Maestro's panel and any Qt touch screen. Tap-to-tune, drag-to-pan and mouse and trackpad behavior are unchanged. RFC #6775. +- **Upgraded Windows installs get HTTPS back (#6687).** An installer before May 2026 left a Qt 6.7 TLS plugin that cannot load under Qt 6.12, and it disabled every HTTPS and WSS connection: SmartLink, update checks, QRZ, FreeDV Reporter, propagation and model downloads. The installer now clears the Qt plugin folders on upgrade. +- The multiFLEX Dashboard, TX Band Settings, Icom RC-28 Button Mapping and NR2's FFTW Wisdom window move to canon windows (#6768, #6735, #6745, #6776). The multiFLEX Dashboard stays open beside the main window, and TX Band Settings follows the radio's TX profile, band values and answers. +- Band plans gain segment usage notes on hover, and the IARU Region 1 and SSA rows painted digi-only are all-modes again (#6573, RFC #4667). +- DVK slots stay readable in a short window (#6611). The compact RX presets fit Linux's DejaVu Sans (#6643). The Waveforms empty-state hint no longer clips (#6689). The GHE Port field shows and edits its value (#6692). Radio Setup stays in front the first time a page is built on macOS (#6602). The FlexControl menu entry keeps its ampersand (#6569). Copy Assist keeps the reason an enable failed (#6694). +- Band-state and bookmark replays no longer raise unsupported-control notices for controls the radio lacks, while explicit operator requests still do (#6672). +- The ggmorse decoder keeps its pitch and WPM ranges across restarts and pans (#6633). Unlocking a stopped CW decoder leaves no dead pitch for Zero Beat, and ggmorse no longer writes decoded text to stdout (#6674); the vendored library's local changes are recorded (#6670). +- `midi.settings` is written atomically, so a failed save keeps the previous bindings (#6630). + +### Typed backend controls (aetherd M4) + +- Spots, lineout/headphone/front-speaker controls, pan zoom and RX antenna, tuning step and net corrections move to typed requests, shrinking the raw Flex command count above the seam from 215 to 192 (#6619). Slice create/remove, split routing, TX-slice assignment, full duplex and slice refresh follow (#6621), then panadapter/waterfall lifecycle and every existing display control (#6628). Setup refusals name the requested setting in their diagnostics (#6665). These are scoped M4 increments, not completion of aetherd or a thin UI client. + +### Automation and bridge + +- The bridge's `vox_toggle` shortcut requires TX permission, and VOX can be disarmed without it (#6631). + +### Project and packaging + +- CI: signing, Store and Pages deploys run in environment-gated jobs (#6571); docs.aethersdr.com deploys when a release is published, from its tag (#6558); CodeQL compile coverage includes `deepcw_ctc_test` and `update_swap_test` (#6551, #6774); the full-suite tracking issue names the source PR and compares failures with the parent run (#6652, RFC #6435). +- macOS development builds can opt in to ad-hoc signing for local-network discovery (#6662). Tests follow RTL native receive, the TX band RCA column and a live HL2 TCI session (#6637, #6642). +- `actions/setup-python` moves to 7.1.0 (#6719). + +### Contributors + +Thanks to **@ten9876** (31 commits — maintainer; in-app updates, SmartSDR 4.3 support, IPv6 and firewall fixes, CTR2 USB relay and wide reports, touch gestures, canon dialogs and CI), **@rfoust** (9 commits — typed slice, utility and panadapter controls, HID discovery, NetCW handles, chain/IARU metadata, DVK and RX preset sizing, macOS development signing), **@NF0T** (8 commits — the transmit DAX flag, the Windows TLS upgrade fix, band-plan usage notes, setup diagnostics, the VOX bridge gate, atomic MIDI settings and release-time docs deploys), **@Ozy311** (6 commits — CTR2 VID:PID scanning, IC-705 preamp, Icom media reconnect, Copy Assist, Waveforms and GHE port fixes), **@w5jwp** (5 commits — the Retina pan cap, TX Band Settings and RC-28 canon windows, Radio Setup and FlexControl menu fixes), **@skerker** (4 commits — ggmorse ranges and decoder fixes, CodeQL coverage), **@tropo1234** (2 commits — ANAN-G2 band-pass filters, speaker mute and discovery logging), **@jensenpat** (1 commit — the Icom SCROLL-F panadapter), **@nreed97** (1 commit — SmartSDR 4.3 CW profiles), **@on8st** (1 commit — HL2 TCI test fixture), **@ve3nsv** (1 commit — RF-KIT RF2K-S support), **@W5TSU** (1 commit — HL2 IO board status) and **@WA8PAM** (1 commit — TGXL power gauge with a KPA500). Dependabot contributed one dependency update. Counts cover primary commit authors; co-author credit remains in the commit history. + +Welcome to first-time contributors **@ve3nsv**, **@W5TSU**! + +73, Jeremy KK7GWY & Claude (AI dev partner) + ## [v26.10.3] — 2026-10-18 ### 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 diff --git a/CMakeLists.txt b/CMakeLists.txt index 425245a170..bdeef05627 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.3 LANGUAGES C CXX) +project(AetherSDR VERSION 26.10.4 LANGUAGES C CXX) set(CMAKE_CXX_STANDARD 20) set(CMAKE_CXX_STANDARD_REQUIRED ON) diff --git a/README.md b/README.md index 51065d7609..37f1e35712 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.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) +**Current version: 26.10.4** — 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. @@ -37,9 +37,10 @@ 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, with negotiated spectrum and CW-text extensions for compatible USB controllers +- **Broad hardware control** — rigctld and virtual-serial CAT, MIDI mapping, the FlexControl knob, serial PTT/CW keying, Multi-Flex operation alongside SmartSDR/Maestro, a CTR2-Max relay over Wi-Fi or USB with negotiated spectrum and CW-text extensions for compatible controllers, and touch gestures (pinch-zoom, press-and-hold, kinetic scrolling) on touch screens - **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 +- **In-app updates** — a check at launch, at most once a day, that lights an UPDATE badge in the title bar, and an Updates window (File → Update...) with the download built for this computer and the radio's firmware releases - **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) --- @@ -102,12 +103,15 @@ FlexRadio remains the supported target: receiver, backend-side FFT averaging, the CL1 external 10 MHz reference and per-radio state restore (AGC mode and threshold, TUNE power per band, FFT averaging, FPS and dBm range, receivers B–D with their own setpoints, and - manual notches). + manual notches), and the N2ADR IO board's status registers. - **Networked Icom** — **early**. CI-V over the RS-BA1 UDP transport, brought up on the IC-705 (receive, scope, transmit, FT8) and completed against a live IC-7300MK2 (controls, meters, ATU, WSPR, PC Audio routing and the CW decoder). The connect path asks the radio for its own CI-V address rather than assuming - one. Only the IC-705 and IC-7300MK2 are verified against their own CI-V guides + one. On the IC-7300MK2 and IC-705, and on the IC-9700, which is not yet + verified, the panadapter runs in SCROLL-F, tuning in place and scrolling at + its margins as on a Flex, with Center and Fixed selectable. Only the IC-705 + and IC-7300MK2 are verified against their own CI-V guides — an unrecognised model gets no scope and no transmit rather than optimistic defaults. The **IC-7300MK2 over built-in Ethernet/RS-BA1 is supported** as of v26.9.5 ([RFC #5517](https://github.com/aethersdr/AetherSDR/issues/5517)); @@ -122,8 +126,9 @@ FlexRadio remains the supported target: 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. Front-end settings are under Radio - Setup → Radio; discovery probes each distinct attached IPv4 subnet. Transmit - is a future phase. + Setup → Radio, including receive band-pass filters that follow the tuned + frequency and a speaker-amplifier mute; 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 @@ -262,7 +267,8 @@ Currently in flight: 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. Radio Setup, TX Band, USB, profile and memory - controls now use that seam too; per-client propagation, transmit for the other + controls, slice lifecycle and split routing, and panadapter/waterfall control + 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 @@ -270,11 +276,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 operation, with negotiated spectrum/CW - text for compatible USB controllers and exclusive USB device ownership. +- **In-app updates** (RFC #5304) — the check, badge and Updates window ship; + the Windows install and restart wiring, then the other platforms, remain. - **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. + surface at a time; the multiFLEX Dashboard, TX Band Settings, RC-28 mapping + and FFTW Wisdom windows now join the earlier ones, 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 39d5ef155c..313723a03c 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.3 +## Current cycle: post-v26.10.4 ### In flight @@ -47,8 +47,12 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). 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: + typed requests, with original-session and owner fencing. v26.10.4 moved + spots, physical outputs, pan zoom and RX antenna, tuning step and net + corrections (raw Flex commands above the seam 215 → 192), then slice + lifecycle, split routing, TX-slice assignment and full duplex, then + panadapter/waterfall lifecycle and every existing display control. 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. @@ -81,7 +85,11 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). each had a passing backend test — COMP read back on the radio's 0–10, squelch on at threshold 0, the preamp/ATT interlock shown at once, and the SQL line drawn on a measured scale — and gave `radiocert` stages that catch each - class on any radio publishing the control. Remaining: transmit confirmation on additional Icom + class on any radio publishing the control. v26.10.4 runs the IC-7300MK2, + IC-705 and IC-9700 scope in SCROLL-F, so the panadapter scrolls and tunes in + place as on a Flex, with Center and Fixed on an Icom-only Scope row; it also + bounded the IC-705 preamp ladder above 74.8 MHz and reconnects when the radio + releases the current media streams. Remaining: transmit confirmation on additional Icom models, the per-model SET-menu item numbers the MOD Input check needs, audio gain/mute/pan, an automation verb making the modulation sources assertable without parsing Radio Health text, and the once-a-second @@ -107,8 +115,9 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). −20…120 dB with a working AGC-off gain, published link telemetry and the 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 + attached IPv4 subnet. v26.10.4 delivered parts 2 and 3 of RFC #6209: the receive band-pass + filters can follow the tuned frequency and the speaker amplifier mutes on its + own, and discovery logs its bind and send failures. 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 @@ -186,7 +195,8 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). 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 host. v26.10.4 reads the N2ADR IO board's status registers over the + I2C read path. 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 @@ -194,20 +204,6 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). keeps linear phase, at 4096 taps (85 ms onset) until a notch or a narrow passband needs 8192, and the 0.6–1.1 s pan-bandwidth rebuild is off the audio path but still a wait. -- **CTR2 controller relay** ([RFC #6091](https://github.com/aethersdr/AetherSDR/issues/6091), approved) — the - CTR2 Proxy applet shipped in v26.10.1: an operator-enabled, byte-for-byte - relay that connects a CTR2-Max controller to the radio AetherSDR is connected - to, as an independent client outside AetherSDR's transmit paths. Wi-Fi mode - works with today's CTR2 firmware. USB mode's host side is complete in link - format v0, with AetherSDR starting the handshake, and the firmware author's - development firmware has received the radio's status stream over it. - 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. 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, @@ -215,8 +211,18 @@ For *what shipped*, see [`CHANGELOG.md`](CHANGELOG.md). 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. v26.10.3 adds SpotHub, Radio - Setup and AetherControl to the migrated workspaces. Remaining: the other surfaces, + Setup and AetherControl to the migrated workspaces, and v26.10.4 the multiFLEX + Dashboard, TX Band Settings, Icom RC-28 Button Mapping, NR2's FFTW Wisdom + window and the CTR2 window's message boxes. Remaining: the other surfaces, one PR at a time, then a single flip of the base tokens to canon values. +- **In-app updates** ([RFC #5304](https://github.com/aethersdr/AetherSDR/issues/5304)) — v26.10.4 shipped the + update check at launch with its UPDATE title-bar badge and Skip This Version, and the + Updates window (File → Update...) with the download built for this computer + and the radio's firmware lanes and install. Behind it, every release + publishes a signed manifest and per-file patch bundles, `UpdateStager` + stages a verified update into a copy of the install, and the Windows + `AetherSDRUpdater` swaps it in and rolls back on failure. Remaining: the + Install and Restart to update wiring on Windows, then the other platforms. - **AppSettings nested-JSON refactor** — ~460 flat call sites today; the new pattern is one nested-JSON value per feature (Principle V). The storage layer moved to SQLite and the scoped feature-document store, @@ -298,7 +304,7 @@ Substantial features requested on the **Amplifier & tuner integrations** -- **RF2K+ / RF2K-S** PA ([#1902](https://github.com/aethersdr/AetherSDR/issues/1902)), +- **RF2K+** PA ([#1902](https://github.com/aethersdr/AetherSDR/issues/1902)), **Palstar HF-Auto** ([#97](https://github.com/aethersdr/AetherSDR/issues/97)), **LDG** USB-serial tuner ([#2092](https://github.com/aethersdr/AetherSDR/issues/2092)), and **Icom AH4** tuner protocol ([#542](https://github.com/aethersdr/AetherSDR/issues/542)). @@ -338,7 +344,6 @@ implementation**. An approved RFC moves up into the cycle above. Full list: - [#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 -- [#4667](https://github.com/aethersdr/AetherSDR/issues/4667) — Band plans conflate preferred mode with usage — six segments mislabelled digi-only, and the schema that caused it - [#3894](https://github.com/aethersdr/AetherSDR/issues/3894) — Standalone receive sessions for KiwiSDR and future receive-only providers - [#3869](https://github.com/aethersdr/AetherSDR/issues/3869) — HFChat: many-to-many text chat over HF RTTY (FDMA) with OTA + optional KiwiSDR reconciliation - [#3613](https://github.com/aethersdr/AetherSDR/issues/3613) — Remote RF-quiet receive 'antennas' — WebSDR & KiwiSDR @@ -346,12 +351,13 @@ 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 +- [#6712](https://github.com/aethersdr/AetherSDR/issues/6712) — RF-KIT applet: optional TUNE button, ATU indicator, Error banner and one-click RESET +- [#6725](https://github.com/aethersdr/AetherSDR/issues/6725) — ANAN-G2: diversity reception on the synchronized DDC0/DDC1 pair **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) - [#5234](https://github.com/aethersdr/AetherSDR/issues/5234) — Add dedicated Band Applet and BAND top-bar toggle button - [#5010](https://github.com/aethersdr/AetherSDR/issues/5010) — Status-bar clock display options @@ -359,6 +365,9 @@ implementation**. An approved RFC moves up into the cycle above. Full list: - [#3689](https://github.com/aethersdr/AetherSDR/issues/3689) — Net Reminder Scheduler — post-merge follow-ups (#3684) - [#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 +- [#6677](https://github.com/aethersdr/AetherSDR/issues/6677) — Compact Memory drawer sizing and icon-revealed live search +- [#6690](https://github.com/aethersdr/AetherSDR/issues/6690) — AetherModem instances, fixed RX assignment, and a receive-only APRS iGate +- [#6742](https://github.com/aethersdr/AetherSDR/issues/6742) — Title bar radio tabs: the three most recent radios, every other radio in a drawer (amends RFC #4764) **Project infrastructure** @@ -372,6 +381,24 @@ 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): +- **The Updates window and an automatic update check** — a check at launch, + at most once a day, that only lights an UPDATE badge, Skip This Version, File → Update... with the + download for this computer, and radio firmware installs in the same window. + RFC #5304 (v26.10.4). +- **SmartSDR 4.3 Noise Floor Range and CW profiles** — the radio-owned NF Range + slider and the CW profile type, with APD state, FDVU/FDVL CAT modes and + unsigned amplifier/tuner meter handles (v26.10.4). +- **The CTR2 relay over USB** — Lynovation's CTR2-Max firmware v1.02.00 and + later relays over USB and starts automatically, with a wide-report link for + devices that offer it and one-click Linux download-mode access. RFC #6091 + (v26.10.4). +- **RF-KIT RF2K-S, the Icom SCROLL-F panadapter and ANAN-G2 band-pass filters** + — a REST-API amplifier applet, an Icom panadapter that scrolls instead of + recentering, and the G2's filter bank and speaker mute (v26.10.4). +- **Touch gestures** — pinch-zoom, press-and-hold right-click and kinetic + scrolling for touch screens. RFC #6775 (v26.10.4). +- **HTTPS back on upgraded Windows installs** — the installer clears the stale + Qt TLS plugin that disabled SmartLink, update checks and downloads (v26.10.4). - **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). diff --git a/docs/user/src/components/LogAnalyzer/rules.json b/docs/user/src/components/LogAnalyzer/rules.json index e68ecf3d88..e4acdee3b6 100644 --- a/docs/user/src/components/LogAnalyzer/rules.json +++ b/docs/user/src/components/LogAnalyzer/rules.json @@ -9,7 +9,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7540, + "line": 7562, "text": "else if (key == \"model\")" } ] @@ -21,7 +21,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7549, + "line": 7571, "text": "else if (key == \"software_ver\")" } ] @@ -94,7 +94,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7502, + "line": 7524, "text": "\"RadioModel: terminal GUI client registration failure\"" } ] @@ -111,12 +111,12 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7432, + "line": 7454, "text": "RadioModel: this GUI client was force-disconnected by another client" }, { "file": "src/models/RadioModel.cpp", - "line": 7476, + "line": 7498, "text": "RadioModel: radio disconnected this session because another GUI client used the same ID" } ] @@ -133,7 +133,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7342, + "line": 7364, "text": "RadioModel: multiFLEX disabled, other clients present" } ] @@ -150,7 +150,7 @@ "source": [ { "file": "src/core/backends/flex/RadioConnection.cpp", - "line": 624, + "line": 635, "text": "RadioConnection: socket error:" } ] @@ -167,7 +167,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 8683, + "line": 8707, "text": "consecutive pings unanswered — forcing disconnect" } ] @@ -188,12 +188,12 @@ "source": [ { "file": "src/core/backends/flex/RadioConnection.cpp", - "line": 685, + "line": 696, "text": "qCDebug(lcConnection) << \"RX:\" << line;" }, { "file": "src/models/RadioModel.cpp", - "line": 7549, + "line": 7571, "text": "else if (key == \"software_ver\")" } ] @@ -210,7 +210,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7743, + "line": 7765, "text": "RadioModel: no VITA-49 UDP data received after 10s" } ] @@ -227,17 +227,17 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 7721, + "line": 7743, "text": "RadioModel: UDP stream setup failed" }, { "file": "src/core/backends/flex/PanadapterStream.cpp", - "line": 231, + "line": 239, "text": "PanadapterStream: failed to bind UDP socket:" }, { "file": "src/models/RadioModel.cpp", - "line": 7796, + "line": 7819, "text": "RadioModel: client udpport collision" } ] @@ -254,7 +254,7 @@ "source": [ { "file": "src/core/backends/flex/PanadapterStream.cpp", - "line": 171, + "line": 177, "text": "capped by net.core.rmem_max" } ] @@ -452,12 +452,12 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 1370, + "line": 1384, "text": "RadioModel: dax_rx stream create for channel" }, { "file": "src/core/backends/flex/PanadapterStream.cpp", - "line": 1836, + "line": 1899, "text": "stream create failed/dropped" } ] @@ -474,7 +474,7 @@ "source": [ { "file": "src/models/RadioModel.cpp", - "line": 13217, + "line": 13286, "text": "RadioModel: DAX TX create failed" } ] @@ -547,7 +547,7 @@ "source": [ { "file": "src/gui/SpectrumWidget.cpp", - "line": 13220, + "line": 13259, "text": "\"SpectrumWidget: QRhi failure:\"" }, { @@ -574,7 +574,7 @@ "source": [ { "file": "src/gui/SpectrumWidget.cpp", - "line": 2002, + "line": 2009, "text": "SpectrumWidget: AETHER_NO_GPU/QT_OPENGL=software" } ] @@ -608,7 +608,7 @@ "source": [ { "file": "src/main.cpp", - "line": 85, + "line": 86, "text": "Non-fatal X11 error suppressed (error_code=" } ] @@ -941,7 +941,7 @@ "source": [ { "file": "src/core/backends/hl2/Hl2Backend.cpp", - "line": 2854, + "line": 2886, "text": "HL2: could not open the UDP socket" } ] @@ -961,7 +961,7 @@ "source": [ { "file": "src/core/backends/hl2/MetisClient.cpp", - "line": 510, + "line": 523, "text": "MetisClient: no EP6 for" } ] @@ -996,7 +996,7 @@ "match": { "substring": "the radio released the serial and audio streams" }, - "docs": "/next/networked-icom#audio-and-radio-updates-stop-after-switching-applications", + "docs": "/networked-icom#audio-and-radio-updates-stop-after-switching-applications", "source": [ { "file": "src/core/backends/icom/IcomSession.cpp", @@ -1057,7 +1057,7 @@ "source": [ { "file": "docs/user/docs/troubleshooting.md", - "line": 91, + "line": 109, "text": "error while loading shared libraries: libOpenGL.so.0" } ] @@ -1075,7 +1075,7 @@ "source": [ { "file": "docs/user/docs/troubleshooting.md", - "line": 101, + "line": 119, "text": "needs glibc 2.38 or newer" } ] diff --git a/docs/user/stable-version.json b/docs/user/stable-version.json index d63ddf4f85..4e0048ef76 100644 --- a/docs/user/stable-version.json +++ b/docs/user/stable-version.json @@ -1,3 +1,3 @@ { - "label": "26.10.3" + "label": "26.10.4" } diff --git a/docs/user/versioned_docs/version-stable/aethersweep.md b/docs/user/versioned_docs/version-stable/aethersweep.md index e114e8485f..d2955e92e7 100644 --- a/docs/user/versioned_docs/version-stable/aethersweep.md +++ b/docs/user/versioned_docs/version-stable/aethersweep.md @@ -19,7 +19,7 @@ bandwidth marked. Genius XL** is in OPERATE. > **Other amplifiers are not checked.** AetherSweep only knows about the -> PGXL. If you have an ACOM, SPE, VK3AMP, KPA1500 or any other amplifier in +> PGXL. If you have an ACOM, SPE, VK3AMP, RF-KIT, KPA1500 or any other amplifier in > line, put it in standby or bypass yourself before sweeping. See > [Amplifiers](./amplifiers.md). diff --git a/docs/user/versioned_docs/version-stable/amplifiers.md b/docs/user/versioned_docs/version-stable/amplifiers.md index 0ea6ff7e15..c5665cd5c9 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 and the original 1K-FA, the VK3AMP 600 / 1000 / 2000 W, and the Elecraft KPA500 / 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, the Elecraft KPA500 / KPA1500, and the RF-KIT." --- 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. Each is configured in +original 1K-FA, the VK3AMP 600 / 1000 / 2000 W, the Elecraft KPA500 / KPA1500, and the RF-KIT. 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. @@ -354,6 +354,44 @@ The **Elecraft KPA1500** applet (button **KPA1500**): There is no network PTT and no lost-link TX inhibit. +## Using the RF-KIT + +> **Tested on an RF2K-S, firmware G200C267.** The RF-KIT support follows the +> vendor's published REST API documentation (RFKIT API 0.9.0). Other RF-KIT +> models have not been tried. Reports from owners are welcome. + +Add it with **Peripherals → Add → RF-KIT Amplifier**, enter the amplifier's IP +address (or host name) and HTTP port (default 8080), and press **Connect**. +AetherSDR talks to the amplifier's REST API over plain HTTP; there is no login. + +The **RF-KIT Amplifier** applet: + +- A status pill, the amplifier's name, and **PWR**, **REF** and **SWR** gauges. + The scales are fixed, like the amplifier's own display: forward power + 0–1600 W, reflected power 0–200 W, and SWR on the amplifier's 1 / 1.5 / 2 / 3 / + 5 / ∞ scale. The reflected-power and SWR bars turn orange from 1.5:1 and red + from 2:1 (on the reflected-power bar these points follow the forward power). +- An info grid with temperature, supply voltage, current, band, frequency and + the operational interface (`UNIV`, `CAT`, `UDP` or `TCI`). +- A **TUNER** line showing the tuner's mode, setup and L/C values, and a + **TUNER ON** (green) / **TUNER OFF** (red) indicator beside OPERATE. The tuner + is read-only: the amplifier's API has no tuner control, so the indicator + cannot be pressed. +- The amplifier's own status text and, when it reports one, an error banner. +- **OPERATE / STANDBY**. The label changes only when the amplifier confirms. +- **ANT** buttons for the internal antennas (1–4). Antennas the amplifier + reports as disabled, or does not list, are dimmed (hover for the reason), and the amplifier may refuse a change at + times (it answers 409). **EXT** is dimmed unless the amplifier lists an external + antenna, and lights, with the switch port ("EXT 16") when the amplifier gives + one, while the external antenna is in use. It is an indicator only: the + external antenna cannot be selected from AetherSDR. +- **RESET ERR**, which asks for confirmation and then clears the amplifier's + error state. Make sure the cause has been dealt with first. + +The operational interface is shown but cannot be changed from AetherSDR: +switching it could cut the amplifier off from the radio driving it. There is no +network PTT. + ## Using the LP-100A wattmeter The TelePost LP-100A is a wattmeter, not an amplifier, but it is set up the @@ -427,6 +465,17 @@ seconds, because the amplifier answers only broadcast ARP. 1. Wait: AetherSDR waits up to 18 seconds before trying again. +### The RF-KIT will not connect + +AetherSDR declares the link up only when the amplifier answers `GET /info` with +an RF-KIT document, so a wrong address or port fails rather than half-connecting. + +1. Check the address and port in **Peripherals**; the default HTTP port is 8080. +2. Open `http://
:/info` in a web browser on the same network. An + RF-KIT answers with a short JSON document. +3. If the link drops, AetherSDR marks it down after three failed requests in a + row; enable **Reconnect automatically** to have it retry. + ### The SPE front-panel keys are dimmed The popped-out **FRONT PANEL** keys work only while the LCD mirror is current. diff --git a/docs/user/versioned_docs/version-stable/anan-g2.md b/docs/user/versioned_docs/version-stable/anan-g2.md index 93fac4aa82..f170d41615 100644 --- a/docs/user/versioned_docs/version-stable/anan-g2.md +++ b/docs/user/versioned_docs/version-stable/anan-g2.md @@ -27,15 +27,17 @@ The G2 is found automatically on your LAN: open **File → Connect to Radio...** 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**: +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**. **Filter bank:** and **Mute the radio's speaker amplifier** also apply at once to a connected G2: | 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. | | **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. | +| **Filter bank:** | Bypassed | **Bypassed** keeps both ADCs' band-pass filter banks out of circuit. **Follow the tuned frequency** selects the band-pass filter that covers the receiver's frequency on both ADCs, and changes it as you tune, so strong signals on other bands are rejected before the ADC. A filter that does not cover the tuned frequency leaves no signal at all. After switching it on, check each band you use. Applies at once. | +| **Bypass ADC0's bank** / **Bypass ADC1's bank (RX2)** | On | With **Filter bank:** set to **Bypassed**, routes the antenna around that ADC's filter bank. **Leave these checked:** unchecked means nothing reaches the ADC. Dimmed while the filter bank follows the tuned frequency, which switches the same relay. | | **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. | +| **Mute the radio's speaker amplifier** | Off | Switches off the amplifier inside the G2. Sending the radio silence leaves the amplifier running and hissing; this stops it. Applies at once. A clean disconnect hands the radio back unmuted. | ## Receiving with the G2 @@ -89,12 +91,19 @@ Controls the G2 cannot honor are dimmed with a reason, or refuse with a notice; ### Nothing is received at all -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. +With **Filter bank:** set to **Bypassed**, a **Bypass ADC0's bank** or **Bypass ADC1's bank (RX2)** box is unchecked, so nothing reaches the ADC. 1. Disconnect from the G2. 2. Open **Settings → Radio Setup... → Radio → ANAN Front End**. 3. Tick **Bypass ADC0's bank** and **Bypass ADC1's bank (RX2)**, then connect again. +### One band goes quiet with the filter bank on + +**Filter bank:** is set to **Follow the tuned frequency**, and the filter selected for that band does not pass it. + +1. Open **Settings → Radio Setup... → Radio → ANAN Front End**. +2. Set **Filter bank:** to **Bypassed**. It applies at once. + ### No audio from the radio's own speaker **Send receive audio to the radio** is off, or was turned on during the session. It takes effect on the next connect. @@ -102,6 +111,9 @@ A **Bypass ADC0's bank** or **Bypass ADC1's bank (RX2)** box is unchecked. No ba 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. +4. Check that **Mute the radio's speaker amplifier** is unticked. + +If AetherSDR closed without disconnecting, or the network cable was pulled, while the amplifier was muted, the G2 keeps it muted. Connect again with **Mute the radio's speaker amplifier** unticked. ## See also 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 b0a8347df0..b4c3039345 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 @@ -80,6 +80,26 @@ Repeated commits of an unchanged field do not send another request. These actions currently support only **Radio nickname**; `setText` alone does not commit it. +### Temporary station identity + +On FlexRadio, `station ` sets this client's session-only station label for +other MultiFlex clients. Use one token without spaces. It does not change your +saved station name or radio-wide callsign. A successful reply means the request +was sent, not that the radio confirmed it. Unsupported or disconnected radios +refuse the request. + +Your saved station-name edits are retained even if an automation request +applies a temporary label at the same time. + +Stopping the bridge restores your saved name only while that bridge still owns +the override in the same radio session. A newer operator edit takes precedence; +an old restore or reconnect callback cannot overwrite it. + +The `txwaterfall on|off` command changes **Show TX in Waterfall** through the same +route as Radio Setup. FlexRadio owns the flag on the radio; Hermes-Lite 2 keeps +it client-side. Other unsupported radios refuse it. This display setting never +keys the transmitter. + ## 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. @@ -97,6 +117,16 @@ Tick **Observe only** to hand a client visibility without control. The bridge th `ping` needs no token and returns the app version plus the **build identity**: the `git describe` string, commit SHA, the release tag it is based on, commits since that tag, and whether the build had local changes. It is the same identity **Help → About** shows, so a test build can be told apart from a release with the same version number. +### Checking pan creation and removal + +`pan create` and `pan close` report whether the backend accepted a request for +dispatch, not whether a display has appeared or disappeared. Re-poll `get pans` +to observe the result. Each entry in a close response includes `requested`; +`closed` is the compatibility name for that request list, not proof of removal. +An explicit `pan close all` may request the last pan's removal, but still respects +backend refusals and display ownership. A normal single-pan close preserves the +last pan. No pan action enables transmit. + ## Reference ### Environment variables diff --git a/docs/user/versioned_docs/version-stable/building-from-source.md b/docs/user/versioned_docs/version-stable/building-from-source.md index b67ea38247..089e2a14f6 100644 --- a/docs/user/versioned_docs/version-stable/building-from-source.md +++ b/docs/user/versioned_docs/version-stable/building-from-source.md @@ -50,6 +50,18 @@ cmake --build build -j$(nproc) ./build/AetherSDR ``` +### macOS development identity + +A locally built app can use its own macOS permission identity while a downloaded release remains installed. Add `-DAETHER_MACOS_ADHOC_SIGN=ON -DAETHER_MACOS_BUNDLE_IDENTIFIER=com.aethersdr.AetherSDR.dev` when configuring your development build. Use a different identifier for each build you want macOS to treat as a separate app. + +With development signing enabled, the complete **AetherSDR** target signs bundled helpers and libraries first, then signs and verifies the finished app bundle. Launch that `.app` with `open -n /path/to/AetherSDR.app`, then allow its **Local Network** request. The downloaded release keeps its own permissions. See [macOS](./macos.md#allowing-local-network-access). + +This option defaults to **OFF** and is only for ad-hoc local development signing. Production Apple signing, notarization and release CI use their existing workflow with this option disabled. Xcode retains its own signing path. + +This uses an ad-hoc signature. macOS may ask for privacy or Keychain approval again after a rebuild; this does not provide a stable signing identity across builds. See [Apple’s code-signing requirements](https://developer.apple.com/documentation/technotes/tn3127-inside-code-signing-requirements). + +The signing hook runs when the app links. If you change only bundle metadata or rebuild a bundled helper, force a full relink or re-sign the complete app before launching it. + ### Build on Windows 11 From an MSVC developer prompt: diff --git a/docs/user/versioned_docs/version-stable/copy-assist.md b/docs/user/versioned_docs/version-stable/copy-assist.md index 1c664cdce0..469506c215 100644 --- a/docs/user/versioned_docs/version-stable/copy-assist.md +++ b/docs/user/versioned_docs/version-stable/copy-assist.md @@ -198,6 +198,14 @@ The speech engine faulted while starting or while loading on the CPU, so local C 2. Click **Try again next launch** and restart AetherSDR. 3. In the meantime, a **Remote server…** still works. +### Transcription turns off immediately + +Read the status below the transcript. If startup, model download, or model loading fails, the button returns to **Disabled** and the explanation stays visible. The same reason is written to the application log. + +1. For a missing custom model file or sherpa-onnx folder, select it again in **⚙ → Model**. +2. For a download or load failure, use the displayed reason to check the network connection or model file, then click **Disabled** to retry. +3. If local Copy Assist is off for the session after an earlier crash, follow the startup-fault steps above. + ### The model will not download The computer has no internet access, for example in an air-gapped shack. diff --git a/docs/user/versioned_docs/version-stable/ctr2-proxy.md b/docs/user/versioned_docs/version-stable/ctr2-proxy.md index e42595db0e..f8da46a74a 100644 --- a/docs/user/versioned_docs/version-stable/ctr2-proxy.md +++ b/docs/user/versioned_docs/version-stable/ctr2-proxy.md @@ -25,11 +25,13 @@ 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 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. +- **USB mode** needs a CTR2-Max running Lynovation's firmware v1.02.00 or + later, or 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). From v1.02.00 + the CTR2-Max's firmware connects over USB only. +- **Wi-Fi mode** is for CTR2s that connect over Wi-Fi: Lynovation's other CTR2 + controllers, and a CTR2-Max still on firmware older than v1.02.00. ## Setup @@ -43,16 +45,16 @@ 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**. +The **Mode** selector offers **Wi-Fi** 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 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 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. +> default until the relay has been started once. Lynovation's other CTR2 +> controllers, and a CTR2-Max on firmware older than v1.02.00, work only in +> **Wi-Fi** mode, so pick it for those. ## Starting automatically @@ -63,18 +65,26 @@ 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. +- In USB mode it starts a CTR2-Max (on Lynovation's firmware or AetherCTR2) + or an AetherKnob. A CTR2-Max on firmware older than v1.02.00 never answers; see + [No answer from the CTR2](#no-answer-from-the-ctr2). Lynovation's firmware + uses Espressif's generic USB name, so another ESP32-S3 board with the same + name and kind of HID interface may be tried too. A device that never + answers is tried about once a minute. - **Linux:** if the CTR2 udev rule is not installed yet, press **Start** once to install it. -## Using Wi-Fi (TCP) mode +## Using Wi-Fi mode 1. On the CTR2, set the radio IP address to **this PC's LAN address**. 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**. +The relay reaches the radio at the address AetherSDR is connected to, IPv4 +or IPv6, in both Wi-Fi and USB mode; only the Wi-Fi **Listen** address must be +IPv4. + Each CTR2 connection gets a fresh connection to the radio. Only one CTR2 connection is active at a time; extra ones are closed and counted as rejected. Wi-Fi mode relays TCP only (no UDP discovery or UDP streams), so @@ -84,18 +94,23 @@ features of the CTR2 that rely on UDP may not work this way. 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. +Lynovation's firmware v1.02.00 or later or 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. 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. + USB discovery is shared with other HID controllers, so you can rescan while + an encoder is reconnecting. Stopping one controller leaves the others available. - **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 - your administrator password once. The rule only opens CTR2 controllers and - the AetherKnob to whoever is logged in at the computer. + your administrator password once. The rule opens CTR2 controllers, the + AetherKnob, and the USB serial port of ESP32-S3 boards (which the CTR2-Max + uses in download mode, for firmware installs) to whoever is logged in at the + computer, and to no one else. - **AetherKnob** (an AetherSDR controller on the Elecrow CrowPanel 2.1" rotary display) uses USB mode the same way. It appears in the list as **AetherKnob**. While it is relaying, AetherSDR also sends it a 32-bar @@ -125,6 +140,13 @@ AetherCTR2 (see below) or an AetherKnob. become spaces. DeepFist's decode is not sent yet. A CTR2 never receives either. +- **A faster link.** Controller firmware that supports it (AetherCTR2 builds + with wide reports) and AetherSDR agree by themselves on a USB link about + seven times faster; AetherCTR2 uses it for the panadapter's zoom and + reference levels. Lynovation's firmware and older AetherCTR2 releases keep + the plain link and work as before. **On Windows, update AetherSDR first:** + AetherSDR releases from before the faster link cannot relay firmware that + supports it there. - 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 @@ -179,8 +201,10 @@ version, or other stock firmware it asks you to, in an alert: hold **BOOT** (thr 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. + cannot open it, the CTR2 window offers to install the CTR2 access rule + (the same one **Start** installs) through `pkexec`, asking for your + administrator password once, then carries on with the install. No group + change or logging out is needed. - A build with serial-port support (Qt Serial Port) for download mode, and USB HID support (hidapi) for updates over the cable. @@ -229,7 +253,15 @@ starts. 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. +AetherCTR2. After a restart asked for from the CTR2 window, it waits for the +unit to leave and come back rather than reopening it on its way out; if +AetherSDR misses that, it tries again after 20 seconds. Another controller is +not kept waiting. + +Before **Restart into**, **Install** or a stock-firmware install, the window +may show **Reading the CTR2-Max's firmware…** for a moment while it checks +whether the running firmware can restart on request, so it asks for the BOOT +and RESET buttons only when the firmware really needs them. ### Backups @@ -243,7 +275,9 @@ date, including any saved with **Back Up…** in earlier versions of AetherSDR 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. +its MAC address), and only if the file is unchanged since it was made. The +question before a restore has **Cancel** as its default, so pressing Return +keeps what is on the unit; restoring takes a click on **Restore**. ### Cancelling @@ -342,7 +376,27 @@ second client. The proxy cannot be used with this radio. The build was made without hidapi. -1. Pick **Wi-Fi (TCP)** mode instead. +1. Pick **Wi-Fi** mode instead, if the CTR2's firmware still has Wi-Fi. + +### No answer from the CTR2 + +The relay is running in USB mode, but the CTR2 has not answered it: +"No answer from the CTR2. USB mode needs CTR2-Max firmware v1.02.00 or +later, or AetherCTR2." + +1. Check the CTR2-Max's firmware version. Before v1.02.00 it has no USB mode. +2. Update it to v1.02.00 or later (see + [Updating the CTR2-Max's own firmware](#updating-the-ctr2-maxs-own-firmware)), or + install AetherCTR2. +3. Or stop the relay and use **Wi-Fi** mode with the firmware it has. Other + CTR2 controllers always use Wi-Fi mode. + +If the relay stops with an error before the CTR2 ever answered, **Start +automatically** waits a minute before trying it again, instead of a few +seconds. It tries again at once when the USB device list changes (the CTR2 +switches firmware, or another device is plugged in or out), when you pick +another device or mode, when you tick **Start automatically** again, or when +AetherSDR next connects to a radio. **Start** always tries again. ### "... is in use by another AetherSDR" diff --git a/docs/user/versioned_docs/version-stable/cw-decoder.md b/docs/user/versioned_docs/version-stable/cw-decoder.md index a69efeec99..3c18dd27db 100644 --- a/docs/user/versioned_docs/version-stable/cw-decoder.md +++ b/docs/user/versioned_docs/version-stable/cw-decoder.md @@ -124,8 +124,8 @@ Decoded text is published to the MQTT topic `aethersdr/cw/decode`, one JSON mess | **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 | -| **Pitch** | Pitch search range, 300–1200 Hz (default 500–700 Hz) | -| **WPM** | Speed search range, 5–60 WPM (default 15–40 WPM) | +| **Pitch** | Pitch search range, 300–1200 Hz (default 500–700 Hz), remembered and the same on every pan | +| **WPM** | Speed search range, 5–60 WPM (default 15–40 WPM), remembered and the same on every pan | | **CPY ALL** / **CPY VIS** | Copy all decoded text, or just the visible text, to the clipboard | | **A− / A+** | Decoded-text size (8–32 px), remembered | | **CLR** | Clear the decoded text | @@ -153,7 +153,6 @@ Colors are based on ggmorse's cost function: ## Known issues - The decoder shows no text on some FLEX-8600 setups ([#6158](https://github.com/aethersdr/AetherSDR/issues/6158)). -- The pitch search range is not kept when a slice is reopened, even with both range locks engaged ([#5921](https://github.com/aethersdr/AetherSDR/issues/5921)). - The squelch threshold line can appear on the panadapter in CW, although squelch is unavailable there ([#6276](https://github.com/aethersdr/AetherSDR/issues/6276)). ## Troubleshooting 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 63c04059fc..e87a11db66 100644 --- a/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md +++ b/docs/user/versioned_docs/version-stable/dsp-noise-mitigation.md @@ -111,6 +111,8 @@ Narrow bandpass filter centered on the CW pitch frequency. Enhances CW signals b ### WNB — Wideband Noise Blanker Wideband impulse noise blanker. Controlled via the ANT sub-menu on the left sidebar. Has an adjustable level (0-100) and appears as a "WNB" indicator on the FFT display when active. WNB belongs to the radio: AetherSDR uses whatever state the radio reports on connect and does not replay a saved state of its own. +When you recall a band-stack bookmark, saved WNB values are applied only if the radio supports them. Unsupported WNB values are skipped without a dropped-command notice. + ## Using the client-side methods > **Important:** the seven client-side methods process audio **on your PC**, not on the radio. They only affect audio played through your computer's speakers or headphones. If you listen through the radio's physical outputs (line out, headphone jack or front speaker), you will **not** hear client-side processing — only the radio's built-in filters (NR, NRS, NRL, RNN and so on) apply there. To benefit from client-side processing, switch to PC audio. diff --git a/docs/user/versioned_docs/version-stable/dvk-panel.md b/docs/user/versioned_docs/version-stable/dvk-panel.md index b065ac1b53..20ddc5e781 100644 --- a/docs/user/versioned_docs/version-stable/dvk-panel.md +++ b/docs/user/versioned_docs/version-stable/dvk-panel.md @@ -37,6 +37,8 @@ Click the **DVK** indicator in the status bar at the bottom of the screen. The p The DVK panel and the [CWX Panel](./cwx-panel.md) share the same space — opening one closes the other. +When the window is short, scroll the list of recording slots; the panel title, status and transport buttons stay visible. + Digital Voice Keyer panel along the left edge of the window, status Idle. Twelve slots, F1 Recording 1 to F12 Recording 12, each read Empty. REC, STOP, PLAY and PREV buttons run along the bottom. *The DVK panel, opened from DVK in the status bar.* diff --git a/docs/user/versioned_docs/version-stable/firmware-update.md b/docs/user/versioned_docs/version-stable/firmware-update.md index c48ad2e56e..b46c07fe66 100644 --- a/docs/user/versioned_docs/version-stable/firmware-update.md +++ b/docs/user/versioned_docs/version-stable/firmware-update.md @@ -1,7 +1,7 @@ --- title: "Firmware Update" slug: "/firmware-update" -description: "AetherSDR can upload new firmware to a FlexRadio on Linux, macOS and Windows, using the SmartSDR installer you download from FlexRadio." +description: "AetherSDR can update a FlexRadio's firmware on Linux, macOS and Windows from the Updates window, downloading the SmartSDR installer from FlexRadio or using one you downloaded." status: "Experimental" applies_to: ["FlexRadio"] --- @@ -12,41 +12,41 @@ applies_to: ["FlexRadio"] ::: -AetherSDR can upload new firmware to a FlexRadio on Linux, macOS and Windows, using the SmartSDR installer you download from FlexRadio. +AetherSDR can update a FlexRadio's firmware on Linux, macOS and Windows from the Updates window (**File → Update...**), downloading the SmartSDR installer from FlexRadio or using one you downloaded. > **Caution:** firmware update from AetherSDR is a highly experimental feature. Use it at your own risk. Updating with the SmartSDR for Windows application is still the recommended route. ## Requirements -- A connected FlexRadio. Firmware update is a FlexRadio feature: the group is hidden while you are connected to any other radio family (see [Supported Radios](./supported-radios.md)). -- The SmartSDR installer from [flexradio.com](https://www.flexradio.com), or an extracted `.ssdr` firmware file. +- A connected FlexRadio. Firmware update is a FlexRadio feature: on any other radio family the Updates window's radio section says **Not updatable here** and its buttons are dimmed with the reason (see [Supported Radios](./supported-radios.md)). +- An internet connection to FlexRadio's website, or a SmartSDR installer or `.ssdr` firmware file you downloaded yourself. ## Setup -Open **Settings → Radio Setup...** (on macOS: **AetherSDR → Preferences...**), choose the **Radio** page, and find the **Firmware Update** group. It shows the radio's current **FW Version** and three buttons: **Check for Update**, **Select Installer...** and **Upload Firmware**. +Open **File → Update...**. Below the AetherSDR section, the **YOUR RADIO** section names the connected radio and its firmware version, and a status badge says whether the radio is **Current** or **Behind** the newest release in its own line. When the status bar shows an out-of-date firmware version, clicking it opens the window at this section. -Firmware Update group showing FW Version: 4.2.20.41343 with a copy button, and three buttons: Check for Update, Select Installer... and a dimmed Upload Firmware. - -*The Firmware Update group on the Radio page.* +The radio's firmware version is also shown, read-only, as **FW Version** in **Settings → Radio Setup...** → **Radio** → **Radio Information**. ## Updating the Firmware -### Check for updates +### Choose a release + +The section lists every SmartSDR release FlexRadio publishes (AetherSDR fetches the list at most once a day), one row per major line (v4, v3, v2), oldest to newest. The release installed on the radio has a thicker outline; the newest release in the radio's own line is highlighted. When the radio is behind, that newest release is already selected. Click another release to choose it, and **Release notes** opens its notes. -1. Click **Check for Update**. -2. AetherSDR asks the FlexRadio website for the latest version and compares it with the radio's firmware. -3. The status line reads either "Firmware is up to date (vX.Y.Z)" or "Update available: vX.Y.Z", with a reminder to download the SmartSDR installer from flexradio.com. +### Install -AetherSDR does not download the installer for you. +1. Click **Install** *version*. +2. A confirmation names the release and the radio, and warns that the radio reboots after the update. Do not disconnect during the update. +3. AetherSDR downloads the SmartSDR installer from FlexRadio, checks it against FlexRadio's MD5, extracts the firmware for your radio's model family, and uploads it. If FlexRadio's MD5 can't be downloaded, AetherSDR stops before the upload and asks again, saying that the firmware's integrity was not checked. The steps **Prepare firmware**, **Upload to radio** and **Radio confirms** light in turn, the progress bar fills, and the status line says what is happening. -### Stage the firmware +### Install from a file -1. Download the SmartSDR installer from [flexradio.com](https://www.flexradio.com). -2. Click **Select Installer...** and choose one of: +1. Download the SmartSDR installer from [flexradio.com](https://www.flexradio.com), or have an extracted `.ssdr` file. +2. Click **Open Installer...** and choose one of: - the **`.msi`** installer (SmartSDR v4.2 and later); - the **`.exe`** installer (v4.1.x and earlier); - 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. +3. AetherSDR extracts the firmware for your radio's model family, then asks before uploading it. 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 @@ -54,8 +54,6 @@ 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 @@ -65,27 +63,24 @@ 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 +### The outcome -1. Click **Upload Firmware**. -2. A confirmation names the file and the radio, and warns that the radio reboots after the update. Do not disconnect during the upload. -3. The progress bar and status line follow the transfer. -4. The upload ends in one of three outcomes: +The upload ends in one of three outcomes: | Outcome | What it means | What to do | |---------|---------------|------------| -| **Succeeded** (green) | The radio confirmed the update. | Wait for the radio to reboot, then reconnect. | -| **Unconfirmed** (amber) | The bytes were sent, but the radio did not confirm the installation. It is probably rebooting to apply the image. | Reconnect and check the firmware version. A retry is blocked until you reconnect. | -| **Failed** (red) | The upload did not complete, or the radio rejected it. | Read the status line, then try again. | +| **Succeeded** | The radio confirmed the update. | Wait for the radio to reboot, then reconnect. | +| **Unconfirmed** | The bytes were sent, but the radio did not confirm the installation. It is probably rebooting to apply the image. | Reconnect and check the firmware version. A retry is blocked until you reconnect. | +| **Failed** | The upload did not complete, or the radio rejected it. | Read the status line, then try again. | -Closing Radio Setup during an upload asks for confirmation first. Closing it stops the transfer; once the bytes have been sent, it does not undo the update. +While firmware is being prepared or written, the rest of the Updates window waits, and closing the window asks first. Closing it while preparing sends nothing to the radio; closing it during the upload stops the transfer; once the bytes have been sent, it does not undo the update. **Cancel** asks the same question. ## Reference ### Where to find `.ssdr` files - Windows, after installing SmartSDR: `C:\ProgramData\FlexRadio Systems\SmartSDR\Updates\` -- Or let **Select Installer...** extract the file from the installer for you. +- Or let **Open Installer...** extract the file from the installer for you. ### Firmware files @@ -120,25 +115,25 @@ The installer may be incomplete, use unsupported metadata, or lack an unambiguou firmware entry for your radio. 1. Download the original SmartSDR installer from FlexRadio again. -2. Select the installer with **Select Installer...**. +2. Select the installer with **Open 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 +### The radio section says Not updatable here -You are connected to a radio that is not a FlexRadio, so the group is hidden. +You are connected to a radio that is not a FlexRadio. 1. Connect to a FlexRadio. -2. Open **Settings → Radio Setup...** → **Radio** again. +2. Open **File → Update...** again. -### Upload Firmware stays unavailable after an Unconfirmed upload +### Install stays unavailable after an Unconfirmed upload A retry is blocked until you reconnect, because the radio is probably rebooting to apply the image. 1. Wait for the radio to come back, then reconnect. -2. Check **FW Version** in the **Firmware Update** group. +2. Check the firmware version in the **YOUR RADIO** section, or **FW Version** in Radio Setup. ### The upload Failed @@ -151,5 +146,6 @@ The upload did not complete, or the radio rejected it. - [FlexRadio](./flexradio.md) - [Supported Radios](./supported-radios.md) +- [Updates](./updates.md) - [Radio Setup](./radio-setup.md) - [FlexRadio downloads](https://www.flexradio.com) diff --git a/docs/user/versioned_docs/version-stable/flexradio.md b/docs/user/versioned_docs/version-stable/flexradio.md index d07725fd01..d7d5a8a44e 100644 --- a/docs/user/versioned_docs/version-stable/flexradio.md +++ b/docs/user/versioned_docs/version-stable/flexradio.md @@ -97,7 +97,7 @@ Follow these pages in order the first time: - [TGXL Tuner Control](./tgxl-tuner-control.md) — 4O3A Tuner Genius XL, direct or relayed through the radio - [Peripherals](./peripherals.md) — PGXL amplifier, Antenna Genius and other accessories, with 4O3A access codes -- [Amplifiers](./amplifiers.md) — ACOM, SPE Expert, VK3AMP and KPA1500 amplifiers +- [Amplifiers](./amplifiers.md) — ACOM, SPE Expert, VK3AMP, KPA1500 and RF-KIT amplifiers - [ShackSwitch](./shackswitch.md) and [Green Heron Everyware](./green-heron-everyware.md) — antenna switches and rotators ### Controllers diff --git a/docs/user/versioned_docs/version-stable/generated/default-shortcuts.md b/docs/user/versioned_docs/version-stable/generated/default-shortcuts.md index db7391e1cb..a7187138d7 100644 --- a/docs/user/versioned_docs/version-stable/generated/default-shortcuts.md +++ b/docs/user/versioned_docs/version-stable/generated/default-shortcuts.md @@ -77,7 +77,7 @@ These are the actions you can bind in **Settings → Configure Shortcuts...**, w | ATU Start | `atu_start` | | Keys the transmitter | | TUNE Toggle | `tune_toggle` | | Keys the transmitter | | Two-Tone Tune | `two_tone_tune` | | Keys the transmitter | -| VOX Toggle | `vox_toggle` | | | +| VOX Toggle | `vox_toggle` | | Keys the transmitter | | Speech Processor Toggle | `speech_proc_toggle` | | | | DAX TX Toggle | `dax_toggle` | | | | TX Monitor Toggle | `tx_monitor_toggle` | | | 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 8aabd525f8..5a6ed39b48 100644 --- a/docs/user/versioned_docs/version-stable/generated/log-categories.md +++ b/docs/user/versioned_docs/version-stable/generated/log-categories.md @@ -31,6 +31,7 @@ These are the logging categories listed in **Help → Support & Diagnostics...** | Meters | `aether.meters` | Meter definitions and value conversion | | Transmit | `aether.transmit` | TX state, ATU, profiles, power control | | Firmware | `aether.firmware` | Firmware download, staging, upload | +| App Updates | `aether.updater` | AetherSDR update checks: trigger, result, skipped and store-managed installs | | 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 | diff --git a/docs/user/versioned_docs/version-stable/green-heron-everyware.md b/docs/user/versioned_docs/version-stable/green-heron-everyware.md index 08dedee9d9..bfd04c5855 100644 --- a/docs/user/versioned_docs/version-stable/green-heron-everyware.md +++ b/docs/user/versioned_docs/version-stable/green-heron-everyware.md @@ -34,6 +34,11 @@ in the applet itself, not in [Peripherals](./peripherals.md). | **Port** | Its TCP port; **10000** unless the installation moved it | | **Switch** | Which switch feeds this radio. Filled from the server's roster once connected, and remembered | +Enter the server address in **IP** and its TCP port in **Port**. To replace +the port, select the existing number and type a value from **1** to **65535**. +If the applet is connecting, connected, or reconnecting, click **Disconnect** +first to unlock the address and port fields. + Click **Connect**. The status line reads "Connected — waiting for roster", then "Connected — waiting for switch state" until the server reports. diff --git a/docs/user/versioned_docs/version-stable/index.md b/docs/user/versioned_docs/version-stable/index.md index ae8c7458c9..79787dd4e1 100644 --- a/docs/user/versioned_docs/version-stable/index.md +++ b/docs/user/versioned_docs/version-stable/index.md @@ -99,7 +99,7 @@ Prefer paper? Download the [printable manual](pathname:///AetherSDR-Manual.pdf) ## Station Accessories - [Peripherals](./peripherals.md) — Add, remove and auto-connect station accessories; 4O3A access codes; PGXL and Antenna Genius -- [Amplifiers](./amplifiers.md) — ACOM, SPE Expert, VK3AMP and KPA1500 amplifiers; LP-100A wattmeter +- [Amplifiers](./amplifiers.md) — ACOM, SPE Expert, VK3AMP, KPA1500 and RF-KIT amplifiers; LP-100A wattmeter - [TGXL Tuner Control](./tgxl-tuner-control.md) — 4O3A Tuner Genius XL: direct or relayed, autotune, antenna switch - [ShackSwitch](./shackswitch.md) — Network antenna switch with dummy-load protection - [Green Heron Everyware](./green-heron-everyware.md) — Green Heron Everyware antenna switch and rotator control diff --git a/docs/user/versioned_docs/version-stable/macos.md b/docs/user/versioned_docs/version-stable/macos.md index 8d68080f39..51d146f055 100644 --- a/docs/user/versioned_docs/version-stable/macos.md +++ b/docs/user/versioned_docs/version-stable/macos.md @@ -24,6 +24,10 @@ AetherSDR runs natively on macOS, with separate signed and notarized DMGs for Ap 3. Start AetherSDR from Applications. Both DMGs are signed and notarized by Apple, so Gatekeeper verifies them with no extra steps. 4. The **Connect to Radio** window opens. Continue with [First Connection](./first-connection.md), or try [Your First Session](./your-first-session.md) with no radio. +### Allowing Local Network access + +Radio discovery needs **Local Network** permission on macOS 15 and later. Allow AetherSDR when macOS asks, or enable it in **System Settings → Privacy & Security → Local Network**. This permission is separate from the firewall. + ### Installing the DAX audio driver [DAX Virtual Audio](./dax-virtual-audio.md) on macOS uses the **DAX Virtual Audio Driver** that ships in the AetherSDR DMG. Install it from the DMG before you enable DAX. Without it, enabling DAX shows **DAX Audio Driver Missing**. @@ -75,6 +79,15 @@ To use the settings command line, run the program inside the app bundle, for exa ## Troubleshooting +### The radio is reachable by IP but missing from the list + +Automatic discovery needs incoming network broadcasts and Local Network permission. + +1. Open **System Settings → Privacy & Security → Local Network** and allow AetherSDR. +2. In **Connect to Radio**, click **Retry Discovery**. +3. For a local source build, configure with `-DAETHER_MACOS_ADHOC_SIGN=ON`, then rebuild the complete **AetherSDR** target before launching its `.app`. This development-only option signs the finished bundle so macOS recognizes its permission identity; production signing and release CI leave it disabled. See [macOS development identity](./building-from-source.md#macos-development-identity). +4. If broadcasts are blocked by a router or VPN, use **Connect by IP**. See [Manual Connection](./manual-connection.md). + ### Enabling DAX shows "DAX Audio Driver Missing" The DAX Virtual Audio Driver is not installed on this Mac. diff --git a/docs/user/versioned_docs/version-stable/manual-connection.md b/docs/user/versioned_docs/version-stable/manual-connection.md index d4397c72e7..7b3473f909 100644 --- a/docs/user/versioned_docs/version-stable/manual-connection.md +++ b/docs/user/versioned_docs/version-stable/manual-connection.md @@ -40,7 +40,7 @@ The **Radio IP address** group starts with two rows: 3. Click **Connect by IP**. AetherSDR probes the radio on TCP 4992. 4. If the probe fails, the panel shows the reason. **Network Diagnostics**, beside the button, helps you check the path. -If your VPN creates more than one active network adapter, open **Advanced: choose the VPN source path** and pick the **Source path:**. Most users can leave this on Auto. +If your VPN creates more than one active network adapter, open **Advanced: choose the VPN source path** and pick the **Source path:**. Most users can leave this on Auto. The list matches the address you entered: an IPv6 radio address lists this PC's IPv6 addresses, and an IPv4 address or a host name lists its IPv4 addresses. If a host name turns out to have only IPv6 addresses, Connect uses the IPv6 address of the adapter you picked. ### Port forwarding (FlexRadio remote access) diff --git a/docs/user/versioned_docs/version-stable/menu-reference.md b/docs/user/versioned_docs/version-stable/menu-reference.md index 1af6d543b5..1de404662b 100644 --- a/docs/user/versioned_docs/version-stable/menu-reference.md +++ b/docs/user/versioned_docs/version-stable/menu-reference.md @@ -21,6 +21,7 @@ The top-level menus are **File · Settings · Profiles · Tools · View · Windo |------|-------------| | **Connect to Radio...** | Opens the connection panel (LAN radios, SmartLink, manual IP). See [First Connection](./first-connection.md) and [Manual Connection](./manual-connection.md). | | **Disconnect** | Ends the radio session without closing AetherSDR. | +| **Update...** | The Updates window: the newest AetherSDR release, what is in it, and the download for this computer. See [Updates](./updates.md). | | **Quit** | Closes the application. | ## Settings @@ -131,7 +132,7 @@ The Minimize and Full Screen keys can be rebound in **Settings → Configure Sho | Item | What it does | |------|-------------| | **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. | +| **Printable Manual (PDF)** | Downloads 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. 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. | @@ -141,7 +142,8 @@ The Minimize and Full Screen keys can be rebound in **Settings → Configure Sho | **Contributing to AetherSDR...** | See [Contributing Guide](./contributing-guide.md). | | **Support & Diagnostics...** | Logging categories and support bundles. See [Support and Logging](./support-and-logging.md). | | **Slice Troubleshooting...** | A diagnostics window for slice, audio and display state. | -| **Check for Updates...** | Checks for a newer release now. | +| **Check for Updates...** | Opens the Updates window and checks again now. See [Updates](./updates.md). | +| **Check for Updates Automatically** | On by default. Checks for a newer release at startup, at most once a day, and shows **UPDATE** in the title bar when there is one. The same setting as **Check daily** in the Updates window; turning it off also removes the badge. Dimmed on store-managed installs (the Microsoft Store, or a Flatpak build), which update themselves. | | **About AetherSDR** | The About window (below). | ## The Title Bar @@ -152,6 +154,7 @@ The main window has one 52 px title bar. From left to right: |------|-----------| | **☰** | The application menu (Windows and Linux only). | | **AetherSDR** brand mark | Drag the bar here to move the window. | +| **UPDATE** badge | Shown when a newer AetherSDR release is available; hover names it, click opens the Updates window. See [Updates](./updates.md). | | **Radio tabs** | One tab per known radio (LAN, SmartLink or routed). See below. | | **EXPERIMENTAL** badge | Shown when the connected radio family's support is experimental. | | **multiFLEX** | Appears when other clients share the radio; hover lists them, click opens the dashboard. | @@ -163,6 +166,10 @@ The main window has one 52 px title bar. From left to right: | **Dock left / Dock right / Pop out** | Move the applet panel to the left or right of the panadapters (click the active side again to hide it), or float it in its own window. **Ctrl+Shift+S** also pops it out. | | **Window controls** | Minimize, maximize and close (see "Per platform"). | +### Updates + +The **UPDATE** badge appears when a newer AetherSDR release is available; click it for the Updates window. See [Updates](./updates.md). + ### Radio tabs Discovered radios popup with a Search name, address, or status field. Three rows, each with an Actions button: FLX8600, connected; Hermes-Lite 2, available; and Simulator (not on the air), 127.0.0.1, available, with the first two addresses blacked out. Connect manually... and Rescan radios sit at the bottom. 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 dc2a6ba8e3..e4b6604155 100644 --- a/docs/user/versioned_docs/version-stable/midi-controller-mapping.md +++ b/docs/user/versioned_docs/version-stable/midi-controller-mapping.md @@ -179,9 +179,9 @@ midi.settings — device preferences and active bindings midi/.xml — saved profiles ``` -## Known issues - -- A crash or a failed write while bindings are being saved can leave `midi.settings` partly written or empty, losing your live bindings without an error ([#5160](https://github.com/aethersdr/AetherSDR/issues/5160)). Export a profile as a backup. +Saves to `midi.settings` replace the file atomically. If writing the new +document fails, the previous file remains intact and AetherSDR logs a warning. +Export a profile to keep a separate backup of your bindings. ## Troubleshooting diff --git a/docs/user/versioned_docs/version-stable/multi-flex.md b/docs/user/versioned_docs/version-stable/multi-flex.md index 08fead21b6..7650a53b56 100644 --- a/docs/user/versioned_docs/version-stable/multi-flex.md +++ b/docs/user/versioned_docs/version-stable/multi-flex.md @@ -40,9 +40,9 @@ AetherSDR handles this automatically: ## Using the multiFLEX Dashboard -**Settings → multiFLEX...** opens the **multiFLEX Dashboard**, a live list of every connected station: +**Settings → multiFLEX...** opens the **multiFLEX Dashboard**, a live list of every connected station. It stays open beside the main window while you work; choosing **multiFLEX...** again brings it to the front, and it closes when the radio disconnects. Drag any empty part of it to move it, drag an edge to resize it, and close it with the round button in its top-right corner, Escape or Ctrl+W (⌘W on macOS). It remembers its size and place: -multiFLEX Dashboard window headed multiFLEX Stations with a green Enabled indicator. A table with columns Local PTT, Station, TX Ant and TX Freq (MHz) lists one row: a tick, AetherSDR, ANT1 and 14.250. A Close button sits at the bottom right. +multiFLEX Dashboard window with a round close button in its top-right corner and a green Enabled button under its header. A table with columns Local PTT, Station, TX Ant and TX Freq (MHz) lists one row: a tick, AetherSDR, ANT1 and 14.250. *The multiFLEX Dashboard: every station sharing the radio.* @@ -54,9 +54,7 @@ AetherSDR handles this automatically: | **TX FREQ (MHz)** | Transmit frequency | | *(button)* | **Disconnect** removes that client from the radio | -Below the table: -- **Enabled / Disabled** turns multiFLEX on or off on the radio. -- **Enable** (Local PTT) requests PTT for your station when another client holds it. +The **Enabled / Disabled** button above the table turns multiFLEX on or off on the radio. Below the table, **Enable** (Local PTT) requests PTT for your station when another client holds it. A green **multiFLEX** button appears in the title bar while other clients are connected. Hover it for the list of stations; click it to open the dashboard. diff --git a/docs/user/versioned_docs/version-stable/net-scheduler.md b/docs/user/versioned_docs/version-stable/net-scheduler.md index 76abcfc33d..f807952a50 100644 --- a/docs/user/versioned_docs/version-stable/net-scheduler.md +++ b/docs/user/versioned_docs/version-stable/net-scheduler.md @@ -55,6 +55,10 @@ At reminder time a banner appears in the main window with: AetherSDR also tries to show a desktop notification. +On a supported radio, a captured preset also reapplies its tuning step and any +saved repeater offset or tone fields. Fields absent from the preset are left +unchanged. The net is not a radio memory slot, and applying it does not key TX. + ### Import and export **Export…** saves the schedule as a JSON file; **Import…** reads one back, diff --git a/docs/user/versioned_docs/version-stable/networked-icom.md b/docs/user/versioned_docs/version-stable/networked-icom.md index 144119d2f4..9d2a6c8860 100644 --- a/docs/user/versioned_docs/version-stable/networked-icom.md +++ b/docs/user/versioned_docs/version-stable/networked-icom.md @@ -69,7 +69,7 @@ Click **Connect by IP**. The model is identified over the wire, not from the rad AetherSDR treats an Icom differently from a FlexRadio: -- **The radio is authoritative.** It remembers its own frequency, mode and filter. AetherSDR reads the radio's state and levels when it connects and never pushes saved state onto it. +- **The radio is authoritative.** It remembers its own frequency, mode and filter. AetherSDR reads the radio's state and levels when it connects and never pushes saved state onto it. The one thing it initializes is the scope mode, described under [Panadapter scope modes](#panadapter-scope-modes). - **Unknown models fail closed.** Each verified model has its own command profile. A control that has not been proven on a model is hidden, and a radio AetherSDR does not recognize gets no panadapter and no transmit, rather than guessed defaults. What you can do: @@ -82,6 +82,22 @@ What you can do: - **Decoders:** the CW, RTTY and AetherClock decoders work. The CW decoder opens in CW. - **Memory channels** use AetherSDR's shared bank on this computer, and the radio's own memories can be read in on models that support it. The IC-9700's radio memories are read-only. +### Panadapter scope modes + +The panadapter is the radio's own scope, and the radio owns the scope mode. On the IC-7300MK2, the IC-705 (firmware 1.20 or later) and the IC-9700 (firmware 1.30 or later) the **Scope** row in the Display panel offers the radio's three modes: + +| Mode | What the window does | +|---|---| +| **Scroll-F** | The window stays put while you tune inside it, like a FlexRadio panadapter. Click to tune in place, drag the panadapter to pan the window, and the window follows the tuned frequency when it reaches an edge. This is the mode AetherSDR starts in. | +| **Fixed** | The window is one of the radio's stored Fixed Edges presets and does not move on its own. | +| **Center** | The window is centered on the tuned frequency and moves with every tune. Dragging the panadapter retunes the radio. | + +**At connect, AetherSDR reads the radio's scope mode and edge preset.** A radio found in Scroll-F or Fixed is left exactly as it was: nothing is written. A radio found in Center is switched to Scroll-F once per session, so the panadapter never starts slaved to the VFO. Picking Center in the Display panel is honored for that session, and the next connect initializes Scroll-F again. Picking Scroll-F or Fixed is written to the radio and stays across reconnects. + +**AetherSDR's window is the radio's Fixed Edges preset 4.** In Scroll-F and in Fixed chosen from the Display panel, every pan and zoom rewrites preset 4 for the band segment you are on; presets 1–3 are never written. If the radio is in Fixed on one of presets 1–3 (chosen on its front panel), the panadapter shows that preset as it is, no Scope button is lit, and a drag or zoom is refused with the view put back; click **Fixed** to switch the radio to preset 4 with the same window, after which the window is yours to pan and zoom. In Scroll-F on one of presets 1–3, the radio stays on that preset until the window first has to move: a drag or zoom in AetherSDR, or a dial move that reaches the edge of the window, switches the radio to preset 4 and writes there. The window cannot cross one of the radio's band-segment boundaries (for example 8.000 MHz on HF), so near a boundary it shifts rather than centers. + +Tuning works the same way as on other radios: click, drag the tuned-frequency marker, scroll the wheel, type a frequency, or recall a memory. A tune that leaves the window brings the window with it. The original IC-7300 has Center only, and the Scope row is dimmed with that reason. On the IC-9700 the panadapter follows one scope, MAIN or SUB, and that is the one read and initialized; in Dual scope the other scope is not drawn. + ### PC Audio and data modes The **PC Audio** toggle chooses the radio's DATA OFF modulation input: **WLAN** on the IC-705, **LAN** on the IC-7300MK2, and **MIC** when PC Audio is off. The radio's DATA MOD setting is left alone. On a model AetherSDR cannot verify, the toggle refuses. @@ -118,6 +134,7 @@ The Icom RC-28 remote encoder is supported (**Settings → Controllers → Icom ### IC-705 +- On the IC-705, the preamp cycles through **OFF**, **P.AMP1** and **P.AMP2** below 74.800 MHz. At 74.800 MHz and above it toggles **OFF** / **P.AMP1**. The choices follow the radio's reported frequency; until that frequency is known, only OFF and P.AMP1 are offered. Changing ranges does not change the radio's preamp setting; its readback takes priority over routine meter polling. After reconnecting, S-meter readings wait for the radio's frequency so they use the correct HF or VHF reference. - 2 m and 70 cm are available alongside HF. - The speech processor button reads **COMP**, with a 0–10 slider and a numeric readout, as on the MK2. - **WFM** (broadcast FM) is receive-only. @@ -142,6 +159,7 @@ The Icom RC-28 remote encoder is supported (**Settings → Controllers → Icom - 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)). +- In Scroll-F, the IC-7300MK2 sends no scope data while it is transmitting, so the panadapter freezes for the length of a transmission; in Center it keeps sweeping ([#6168](https://github.com/aethersdr/AetherSDR/issues/6168)). ## Troubleshooting @@ -153,6 +171,14 @@ The **Icom CI-V:** address is wrong. AetherSDR does not correct a wrong address 2. Set **Icom CI-V:** to **Auto-detect (recommended)**. 3. If you use **Custom...**, check the address on the radio under MENU > SET > Connectors > CI-V and type it as hex (for example `A2`). +### Audio and radio updates stop after switching applications + +An interrupted application shutdown can leave an old network session on the radio. If the radio releases the current audio and CI-V streams while cleaning it up, AetherSDR disconnects and retries the connection automatically. + +1. Allow the automatic reconnect to finish. Frequency and other radio state are read again from the radio. +2. When switching applications, disconnect the first application and let it finish before opening the next connection. +3. If the radio continues refusing connections, check that another network client is not still using it. + ### Connect by IP fails with a handshake error The radio is not accepting network control from AetherSDR. The message names the target and the likely cause. diff --git a/docs/user/versioned_docs/version-stable/nr2-noise-reduction.md b/docs/user/versioned_docs/version-stable/nr2-noise-reduction.md index 68770157b7..aec25b33e4 100644 --- a/docs/user/versioned_docs/version-stable/nr2-noise-reduction.md +++ b/docs/user/versioned_docs/version-stable/nr2-noise-reduction.md @@ -44,16 +44,16 @@ NR2 is less effective against impulse noise (clicks, pops, lightning crashes); u ### FFTW wisdom (first use) -The first time you enable NR2, AetherSDR optimizes the FFT plans it uses (FFTW "wisdom"). An **AetherSDR — FFTW Wisdom** window appears while this runs: +The first time you enable NR2, AetherSDR optimizes the FFT plans it uses (FFTW "wisdom"). An **FFTW Wisdom** window appears while this runs: -AetherSDR FFTW Wisdom window. It reads Computing COMPLEX FORWARD FFT size 2048... and This window will automatically close when wisdom generation is complete, above a progress bar at 38%, Working..., an elapsed time of 0:09 and a Cancel button. +FFTW Wisdom window. It reads Computing COMPLEX FORWARD FFT size 2048... and This window will automatically close when wisdom generation is complete, above a progress bar at 38%, Working..., an elapsed time of 0:09 and a Cancel button. *The FFTW Wisdom window, shown the first time NR2 starts on a computer.* - It shows progress, a **Working** activity indicator and an **Elapsed** time counter. Planning can take several minutes on some systems; if the progress pauses, the window says it is still working. - The window is modeless — keep operating while it runs. On macOS it stays visible when AetherSDR is not the frontmost app. - Clicking NR2 again while it runs brings the same window forward instead of starting a second run. -- **Cancel** stops after the FFT plan currently being computed. NR2 is then not enabled, and your audio is left unchanged. +- **Cancel** (or the ✕ in the corner, **Esc** or **Ctrl+W**, **⌘W** on macOS) stops after the FFT plan currently being computed. NR2 is then not enabled, and your audio is left unchanged. - NR2 switches on when planning finishes, and the window closes itself. The result is saved **as soon as planning finishes**, so a crash or force-quit afterwards does not lose it, and later launches skip the wait. The same cache also speeds up the WDSP receive setup on the [Hermes-Lite 2](./hermes-lite-2.md). diff --git a/docs/user/versioned_docs/version-stable/panadapter-controls.md b/docs/user/versioned_docs/version-stable/panadapter-controls.md index fac68dffec..0544176200 100644 --- a/docs/user/versioned_docs/version-stable/panadapter-controls.md +++ b/docs/user/versioned_docs/version-stable/panadapter-controls.md @@ -30,6 +30,20 @@ The panadapter is the main display: the FFT spectrum on top and the scrolling wa - If the wheel tunes the wrong way for your mouse or trackball, turn on **Radio Setup → Appearance & Behavior → Reverse mouse-wheel tuning direction**. - Dragging any slider shows its value in a small popup. +### Touch controls + +On a touchscreen the panadapter and the rest of the app are fully operable by touch: + +| Gesture | Does | +|--------|------| +| **Tap** | Same as a click — double-tap to tune (or single-tap with **Single-Click to Tune** on) | +| **Drag** on the spectrum / waterfall | Pan the display | +| **Two-finger pinch** | Zoom the span, anchored under your fingers | +| **Press and hold** (about ⅔ of a second) | Acts as a right-click — opens the context menu | +| **Drag** in a list or menu | Flick-scroll it, with momentum; a tap still selects the item | + +Touch-scroll works in every scrollable list and menu. The exception is the drag-to-rearrange lists — the applet panel down the left edge and the favorites picker — where a drag moves items instead of scrolling. + ### The header A thin header runs across the top of each panadapter, drawn over the spectrum so the trace and grid show through it. @@ -101,7 +115,7 @@ Drag the divider between the spectrum and the waterfall to resize them. The spli ### Band plan overlay -The strip along the bottom of the spectrum shows band segments, colored by use. In the ARRL (US) plan, for example: blue for CW, red for data, orange for phone/SSB, cyan for beacons, purple for satellite, green for weak-signal SSB, and yellow for mixed or experimental segments. Dots mark spot frequencies (FT8, WSPR, QRP calling and so on); hover for a tooltip. +The strip along the bottom of the spectrum shows band segments, colored by use. In the ARRL (US) plan, for example: blue for CW, red for data, orange for phone/SSB, cyan for beacons, purple for satellite, green for weak-signal SSB, and yellow for mixed or experimental segments. Dots mark spot frequencies (FT8, WSPR, QRP calling and so on); hover for a tooltip. Some segments also carry a usage note from the published band plan, such as "Digimodes, automatically controlled data stations (unattended)" or "All modes except SSB". Hover over the segment to read it. The IARU Region 1 and SSA (Sweden) plans have these notes. **View → Band Plan** sets: @@ -136,6 +150,13 @@ It re-uses the main panadapter's data, so it uses no extra radio panadapter or s - Pan layouts, including floating pans, are restored when you reconnect. - With the [Workspace Canvas](./workspace-canvas.md) on, **Import pop-outs onto canvas** places floating pans on the canvas. +Opening a pan waits for the connected backend to publish its actual display. +The waterfall may arrive afterward. If creation remains unconfirmed, AetherSDR +does not automatically retry: another request could allocate a second display. +Closing a pan requests cleanup; the pan disappears when the backend reports its +removal. The normal close action preserves the last pan, and a backend may +refuse a close because it still needs that receiver. + ### Panadapter messages Status cards appear over the spectrum for things like "Center Lock released", a renderer problem, or KiwiSDR connection state. KiwiSDR status cards can be collapsed to a small pill but not closed. @@ -144,6 +165,10 @@ Status cards appear over the spectrum for things like "Center Lock released", a The status bar at the bottom of the window starts with the band-stack indicator and **+PAN** (add a panadapter), followed by indicators such as **TNF**, **CWX**, **ASR**, **DVK** and **FDX** (each only on radios and builds that support it). Click an indicator to toggle it, or press **Tab** to reach it and **Return** or **Enter** to activate it. +**FDX** requests full duplex through the connected radio. A refusal leaves its +state unchanged; a delayed reply cannot overwrite a newer request or a newer +radio status. Enabling full duplex does not start a transmission. + **View → FPS Meters** (Ctrl+F) adds spectrum and waterfall frame-rate readouts to each pan. The status bar. From left: the add-panadapter icon, the indicators TNF, CWX, ASR, DVK and FDX, the radio model FLEX-8600 with firmware 4.2.20.41343, the nickname FLX8600 in a box, the GPS satellite count with Fine Lock, CPU and memory use, the PA temperature and supply voltage, Network: [Excellent], a TUN STANDBY indicator, a TX indicator and the date and UTC time. @@ -216,6 +241,7 @@ Click **Display** in the overlay menu. The panel is divided into sections and sc | **FFT Line** | Off–5.0 px, default 1.0 px | Trace thickness, with its own color button. | | **FFT Fill** | 0–100, default 70 | Fill opacity under the trace, with its own color button. | | **FFT Floor** + **Auto** | 1–99, default 75 | With **Auto** on, the dBm scale follows the noise floor and keeps it at this height (% from top). Off by default. | +| **NF Range** | 0–10 dB in 0.5 dB steps; the radio's default is 1.5 | How far the measured noise floor may move before **Auto** repositions the scale. A larger range steadies the display at high zoom. The radio stores it. Needs SmartSDR+ on a FLEX-8000 series or Aurora radio with firmware 4.3.16 or later; otherwise it is dimmed and its tooltip says why. | #### WATERFALL diff --git a/docs/user/versioned_docs/version-stable/peripherals.md b/docs/user/versioned_docs/version-stable/peripherals.md index ff2b4d2d14..a3a6baeb26 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, the Elecraft KAT500 tuner, and the TelePost LP-100A +SPE Expert, VK3AMP, Elecraft KPA1500 and RF-KIT 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 @@ -207,6 +207,7 @@ The **AG** applet (Antennas & Switching) controls a 4O3A Antenna Genius. | SPE Expert Amplifier | Serial (115200 8N1) or a ser2net host | 7000 | | VK3AMP Amplifier | TCP control, UDP telemetry | 5005 (UDP 5010) | | Elecraft KPA1500 | TCP | 1500 | +| RF-KIT Amplifier | HTTP (REST/JSON) | 8080 | | LP-100A Meter | Serial (115200 8N1) or a ser2net host in raw mode | 2000 | ### Settings @@ -215,7 +216,7 @@ The TGXL, PGXL, Antenna Genius and ShackSwitch addresses keep their own keys (`TGXL_ManualIp`, `PGXL_ManualIp`, `AG_ManualIp`, `SS_ManualIp` and the matching port keys). The device list, **Reconnect automatically**, the per-device toggles (`Peripherals..AutoConnect`, ids `tgxl`, `pgxl`, `ag`, -`shackswitch`) and the ACOM, SPE, VK3AMP, KPA1500 and LP-100A connection +`shackswitch`) and the ACOM, SPE, VK3AMP, KPA1500, RF-KIT and LP-100A connection settings live in the `Peripherals` document in `AetherSDR.db`. Access codes live only in the OS keychain. See [Settings and Backups](./settings-and-backups.md). diff --git a/docs/user/versioned_docs/version-stable/profile-management.md b/docs/user/versioned_docs/version-stable/profile-management.md index 09c3326544..44de406f33 100644 --- a/docs/user/versioned_docs/version-stable/profile-management.md +++ b/docs/user/versioned_docs/version-stable/profile-management.md @@ -12,7 +12,7 @@ applies_to: ["FlexRadio"] ::: -Profiles save and restore FlexRadio state. AetherSDR supports all three SmartSDR profile types, and profiles are stored **on the radio**, so they are shared with SmartSDR and other clients. +Profiles save and restore FlexRadio state. AetherSDR supports the SmartSDR profile types (global, transmit, microphone and, from SmartSDR v4.3.16, CW), and profiles are stored **on the radio**, so they are shared with SmartSDR and other clients. AetherSDR's own preferences (layout, display, controllers) are separate and stay on your computer. See [Settings and Backups](./settings-and-backups.md). @@ -35,6 +35,10 @@ TX settings: power, EQ, compressor, mic settings. Keep several for different ope Mic input settings: source, gain, bias, boost and compander level. Useful when you switch microphones. +### CW profiles + +CW settings, kept as named profiles on radios running SmartSDR v4.3.16 or later. On older firmware the contents of the **CW** tab are dimmed; hover over them (or use a screen reader) to see why. + ## Using the Profiles menu **Profiles** in the menu bar: @@ -45,7 +49,7 @@ Mic input settings: source, gain, bias, boost and compander level. Useful when y ## Using the Profile Manager -**Profiles → Profile Manager...** opens a non-modal window that remembers its size and position. Tabs: **Global**, **Transmit**, **Microphone**, **Auto-Save**. +**Profiles → Profile Manager...** opens a non-modal window that remembers its size and position. Tabs: **Global**, **Transmit**, **Microphone**, **CW**, **Auto-Save**. On each profile tab: @@ -57,8 +61,12 @@ On each profile tab: - **Load** (or double-click): apply the selected profile - **Save** (Global tab): save the current state to the selected profile, or to a new one using the name field - **Create** (Transmit and Microphone tabs): create a new profile. The radio cannot overwrite an existing TX or Mic profile directly; changes to the active one are captured by Auto-Save. If you try to create a name that already exists, AetherSDR tells you so and, if Auto-Save is off, offers **Enable Auto-Save**. +- **Create** (CW tab): create a new CW profile. A name that already exists is refused with a status line. +- **Reset** (CW tab): after confirmation, return the selected CW profile to the radio's built-in CW values. It does not copy the settings of the `Default` profile. - **Delete**: remove the selected profile, after confirmation +When the radio reports edits to the active CW profile that are not saved yet, the CW tab shows **The active CW profile has unsaved changes.** The line clears when the profile is saved, or when the changed settings are put back to their saved values. + 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. @@ -109,6 +117,7 @@ Profile operations are carried out by the radio with these commands: - `profile global save "name"` / `load` / `delete` - `profile transmit create "name"` / `save` / `delete` - `profile mic create "name"` / `save` / `delete` +- `profile cw load "name"` / `create` / `delete` / `reset` (SmartSDR v4.3.16 or later) ## Known issues 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 6209b2f0ed..535a5a31f1 100644 --- a/docs/user/versioned_docs/version-stable/rade-digital-voice.md +++ b/docs/user/versioned_docs/version-stable/rade-digital-voice.md @@ -36,7 +36,8 @@ Select **RADE** from the mode dropdown in either the RX applet or the VFO widget - sets the radio to **DIGU** or **DIGL** using the band's usual sideband (LSB bands get DIGL; 60 m uses DIGU); - sets the filter to **750–2250 Hz** (mirrored for DIGL); -- makes the RADE slice the **TX slice**. +- makes the RADE slice the **TX slice**; +- turns on the radio's **DAX** transmit input, which carries RADE's modem audio. On Windows (and Linux builds without PipeWire), turning RADE off or moving TX to another slice puts DAX back the way it was. On macOS and PipeWire builds, DAX follows the slice's mode instead, so it stays on while the slice is still in DIGU/DIGL ([#6595](https://github.com/aethersdr/AetherSDR/issues/6595)). RADE stays active across PTT cycles. It switches itself off if the radio or another client changes the slice to a mode other than DIGU/DIGL. If the RADE engine fails to start, the slice's previous mode, filter and TX assignment are restored. diff --git a/docs/user/versioned_docs/version-stable/radio-setup.md b/docs/user/versioned_docs/version-stable/radio-setup.md index 504a4bcb3a..8f2fede6a3 100644 --- a/docs/user/versioned_docs/version-stable/radio-setup.md +++ b/docs/user/versioned_docs/version-stable/radio-setup.md @@ -73,13 +73,13 @@ 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) | +| **Radio** | Radio information (serial, hardware version, region, options), identification (model, nickname, callsign), license info and the firmware version (**FW Version**; to update it, see [Firmware Update](./firmware-update.md)) | | **Network** | The radio's IP address, mask, MAC and gateway; DHCP/static IP configuration; **Advanced**: Enforce Private IP Connections, **Agent Automation (MCP)** (see [Automation Bridge and MCP](./automation-bridge-and-mcp.md)), Network MTU and the VITA-49 RX buffer (see [Low Bandwidth Connections](./low-bandwidth-connections.md)) | | **GPS** | Whether a GPS is installed, position, grid, altitude, satellites and lock status. The full dashboard is **Tools → AetherGPS...**. See [AetherClock and GPS](./aetherclock-and-gps.md). Hidden on radios without GPS hardware. | | **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. | +| **ANAN Front End** | Starting sample rate, ADC choice, dither, randomization, filter-bank bypass and radio-speaker audio for the [ANAN-G2](./anan-g2.md), which apply on the next connect, plus the band-pass filter bank and the speaker amplifier mute, which also apply at once. Available while disconnected or connected to a G2. | | **Droop Correction** | Panadapter edge-droop correction for the [ANAN-G2](./anan-g2.md). Only when one is connected. | ### RECEIVE & TRANSMIT @@ -97,6 +97,10 @@ 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. +The TX Band Settings 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. **View → Frameless Window** does not apply to it. + +The table shows the current TX profile's values and follows the radio while it's open. A value changed on the radio appears in the table, except in a field you are typing in. A change you make stays as you set it until the radio answers; one the radio refuses, or one the app can't send right now (for example while reconnecting), shows the radio's value again. Switching to another TX profile, reconnecting, or the radio reporting another band rebuilds the table, and text you were typing is dropped. Reopening the window after closing it also builds a fresh table. + | 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). | @@ -167,8 +171,8 @@ operation. If the connection ends, the operation stops waiting and shows 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 +After switching radios or reconnecting, close and reopen **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 diff --git a/docs/user/versioned_docs/version-stable/split-operation.md b/docs/user/versioned_docs/version-stable/split-operation.md index 17412f4ff0..6fb8b9f585 100644 --- a/docs/user/versioned_docs/version-stable/split-operation.md +++ b/docs/user/versioned_docs/version-stable/split-operation.md @@ -37,6 +37,11 @@ panadapter. - Click the red **SPLIT** badge again to end the split. The transmit slice is removed. +AetherSDR waits for the radio to identify and publish the new slice before +assigning it as the split transmitter. Ending split while creation is pending +cancels that setup. Cleanup applies only to the slice created for that split, +not another client's receiver or a new receiver reusing its number. + The two VFO panels of a split pair stay on opposite sides of the dual-VFO layout so they never cover each other. The SPLIT/SWAP badges follow each slice's actual role, so a diversity child slice is never mistaken for a split @@ -144,7 +149,19 @@ with a notice instead of silently doing nothing. The connected radio can't do split, so AetherSDR refuses rather than doing nothing silently. -1. Use split on a FlexRadio (or in Demo mode). Other radio families don't offer it. +1. Use split on a FlexRadio with a free slice. Demo is receive-only and cannot + create a split transmitter. Other radio families do not offer independent + same-pan split creation through this control. + +### Split setup failed + +The radio refused the new slice, did not confirm it in time, or the original +receiver changed before setup finished. AetherSDR leaves the split disabled +when it cannot safely identify the new transmit slice. + +1. Check that the original receiver is still connected and a slice is free. +2. Check the radio's current slices before retrying; an unconfirmed request + may still have created a slice. ### The split closed on its own after my logger changed frequency diff --git a/docs/user/versioned_docs/version-stable/spothub.md b/docs/user/versioned_docs/version-stable/spothub.md index 8a3b080c37..300eca3f73 100644 --- a/docs/user/versioned_docs/version-stable/spothub.md +++ b/docs/user/versioned_docs/version-stable/spothub.md @@ -54,6 +54,11 @@ Skimmer spots from the Reverse Beacon Network, over the same telnet protocol. - **Rate Limit** — maximum spots per second sent to the radio (default 10), so contests don't flood the display. Extra spots are queued for the next batch. - **Startup Commands…**, **Auto-Connect**, **Hide Unverified**, **RBN Console** and **Spot Color** (default blue) as on the Cluster tab +Queued radio-bound spots belong to the current connection. Disconnecting or +pressing **Clear All** discards the older queue, so it cannot refill the radio's +spot list after a clear or carry into a replacement session. New arrivals can +populate the list again. + ### WSJT-X (decode spotter) Listens for WSJT-X decode messages over UDP and spots the stations you are hearing. diff --git a/docs/user/versioned_docs/version-stable/support-and-logging.md b/docs/user/versioned_docs/version-stable/support-and-logging.md index 7e7f70d122..549bd92840 100644 --- a/docs/user/versioned_docs/version-stable/support-and-logging.md +++ b/docs/user/versioned_docs/version-stable/support-and-logging.md @@ -12,9 +12,16 @@ When something isn't working, AetherSDR has several built-in tools for capturing - **Help → Slice Troubleshooting...**: a guided check for slice problems - **Tools → Runtime Monitor...**, **Tools → Network Diagnostics...** and **Tools → Radio Health...**: see [Runtime Monitor](./runtime-monitor.md) +The JSON view in **Help → Slice Troubleshooting...** includes read-only FlexRadio metadata when the +radio reports it: `radio.iaru_region` (1–3) and each slice's `chain_mode`. +Unknown, unsupported or invalid observations appear as `null`. The processing +chain is separate from the selected mode; a waveform slice can have mode `FDVU` +and chain `DIGU`. The reported IARU region does not select your client band plan +or grant transmit permission. Select your display plan under **View → Band Plan**. + Before you file a report, drop your log or support bundle on the [Log Analyzer](/log-analyzer). It checks for known problems and links the fix for each one it finds. It runs in your browser; the file is never uploaded. **Help → Log Analyzer** and the **Log Analyzer** button in **Help → Support & Diagnostics...** open it. -The Help menu starts with **AetherSDR Documentation** (this site), **Printable Manual (PDF)** and **Log Analyzer**, which open in your browser. It also has **Getting Started...**, **AetherSDR Help...**, **What's New...**, three how-to guides (**Understanding Noise Cancellation...**, **Configuring AetherSDR Controls...**, **Configuring Data Modes...**), **AetherSDR Website**, **Donate to AetherSDR**, **Contributing to AetherSDR...**, **Check for Updates...** and **About AetherSDR**. On Windows and Linux the menus are behind the **☰** button at the left of the title bar; on macOS they are in the system menu bar. +The Help menu starts with **AetherSDR Documentation** (this site), **Printable Manual (PDF)** and **Log Analyzer**, which open in your browser. It also has **Getting Started...**, **AetherSDR Help...**, **What's New...**, three how-to guides (**Understanding Noise Cancellation...**, **Configuring AetherSDR Controls...**, **Configuring Data Modes...**), **AetherSDR Website**, **Donate to AetherSDR**, **Contributing to AetherSDR...**, **Check for Updates...**, **Check for Updates Automatically** and **About AetherSDR**. On Windows and Linux the menus are behind the **☰** button at the left of the title bar; on macOS they are in the system menu bar. ## Using Support & Diagnostics @@ -30,6 +37,8 @@ A grid of checkboxes, one per log category. Hover a box for what it covers. Turn **Enable All** / **Disable All** toggle every category at once. The categories, and which are on by default, are listed under [Log categories](#log-categories). +For refused audio-output or **Show TX in Waterfall** edits, the Protocol / Status log names the requested setting and value, such as `Backend refused operation line output gain 30`. This records a request that was not dispatched; it does not confirm a radio state change. + ### Log viewer Below the grid, the dialog shows the path of the current log file, its size, and the last part of the log. **Refresh** re-reads it, **Clear Log** empties it (handy just before reproducing a bug), and **Open Log Folder** opens the log directory in your file manager. diff --git a/docs/user/versioned_docs/version-stable/supported-radios.md b/docs/user/versioned_docs/version-stable/supported-radios.md index 1ec616887d..175f62ea3d 100644 --- a/docs/user/versioned_docs/version-stable/supported-radios.md +++ b/docs/user/versioned_docs/version-stable/supported-radios.md @@ -87,7 +87,7 @@ Radio Setup gains a page for some families: **Calibration** and **HL2 Hardware** ### Peripherals -Supported external devices include the 4O3A/FlexRadio PGXL power amplifier and TGXL tuner, plus ACOM S-series, SPE Expert, VK3AMP and Elecraft KPA1500 amplifiers. See [Peripherals](./peripherals.md) and [Amplifiers](./amplifiers.md). +Supported external devices include the 4O3A/FlexRadio PGXL power amplifier and TGXL tuner, plus ACOM S-series, SPE Expert, VK3AMP, RF-KIT (RF2K-S) and Elecraft KPA1500 amplifiers. See [Peripherals](./peripherals.md) and [Amplifiers](./amplifiers.md). ## See also diff --git a/docs/user/versioned_docs/version-stable/tailscale-remote-access.md b/docs/user/versioned_docs/version-stable/tailscale-remote-access.md index 9d59c9d18d..5c10b7ebd4 100644 --- a/docs/user/versioned_docs/version-stable/tailscale-remote-access.md +++ b/docs/user/versioned_docs/version-stable/tailscale-remote-access.md @@ -118,6 +118,9 @@ local network. *The Waveforms window, listing the waveforms installed on the radio. The serial number and the waveform processor's address are blacked out.* +When the installed list is empty, **No radio waveforms installed** appears +with the hint **Use Install... to add waveforms to your radio.** + 1. Open **Tools → Waveforms...**. 2. Click **Install...** and choose **Remote Access (Tailscale)**. 3. AetherSDR downloads the container image (about 8 MB) and checks its diff --git a/docs/user/versioned_docs/version-stable/tci-server.md b/docs/user/versioned_docs/version-stable/tci-server.md index 10decabf29..e7d49e33fc 100644 --- a/docs/user/versioned_docs/version-stable/tci-server.md +++ b/docs/user/versioned_docs/version-stable/tci-server.md @@ -73,6 +73,13 @@ audio_stop:0; # stop it ## Using TCI with other programs +When a VFO-B request needs a new receiver, AetherSDR waits for its acknowledged +identity and radio status before selecting it for TX. A delayed reply cannot +adopt another client's receiver. Disconnecting, stopping TCI, or closing the +original receiver during setup cancels the pending route, including while TX +selection is awaiting a reply; cleanup only removes the receiver created for it. +Radios with paired receiver/panadapter topology keep that native topology. + ### WSJT-X Use a WSJT-X build with TCI support (WSJT-X Improved, or WSJT-X 3.x). @@ -130,6 +137,7 @@ TCI audio is sent and received as binary frames on the same WebSocket. - RTL-SDR receive audio follows the stable receiver map and remains independent of speaker gain and mute; receiver squelch still applies. Normal launches offer one RTL receiver. Extra receivers belong to the [process-only evaluation](./rtl-sdr.md#multi-receiver-evaluation), not a higher production limit. RTL has no transmit or IQ export. - If a client reconnects more than 10 seconds later, its receive audio is re-bound to the right DAX channels automatically. - TX audio from a client is resampled from the rate the client declares, so 8, 12 and 24 kHz programs are not mis-pitched. +- **DAX goes back the way it was after each transmission.** On a FlexRadio, TCI turns on the radio's DAX transmit input while a client transmits, then restores it once the radio is back in receive, so your next microphone transmission is not silent. Disconnecting or switching radios discards the previous session's DAX hold. ### Sample rate and format @@ -233,7 +241,6 @@ keyer:0,false; # key up - If a client that holds PTT dies without closing its connection (power loss, a pulled cable, a dropped Wi-Fi link), the radio stays keyed until the operating system gives up on the TCP connection ([#5985](https://github.com/aethersdr/AetherSDR/issues/5985)). - Transmit audio from a TCI client passes through the Phone/CW microphone chain, so the mic profile, **MIC** level and **PROC** change what a digital-mode client puts on the air ([#5844](https://github.com/aethersdr/AetherSDR/issues/5844)). -- After a TCI voice keyer (for example OpsLog) transmits, DAX stays on, so the next microphone transmission has no audio until you turn DAX off ([#5524](https://github.com/aethersdr/AetherSDR/issues/5524)). - A cross-band tune from a TCI client does not recall the radio's band stack, so the per-band antenna, mode and filters are not restored ([#3543](https://github.com/aethersdr/AetherSDR/issues/3543)). - The TCI port listens on every network interface with no password, so any machine that can reach it can tune and key the radio ([#5296](https://github.com/aethersdr/AetherSDR/issues/5296)). 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 84dd7c8e3b..d130a82e18 100644 --- a/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md +++ b/docs/user/versioned_docs/version-stable/tgxl-tuner-control.md @@ -51,8 +51,9 @@ Docked in the applet panel, the TUN applet (title "TGXL") shows: *The TGXL applet with a Tuner Genius XL connected.* -- **Fwd Power** gauge. It scales for barefoot, Aurora or PGXL power levels, - and uses the tuner's own peak reading, so voice peaks read correctly. +- **Fwd Power** gauge. It scales for barefoot (0–200 W), Aurora or a KPA500 in + operate (0–600 W) and PGXL (0–2000 W) power levels, and uses the tuner's own + peak reading, so voice peaks read correctly. - **SWR** gauge (1.0–3.0). - **C1**, **L** and **C2** relay bars. - **TUNE**: starts an auto-tune. While a tune runs it reads **STOP**; diff --git a/docs/user/versioned_docs/version-stable/troubleshooting.md b/docs/user/versioned_docs/version-stable/troubleshooting.md index d7cd032fb0..207a14cd18 100644 --- a/docs/user/versioned_docs/version-stable/troubleshooting.md +++ b/docs/user/versioned_docs/version-stable/troubleshooting.md @@ -38,6 +38,15 @@ multiFLEX is off on the radio and other clients are already connected. 1. Disconnect one of the stations listed in the **Connected Stations** dialog. 2. See [Multi-Flex](./multi-flex.md). +### Connected, but the panadapter stays empty + +A **No spectrum data received** warning appears about 10 seconds after connecting. The control connection works, but the radio's spectrum and audio stream (UDP) is not reaching AetherSDR. A firewall on this computer or on the network path, or a VPN, may be blocking it, or AetherSDR may be using the wrong network interface. + +1. The warning names the source mode and the local TCP and UDP endpoints. Check the UDP endpoint is on the same network as the radio. +2. If you use a VPN, disconnect it or exclude the radio's network, then reconnect. +3. **Windows:** open **Tools → Network Diagnostics...** → **Windows Firewall**. If a rule blocks AetherSDR, click **Fix…**. +4. To report it, turn on the **VITA-49** log category in **Help → Support & Diagnostics...**, restart AetherSDR, reconnect, and attach the log. It shows where the stream was bound and whether any packet arrived. See [Support and Logging](./support-and-logging.md). + ### SmartLink: signed in, but no radio is listed The radio is not registered with SmartLink, or port forwarding is not set up. diff --git a/docs/user/versioned_docs/version-stable/tx-controls.md b/docs/user/versioned_docs/version-stable/tx-controls.md index 97cb2e6e14..35a3f50fec 100644 --- a/docs/user/versioned_docs/version-stable/tx-controls.md +++ b/docs/user/versioned_docs/version-stable/tx-controls.md @@ -27,7 +27,10 @@ These controls operate the radio. External Elecraft tuners have their own applet - **MOX** — manual transmit - **ATU** — run the antenna tuner - **MEM** — use ATU memory -- **APD** — Adaptive Pre-Distortion (Active/Cal/Avail indicators). On +- **APD** — Adaptive Pre-Distortion (Active/Cal/Avail indicators). + **Active** lights when the radio reports a correction on air for the + transmit slice's antenna, frequency and power; on firmware 4.3 and later, + that means the radio's APD state is active or hold. On FLEX-8000-series radios running fw 4.2.18+, APD also supports **External APD**: pick a sampler-port input via the sub-menu so the radio can train its predistortion against the output of an external linear @@ -155,6 +158,10 @@ changes made at the radio or by another client; **Breakin** requests a change. - **AM Carrier slider** (0–100) - **VOX** toggle + level + delay + + Automation can explicitly disarm VOX with `invoke "VOX voice-operated transmit" + setChecked false` without TX permission. The `vox_toggle` automation shortcut + requires TX permission in either direction. - **DEXP** — downward expansion (noise gate on the radio's mic path) - **TX Filter** — Low Cut / High Cut step buttons diff --git a/docs/user/versioned_docs/version-stable/updates.md b/docs/user/versioned_docs/version-stable/updates.md new file mode 100644 index 0000000000..066e7967ac --- /dev/null +++ b/docs/user/versioned_docs/version-stable/updates.md @@ -0,0 +1,58 @@ +--- +title: "Updates" +slug: "/updates" +description: "The Updates window shows the newest AetherSDR release, what is in it, and the download built for your computer." +status: "Supported" +applies_to: ["All radios"] +--- + +:::info[Status] + +**Status:** Supported · **Applies to:** All radios + +::: + +The **Updates** window shows whether a newer AetherSDR is available, what is in it, and the download built for your computer. AetherSDR never downloads or installs an update by itself: **Get AetherSDR** opens the download in your browser, and you install it as you installed AetherSDR. + +## Requirements + +- An internet connection that reaches GitHub (`api.github.com`). The check sends one request with AetherSDR's version; there is no AetherSDR server and nothing else is sent. + +## Using the Updates window + +Open it with **File → Update...**, by clicking the **UPDATE** badge in the title bar, or with **Help → Check for Updates...**, which also checks again right away. Opening it when AetherSDR knows nothing about the newest release starts a check. + +When a newer release exists, the window shows: + +- **NEW RELEASE** with its date, the version, and the release's one-line summary. +- **WHAT'S INSIDE**: one chip for each chapter of the release notes. +- **Get AetherSDR** *version*: opens the download in your browser. The line under it names the file: the Windows installer, the Windows portable zip if you run the portable copy, the macOS Apple silicon disk image, or the Linux AppImage for your processor. When there is no build for your computer, it opens the release page instead. +- **Full release notes**: opens the release page on GitHub. +- **Skip this version**: hides the **UPDATE** badge for this release. The window still shows it, and the next release shows the badge again. + +If GitHub can't be reached, the window still shows a newer release that an earlier check found, with **Get AetherSDR** (which then opens the release page), **Skip this version** and **Check Now**, and a note that the release's details are missing. + +When you have the newest release, the window says **UP TO DATE** and shows what came in your version. **Check Now** asks GitHub again. + +**Check daily** is the same setting as **Help → Check for Updates Automatically**; changing either changes both. It is on by default: AetherSDR checks about 15 seconds after it starts, no more than once a day, counting a check that could not reach GitHub. A newer release lights the **UPDATE** badge after the **AetherSDR** brand mark; nothing pops up, and a check that finds nothing or cannot reach GitHub stays silent. The badge stays on across restarts until you update or skip that release. Turning **Check daily** off also removes the badge. + +On a store-managed install (the Microsoft Store, or a Flatpak build), the store updates AetherSDR: there is no automatic check, no badge and no download button, **Check daily** is dimmed, and the window says where updates come from. + +## Troubleshooting + +### The window says COULDN'T REACH GITHUB + +1. Check that this computer can open https://github.com in a browser. +2. If you use a proxy or firewall, allow `api.github.com`. +3. Click **Check Now**. + +### The UPDATE badge doesn't appear + +1. Open **File → Update...** and see what the window reports. +2. If it shows the release with **Skipped**, you skipped it; the next release shows the badge again. +3. Check that **Check daily** is on. + +## See also + +- [Menu Reference](./menu-reference.md) +- [Firmware Update](./firmware-update.md) 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 ff2efbb281..cfc985cf27 100644 --- a/docs/user/versioned_docs/version-stable/usb-control-surfaces.md +++ b/docs/user/versioned_docs/version-stable/usb-control-surfaces.md @@ -74,14 +74,14 @@ The RC-28 is a weighted tuning knob with **F1**, **F2** and a **TX** bar. A comm 1. Tick **Enable HID encoders / StreamDeck+** (see [Setup](#setup)). 2. Open **Settings → Controllers → Icom RC-28 Remote Encoder...** ("Icom RC-28 Button Mapping"). -The dialog has: +The window reopens where you left it (centered on the main window the first time), and you can resize it by dragging any edge. Close it with the corner ✕, **Close**, Esc or Ctrl+W (⌘W on macOS). Changes take effect as you make them. It has: | Group | Controls | |-------|----------| | **Device** | Connection status, VID:PID, path, serial and firmware | | **Transmit (PTT) Button** | **Momentary** (hold to transmit, release to stop) or **Latched** (press to start, press again to stop) | | **Button Assignments** | **F1/F2 — short press** and **F1/F2 — long press** | -| **Encoder** | **Invert encoder direction**; **Pulses per step** (1–10, higher is less sensitive); **Auto-snap to nearest 1 kHz after rotation stops** | +| **Encoder** | **Invert encoder direction**; **Auto-snap to nearest 1 kHz after rotation stops**; **Pulses per step** (1–10, higher is less sensitive) | | **Activity** | A log of recent button and encoder events | Defaults: F1 short = Step Up, F1 long = Fast Tuning; F2 short = Step Down, F2 long = Mode. diff --git a/docs/user/versioned_sidebars/version-stable-sidebars.json b/docs/user/versioned_sidebars/version-stable-sidebars.json index 1bfb853554..c8da1e26ed 100644 --- a/docs/user/versioned_sidebars/version-stable-sidebars.json +++ b/docs/user/versioned_sidebars/version-stable-sidebars.json @@ -145,6 +145,7 @@ "themes-and-theme-editor", "slice-colors", "accessibility", + "updates", "firmware-update" ] }, diff --git a/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml b/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml index 331913734f..2ca3585f17 100644 --- a/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml +++ b/packaging/linux/io.github.aethersdr.aethersdr.metainfo.xml @@ -68,6 +68,7 @@ +