Skip to content

CWX: Saved Messages stuttering and timing spacing incorrect on macOS (CW timing issues) #2980

Description

@JS69135

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

  1. Connect AetherSDR to a FlexRadio transceiver (e.g., FLEX-8600).
  2. Configure or select a pre-saved message macro within the CWX panel/suite.
  3. Initiate transmission of the saved macro message.
  4. 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.

Metadata

Metadata

Assignees

Labels

CWCW keying, decode, and operationaudioAudio engine and streamingawaiting-responseWaiting for reporter to provide additional informationmacOSmacOS-specific issuemaintainer-reviewRequires maintainer review before any action is taken

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