Request preparation
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!
Request preparation
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 devicesWhat
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
Suggested Behavior
StreamDeckAppletthat can be pinned like other applets).Protocol Hints
Most parameters are already fully exposed in the current FlexLib protocol implementation:
slice rf_frequency,rit,xitcw speedtx profileselectionUnknown — needs research: exact StreamDeck HID / plugin API that AetherSDR should use on Linux (e.g.,
streamdeckcrate, HIDRAW, or the official Elgato SDK).Acceptance Criteria
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!