From 7f9019c7bcb1ff4753c3d0f715d3f2fb1dfced0f Mon Sep 17 00:00:00 2001 From: rouggy Date: Sun, 30 Aug 2026 11:12:08 +0200 Subject: [PATCH] fix(omnirig): a Yaesu in split tunes both VFOs to the spot MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The generic Freq write lands on the TX VFO when split is engaged: an FT-2000 moved B and left A — the receiver — behind, so a spot click QSYed the transmitter and nothing audible changed; without split the same write moved A. With split on (and the operator on MAIN), FreqA and FreqB are both written, so the radio arrives on the spot whole, split left as the operator had it. --- changelog.json | 6 ++++-- internal/cat/omnirig.go | 7 +++++++ 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/changelog.json b/changelog.json index 9b48d40..4ead235 100644 --- a/changelog.json +++ b/changelog.json @@ -35,7 +35,8 @@ "Icom console: an ATU chip beside SPLIT engages or DISENGAGES the internal tuner — TUNE started a cycle but could never take the tuner back out of line.", "Icom console: the TX meters get needle inertia — power holds its peak instead of flickering to 0 W between syllables, SWR shows the real peak then returns to the live value — and the wattage readout no longer wraps at three digits.", "Icom console: the meters use the same LED bars as the Flex and Elecraft consoles, and the mode badge says USB or LSB instead of an ambiguous SSB.", - "Cluster: spots on the standard FT8/FT4 frequencies of every band now read FT8/FT4 when the comment names no mode — 30 m, 60 m, 80 m FT4, 17 m FT4 and 12 m were falling into the generic DATA bucket." + "Cluster: spots on the standard FT8/FT4 frequencies of every band now read FT8/FT4 when the comment names no mode — 30 m, 60 m, 80 m FT4, 17 m FT4 and 12 m were falling into the generic DATA bucket.", + "OmniRig (Yaesu): with split engaged, tuning to a spot moves BOTH VFOs — on an FT-2000 the write landed on the TX VFO only, so the transmitter QSYed and the receiver stayed behind." ], "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).", @@ -70,7 +71,8 @@ "Console Icom : une puce ATU à côté de SPLIT engage ou DÉSENGAGE le tuner interne — TUNE lançait un cycle mais ne pouvait jamais remettre le tuner hors ligne.", "Console Icom : les mètres TX gagnent une inertie d’aiguille — la puissance tient sa crête au lieu de retomber à 0 W entre les syllabes, le ROS montre la vraie crête puis revient à la valeur vive — et l’affichage en watts ne passe plus à la ligne à trois chiffres.", "Console Icom : les mètres utilisent les mêmes barres LED que les consoles Flex et Elecraft, et le badge de mode dit USB ou LSB au lieu d’un SSB ambigu.", - "Cluster : les spots sur les fréquences standard FT8/FT4 de chaque bande lisent désormais FT8/FT4 quand le commentaire ne nomme pas de mode — 30 m, 60 m, FT4 80 m, FT4 17 m et 12 m tombaient dans le bloc DATA générique." + "Cluster : les spots sur les fréquences standard FT8/FT4 de chaque bande lisent désormais FT8/FT4 quand le commentaire ne nomme pas de mode — 30 m, 60 m, FT4 80 m, FT4 17 m et 12 m tombaient dans le bloc DATA générique.", + "OmniRig (Yaesu) : avec le split actif, se rendre sur un spot déplace LES DEUX VFO — sur un FT-2000 l’écriture n’atteignait que le VFO TX, donc l’émetteur QSYait et le récepteur restait derrière." ] }, { diff --git a/internal/cat/omnirig.go b/internal/cat/omnirig.go index 8ce3cb3..a31e5e8 100644 --- a/internal/cat/omnirig.go +++ b/internal/cat/omnirig.go @@ -553,6 +553,13 @@ func (o *OmniRig) SetFrequency(hz int64) error { props := []string{prop, "Freq"} if onSubVFO { props = []string{prop} + } else if isYaesu && split&pmSplitOn != 0 && split&pmSplitOff == 0 { + // Yaesu with SPLIT engaged: the generic Freq write lands on the TX + // VFO — an FT-2000 moved B and left A (the receiver) behind, so a + // spot click QSYed the transmitter and nothing audible changed. + // Both VFOs are written: the radio arrives on the spot RX and TX + // together, split left as the operator had it. + props = []string{"FreqA", "FreqB", "Freq"} } for _, p := range props { if _, e := oleutil.PutProperty(o.rig, p, hz32); e != nil {