I found the hamlib source code today and took a look. AC log uses the Dummy
rig and aclog.c translates the AC Log commands to hamlib commands for this
virtual rig interface.
In aclog_get_freq() function, the frequency is read from the http string.
FREQ>1,296.171100");
*freq = 0;
if (p) { sscanf(p, "%lf", freq); }
*freq *= 1e6; // convert from MHz to Hz
if (*freq == 0)
{
rig_debug(RIG_DEBUG_ERR, "%s: freq==0??\nvalue=%s\n", __func__,
value);
RETURNFUNC(-RIG_EPROTO);
}
else
{
rig_debug(RIG_DEBUG_TRACE, "%s: freq=%.0f\n", __func__, *freq);
}
if (vfo == RIG_VFO_A)
{
priv->curr_freqA = *freq;
}
else // future support in ACLOG maybe?
{
priv->curr_freqB = *freq;
}
-Original Message-
From: Mike Lewis via wsjt-devel
Sent: Thursday, April 17, 2025 10:23 AM
To: wsjt-devel@lists.sourceforge.net
Cc: Mike Lewis
Subject: [wsjt-devel] AC Log Hamlib error on frequencies 1GHz and higher
I am using N3FJP AC Log which has rig control. I set up various versions
(2.7.0 and 2.8.0_improved) of WSJT-X to use the N3FJP AC Log rig definition.
Radios tested are IC-905, IC-705 (with a transverter aware band decoder) and
Elecraft K3. The later 2 have transverters on 903 and 1296 and they report the
transverter's frequency over CAT.
Focusing on just the K3 or IC-905, when any band below 1GHz is selected, all
works as it should, with or without WSJT-X running.
Change bands by any means (radio or WSJTX) to any band higher than 903, WSJT-X
reads the frequency as only the 1GHz digit times 1,000,000. For example.
1296 results in 1.000,000Hz.
2304.100.000 results in 2.000MHz
5760.1 results in 5.000MHz
After WSJTZX now think the frequency is 1.000Mhz (for 1296) it thinks a band
change occurredon the WSJT-X side and sends 1.0MHz to AC Log where it is
updated and AC Log in turn changes the radio to 1.000Mhz.
I turned on WSJT_X Rig Control logging and got a narrowed log that I think
shows the problem is in the WSJT-X hamlib code. I tried WSJT-X
V2.8.0_improved today, same issue with frequencies above >999Mhz.
In this attached log, I have the K3 set to 1296.171.100. AC Log is controlling
the rig. All is good so far.
I then start up WSJT-X. It queries AC Log for freq and gets 1296. Has
correct band (23) and mode (SSB).
string='23SSBPH1,296.171100
The next thing is it extracts the frequency from the message wrong
[2025-04-17 16:32:23.578614][00:00:02.941014][RIGCTRL:trace] aclog_get_freq:
freq=100
Now WSJTX thinks it is 1.000MHz. It polls AC Log a bit more, it still gets
1296 as proper.
Then it decided the frequency has changed and sends 1.000MHz to AC Log. Now AC
log says 1.55MHz.
[2025-04-17 16:32:23.585489][00:00:02.951073][RIGCTRL:trace] aclog_set_freq:
vfo=VFOA freq=155
[2025-04-17 16:32:23.585489][00:00:02.951193][RIGCTRL:trace] 3c 43 4d
44 3e 3c 43 48 41 4e 47 45 46 52 45 51 1.55
On the K3 I see 1.000.055 on the dial, then it immediately changes to
1.000.000.No idea why, step size is 10Hz on the radio.
A log excerpt is pasted below, a full log attached if not stripped.
Shutdown WSJT-X and AC Log frequency stays at 1.000.000.
73,
Mike Lewis, K7MDL
CN87xs
__
[2025-04-17 16:32:23.578614][00:00:02.940480][RIGCTRL:debug] network_flush
called
[2025-04-17 16:32:23.578614][00:00:02.940574][RIGCTRL:trace] write_block(): TX
22 bytes
[2025-04-17 16:32:23.578614][00:00:02.940579][RIGCTRL:trace] 3c 43 4d
44 3e 3c 52 45 41 44 42 4d 46 3e 3c 2f ..
[2025-04-17 16:32:23.578614][00:00:02.940588][RIGCTRL:debug]
*5:aclog.c(247):write_transaction returning(0)
[2025-04-17 16:32:23.578614][00:00:02.940592][RIGCTRL:debug]
*5:aclog.c(141):read_transaction entered
[2025-04-17 16:32:23.578614][00:00:02.940923][RIGCTRL:trace]
read_string_generic(): RX 109 characters, direct=1
[2025-04-17 16:32:23.578614][00:00:02.940948][RIGCTRL:trace] 3c 43 4d
44 3e 3c 52 45 41 44 42 4d 46 52 45 53 23SSBP
[2025-04-17 16:32:23.578614][00:00:02.940963][RIGCTRL:trace] 004048 3c 2f
4d 4f 44 45 54 45 53 54 3e 3c 46 52 45 H1,296.171100..
[2025-04-17 16:32:23.578614][00:00:02.940975][RIGCTRL:trace] read_transaction:
string='23SSBPH1,296.171100
'
[2025-04-17 16:32:23.578614][00:00:02.940983][RIGCTRL:trace] read_transaction:
got
[2025-04-17 16:32:23.578614][00:00:02.940989][RIGCTRL:debug]
*5:aclog.c(208):read_transaction returning(0)
[2025-04-17 16:32:23.578614][00:00:02.940995][RIGCTRL:debug]
4:aclog_transaction: elapsed=0ms
[2025-04-17 16:32:23.578614][00:00:02.941001][RIGCTRL:debug]
4:aclog.c(311):aclog_transaction returning(0)
[2025-04-17 16:32:23.578614][00:00:02.941014][RIGCTRL:trace] aclog_get_freq:
freq=100
[2025-04-17 16:32:23.578614][00:00:02.941022][RIGCTRL:debug]
***3:aclog.c(488):aclog_get_freq returning(0)
[2025-04-17 16:32:23.578614][00:00:02.941028][RIGCTRL: