Bug
WSJT-X takes 9-55 seconds to complete the initial CAT handshake when connecting to AetherSDR's rigctld server. Commands (band change, PTT) queue up during this time and execute all at once when the connection stabilizes.
Root Cause
WSJT-X's NET rigctl backend sends \dump_state on connect and parses the response line-by-line expecting a specific field format. Our cmdDumpState() response in RigctlProtocol.cpp may have incorrect field counts, missing terminators, or format mismatches that cause WSJT-X to wait for more data until it times out.
Evidence from WSJT-X logs
read_string_generic(): read failed, direct=1 - Success
netrigctl_close: close error
This "read failed" happens after 9-55 seconds, indicating a read timeout waiting for expected data.
What Works
- After the initial handshake timeout, commands work correctly
echo "f" | nc localhost 4532 returns frequency instantly
- TCP_NODELAY is enabled, socket writes are immediate
Fix Needed
Compare our dump_state output against actual rigctld --model=2 output field-by-field. The NET rigctl protocol expects exact field counts per section. Reference: Hamlib source rigs/dummy/netrigctl.c function netrigctl_open().
Files
src/core/RigctlProtocol.cpp — cmdDumpState() (line ~303)
🤖 Generated with Claude Code
Bug
WSJT-X takes 9-55 seconds to complete the initial CAT handshake when connecting to AetherSDR's rigctld server. Commands (band change, PTT) queue up during this time and execute all at once when the connection stabilizes.
Root Cause
WSJT-X's NET rigctl backend sends
\dump_stateon connect and parses the response line-by-line expecting a specific field format. OurcmdDumpState()response inRigctlProtocol.cppmay have incorrect field counts, missing terminators, or format mismatches that cause WSJT-X to wait for more data until it times out.Evidence from WSJT-X logs
This "read failed" happens after 9-55 seconds, indicating a read timeout waiting for expected data.
What Works
echo "f" | nc localhost 4532returns frequency instantlyFix Needed
Compare our
dump_stateoutput against actualrigctld --model=2output field-by-field. The NET rigctl protocol expects exact field counts per section. Reference: Hamlib sourcerigs/dummy/netrigctl.cfunctionnetrigctl_open().Files
src/core/RigctlProtocol.cpp—cmdDumpState()(line ~303)🤖 Generated with Claude Code