Skip to content

Local sidetone and USB paddle/key not working #1075

@dsmit258

Description

@dsmit258

Request preparation

  • I used an AI assistant to help structure this request
  • I checked for existing issues covering the same feature

What would you like?

I have performed a mandatory duplicate check by scanning the open issues for "CW", "sidetone", and "paddle". While there are issues regarding CW TX offset (#1027) and zero-point lines (#1019), there is no current open issue tracking the implementation of local sidetone or USB paddle/keyer support.

Since this involves adding new capabilities (sidetone generation and external hardware keying), I have formatted this as a Feature Request.

Implement local CW sidetone and USB paddle/keyer support
What
This feature adds functional local CW sidetone and support for USB-connected paddles or straight keys. This allows the user to hear their own keying in real-time through the PC audio output (local sidetone) and use physical telegraphy hardware connected via USB (HID or Serial/DTR/RTS) to key the FlexRadio.

Why
Currently, CW operation in AetherSDR lacks the essential feedback loop provided by a sidetone when operating remotely or using PC audio. Furthermore, without USB paddle support, users are restricted to keyboard-based keying or radio-connected keys, which limits the "shack-in-a-box" experience AetherSDR aims to provide for Linux users.

How Other Clients Do It
SmartSDR (Windows): Provides a "PC Sidetone" toggle in the CW settings. It handles local keying via the FlexControl or specialized USB interfaces (Winkeyer).

SDR++ / GQRX: While generally RX-focused, plugins for these often use low-latency audio buffers to generate a sine wave tone triggered by a GPIO or Serial event.

n1mm / Log4OM: Use Winkeyer protocol or serial port pin toggling (DTR/RTS) for high-precision keying.

Suggested Behavior
Sidetone UI: A "Local Sidetone" toggle and volume slider should be added to the RxApplet or a dedicated CW configuration section in the AppletPanel.

Keyer Config: A new settings tab in the main Preferences window to select a Serial/USB port for a paddle, with options for "Iambic A/B" or "Straight Key" and pin mapping (e.g., DTR=Dot, RTS=Dash).

UX Flow: When the user presses a physical paddle, AetherSDR should:

Trigger the CW KEY command to the FlexRadio.

Simultaneously play a local sine wave at the user-configured pitch and volume through the AudioEngine.

Protocol Hints
CW Keying: cw key 1 and cw key 0 via the TCP control protocol.

Sidetone Pitch: Can be synced with the radio's cw pitch setting via the CW object in FlexLib.

Keyer: Integration may require QSerialPort to monitor hardware pins for low-latency input.

Acceptance Criteria
[ ] Local sidetone is audible through PC speakers/headphones when keying.

[ ] Sidetone pitch matches the radio's CW pitch setting.

[ ] User can select a USB/Serial device for paddle input.

[ ] Latency between physical key press and local sidetone is minimal (low-latency audio buffer).

[ ] Toggle exists to disable local sidetone if using the radio's hardware sidetone.

Labels: enhancement, audio, protocol, external devices

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseWaiting for reporter to provide additional informationenhancementImprovement to existing featureno-claudeReserved for human implementation

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions