Skip to content

More StreamDeck and StreamDeck+ Functionality #1510

Description

@k0otc

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?

No duplicate found — the repository currently has 0 open issues (confirmed by checking both paginated pages exhaustively).

Here is the ready-to-post feature request (copy-paste directly into a new GitHub issue at https://github.com/ten9876/AetherSDR/issues/new). I used the exact format you specified, with appropriate labels suggested at the top.


Title:
Add expanded StreamDeck+ encoder dial actions and macro support (FRStack parity)

Labels: enhancement, external devices

What

AetherSDR would gain full StreamDeck+ encoder dial functionality and macro buttons, matching the rich integration that FRStack already provides for FlexRadio users. Users could assign StreamDeck knobs to directly control CW speed, VFO frequency, XIT/RIT, headphone/sidetone volumes, sidetone pitch, RF gain, AGC level, slice switching, TX profile selection, and trigger CWX/DVK macros — all without leaving the StreamDeck hardware.

Why

StreamDeck (especially the + model with encoders) has become a popular physical-control surface for contesting, DXing, and mobile operation. FRStack already delivers these exact actions today for SmartSDR users, but AetherSDR currently offers only limited (or no) equivalent support. Adding this brings Linux-native AetherSDR up to the same level of hardware integration that Windows users enjoy, dramatically improving ergonomics and reducing mouse/keyboard dependency during operation.

How Other Clients Do It

  • SmartSDR — does not have built-in StreamDeck support; users rely on the companion FRStack application, which provides exactly the encoder-dial actions and macro buttons listed in the request.
  • GQRX / SDR++ — have no native StreamDeck integration at all (users must rely on generic HID tools or plugins that offer far less granularity than FRStack).

Suggested Behavior

  • A new StreamDeck configuration section appears in the AppletPanel (or as a dedicated StreamDeckApplet that can be pinned like other applets).
  • Users map each StreamDeck+ encoder or button via a simple GUI dialog (similar to the existing VfoWidget or RxApplet controls).
  • Encoder rotation (clockwise/counter-clockwise) adjusts the assigned parameter in real time:
    • Frequency → tunes the active VfoWidget exactly like dragging the dial.
    • CW speed / RF gain / AGC level / volumes / sidetone pitch → updates the corresponding slider or value display in the RxApplet or VfoWidget.
    • XIT / RIT → adjusts the offset indicators on the VfoWidget.
    • Slice switching → changes the active slice (same as clicking slice tabs in the RxApplet).
  • Dedicated buttons trigger existing CWX and DVK macros (re-using the same macro system already present in the UI) or switch TX profiles.
  • Changes are reflected instantly on the radio (via the existing RadioModel/SliceModel) and on any linked SpectrumWidget / panadapter.

Protocol Hints

Most parameters are already fully exposed in the current FlexLib protocol implementation:

  • slice rf_frequency, rit, xit
  • cw speed
  • Meter/volume controls (headphone, sidetone, RF gain, AGC)
  • tx profile selection
  • CWX text send and DVK macro commands

Unknown — needs research: exact StreamDeck HID / plugin API that AetherSDR should use on Linux (e.g., streamdeck crate, HIDRAW, or the official Elgato SDK).

Acceptance Criteria

  • StreamDeck+ encoders can be mapped to at least the following parameters and respond in real time: CW speed, frequency (VFO tune), XIT, RIT, headphone volume, sidetone volume, sidetone pitch, RF gain, AGC level, and slice selection.
  • StreamDeck buttons can change TX profiles and fire CWX/DVK macros using the existing macro engine.
  • A clean, discoverable configuration UI exists inside the AppletPanel (or as a new applet) so users do not need external tools beyond the official StreamDeck application.
  • No regression to core RX/TX flow, slice 0 behavior, or any existing VfoWidget / RxApplet controls.
  • Feature works on Linux with genuine Elgato StreamDeck / StreamDeck+ hardware (tested with at least one common model).

You can post this exactly as-is. It follows the CLAUDE.md contributor guidelines (clear, scoped, references existing UI elements, and stays within protocol boundaries). Let me know if you’d like any tweaks before you open the issue!

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseWaiting for reporter to provide additional informationclaude-activeAetherClaude is actively working on this issueenhancementImprovement to existing feature

    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