A small GUI proxy that sits between a single rigctld instance and multiple
client programs that want to talk to it at once (e.g. running two or more
FT8/digital-mode apps against the same rig simultaneously).
rigctld (Hamlib) only expects one client connection at a time. Programs like
WSJT-X, JTDX, or fldigi each open their own connection and poll frequency,
mode, and PTT state continuously — run more than one and they start fighting
over the socket. rigproxygui listens on a local port, forwards commands to the
real rigctld, and serves a shared, cached view of frequency/mode/PTT to any
number of connected clients.
- On start, rigproxygui opens a TCP server on a configurable "Listen IP/Port"
and connects out to the real
rigctldat a configurable "Physical IP/Port". - A background loop polls
rigctldfor frequency (f), mode (m), and PTT (t) roughly once per second and caches the results. - Client requests for
f,m, andtare answered instantly from the cache, so any number of clients can poll at once without contending for the rig. - Any other command (e.g.
F,M,T, VFO switches) is forwarded straight through to the realrigctld, and the response is relayed back to the requesting client. - While a client is actively transmitting (
T 1), the cache-refresh polling pauses so it doesn't collide with time-sensitive commands. - Idle clients (no request for 120 seconds) are automatically disconnected to free up resources.
- Python 3
- customtkinter (see
requirements.txt) - A running
rigctldinstance (from Hamlib)
Install dependencies:
pip install -r requirements.txt- Start
rigctldas you normally would, e.g.:rigctld -m <model_id> -r /dev/ttyUSB0 -t 4535
- Run the proxy:
python rigproxygui.py
- In the GUI, configure:
- Listen IP / Port — where the proxy accepts client connections (this is what you point your FT8/digital-mode programs at instead of the real rig).
- Physical Rigctld IP / Port — the address of the real
rigctldinstance from step 1. - Auto-connect on startup — if enabled, the proxy starts automatically when the app launches.
- Click Start Proxy.
- In each client program (WSJT-X, JTDX, etc.), configure the rig control to
use "Hamlib NET rigctl" (or equivalent) pointed at the proxy's Listen
IP/Port instead of the real
rigctldport.
The status panel shows whether the proxy is connected to the physical
rigctld backend, and lists currently connected clients.
Settings are saved to rigproxy_config.json in the working directory and
reloaded automatically on the next launch.