Repository navigation
RTL: publish multi-receiver audio, meters and release packaging - #6077
Conversation
Accessibility check findingsThis PR touches
See Findings are warnings only — the build is not blocked. |
CI:
|
| Failure | Introduced by | Lowest PR that is already red |
|---|---|---|
filter modes.size() == 2 |
d7d50ed0 "Route RTL WFM as confirmed 48 kHz stereo" — adds the third entry, leaves the assertion at 2 |
#5974 (inherited by #6003 and this PR) |
| squelch unit string | eac471e0 "Fix independent RTL Auto SQL and admit eight-RX evaluation" — renames the backend's unit and updates rx_applet_squelch_reconciliation_test.cpp, but not control_receive_test.cpp |
this PR (#6077) |
I verified #5924's head does not append the WFM entry, so size() == 2 is correct there and that layer is unaffected. The filter fix belongs in #5974; the squelch fix belongs here.
Housekeeping
The full-suite bot filed #6080 as "test suite failing on main", but its commit is a53423a — this PR's head, from the run you dispatched. main is not regressed by this. That issue should be closed as a PR-branch run rather than chased as a main break.
Also, for completeness: no Copilot or other reviewer comments on this PR. The only bot comment is the accessibility scan (17 findings across 5 src/gui/ files) — those are warnings only, don't block the build, and are unrelated to this failure. The canonical patterns are in docs/a11y.md if you want to pick any of them up, with structural work tracked in #3288.
Two one-line literals across a 615-test suite on a six-deep stack is a good place to be. Thanks for running the full lane deliberately rather than waiting for it to surface downstream — that's what caught these.
73
🤖 aethersdr-agent · cost: $8.9871 · model: claude-opus-5
9c50425 to
5e39790
Compare
a53423a to
4b1816a
Compare
Analog RTL receivers gain independent squelch, receive-audio exports, meters and release packaging. This is the remaining analog delivery increment under RFC #5468; the WFM foundation, applet and live PPM changes are already in `main`. ## Scope and separation Rebased onto main `d6f6a4f00e40e292d575c40cad7d0848406d89f5`. Only the five remaining analog commits were replayed, followed by the release-control and user-documentation cleanup. The merged WFM/PPM changes and newer main changes are retained. - Independent manual/Auto SQL; selected-receiver APRS; stable TCI mapping; native Linux/macOS DAX receive feeds; relative receive meters with a per-device switch; averaging preserved during monitor-volume edits. - WFM controls follow the selected receiver and reject stale bindings. The normal launch remains **one receiver**. Explicit process-only 2/4/8 receiver evaluation remains separate from production capacity qualification; no new Linux ARM capacity result is claimed. - Official AppImage, macOS DMG and Windows packages require `ENABLE_RTL=ON` and `REQUIRE_RTL=ON`. Configuration fails if RTL or float-FFTW is missing. Jeremy [approved required RTL and bundling pinned libusb](#6083 (comment)). The completed AppImage is extracted and audited after the final linuxdeploy pass, including a byte comparison of its libusb payload. Windows dependency validation follows normal and delay imports recursively. - **No `ENABLE_HD_FM` declaration, placeholder, release flag or decoder dependency remains in this analog increment.** The actual optional switch and all explicit OFF release/build flags belong to deferred draft #6002 / RFC #6079. That feature is not a prerequisite for this PR. - User documentation now covers RTL packaging, evaluation limits, squelch, meters, selected-slice AetherModem and receive-only DAX/TCI routing. ## Shared behavior for review Auto SQL uses the existing typed receive dispatcher and confirmed-state guards. RTL's 2048-bin detector scale is relative dBFS, not calibrated dBm or directly comparable with the display FFT; no misleading threshold line is drawn. An accepted capture revision retires a receiver's relative-level sample only when that receiver's detector input changes (passband, mode, membership, front end, capture placement or DC suppression); monitor gain, pan, mute and squelch edits keep it, so the meter does not blank during an AF gain drag. Other adapters retain their manual behavior and refuse the automatic request. TCI initialization is batched as one worker job for every family. `AETHER_SETTINGS_DIR` suppresses legacy-profile migration and normal log pruning. The `activeSliceCommandIssued` connection uses `receiveCommandSource()` identity and `Qt::DirectConnection`; this shared-family guard remains part of the increment. Receive-only PipeWire routing drains stale audio while preserving the legacy Flex FIFO's sole-reader/EPIPE behavior. Dependency-prefix and Qt deployment fixes remain in packaging. ## Validation Native Nobara / GCC 16.2.1 / Qt 6.12 / Release application and daemon builds pass at `a3458b09`. **53/53 selected CTests pass**, zero skips/failures, 221.35 seconds. This covers RTL capture/control/receiver banks, FM/WFM, SQL, spectrum/averaging, APRS, DAX/TCI, meters, applet lifecycle and actual PipeWire FIFO behavior. The analog CMake cache contains no Digital switch. [Platform CI](https://github.com/aethersdr/AetherSDR/actions/runs/38001349724) passes on Linux, macOS and Windows. [Static Checks](https://github.com/aethersdr/AetherSDR/actions/runs/38001349782) and [Docs](https://github.com/aethersdr/AetherSDR/actions/runs/38001349759) pass. [Full Suite](https://github.com/aethersdr/AetherSDR/actions/runs/38001374779) passes: **691 passed, five skipped, zero failures**, 696 registered tests, 932.37 seconds. The skipped cases are four AppSettings safety scenarios and `hl2_probe_spectrum_panadapter`; they are not claimed as exercised. All branch release-package workflows pass at exact head `a3458b09`: [AppImage](https://github.com/aethersdr/AetherSDR/actions/runs/38001377190) x86-64 and ARM, [macOS DMG](https://github.com/aethersdr/AetherSDR/actions/runs/38001379572) Apple Silicon and Intel, and [Windows Installer](https://github.com/aethersdr/AetherSDR/actions/runs/38001382004). Both completed AppImages pass RTL runtime closure and libusb byte comparison. Both DMGs pass signing/notarization; Windows passes actual DLL closure and installer/artifact packaging. Artifact identities and checksums are retained. Release/Store publication jobs were skipped. Already passed on this revision: 16 required-RTL configuration combinations, 9 package-helper tests, engine/routing/capability gates, generated manifests and references, frozen-test-gate and registration checks, build-options checks, LogAnalyzer checks, and the user-documentation production build. Commits are signed. Historical operator multi-RX acceptance and earlier package/full-suite results remain in the PR discussion and original #6077. They are not substituted for this head's results. The intermittent historical Mac WFM receiver withdrawal during a filter/stereo transition remains unexplained; passing reruns did not establish a cause. No new live-RF, audible, sanitizer or production-capacity qualification is claimed. This PR requests its own maintainer/code-owner review. #6002 remains draft. No release or Store publication is part of this validation. --- 73, Ozy **K6OZY** · Codex --------- Co-authored-by: jensenpat <patjensen@gmail.com> Co-authored-by: Jeremy [KK7GWY] <kk7gwy@aethersdr.com> Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Review moved to #6083
During separation of Digital FM into RFC #6079, branch ancestry was changed before PR bases were retargeted. GitHub automatically recognized this head inside the Digital branch and marked this PR merged there, then deleted the branch. This was not a merge into main. I restored the branch and created #6083 against the correct analog base. That replacement is Ready for review; original review discussion and historical evidence remain here.
Current analog order: #5924 → #5973 → #5974 → #6082 → #6083. Draft Digital #6002 follows #6083 and is no longer an analog dependency. The previous full integration remains preserved at
codex/rtl-digital-evaluation-preserved-20261001.Prior PR description, retained as historical context
Summary
Publish the tested RTL multi-receiver and delivery changes that were previously local: opt-in 2/4/8 receive banks, independent manual/Auto SQL, selected-receiver APRS input, stable TCI mapping, native DAX receive feeds, truthful relative meters with a per-device switch, and preservation of spectrum averaging during monitor-volume edits. The WFM applet follows the selected receiver; optional digital program selection retains user intent during telemetry updates.
Stacked on #6003 and part of RFC #5468. This combines the previously tested
7601593fdelivery with upstream68cdf661, preserving upstream ANAN audio controls, the single spectrum/waterfall path, receive-contract tests, Qt 6.12 pin and generated engine manifests. No running user installation is replaced by this PR.Release builds
ENABLE_RTL=ON,REQUIRE_RTL=ON,ENABLE_HD_FM=OFF.Receiver admission and dependencies
Normal production admission still defaults to one receiver. The tested desktop evaluation enables 2/4/8 through
AETHER_AUTOMATION=1plusAETHER_RTL_EVALUATION_RECEIVERS, on Linux x86_64, Windows x64 and macOS arm64. Eight-receiver normal-launch admission needs an explicit qualified-profile/default decision; this PR does not silently promote that default or claim ARM qualification.The current branch is based on #6003 → draft #6002 → #5974 → #5973 → #5924. Keeping #6002 draft also holds this downstream stack from landing in its current shape. Review can proceed in order; merging remains a separate maintainer action. AM/SSB/CW work and the later AetherModem/i-gate sprint are outside this submission.
Validation
7601593f: native Mac and Windows builds, 33 selected tests per platform, recorded decoder programs, disconnected GUI/daemon checks and launcher checks are retained as historical delivery evidence. The Windows runtime ZIP is about 174 MB with matching sources separate; its command launcher uses process-only PowerShell execution-policy bypass.a53423ac); its build was still in progress at the readiness checkpoint. Submitted for review at the operator’s explicit request after successful multi-receiver hardware testing and days of stable use. The intermittent offline WFM withdrawal remains unresolved and is disclosed for review; readiness does not claim that validation failure is fixed.New/modified TCI and DAX tests exercise Aether's own server/routing, not a simulated radio peer. Current-head Windows artifacts, sanitizer execution, Linux ARM performance and fresh live RF soak are not claimed. Maintainer approval is still needed for the shared-control/UX choices disclosed in the RFC and parent PRs.
Constitution principles
II: only accepted receiver state publishes; V/XIV: scoped persistent settings; VIII/XI: separate historical hardware evidence from current executed tests. Signed commits; no TX feature is added.
73, Ozy K6OZY · Codex