Skip to content

CWX Live mode force-sends new characters before previous character finishes #2473

Description

@ten9876

Problem

In CWX Live mode, new characters typed in the buffer are being force-sent before the previous character has finished keying out. The result is character collisions and garbled CW on-air — the operator hears each new keystroke cut off the tail of the previous one.

In the screenshot above, the operator typed cq at 52 WPM and the decoder shows EE instead — each Q got chopped because the second character in the pair started transmitting before the first one finished.

Repro steps

  1. Connect to FLEX-8600 (or any radio supporting CWX), mode = CW.
  2. Open the CWX applet.
  3. Set Speed to a moderate-to-high value (52 WPM in the screenshot, but reproduces at lower speeds too).
  4. Click Live to enter live-typing mode.
  5. Type two or more characters into the buffer quickly (cq, test, etc.).
  6. Listen on RX (or check the on-screen CW decoder).

Observed: Characters are clipped — only the first dit/dah of each character makes it on-air before the next character preempts it. Decoder reads EE for cq, HH for test, etc.

Expected: Live mode should respect the inter-character timing of the radio's CW state machine. Each character finishes its full keying envelope (including the inter-character gap) before the next character's first dit/dah starts.

Likely cause

The Live-mode dispatch is probably writing each typed character into the radio's CWX buffer immediately on keystroke, rather than coordinating with the radio's keying-completion echo. Standard CWX (non-Live) macro send works correctly because the buffer is queued in one shot and the radio paces its own playback.

Two candidate root causes:

  1. Per-keystroke immediate dispatch — Live mode sends each character via cwx send <char> (or the equivalent) on every keypress, with no debounce or queue ordering, so consecutive keystrokes overlap.
  2. Missing queue-completion gating — Live mode dispatches without waiting for the radio's per-character completion status, so AetherSDR's send rate isn't bounded by the radio's keying rate.

The fix is probably to either (a) feed the radio's CWX buffer in small batches with rate-limiting, or (b) listen for the per-character completion signal and only dispatch the next character after the radio confirms the previous one finished.

Environment

  • AetherSDR v0.9.8 (commit d50ac4ef)
  • Linux x86_64 (also reportedly affects Windows / macOS — TBC by reporters)
  • FLEX-8600 firmware 4.2.18.41174
  • CW mode, sidetone enabled, 758 Hz tone, Speed 52 WPM
  • PC Audio enabled (CWX is gated on PC Audio per the in-app hint)

References

Priority

Medium — affects core CW operation for any operator using Live mode. Workaround: type the full message in the buffer first then click Send (non-Live mode). But Live mode is the natural way to use CWX for QSO-style typing and shouldn't be broken.

73, Jeremy KK7GWY & Claude (AI dev partner)

Metadata

Metadata

Assignees

Labels

CWCW keying, decode, and operationaetherclaude-eligibleIssue approved for AetherClaude automated agentaudioAudio engine and streamingbugSomething isn't workingclaude-activeAetherClaude is actively working on this issuemaintainer-reviewRequires maintainer review before any action is takenpriority: mediumMedium priorityprotocolSmartSDR protocol

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