fix(tci): use device:AetherSDR + protocol:ExpertSDR3 to restore TCI TX audio level (#2806)#2807
Merged
ten9876 merged 1 commit intoMay 17, 2026
Conversation
…X audio level (#2806) WSJT-X's TCITransceiver applies a -6 dB amplitude scaling to TCI TX audio when BOTH of these match the server's init burst: device == "SunSDR2DX" or "SunSDR2PRO" protocol != starts-with "ExpertSDR3" (reference: wsjtx/Transceiver/TCITransceiver.cpp:823 + .hpp:188-200, K1=0.999/0x7FFF vs K2=0.499/0x7FFF.) PR #2597 hit both conditions exactly — device=SunSDR2DX + protocol=ExpertSDR2,1.9 — so WSJT-X halved every TX sample at the source and TCI users measured ~70 W of 100 W expected. Fix: - device: literal "AetherSDR" — avoids the SunSDR-specific gain trap AND avoids the leading-space bug in the older "<name> <model>" form when the radio nickname is empty. - protocol: "ExpertSDR3,1.5" — sets WSJT-X's ESDR3 flag, gating off the gain reduction and selecting command formats that AetherSDR already handles correctly (proven in v26.5.1). Verified: WSJT-X TX output restored to 100 W of 100 W expected. Everything else from #2597 (strict init-burst order, vfo_limits, if_limits, channels_count plural-form, split_enable, post-READY audio stream configuration) is preserved — that's the bulk of what the RF2K-S TCI parser actually needs to engage. The amp's device/protocol whitelist regresses, tracked separately in #2806. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
4d3934e to
31980df
Compare
Collaborator
Author
|
Force-pushed a stronger fix on top. After cloning wsjtx upstream and reading TCITransceiver.cpp:823 + TCITransceiver.hpp:188-200, the exact mechanism is clear: WSJT-X halves every TX sample (
PR #2597 hit both conditions. The previous form of this PR fixed it by reverting both, but used the old The amended commit uses:
Verified locally: 100 W of 100 W on the meter (was 70 W before identity revert, 88 W with the first revert form). 73, Jeremy KK7GWY & Claude (AI dev partner) |
Merged
ten9876
added a commit
that referenced
this pull request
May 17, 2026
Hotfix recommended for TCI digital-mode operators, Windows users with MQTT or floating-panel windows, and Linux Ubuntu 22.04 builders. - TCI TX audio level regression vs v26.5.1 (#2806/#2807) — restores WSJT-X / JTDX output to full level by reverting only the device + protocol identity strings from #2597 to a form that bypasses WSJT-X's TCITransceiver SunSDR2DX/non-ExpertSDR3 gain trap. - Windows process lingering in Task Manager after close (#2802, chibondking) — three independent root causes addressed: Channel Strip + applet-panel float window WA_QuitOnClose, MqttClient destructor loop_stop. - AppImage CI build failure on gcc 11 strict mode (#2799) — qualifies bitstream.h:192 member access with `this->` for two-phase name lookup. Restores the v26.5.2 x86_64 AppImage artifact. - SSA (Sweden) band plan (#2805, NF0T) — Swedish national overlay with PTSFS 2025:1 constraints, Swedish labels, 89 spots. Bumps version 26.5.2 → 26.5.2.1 in CMakeLists.txt, README.md, CLAUDE.md; regenerates WhatsNewData.cpp from CHANGELOG.md. CalVer scheme expanded to YY.M.patch[.hotfix] to document the 4th-component hotfix convention used historically. Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com> Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
PR #2597 changed TCI server identity from
device: protocol: ExpertSDR3,1.5
to
device: SunSDR2DX protocol: ExpertSDR2,1.9
so RF2K-S amplifier firmware would whitelist AetherSDR. WSJT-X reads the
same fields to decide TX audio scaling: the SunSDR2DX/ExpertSDR2,1.9
pair drops TCI TX power by roughly 1 dB (measured 70 W vs 100 W
expected; reverting recovers to 88 W out of 100 W, the remaining
0.5 dB is within ALC/calibration variance).
Reverts only the device + protocol strings. Everything else from #2597
that the RF2K-S parser actually needs — strict init-burst order,
vfo_limits, if_limits, channels_count (plural-form), split_enable —
remains intact, so the amp interop work is mostly preserved.
A clean fix that keeps both clients happy (e.g. per-client adaptive
identity or a user-facing TCI Identity setting) is tracked in #2806.
Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com