Skip to content

Soundcore Life Q20 (Bluetooth) PC mic capture exhibits recording crackle #2600

Description

@ten9876

Symptom

PR #2572 (TX mic stereo channel canonicalization) was tested across several capture devices, with one observation:

Soundcore Life Q20 works, with some recording crackle observed.

The crackle was observed during PR validation. It does not block the PR (which fixes a separate documented bug class), but it deserves an independent investigation so the cause and platform scope can be characterized.

Open questions

  1. Pre-existing or regression? Does the crackle reproduce on main before commit 0c058af0 (the [core] Fix TX mic stereo channel canonicalization #2572 merge) with the same Soundcore Life Q20 device? If yes, it's a long-standing Bluetooth capture issue unrelated to the channel canonicalization work. If no, the canonicalize/resample path interaction with this specific device needs investigation.

  2. Where in the audio path?

    • Audible to the far end on transmit? (TX path issue)
    • Audible only in local monitor / sidetone / scope? (local rendering issue)
    • Audible in DAX TX recording captured back via WSJT-X / fldigi? (DAX TX path)
    • Audible in RX speaker output regardless of TX? (RX path, unrelated to mic capture)
  3. Sample rate negotiation. Soundcore Life Q20 over Bluetooth typically exposes 8 kHz or 16 kHz (SCO/HFP) for capture and 44.1 kHz or 48 kHz (A2DP) for playback. AudioEngine::startTxStream() should negotiate one of the supported rates and route through m_txResampler if needed. Worth confirming:

    • Which sample rate is negotiated for capture on the affected setup?
    • Is the resampler being constructed and used, or is it being bypassed because the device matched 24 kHz nominally?
    • Does qCDebug(lcAudio) show the negotiated rate + channel count + format?
  4. Platform scope. Was the test on macOS (Pat's setup), or did Linux/Windows also exhibit it? Bluetooth audio stacks differ substantially across the three platforms.

Reproduction notes

  • Pair Soundcore Life Q20 over Bluetooth
  • Open Preferences → Audio → set as the PC mic input
  • Engage PTT (SSB / Phone mode)
  • Record TX output via DAX bridge into Audacity / another DAW
  • Listen for crackle / glitches in the recorded waveform

Suggested first diagnostic

Run with QT_LOGGING_RULES="aether.audio.debug=true" and capture 10 s of TX. The TxMicChannelNormalizer diagnostic log fires only on one-sided stereo, but lcAudio logs cover format negotiation and any resampler reconstruction events. If the crackle correlates with capture-rate switches (BT codec renegotiation under load) the log will show it.

Context

73, Jeremy KK7GWY & Claude (AI dev partner)

Metadata

Metadata

Assignees

No one assigned

    Labels

    audioAudio engine and streamingawaiting-responseWaiting for reporter to provide additional informationbugSomething isn't working

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions