Skip to content

Bump version to v0.9.5.1: TCI TX hotfix on Windows / Linux non-PipeWire#2285

Merged
ten9876 merged 1 commit intomainfrom
auto/Bump-version-to-v0951-TCI-TX-hotfix-on-Windows--Li
May 2, 2026
Merged

Bump version to v0.9.5.1: TCI TX hotfix on Windows / Linux non-PipeWire#2285
ten9876 merged 1 commit intomainfrom
auto/Bump-version-to-v0951-TCI-TX-hotfix-on-Windows--Li

Conversation

@ten9876
Copy link
Copy Markdown
Owner

@ten9876 ten9876 commented May 2, 2026

v0.9.5's DAX2 coexistence policy (#2271) regressed TCI digital TX
(WSJT-X / JTDX / MSHV) on Windows and Linux without PipeWire. The
radio was told dax=1 but evaluateDaxTxPolicy() denied dax_tx stream
creation for TciTxAudio on those platforms, so the modulator stayed
silent during TX.

The conceptual mistake was conflating SmartSDR DAX2's ownership of
Windows DAX audio devices with the radio's dax_tx stream slot. TCI
feeds its dax_tx packets from a WebSocket — it doesn't touch local
audio devices and doesn't conflict with SmartSDR DAX2 at all.

evaluateDaxTxPolicy() now always allows DaxTxRequestReason::TciTxAudio
regardless of platform / hosted-DAX availability. Test assertions in
radio_status_ownership_test.cpp flipped to match (the prior
"Windows external-DAX2 TCI policy does not create dax_tx" assertion
codified the regression) plus a new Linux-non-PipeWire case.

macOS and Linux + PipeWire were unaffected — they hit the
tciDaxTxSupported = true branch and were already allowed.

Fixes #2276.

Co-Authored-By: Claude Opus 4.7 (1M context) [email protected]

v0.9.5's DAX2 coexistence policy (#2271) regressed TCI digital TX
(WSJT-X / JTDX / MSHV) on Windows and Linux without PipeWire.  The
radio was told dax=1 but evaluateDaxTxPolicy() denied dax_tx stream
creation for TciTxAudio on those platforms, so the modulator stayed
silent during TX.

The conceptual mistake was conflating SmartSDR DAX2's ownership of
Windows DAX audio devices with the radio's dax_tx stream slot.  TCI
feeds its dax_tx packets from a WebSocket — it doesn't touch local
audio devices and doesn't conflict with SmartSDR DAX2 at all.

evaluateDaxTxPolicy() now always allows DaxTxRequestReason::TciTxAudio
regardless of platform / hosted-DAX availability.  Test assertions in
radio_status_ownership_test.cpp flipped to match (the prior
"Windows external-DAX2 TCI policy does not create dax_tx" assertion
codified the regression) plus a new Linux-non-PipeWire case.

macOS and Linux + PipeWire were unaffected — they hit the
`tciDaxTxSupported = true` branch and were already allowed.

Fixes #2276.

Co-Authored-By: Claude Opus 4.7 (1M context) <[email protected]>
@ten9876 ten9876 requested a review from jensenpat as a code owner May 2, 2026 14:47
@ten9876 ten9876 enabled auto-merge (squash) May 2, 2026 14:47
@ten9876 ten9876 requested a review from AetherClaude as a code owner May 2, 2026 14:47
@ten9876 ten9876 merged commit d2f382f into main May 2, 2026
5 checks passed
@ten9876 ten9876 deleted the auto/Bump-version-to-v0951-TCI-TX-hotfix-on-Windows--Li branch May 2, 2026 17:41
ten9876 added a commit that referenced this pull request May 2, 2026
The v0.9.5.1 entry was originally cut for just the TCI TX hotfix
(#2285), but six additional fixes had already landed in main between
the v0.9.5 tag and v0.9.5.1:

- #2275 NR2 wisdom generation off the audio thread
- #2278 SmartLink disconnect teardown
- #2279 Reset RX slice tabs on disconnect (#2254)
- #2280 macOS panadapter pop-out refresh + multi-pan dock layout
- #2282 SmartLink reconnect after WAN drop
- #2284 Qt log handler serialization fixes macOS tune-time crash

CHANGELOG.md gets a per-fix entry with root cause + behavior change.
WhatsNewData.cpp regenerated via scripts/gen_whatsnew.py so the
in-app What's New dialog reflects the full v0.9.5.1 contents.

Co-authored-by: Claude Opus 4.7 (1M context) <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Broken TCI transmit in V.0.9.5

1 participant