Multiple TCI Server Ports (one for each slice)
Nobody has claimed this yet.
Assessment
- Difficulty
- 5/5
- Estimated time
- Over a week
- Newbie friendliness
- 42/100
- Issue type
- Feature
- Clarity
- Mostly clear
- Activity status
- Quiet
- Tech stack
- cpp
- Domain
- desktop, networking
Research direction
Start by locating the existing TCI server and reviewing how RxApplet, AppletPanel, VfoWidget, and AppSettings represent slices and settings. Confirm how the current single-port behavior is preserved before defining per-slice listeners and command routing. Done means unique persisted ports, clear UI status, simultaneous independent WSJT-X connections, and no regression for single-slice use.
Written by the indexing model from the issue text.
Description
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 duplicates found (the repository currently has 0 open issues).
Here is the complete, ready-to-post FEATURE REQUEST issue (copy-paste directly into a new GitHub issue at https://github.com/ten9876/AetherSDR/issues/new):
Title:
Support separate unique TCI server ports for each Slice
Labels (add these):
enhancement, protocol, external devices
What
AetherSDR’s built-in TCI server should expose a unique, configurable TCP port for each Slice. Users would then be able to run a separate WSJT-X (or other TCI/CAT client) instance for every Slice, each connected to its own dedicated TCI port.
Why
Right now the TCI server runs on a single shared port. This makes it impossible to give each Slice independent CAT control, so multiple WSJT-X instances cannot be used at the same time (they all fight over the same port and commands get mixed up). Many operators want to run digital modes on several slices/bands simultaneously; the current design blocks that workflow.
How Other Clients Do It
- SmartSDR (FlexRadio’s official Windows client) supports multiple slices and provides per-slice CAT control (via its built-in server or virtual COM ports), allowing independent WSJT-X instances to control individual slices without conflict.
- GQRX and SDR++ expose configurable or per-receiver CAT/TCI interfaces that can be bound independently, enabling the same multi-instance digital-mode workflow users expect on Linux-native SDR clients.
Suggested Behavior
- Add a “TCI Port” numeric field inside the RxApplet (or a new compact TCI applet in the AppletPanel) for each Slice.
- The field defaults to something like
50001for Slice 0 and auto-increments for additional slices (user-editable). - A global “Enable TCI Server” toggle (already present or added in Settings) would start one listener per Slice on its assigned port.
- The VfoWidget (or slice header in the main window) displays the assigned TCI port for that slice so the user can quickly tell WSJT-X which port to use.
- When a TCI client connects to a slice-specific port, all CAT commands (frequency, mode, PTT, etc.) are routed exclusively to that Slice’s model.
- No UI changes are required for single-slice users; the existing single-port behavior remains available as a fallback.
Protocol Hints
Unknown — needs research (TCI server is implemented inside AetherSDR; it is not part of the core FlexLib protocol).
Acceptance Criteria
- Each Slice can be assigned its own unique TCI port (persisted via
AppSettings). - Multiple WSJT-X instances can connect simultaneously to different slice ports and control their respective slices independently (frequency, mode, PTT, etc.) with no cross-slice interference.
- Single-slice / single-port usage continues to work exactly as today (full backward compatibility).
- UI elements (
RxApplet,VfoWidget, AppletPanel) clearly show per-slice TCI ports and status. - No regression to core RX/TX flow or Slice 0 behavior; tested on a FLEX-8600 (or equivalent) with firmware v1.4.0.0+.
You can post this exactly as-is. It follows the exact template you asked for, references the UI elements you mentioned, and is ready for the maintainer (or any AI contributor following CLAUDE.md) to pick up.
- Dominant language
- C++
- Stars
- 221
- Forks
- 117
- Avg merge
- 2d 7h
- Merged PRs (30d)
- 299
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from aethersdr/AetherSDR
-
audio documentation good first issue maintainer-review
Difficulty 1/5 Under an hour Newbie friendliness 92/100
-
bug CW maintainer-review safety
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
docs(agents): family PRs must stay in the family tree (shared applet/pan/model edits stall review) Opendocumentation enhancement maintainer-review
Difficulty 1/5 1-3 hours Newbie friendliness 90/100
-
bug good first issue GUI maintainer-review priority: low
Difficulty 2/5 1-3 hours Newbie friendliness 84/100
-
bug
Difficulty 1/5 Under an hour Newbie friendliness 86/100
All issues in aethersdr/AetherSDR
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
-
Sensor initialization takes very long when `--initial-sim-time` is set to current UNIX timestamp Open
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
gazebosim/gz-sensors#662 · 1 comment ·
-
enhancement
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
-
comp-datalake
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
ClickHouse/ClickHouse#121222 ·
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
LadybirdBrowser/ladybird#12123 ·