Hi
I raised the issue with the team at QLog and Lada kindly did a deep dive into the issue, which in the spirit of amateur radio sharing I’ve included below. These are the notes Lada posted on my ticket to help me understand the issue, and hopefully it helps others too.
From Lada: What I concluded from this is that different versions of wfview show different behavior. Given that similar issues have already occurred in wfview, as described here Send_morse rigctld works wrong , and that QLog uses the Hamlib library even for communication with rigctld, which means that QLog itself has no control over the commands sent to rigctl, I do not think there is anything I can do about this on the QLog side.
I checked the wfview source code and I think the problem is this. The bug is in the wfview rigctld command parser, not in QLog or Hamlib.
Hamlib sends the correct command:
\send_morse TEST MORSE MESSAGE
wfview first removes the leading backslash:
The command therefore becomes:
send_morse TEST MORSE MESSAGE
This string is then passed to getCommand() on line 537:
Later, on line 1026, getCommand() executes:
val.setValue(fullcmd.remove(0,1));
This removes only the first character s, instead of removing the whole send_morse command. The resulting CW text is therefore:
end_morse TEST MORSE MESSAGE
In src/radio/icomcommander.cpp, lines 2979–2980, the underscore is detected as an invalid CW character and replaced with ?:
Finally, the radio receives:
end?morse TEST MORSE MESSAGE
The same issue was reported: rigctld: sending cw seems broken · Issue #136 · wf-group/wfview · GitHub
The issue is closed, but the incorrect code is still present in the current master branch.