Skip to content

FlexControl: Add support for knob button (X4S) as a configurable action #1295

@rsaue

Description

@rsaue

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?

Feature Request

What would you like?

Add handling for the X4S serial command from the FlexControl device —
emitted when the main tuning knob is pressed (single click). This would
allow users to assign a radio action to the knob button press, just as
the three AUX buttons (X1S, X2S, X3S) already support configurable actions.

Background / protocol reference

The FlexControl sends plain ASCII commands terminated with ; over its
serial port. The knob-as-button identifier is documented in third-party
projects that implement the protocol (e.g. https://github.com/brianbruff/flctrl):

  • U; / U02; — knob rotated clockwise (with pulse count)
  • D; / D02; — knob rotated counter-clockwise
  • X1S; / X2S; / X3S; — AUX button 1/2/3 single press
  • X4S; — main knob single press (currently unhandled in AetherSDR)

The Python reference implementation handles X4S to cycle tuning step
size — demonstrating that the command is reliably sent by the hardware.

SmartSDR equivalent

SmartSDR for Windows allows the knob press to be assigned to radio
functions just like the AUX buttons (e.g. toggle RIT, swap VFOs,
change tuning step). AetherSDR currently handles rotation but not
the knob press.

Suggested implementation

In whatever source file handles the FlexControl serial command parsing
(likely something like FlexControlController.cpp or similar):

  1. Parse X4S alongside the existing X1S, X2S, X3S button handlers
  2. Expose it in the FlexControl settings UI as "Knob Button" with a
    configurable action dropdown (same options available to the AUX buttons)
  3. A sensible default action would be "Cycle Tune Step" (matching the
    Python reference and SmartSDR behaviour)

Why this matters

The knob button is physically the most natural and frequently pressed
control on the FlexControl — it sits right under the thumb during
tuning. Leaving it unmapped means operators lose a prime control
surface. Virtually all other FlexControl integrations (SmartSDR,
FTDXRC, DDUtil) support it.

73 LB2EG Richard

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseWaiting for reporter to provide additional informationenhancementImprovement to existing feature

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions