Title: [Bug]: CWX Saved Messages stuttering and timing spacing incorrect on macOS (CW timing issues)
What happened?
When using the CWX feature to send pre-saved macro/contest messages, the timing of the sent CW is highly inconsistent and erratic. The output sounds like it is "stuttering," and the spacing between individual letters and full words is structurally broken. This prevents clean or copyable CW transmission, making it completely unusable for serious contest operations or high-speed CWX automation.
What did you expect?
Pre-saved CWX messages should be transmitted smoothly with strict adherence to standard Morse code timing rules (e.g., standard standard element spacing where a dash is 3x a dot, letter spacing is 3 dots, and word spacing is 7 dots) without stuttering, timing jitter, or lagging intervals on transmission.
Steps to reproduce
- Connect AetherSDR to a FlexRadio transceiver (e.g., FLEX-8600).
- Configure or select a pre-saved message macro within the CWX panel/suite.
- Initiate transmission of the saved macro message.
- Listen to the sidetone or monitor the RF output—the transmission exhibits significant stuttering and uneven letter/word spacing.
Radio model & firmware
- Radio: FLEX-8600
- Firmware: 4.2.18.41174
OS & version
- OS: macOS
- AetherSDR Version: 26.5.2.1
- Qt Version: 6.11.0
Developer Notes
Suspected Component & Files
The problem likely points to how character queues or string tokens are timed and dispatched to the radio via the SmartSDR API TCP control stream, or a processing lag on macOS thread execution loops when driving serialized command bursts.
Based on typical project layout, look closely into:
- **
src/network/flex_client.cpp / src/network/flex_protocol.cpp**: Where the underlying Vita49 commands or custom ASCII TCP command sequences for CWX string execution (cwx send "...") are serialized and sent over the socket layer.
- **
src/ui/modules/cwx/ or src/core/cw/**: Check character buffering logic or local spacing timers/delays if the client breaks down strings locally rather than executing radio-side macro commands. If Qt-based timers (QTimer) are used for byte/character throttling on the GUI thread or a high-jitter worker thread, thread scheduling differences on macOS under Qt 6.11.0 might be corrupting interval precision.
Diagnostic Logging Categories
To properly trace the issue, please enable the following logging buckets in Help → Support:
QT_LOGGING_RULES="aethersdr.network.tcp=true" — To monitor if commands are bundled/delayed unevenly across the wire.
QT_LOGGING_RULES="aethersdr.core.cwx=true" (or respective CW engine macro categories) — To verify frame-by-frame macro sequence dispatch spacing.
Title: [Bug]: CWX Saved Messages stuttering and timing spacing incorrect on macOS (CW timing issues)
What happened?
When using the CWX feature to send pre-saved macro/contest messages, the timing of the sent CW is highly inconsistent and erratic. The output sounds like it is "stuttering," and the spacing between individual letters and full words is structurally broken. This prevents clean or copyable CW transmission, making it completely unusable for serious contest operations or high-speed CWX automation.
What did you expect?
Pre-saved CWX messages should be transmitted smoothly with strict adherence to standard Morse code timing rules (e.g., standard standard element spacing where a dash is 3x a dot, letter spacing is 3 dots, and word spacing is 7 dots) without stuttering, timing jitter, or lagging intervals on transmission.
Steps to reproduce
Radio model & firmware
OS & version
Developer Notes
Suspected Component & Files
The problem likely points to how character queues or string tokens are timed and dispatched to the radio via the SmartSDR API TCP control stream, or a processing lag on macOS thread execution loops when driving serialized command bursts.
Based on typical project layout, look closely into:
src/network/flex_client.cpp/src/network/flex_protocol.cpp**: Where the underlying Vita49 commands or custom ASCII TCP command sequences for CWX string execution (cwx send "...") are serialized and sent over the socket layer.src/ui/modules/cwx/orsrc/core/cw/**: Check character buffering logic or local spacing timers/delays if the client breaks down strings locally rather than executing radio-side macro commands. If Qt-based timers (QTimer) are used for byte/character throttling on the GUI thread or a high-jitter worker thread, thread scheduling differences on macOS under Qt 6.11.0 might be corrupting interval precision.Diagnostic Logging Categories
To properly trace the issue, please enable the following logging buckets in Help → Support:
QT_LOGGING_RULES="aethersdr.network.tcp=true"— To monitor if commands are bundled/delayed unevenly across the wire.QT_LOGGING_RULES="aethersdr.core.cwx=true"(or respective CW engine macro categories) — To verify frame-by-frame macro sequence dispatch spacing.