Skip to content

fix(transmit): exclude FreeDV modes from Quindar tone allowlist#3320

Merged
jensenpat merged 1 commit into
aethersdr:mainfrom
NF0T:pr/3318-quindar-exclude-freedv
May 31, 2026
Merged

fix(transmit): exclude FreeDV modes from Quindar tone allowlist#3320
jensenpat merged 1 commit into
aethersdr:mainfrom
NF0T:pr/3318-quindar-exclude-freedv

Conversation

@NF0T
Copy link
Copy Markdown
Collaborator

@NF0T NF0T commented May 31, 2026

Summary

Closes #3318.

isPhoneModeForQuindar() previously allowed Quindar intro/outro tones to fire in
FreeDV modes (FDV, FDVU, FDVL). FreeDV now uses RADAE — the same neural speech
autoencoder as RADE mode. The Quindar tone is injected into the TX audio stream
before it reaches the radio, where the radio's internal RADAE encoder processes it.
A 2525/2475 Hz sine fed into a neural encoder trained on speech produces
codec-artifact noise on air, not a recognisable signalling tone.

RADE mode was already correctly excluded (it uses DIGU/DIGL, never in the allowlist).
FreeDV was explicitly included, likely when FreeDV still used Codec2. This removes
the three FreeDV mode strings and updates the comment to explain the RADAE connection.

Impact

No user-visible Quindar behaviour was working correctly in FreeDV modes before this
change — the tone was being mangled by RADAE before transmission. This removes a
broken feature, not a working one.

SSB/AM/FM Quindar behaviour is unchanged.

Test plan

  • SSB TX with Quindar enabled: intro/outro tones fire normally (no regression)
  • FreeDV TX with Quindar enabled: no Quindar tones fire (expected new behaviour)

Refs

🤖 Generated with Claude Code

FreeDV (FDV/FDVU/FDVL) now uses RADAE — the same neural speech
autoencoder as RADE mode. Injecting a Quindar sine tone into a
RADAE-encoded TX stream produces codec-artifact noise on air, not
a recognisable signalling tone. Remove FDV/FDVU/FDVL from the
isPhoneModeForQuindar() allowlist for the same reason DIGU/DIGL/
RTTY/CW/FT8 are excluded. Update the comment to explain the
RADAE connection.

Closes aethersdr#3318. Surfaced during aethersdr#3224 / PR aethersdr#3317 review.

Principle VIII.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@NF0T NF0T requested a review from a team as a code owner May 31, 2026 13:23
@NF0T NF0T self-assigned this May 31, 2026
Copy link
Copy Markdown
Collaborator

@jensenpat jensenpat left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No findings.

I traced the Quindar gate from TransmitModel::requestPttOn()/requestPttOff() through the TX slice mode getter and the AudioEngine insertion point. Removing FDV/FDVU/FDVL from isPhoneModeForQuindar() means FreeDV no longer starts intro/outro phases, so the Quindar processor remains idle and the PTT path falls straight through to MOX. USB/LSB/AM/FM/NFM behavior is unchanged.

I also checked the RADE side: client RADE still activates on DIGU/DIGL and takes the early RADE TX branch, so it remains outside the Quindar voice-chain path. The current upstream main already contains #3317, and this PR applies as a single allowlist/comment change on top of it.

CI, macOS/Windows checks, and CodeQL are green on b3a1d2f. The only residual gap is that the private mode predicate still lacks direct unit coverage for the FDV false cases, but I do not think that blocks this one-line fix.

@jensenpat jensenpat merged commit 0f4a687 into aethersdr:main May 31, 2026
5 checks passed
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.

fix(transmit): exclude FreeDV modes from Quindar tone allowlist

2 participants