From d62cd104782241f241b4e3056d2ff1ae520e6d9e Mon Sep 17 00:00:00 2001 From: rouggy Date: Sun, 30 Aug 2026 02:28:41 +0200 Subject: [PATCH] fix(icom): switch off a leftover waveform stream at first contact MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The 0x27 output flag lives in the RADIO and survives our sessions: a scope enabled by an older build (or another program) kept flooding every new session with 700-byte frames — and on the IC-7760 that flood is what kills the CI-V link. One 'waveform output off' as soon as the rig answers, once per session; the front-panel display is deliberately untouched. --- changelog.json | 6 ++++-- internal/cat/icomserial.go | 6 ++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/changelog.json b/changelog.json index 7cd9338..cd83cbd 100644 --- a/changelog.json +++ b/changelog.json @@ -31,7 +31,8 @@ "Icom network: a radio in standby keeps its session and the console’s ON button — the quiet-CI-V recovery was tearing the session down every 15 s, so a radio that was off when OpsLog started could never be powered on.", "Icom console: PTT and Split move up under the dial — one PTT button, and Split as OFF/+1k/+5k/+10k, DXpedition style. Engaging split also aligns the TX VFO’s mode with the main.", "Icom console: the PTT button carries your microphone on a network station — it used to only key the rig, which transmitted silence over the LAN.", - "Icom console: the spectrum scope is removed. Every model streams its waveform differently — and on the IC-7760 enabling it killed the whole CI-V link, audio included. The radio’s own scope does it better." + "Icom console: the spectrum scope is removed. Every model streams its waveform differently — and on the IC-7760 enabling it killed the whole CI-V link, audio included. The radio’s own scope does it better.", + "Icom: any leftover waveform stream is switched off at connect — the scope flag lives in the radio and survived sessions, and its flood is what was killing the IC-7760’s CI-V link." ], "fr": [ "Console Elecraft : le S-mètre est calibré sur un vrai K3 — S9 et les +dB correspondent désormais à l’affichage de la radio (il lisait environ deux points S trop bas).", @@ -62,7 +63,8 @@ "Réseau Icom : une radio en veille garde sa session et le bouton ON de la console — la récupération du CI-V muet détruisait la session toutes les 15 s, donc une radio éteinte au lancement d’OpsLog ne pouvait jamais être allumée.", "Console Icom : le PTT et le Split remontent sous le cadran — un bouton PTT, et le Split en OFF/+1k/+5k/+10k, façon DXpedition. Activer le split aligne aussi le mode du VFO TX sur le main.", "Console Icom : le bouton PTT emporte votre micro sur une station réseau — il ne faisait que keyer la radio, ce qui émettait du silence par le LAN.", - "Console Icom : le scope spectral est retiré. Chaque modèle streame sa forme d’onde différemment — et sur l’IC-7760 son activation tuait tout le lien CI-V, audio compris. Le scope de la radio fait ça mieux." + "Console Icom : le scope spectral est retiré. Chaque modèle streame sa forme d’onde différemment — et sur l’IC-7760 son activation tuait tout le lien CI-V, audio compris. Le scope de la radio fait ça mieux.", + "Icom : tout flux waveform résiduel est coupé à la connexion — le drapeau scope vit dans la radio et survivait aux sessions, et son flot est ce qui tuait le lien CI-V de l’IC-7760." ] }, { diff --git a/internal/cat/icomserial.go b/internal/cat/icomserial.go index e3ca8c5..42e150c 100644 --- a/internal/cat/icomserial.go +++ b/internal/cat/icomserial.go @@ -473,6 +473,12 @@ func (b *IcomSerial) ReadState() (RigState, error) { if !b.dspLoaded { b.readDSP() b.dspLoaded = true + // Silence any LEFTOVER waveform stream. The 0x27 output flag lives + // in the RADIO and survives our sessions: a scope enabled by an older + // build (or another program) kept flooding every new session — and on + // the IC-7760 that flood is what kills the CI-V link. The display on + // the rig's front panel is deliberately untouched. + _ = b.execScope("waveform output off (leftover)", civ.SubScopeOn, 0) } else { b.refreshFrontPanel() }