Description
When "Low-Latency DAX (FreeDV)" is enabled and an external application (e.g. WSJT-X) triggers PTT via its own FlexRadio CAT connection, DAX TX audio is silently dropped. The radio keys up (PA draws current) but no modulated signal is produced — ALC/Power meters stay at zero.
Disabling "Low-Latency DAX (FreeDV)" resolves the issue immediately.
Root Cause
In AudioEngine::feedDaxTxAudio() (AudioEngine.cpp:1022), the low-latency path gates on m_transmitting:
if (!m_transmitting) {
m_daxPreTxBuffer.clear();
m_txFloatAccumulator.clear();
return; // all audio discarded
}
m_transmitting is set via TransmitModel::setTransmitting(), which is called from the interlock status handler in RadioModel.cpp:1876:
if (!m_txOwnedByUs || (!m_txRequested && !m_transmitModel.isTuning())) {
m_transmitModel.setTransmitting(false); // forced off
}
When an external client triggers PTT, m_txOwnedByUs is false, so m_transmitting stays false even though the radio reports state=TRANSMITTING. The low-latency path then discards all incoming DAX TX samples.
The radio-native DAX route (DaxTxLowLatency=False, line 1040) does not have this issue — it only blocks audio when m_transmitting && !m_daxTxMode, which correctly allows DAX audio to flow regardless of TX ownership.
Steps to Reproduce
- Enable "Low-Latency DAX (FreeDV)" in Settings menu
- Connect WSJT-X (or any external client) directly to the FLEX via CAT for PTT
- Route WSJT-X TX audio through
aethersdr-tx PipeWire sink
- Start an FT8 TX cycle
- Radio keys up but no RF output / ALC stays at zero
Expected Behavior
DAX TX audio should reach the radio's TX chain regardless of which client triggered PTT, as long as the TX slice is in a digital mode (DIGU/DIGL/RTTY).
Suggested Fix
In the low-latency path, consider gating on the radio's actual interlock state (state=TRANSMITTING) rather than m_txOwnedByUs. Alternatively, treat DAX TX audio like the radio-native route does — allow it to flow when m_daxTxMode is true, independent of TX ownership.
Environment
- AetherSDR 0.8.2
- FLEX-8600, firmware v1.4.0.0
- WSJT-X Improved with
Rig=FlexRadio SmartSDR Slice A, PTT via CAT
- CachyOS (Arch Linux), PipeWire
Description
When "Low-Latency DAX (FreeDV)" is enabled and an external application (e.g. WSJT-X) triggers PTT via its own FlexRadio CAT connection, DAX TX audio is silently dropped. The radio keys up (PA draws current) but no modulated signal is produced — ALC/Power meters stay at zero.
Disabling "Low-Latency DAX (FreeDV)" resolves the issue immediately.
Root Cause
In
AudioEngine::feedDaxTxAudio()(AudioEngine.cpp:1022), the low-latency path gates onm_transmitting:m_transmittingis set viaTransmitModel::setTransmitting(), which is called from the interlock status handler inRadioModel.cpp:1876:When an external client triggers PTT,
m_txOwnedByUsisfalse, som_transmittingstaysfalseeven though the radio reportsstate=TRANSMITTING. The low-latency path then discards all incoming DAX TX samples.The radio-native DAX route (
DaxTxLowLatency=False, line 1040) does not have this issue — it only blocks audio whenm_transmitting && !m_daxTxMode, which correctly allows DAX audio to flow regardless of TX ownership.Steps to Reproduce
aethersdr-txPipeWire sinkExpected Behavior
DAX TX audio should reach the radio's TX chain regardless of which client triggered PTT, as long as the TX slice is in a digital mode (DIGU/DIGL/RTTY).
Suggested Fix
In the low-latency path, consider gating on the radio's actual interlock state (
state=TRANSMITTING) rather thanm_txOwnedByUs. Alternatively, treat DAX TX audio like the radio-native route does — allow it to flow whenm_daxTxModeis true, independent of TX ownership.Environment
Rig=FlexRadio SmartSDR Slice A, PTT via CAT