From adadb632fafb2d8034053837e1677c27ca9d41b5 Mon Sep 17 00:00:00 2001 From: rouggy Date: Wed, 29 Jul 2026 13:27:04 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20FTDX10=20confirmed=20=E2=80=94=20no=20C?= =?UTF-8?q?AT=20keying,=20the=20serial=20DTR=20keyer=20is=20the=20way?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Tested on the radio: DAKY does not help, KY is refused whatever PC KEYING is set to, and the "Serial port (DTR=CW / RTS=PTT)" engine on the second COM port keys correctly. So my earlier "try DAKY first" was wrong, and the order is now the other way round: name what works, mention the model that refuses. The KY engine stays. It is documented for the FTDX101 / FT-991A / FT-710 family and costs nothing to keep — a rig that refuses it now says so in one clear sentence instead of transmitting nothing for no stated reason. --- changelog.json | 4 ++-- frontend/src/lib/i18n.tsx | 4 ++-- internal/cat/yaesu_cw.go | 30 ++++++++++++++++-------------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/changelog.json b/changelog.json index 071d9e5..54597ea 100644 --- a/changelog.json +++ b/changelog.json @@ -4,7 +4,7 @@ "date": "2026-07-28", "en": [ "Antenna Genius: port A no longer jumps onto port B antenna a few seconds after a change. Only one port can hold the transmit antenna, so the switch reports the same one on both — the display now follows each port own receive antenna.", - "CW through the Yaesu keyer: a fifth CW engine sends your macros with the radio own keyer (CAT \"KY\"), with no second cable. The rig has to allow it — set PC KEYING to DAKY in its CW menu; if it still refuses, OpsLog says so and points to the serial DTR keyer on the other COM port.", + "CW through the Yaesu keyer: a fifth CW engine sends your macros with the radio own keyer (CAT \"KY\"), for the FTDX101 / FT-991A / FT-710 family. An FTDX10 does not accept it — DAKY included — and OpsLog says so, pointing to the serial DTR keyer on the rig second COM port, which works.", "CW through the Yaesu keyer: a fifth CW engine sends your macros with the radio own keyer (CAT \"KY\") — no WinKeyer, no second cable. Pick \"Yaesu (rig keyer)\" in Settings → CW keyer, with the Yaesu CAT backend active.", "The Yaesu console follows the mode: in CW the microphone gain and VOX disappear and a CW card takes their place with keyer speed, break-in and ZIN (zero-in).", "Native Xiegu CAT (G90, X6100, X6200, X5105): a new backend talks CI-V straight to the radio — frequency, mode, split and PTT. Pick \"Xiegu (native CI-V)\" in Settings → CAT. Untested on a radio so far, feedback welcome.", @@ -20,7 +20,7 @@ ], "fr": [ "Antenna Genius : le port A ne bascule plus sur l'antenne du port B quelques secondes après un changement. Un seul port peut porter l'antenne d'émission, le switch renvoie donc la même sur les deux — l'affichage suit désormais l'antenne de réception propre à chaque port.", - "CW par le keyer Yaesu : un cinquième moteur CW envoie vos macros avec le keyer de la radio (CAT « KY »), sans second câble. Encore faut-il que la radio l'autorise — réglez PC KEYING sur DAKY dans son menu CW ; si elle refuse toujours, OpsLog le dit et renvoie vers le keyer série DTR sur l'autre port COM.", + "CW par le keyer Yaesu : un cinquième moteur CW envoie vos macros avec le keyer de la radio (CAT « KY »), pour la famille FTDX101 / FT-991A / FT-710. Un FTDX10 ne l'accepte pas — DAKY compris — et OpsLog le dit en renvoyant vers le keyer série DTR sur son second port COM, qui fonctionne.", "CW par le keyer Yaesu : un cinquième moteur CW envoie vos macros avec le keyer de la radio (CAT « KY ») — sans WinKeyer ni second câble. À choisir dans Réglages → Keyer CW sous « Yaesu (keyer de la radio) », avec le backend CAT Yaesu actif.", "La console Yaesu suit le mode : en CW, le gain micro et le VOX disparaissent au profit d'une carte CW avec la vitesse du manipulateur, le break-in et ZIN (zéro-in).", "CAT Xiegu natif (G90, X6100, X6200, X5105) : un nouveau backend dialogue en CI-V directement avec la radio — fréquence, mode, split et PTT. À choisir dans Réglages → CAT sous « Xiegu (CI-V natif) ». Pas encore testé sur une radio, retours bienvenus.", diff --git a/frontend/src/lib/i18n.tsx b/frontend/src/lib/i18n.tsx index fecf65f..a55ab63 100644 --- a/frontend/src/lib/i18n.tsx +++ b/frontend/src/lib/i18n.tsx @@ -163,7 +163,7 @@ const en: Dict = { 'wk.escClears': 'ESC clears the callsign too (otherwise ESC only stops transmission)', 'wk.esm': 'ESM — Enter Sends Message (CW)', 'wk.esmHint': 'In CW with the keyer on, Enter fires a macro by QSO stage instead of logging: empty callsign → F1 (CQ); callsign entered → F2 (report) and focus jumps to RST; Enter in RST → F3 (TU), which logs if the macro contains .', - 'wk.engWinkeyer': 'WinKeyer (K1EL, serial)', 'wk.engSerial': 'Serial port (DTR=CW / RTS=PTT)', 'wk.engIcom': 'Icom CI-V (rig keyer)', 'wk.engYaesu': 'Yaesu (rig keyer)', 'wk.yaesuHint': 'Keying goes over the CAT link already configured in Settings → CAT — no second COM port. The rig must allow it: set PC KEYING to DAKY in its CW menu. If the radio still refuses, use the "Serial port (DTR=CW / RTS=PTT)" keyer on its other COM port (the standard one) with PC KEYING on DTR.', 'wk.catWarnYaesu': 'The Yaesu keyer needs the Yaesu CAT backend — CAT is currently {backend}.', 'wk.engFlex': 'FlexRadio (CWX)', 'wk.engTci': 'TCI (coming soon)', + 'wk.engWinkeyer': 'WinKeyer (K1EL, serial)', 'wk.engSerial': 'Serial port (DTR=CW / RTS=PTT)', 'wk.engIcom': 'Icom CI-V (rig keyer)', 'wk.engYaesu': 'Yaesu (rig keyer)', 'wk.yaesuHint': 'Keying goes over the CAT link already configured in Settings → CAT — no second COM port. For the FTDX101 / FT-991A / FT-710 family. An FTDX10 does NOT accept it (DAKY included): on that one use the "Serial port (DTR=CW / RTS=PTT)" keyer on its other COM port (the standard one) with PC KEYING on DTR — confirmed working.', 'wk.catWarnYaesu': 'The Yaesu keyer needs the Yaesu CAT backend — CAT is currently {backend}.', 'wk.engFlex': 'FlexRadio (CWX)', 'wk.engTci': 'TCI (coming soon)', 'wk.icomNote': "Icom CI-V keys CW through the rig's own keyer over the existing CAT connection (command 0x17) — it reuses the CAT COM port set in Settings → CAT, so there's nothing else to wire up here. Put the rig in CW mode. Weight, ratio, sidetone, paddle mode… are configured on the radio; only the speed is set from here (the rig's KEY SPEED).", 'wk.flexNote': "FlexRadio keys CW through the radio's CWX keyer over the existing SmartSDR CAT connection — no WinKeyer or SmartCAT needed. It reuses the connection set in Settings → CAT, so there's nothing else to wire up here. Put a slice in CW mode. Only the speed is set from here; weight, sidetone and break-in are configured on the radio (break-in must be on for CW to actually transmit).", 'wk.catWarnIcom': 'Your CAT backend is set to {backend}. Icom CI-V CW needs the CAT backend set to Icom and connected — change it under Settings → CAT interface, otherwise sending CW will fail.', @@ -574,7 +574,7 @@ const fr: Dict = { 'wk.escClears': "ÉCHAP efface aussi l'indicatif (sinon ÉCHAP arrête seulement la transmission)", 'wk.esm': 'ESM — Entrée envoie le message (CW)', 'wk.esmHint': "En CW avec le keyer actif, Entrée envoie un macro selon l'étape du QSO au lieu de loguer : indicatif vide → F1 (CQ) ; indicatif saisi → F2 (report) et le focus passe au RST ; Entrée dans le RST → F3 (TU), qui logue si le macro contient .", - 'wk.engWinkeyer': 'WinKeyer (K1EL, série)', 'wk.engSerial': 'Port série (DTR=CW / RTS=PTT)', 'wk.engIcom': 'Icom CI-V (keyer de la radio)', 'wk.engYaesu': 'Yaesu (keyer de la radio)', 'wk.yaesuHint': "La manipulation passe par la liaison CAT déjà configurée dans Réglages → CAT — sans second port COM. Encore faut-il que la radio l'autorise : réglez PC KEYING sur DAKY dans son menu CW. Si elle refuse toujours, utilisez le keyer « Port série (DTR=CW / RTS=PTT) » sur son autre port COM (le standard) avec PC KEYING sur DTR.", 'wk.catWarnYaesu': 'Le keyer Yaesu nécessite le backend CAT Yaesu — le CAT est actuellement : {backend}.', 'wk.engFlex': 'FlexRadio (CWX)', 'wk.engTci': 'TCI (bientôt)', + 'wk.engWinkeyer': 'WinKeyer (K1EL, série)', 'wk.engSerial': 'Port série (DTR=CW / RTS=PTT)', 'wk.engIcom': 'Icom CI-V (keyer de la radio)', 'wk.engYaesu': 'Yaesu (keyer de la radio)', 'wk.yaesuHint': "La manipulation passe par la liaison CAT déjà configurée dans Réglages → CAT — sans second port COM. Pour la famille FTDX101 / FT-991A / FT-710. Un FTDX10 ne l'accepte PAS (DAKY compris) : sur celui-ci, utilisez le keyer « Port série (DTR=CW / RTS=PTT) » sur son autre port COM (le standard) avec PC KEYING sur DTR — confirmé fonctionnel.", 'wk.catWarnYaesu': 'Le keyer Yaesu nécessite le backend CAT Yaesu — le CAT est actuellement : {backend}.', 'wk.engFlex': 'FlexRadio (CWX)', 'wk.engTci': 'TCI (bientôt)', 'wk.icomNote': "L'Icom CI-V manipule la CW via le keyer interne de la radio sur la connexion CAT existante (commande 0x17) — il réutilise le port COM CAT défini dans Réglages → CAT, rien d'autre à câbler ici. Mets la radio en mode CW. Poids, ratio, sidetone, mode paddle… se règlent sur la radio ; seule la vitesse est définie ici (KEY SPEED de la radio).", 'wk.flexNote': "FlexRadio manipule la CW via le keyer CWX de la radio sur la connexion SmartSDR CAT existante — pas besoin de WinKeyer ni de SmartCAT. Il réutilise la connexion définie dans Réglages → CAT, rien d'autre à câbler ici. Mets une slice en mode CW. Seule la vitesse est définie ici ; poids, sidetone et break-in se règlent sur la radio (le break-in doit être activé pour que la CW parte vraiment).", 'wk.catWarnIcom': "Ton backend CAT est réglé sur {backend}. La CW Icom CI-V nécessite le backend CAT réglé sur Icom et connecté — change-le dans Réglages → Interface CAT, sinon l'envoi CW échouera.", diff --git a/internal/cat/yaesu_cw.go b/internal/cat/yaesu_cw.go index c16b689..7345b19 100644 --- a/internal/cat/yaesu_cw.go +++ b/internal/cat/yaesu_cw.go @@ -13,12 +13,14 @@ package cat // // The leading SPACE after KY is part of the command, not padding. // -// Observed on an FTDX10 (2026-07-29): it answered "?;" to both KY; and -// KY ; with PC KEYING left at its default. That rig's CW menu offers -// DAKY / RTS / DTR, and KY is the CAT route, so DAKY is the setting that should -// enable it — untested at the time of writing. When the rig refuses, the error -// says so and names both that setting and the serial line keyer as the fallback, -// rather than failing silently. +// CONFIRMED on an FTDX10 (2026-07-29): it refuses this outright, answering "?;" +// to both KY; and KY ; — including with PC KEYING on DAKY, the obvious +// candidate, which does NOT help. That model keys from a PC only through the DTR +// line of its second (standard) COM port, which is OpsLog's "serial" engine and +// is confirmed working. +// +// The code stays because KY is documented for the FTDX101 / FT-991A / FT-710 +// family. On a rig that refuses it, the error now names the route that works. // // STOP is the other uncertain half: Yaesu documents no buffer-clear, see StopCW. @@ -122,14 +124,14 @@ func (y *Yaesu) drainCWReply() error { frame := strings.TrimSpace(string(buf[:i+1])) buf = buf[i+1:] if frame == "?;" { - // Observed on an FTDX10 (2026-07-29). Its PC KEYING menu offers DAKY, - // RTS and DTR: KY is the CAT route, so DAKY is the setting that would - // enable it — worth naming, since the alternative costs the operator a - // second COM port. If DAKY does not help, the line keyer does. - return fmt.Errorf("the radio refused the CW keying command (it answered \"?;\" to KY). " + - "Set PC KEYING to DAKY in the rig's CW menu; if that does not help, use the " + - "\"Serial port (DTR=CW / RTS=PTT)\" keyer on the rig's other COM port (the standard " + - "one) with PC KEYING set to DTR, while CAT keeps the enhanced port") + // An FTDX10 refuses KY whatever PC KEYING is set to — DAKY included, + // tested on the radio 2026-07-29. The message therefore points + // straight at what works, rather than at a setting that will not + // help. + return fmt.Errorf("this radio does not accept CW over CAT (it answered \"?;\" to KY). " + + "Switch the keyer engine to \"Serial port (DTR=CW / RTS=PTT)\" on the rig's OTHER " + + "COM port — the standard one, CAT keeping the enhanced one — with PC KEYING set " + + "to DTR in the rig's CW menu") } debugLog.Printf("yaesu cw: rig answered %q to KY — ignoring", frame) }