From b0b25c7f1f545aaca40208b0347ca16b36f2df12 Mon Sep 17 00:00:00 2001 From: rouggy Date: Wed, 29 Jul 2026 13:23:22 +0200 Subject: [PATCH] docs: name PC KEYING = DAKY, the setting that should enable CAT keying MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The operator found the menu I said to look for: it offers DAKY, RTS and DTR. KY is the CAT route, so DAKY is the setting that would enable it — which makes my previous "this rig has no CAT keying command" too strong a claim to leave standing, since it was drawn from a refusal at the DEFAULT setting. The error and the settings hint now name DAKY first, and keep the serial line keyer as the fallback. That order matters: the CAT route costs nothing, the fallback costs a second COM port. Marked as untested rather than verified — I have no confirmation that DAKY makes KY work on this model, only that it is the option that should. --- changelog.json | 4 ++-- frontend/src/lib/i18n.tsx | 4 ++-- internal/cat/yaesu_cw.go | 29 ++++++++++++++++------------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/changelog.json b/changelog.json index 20feb76..071d9e5 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\"), for the FTDX101 / FT-991A / FT-710 family. An FTDX10 refuses it — it has no CAT keying command — and OpsLog now says so and points to the serial DTR keyer on the rig second COM port.", + "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\") — 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 »), pour la famille FTDX101 / FT-991A / FT-710. Un FTDX10 la refuse — il n'a pas de commande CAT de manipulation — et OpsLog le dit désormais en renvoyant vers le keyer série DTR sur le second port COM de la radio.", + "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 ») — 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 86cddb4..fecf65f 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. Not every Yaesu accepts it: an FTDX10 refuses (it has no CAT keying command). On those, use the "Serial port (DTR=CW / RTS=PTT)" keyer on the rig other COM port — the standard one — while CAT keeps the enhanced one.', '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. 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.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. Toutes les Yaesu ne l'acceptent pas : un FTDX10 refuse (il n'a pas de commande CAT de manipulation). Dans ce cas, utilisez le keyer « Port série (DTR=CW / RTS=PTT) » sur l'AUTRE port COM de la radio — le standard — le CAT gardant l'enhanced.", '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. 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.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 bac7538..c16b689 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. // -// Verified on: an FTDX10 REFUSES this — it answers "?;" to both KY; and KY ;, -// so that model has no CAT keying command at all and needs the serial DTR keyer -// on its second COM port instead. The code stays because KY is documented for -// the FTDX101 / FT-991A / FT-710 family; it now says so plainly when refused -// rather than failing silently. STOP is the other uncertain half: Yaesu -// documents no buffer-clear, so see StopCW. +// 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. +// +// STOP is the other uncertain half: Yaesu documents no buffer-clear, see StopCW. import ( "errors" @@ -120,13 +122,14 @@ func (y *Yaesu) drainCWReply() error { frame := strings.TrimSpace(string(buf[:i+1])) buf = buf[i+1:] if frame == "?;" { - // Confirmed on an FTDX10 (2026-07-29): it answers "?;" to KY, so this - // rig simply has no CAT keying command — it is not a setting to find. - // The message therefore names the way that DOES work rather than - // sending the operator hunting through menus. - return fmt.Errorf("this rig does not accept CW over CAT (it answers \"?;\" to KY). " + - "Use the \"Serial port (DTR=CW / RTS=PTT)\" keyer on the rig's OTHER COM port — " + - "the standard one, while CAT keeps the enhanced one") + // 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") } debugLog.Printf("yaesu cw: rig answered %q to KY — ignoring", frame) }