docs: an FTDX10 has no CAT keying command — say what works instead

Confirmed on the radio: it answers "?;" to KY, so this is not a setting to find.
My previous message sent the operator looking for a MENU → CW → PC KEYING entry I
named without checking it exists on that model, and they could not find it.

The message now names the path that does work: the "Serial port (DTR=CW /
RTS=PTT)" keyer on the rig's OTHER COM port — the standard one — while CAT keeps
the enhanced one. Same for the settings hint and the changelog.

The KY engine stays: it is documented for the FTDX101 / FT-991A / FT-710 family.
It now fails loudly and usefully on the models that lack it, which is the
difference between a dead feature and a wrong one.
This commit is contained in:
2026-07-29 13:21:49 +02:00
parent 40df4fe22f
commit e120bd4f04
3 changed files with 17 additions and 8 deletions
+13 -4
View File
@@ -13,9 +13,12 @@ package cat
//
// The leading SPACE after KY is part of the command, not padding.
//
// Verified on: nothing yet — the send path follows the FTDX10/FTDX101 CAT
// reference and the way Hamlib drives these rigs. STOP is the uncertain half:
// Yaesu documents no way to clear the buffer, so see StopCW.
// Verified on: an FTDX10 REFUSES this — it answers "?;" to both KY; and KY <text>;,
// 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.
import (
"errors"
@@ -117,7 +120,13 @@ func (y *Yaesu) drainCWReply() error {
frame := strings.TrimSpace(string(buf[:i+1]))
buf = buf[i+1:]
if frame == "?;" {
return fmt.Errorf("the radio rejected the CW keying command (KY). On an FTDX10, check MENU → CW → PC KEYING")
// 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")
}
debugLog.Printf("yaesu cw: rig answered %q to KY — ignoring", frame)
}