fix: the Yaesu SWR bar showed a meter unrelated to the antenna

Measured on the radio, steady carrier for three seconds:

  RM1=0  RM2=unsupported  RM3=0  RM4=9→18→21→22  RM5=208 flat  RM6=0

RM4 is the index that RAMPS with the output, so RM4 is the power meter. RM5 sat
at 208 from the first sample to the last, unmoved by the power — that is not SWR
on an operator reading 1.1, and 208/255 is exactly the 81 that appeared on the
bar. Borrowing the FT-991A's table, which puts SWR on RM5, is what put it there.

SWR now reads RM6. It stayed at 0 throughout, which is CONSISTENT with a 1.1
match but does not prove the index — only a deliberate mismatch would, and I am
not asking for that. A bar at zero on a good antenna is honest; 81 was actively
misleading.

The measurement is written into the code next to the mapping, so the next person
sees the evidence rather than a table copied from another model.
This commit is contained in:
2026-07-29 13:42:25 +02:00
parent a89c6e0df8
commit 3fd6763ff0
2 changed files with 16 additions and 1 deletions
+14 -1
View File
@@ -145,10 +145,23 @@ func (y *Yaesu) readPanel(mode string, split bool, txHz int64) {
}
debugLog.Printf("yaesu: meters while transmitting: %s (send this if a bar reads wrong)", strings.Join(raw, " "))
}
// Measured on an FTDX10 (2026-07-29), a steady carrier for three seconds:
//
// RM1=0 RM2=unsupported RM3=0 RM4=9→18→21→22 RM5=208 flat RM6=0
//
// RM4 is the one that RAMPS with the output, so RM4 is the power meter.
// RM5 sat at 208 from the first sample to the last, unmoved by the power —
// that is not SWR (the operator's was 1.1) and not a meter that reads
// anything we can show; borrowing the FT-991A's table, which puts SWR
// there, is exactly what made the bar read 81.
if v, ok := y.askNum("RM4;", "RM4", 3); ok {
y.panel.PowerMeter = scale255(v)
}
if v, ok := y.askNum("RM5;", "RM5", 3); ok {
// SWR: RM6 is the remaining candidate. It read 0 throughout, which is
// CONSISTENT with the 1.1 match but does not prove the index — only a
// deliberate mismatch would. Shown because a bar stuck at zero on a good
// antenna is honest, where 81 was actively misleading.
if v, ok := y.askNum("RM6;", "RM6", 3); ok {
y.panel.SWRMeter = scale255(v)
}
} else {