From c2db4c5f7e9de1bc629b7699593722217fc0d2dc Mon Sep 17 00:00:00 2001 From: rouggy Date: Sat, 29 Aug 2026 16:04:06 +0200 Subject: [PATCH] chore(icom): stop blaming a hijacker for every silent CI-V stream The 30 s watchdog message asserted another program had taken the session; a real IC-7760 went silent once with nothing else on the network, and the message sent its operator hunting software that was not installed. State both causes. --- internal/cat/icomserial.go | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/internal/cat/icomserial.go b/internal/cat/icomserial.go index 77699b1..5b4fc3a 100644 --- a/internal/cat/icomserial.go +++ b/internal/cat/icomserial.go @@ -347,7 +347,12 @@ func (b *IcomSerial) ReadState() (RigState, error) { case readerGone: debugLog.Printf("icom net: the CI-V reader has exited — the connection is dead however alive the control link looks → reconnecting") case at.Alive(): - debugLog.Printf("icom net: control link answers but no CI-V reply for %s → reconnecting. Another program (WSJT-X/OmniRig, the Remote Utility) has most likely taken the CI-V session.", silentFor.Round(time.Second)) + // No verdict on WHY: this fires for a session taken by another + // program (WSJT-X, the Remote Utility) AND for a rig that simply + // stopped answering — a real IC-7760 did exactly that once with + // nothing else on the network. Blaming a hijacker sent that + // operator hunting software that was not installed. + debugLog.Printf("icom net: control link answers but no CI-V reply for %s → reconnecting. Either another program took the CI-V session (WSJT-X/OmniRig/Remote Utility), or the rig stopped answering on its own.", silentFor.Round(time.Second)) default: debugLog.Printf("icom net: control link went quiet (no rig packets for >6 s) → reconnecting. If this recurs every ~2-3 min, the rig is invalidating the session (token renewal rejected).") }