Queued commands to Hamlib

16 posts / 0 new
Last post
ZL2APV
Queued commands to Hamlib

This is not really a CQRLog problem but using the debug output on rigctl commands it says that CQRLog has sent fmv
/usr/bin/mysqld
2022-05-29 10:38:05 0 [Note] /usr/sbin/mysqld (mysqld 10.3.34-MariaDB-0ubuntu0.20.04.1) starting as process 78041 ...
Sending: fmv

My issue is that on the Radio that I use (Quisk) it only processes one command at a time so all that is reported back to CQRLog is the frequency.
Sending: fmv

Msg from rig: 7040307

On another rig (PiHPSDR) all the commands are processed.
Not started rigctld process. (Run is set FALSE)
Connected to rigctld @ localhost:4532
Sending: fmv

Msg from rig: 7071680
CWR
0
VFOA

My question is what is actually sent to rigctl to get it to process a list/queue of commands like 'fmv'. In interactive mode on rigctl I can only get it to process one command per line although it will process a list on invoking rigctl.
gvj@gvj-HP:~$ rigctl -m 1 f m v
145000000
FM
15000
VFOA

73, Graeme ZL2APV

oh1kh
Queued commands to Hamlib

Hi Graeme!

When you make tests you should use rigctld instead of rigctl. There are some differences in command set.

in console 1:
rigctld -m1

in console2:
telnet localhost 4532
And when telnet opens you can test commands there:
fmv
f m v

With latest cqrlog (compiled from GitHub source) rigctld is polled different way:

At start cqrlog will ask if rigctld has been started with "--vfo" parameter. This will be default in future Hamlib (maybe v5.0 and up)
This is what you see with latest cqrlog started with "--debug=1" parameter and when rigctld has start parameter "--vfo"

At program start:

Poll Sending: \chk_vfo

Msg from rig: 1
"--vfo" checked:1
RPRT0

And when running:

Poll Sending: +f currVFO +m currVFO +v
Msg from rig: GET_FREQ: CURRVFO
FREQUENCY: 50313000
RPRT 0
Msg from rig: GET_MODE: CURRVFO
MODE: PKTUSB
PASSBAND: 3000
RPRT 0
Msg from rig: GET_VFO: CURRVFO
RPRT -11
RPRT0

The rig is Icom 7300 and Icoms can not reply to question "+v" (get vfo), so the answer is RPRT -11 for that.

And here are the corresponding results when rigctld parameter "--vfo" is NOT used:

Poll Sending: \chk_vfo

Msg from rig: 0
"--vfo" checked:0
RPRT0

Chat : line is cluster prompt!
Poll Sending: +f +m +v

Msg from rig: GET_FREQ:
FREQUENCY: 50313000
RPRT 0
Msg from rig: GET_MODE:
MODE: PKTUSB
PASSBAND: 3000
RPRT 0
Msg from rig: GET_VFO:
RPRT -11
RPRT0

There will not be any more plain "fmv" sending with latest cqrlog. So for future check that your rig's (emulator program?) does support "+" command format of Hamlib.

Or if the emulator can not do that check if new hamlib supports your rig directly. Latest test version is just released. You get it from address mentioned in this mail:

Black Michael via wsjt-devel kirjoitti 31.5.2022 klo 19.04:
> I need everyone to test the latest Hamlib
> Testing in Rig Split and Fake It would be appreciated.
> Successes/Failures please report.
>
> New hamlib for installation directions
>
> #1 Shut down WSJTX/JTDX
>
> #2 Download either the 32-bit or 64-bit DLL matching the 32/64-bit version of WSJTX/JTDX -- hopefully your browser doesn't block it but may warn you multiple times.
>
> If you can do a "Save As" you can save it directly in \WSJT\WSJTX\bin and replace the libhamlib-4.dll that is there.
>
> http://n0nb.users.sourceforge.net/dll32/libhamlib-4.dll
>
> http://n0nb.users.sourceforge.net/dll64/libhamlib-4.dll
>
> Linux/Unix/Mac users need to compile the latest tar file from http://n0nb.users.sourceforge.net/
>
> #3 If you don't save directly you need to open a file browser and move the file that way.
>
> If you're not familiar with that here's a video on the file browser - https://www.youtube.com/watch?v=AyVqCJrs9dk
>
> Mike W9MDB

--
Saku
OH1KH

ZL2APV
Queued commands to Hamlib

Thank you Saku and all others involved,

This is just the info that I was looking for and Jim Ahlstrom N2ADR the author of the SDR 'Quisk' will be using this to enhance Quisk so it will fully support operation with CQRLog. It will be a great combination, one which I have been using for years now but I always missed the queued commands interacting between radio and Log.

With thanks, Graeme ZL2APV

oh1kh
Queued commands to Hamlib

HI!
It is important that the reply has correct format.
Rig response is handed in source file https://github.com/ok2cqr/cqrlog/blob/master/src/uRigControl.pas

procedure TRigControl.OnReceivedRcvdFreqMode starting from line 434 shows what strings are expected as response to rig poll and may be used with emulator design.

line 269 procedure TRigControl.SetModePass(mode : TRigMode);
Shows also other commands that may be sent to rig. There the string variable VfoStr (+VfoStr+' '+) may be empty or have vfo name depending on answer to \chk_vfo.

--
Saku
OH1KH

ZL2APV
Hello Saku,

Hello Saku,

Thank you for all the helpful information and as a result Jim Ahlstrom N2ADR has modified his Quisk SDR Hamlib server to accept queued commands and using telnet localhost 4532 I can send an fmv string and get the correct response. There is now a new issue with CQRLog using the Quisk Hamlib server where the "vfo" response string shows in the mode field of the main QSO entry screen i.e. "Main" rather than CW or SSB etc. the debug from the console is shown below
Not started rigctld process. (Run is set FALSE)
Connected to rigctld @ localhost:4532
Sending: fmv

Msg from rig: 14025000
CW
400
Main
Sending: fmv

Msg from rig: 14025000
CW
400
Msg from rig: Main
Sending: fmv

Msg from rig: 14025000
CW
400
Msg from rig: Main

Should I raise this as a separate bug or should I learn to use CQRLog better hi.

73 de Graeme ZL2APV

oh1kh
Queued commands to Hamlib

Hi Graeme!

As you are talking about  "fmv" you must have quite old version of Cqrlog. As mentioned before the new version sends "+f +m +v". And that version also solves the "main" problem

So the next thing to do is to upgrade Cqrlog. At the moment only by compile from source.
I hope N2ADR also checked that "plus" commands give proper answers (see other messages in this chain) as new Cqrlog sends always "plus" commands  +f +m +v and expects properly formatted answers.

There are few messages that can be used as guide for compile for most linuxes:
New Ubuntu and latest cqrlog https://www.cqrlog.com/node/2984
Mint 20 Cinnamon and new cqrlog https://www.cqrlog.com/node/2998 

 

--
Saku
OH1KH

ZL2APV
Queued commands to Hamlib

Hello Saku,

Thank you for your excellent response and I understand exactly what to do. Using Qt for graphics is no problem for me as I always prefer to use the Qt version of anything I install if a choice is available. I am sorry that I have broken my own rule and not given you my system setup and leaving you guessing.
gvj@gvj-HP:~$ inxi -xxv2
System:
Host: gvj-HP Kernel: 5.4.0-117-generic x86_64 bits: 64 compiler: gcc
v: 9.4.0 Desktop: Cinnamon 5.2.7 wm: muffin dm: LightDM
Distro: Linux Mint 20.3 Una base: Ubuntu 20.04 focal
CQRLog 2.5.2 (001) 2021-02-12
rigctl(d), Hamlib 3.3

Yes Jim has included support for + commands in Quisk's Hamlib server:

gvj@gvj-HP:~$ telnet localhost 4532
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
+f+m+v
get_freq:
Frequency: 3535000
RPRT 0
get_mode:
Mode: CWR
Passband: 400
RPRT 0
get_vfo:
VFO: Main
RPRT 0

I think that Jim found out about the + command protocol by simply sending everything he could think of to the Hamlib dummy and finding what responded and how. In my own case I had no idea that the + form of command existed and can not find any reference to them although they exist in my version of Hamlib. I would be grateful if you could point me to where there is a protocol document or explain how you knew about these undocumented (to me) commands.

Off now to upgrade CQRLog and very grateful for your help.

73, Graeme ZL2APV

ZL2APV
Queued commands to Hamlib SOLVED

Hello Saku,

I followed your instructions for installing the github version of CQRLog and everything was easy to follow and my installation worked perfectly. When I came to change the graphics to Qt I found that because I already had Qt5 installed that it showed with the "grep ws Makefile" but I went ahead with the sed command anyway and recompiled which again worked perfectly although I suspect that I may have been able to use the Makefile with a parameter to select the Qt stuff.

gvj@gvj-HP:/opt/cqrlog$ grep ws Makefile
$(CC) --ws=gtk2 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=gtk2 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
gvj@gvj-HP:/opt/cqrlog$ sed -i 's/ws=gtk2/ws=qt5/g' Makefile
gvj@gvj-HP:/opt/cqrlog$ grep ws Makefile
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
$(CC) --ws=qt5 --pcp=$(tmpdir)/.lazarus src/cqrlog.lpi
gvj@gvj-HP:/opt/cqrlog$ make clean
followed by make -j6 and sudo make install.

The important bit is that Quisk and CQRLog now work perfectly together without my having to start rigctld and I would like to close this thread marked as solved.

Again many thanks for your great help.

73, Graeme ZL2APV

oh1kh
Queued commands to Hamlib SOLVED

OK Graeme !

Nice to hear that everything works like expected.
You find "+" from for example here https://www.mankier.com/1/rigctld#Protocol

--
Saku
OH1KH

ZL2APV
Queued commands to Hamlib SOLVED

Thanks Saku, got it. Its a great help, pity that I was looking at an old one before hi.

73, Graeme ZL2APV

DO1YHJ
Hi,

Hi,
I just updated Hamlib to the latest Version. With cqrlog 2.5.2 , Rig connection was okay.
Now I compiled latest cqrlog Version and the Rig connection is refused.
That's what I get:
meier@Afu-Mint:~$ cqrlog

Cqrlog Ver:2.6.0 (001) Gtk2 Date:2022-06-29
**** DEBUG LEVEL 0 ****
**** CHANGE WITH --debug=NR PARAMETER ****
*** Parameter -h or --help for details ***

OS:
Linux version 5.4.0-113-generic (buildd@lcy02-amd64-067) (gcc version 9.4.0 (Ubuntu 9.4.0-1ubuntu1~20.04.1)) #127-Ubuntu SMP Wed May 18 14:30:56 UTC 2022
/usr/bin/mysqld
2022-06-01 16:45:16 0 [Note] /usr/sbin/mysqld (mysqld 10.3.34-MariaDB-0ubuntu0.20.04.1) starting as process 48639 ...

Settings:
-----------------------------------------------------
RigCtldPath:/usr/local/bin/rigctld
RigCtldArgs:-m 1042 -r /dev/ttyUSB0 -t 4532 -s 38400
RunRigCtld: TRUE
RigDevice: /dev/ttyUSB0
RigCtldPort:4532
RigCtldHost:localhost
RigPoll: 500
RigSendCWR: FALSE
RigChkVfo TRUE
RigId: 1042

Starting RigCtld ...
rigProcess.Executable: /usr/local/bin/rigctld
Parameters:
-m
1042
-r
/dev/ttyUSB0
-t
4532
-s
38400

rigctld failed to start!
1
2
3
4
5
6
DO1YHJ_2022-06-01_16-45-23.adi

Is it the --vfo Parameter? If yes, where to set it?

Heinz-Juergen

DO1YHJ
Telnet Connection:

Telnet Connection:
fmv
28074000
USB
3000
VFOA
f m v
28074000
USB
3000
VFOA

DO1YHJ
Okay, that's strange. With

Okay, that's strange. With WSJT-x remote, WSJT-x sees the Freq from the Rig and I can change Bands with WSJT-x. cqrlog also sees the Freq in the New Log Window. Changing Bands or Freq directly on the Rig does change the Freq in WSJT-x.
But TRX-Control does not see the Freq and I can not change Bands with the Buttons.

Heinz-Juergen

DO1YHJ
Okay, I take all Alerts back.

Okay, I take all Alerts back. For some reasons, something was messed up after changing to Version 2.6.0.
After a reboot, all is working again.
But one question still exits. Where to set the --vfo Parameter?
use \chkvfo is set.

Heinz-Juergen

oh1kh
Queued commands to Hamlib

HI Heinz-Juergen!

Hmm.. I start rigctld from script before any other programs and use Hamlib NEt rigctrld (#2) as rig in all programs.

But I tested it now like this:

And when I look in command console:

the"--vfo" seems to be there as should.

 

 

--
Saku
OH1KH

DO1YHJ
Thanks. I tried this before

Thanks. I tried this before the reboot of my system and it didn't work. So I was little bit confused about setting the parameter. It did work now as it should.

Heinz-Juergen