Skip to content

Implement full rigctld protocol #2379

Description

@K5PTB

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?

What

AetherSDR’s built-in rigctld daemon currently implements only a subset of the standard Hamlib rigctld protocol. Full (or near-full) support would expose the radio via the normal TCP rigctld interface (default port 4532) so any Hamlib-compatible program can control it exactly like a real rig.

Why

  • Allows MacLoggerDX, N1MM Logger, fldigi, WSJT-X, CQRLOG, etc. to connect directly and get live frequency/mode/PTT/VFO state.
  • Bidirectional sync: changing frequency or mode in AetherSDR instantly updates the logging/contest program (and vice-versa).
  • Current partial implementation already exists (see AetherSDR.log) but returns “RPRT -4 Feature not implemented” for almost everything MacLoggerDX asks for.

How Other Clients Do It

  • SmartSDR (Windows) and most Flex clients expose a CAT interface; many users run a separate rigctld wrapper.
  • GQRX, SDR++, hamlib-based loggers, and contest software all expect a full rigctld server (model 2 “NET rigctl”).
  • MacLoggerDX and N1MM connect to rigctld on localhost:4532 and poll the standard command set (see attached rigctl-help.txt).

Suggested Behavior

  • Keep the existing rigctld listener (already present in the code).
  • Expand the command handler to support the full set shown in rigctl ? (attached).
  • Map rigctld commands to existing AetherSDR objects:
  • get_freq / set_freq → active slice / VfoWidget
  • get_mode / set_mode → RxApplet slice mode
  • get_vfo / set_vfo → current VFO selection
  • get_ptt / set_ptt → PTT state
  • get_vfo_info, get_rig_info, etc. → data already available in RadioModel

Optional: add a toggle in AppletPanel → Settings → External Control to enable/disable the rigctld server and change the port.

Protocol Hints

  • AetherSDR already parses extended responses (commands prefixed with +).
  • Log shows many commands returning RPRT -4 (e.g. get_rig_info, get_vfo_info VFOA, set_mode ?, get_level ?).
  • Full command list and expected responses are in the attached rigctld.txt, rigctl.txt, and rigctl-help.txt.
  • Mapping should use the existing FlexLib → internal model layer (no new protocol work needed for the radio side).

Acceptance Criteria

  • All core commands listed in rigctl ? (freq, mode, vfo, split, rit, ptt, levels, etc.) return correct values or RPRT 0.
  • MacLoggerDX (and equivalent programs) can connect and display live frequency/mode without errors.
  • Frequency/mode changes in AetherSDR are immediately visible to any connected rigctld client.
  • No regression to existing FlexRadio protocol or slice/audio flow.
  • Updated documentation in README.md showing how to connect external software.

Attachments:

rigctl-help.txt
AetherSDR.log
rigctl.txt
rigctld.txt

rigctld.txt (full man page)
rigctl.txt (full man page)
rigctl-help.txt (command list from ?)
AetherSDR.log (current failing commands from MacLoggerDX)

Ready to implement once approved.

Metadata

Metadata

Assignees

No one assigned

    Labels

    awaiting-responseWaiting for reporter to provide additional informationenhancementImprovement to existing featuremaintainer-reviewRequires maintainer review before any action is takenprotocolSmartSDR 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