IC-9700 Hamlib Setup for FT-8 via QO-100

Sometimes I operate my IC-9700 remotely using the RS-BA1 software which has an extreme disadvantage: It does not allow operating full-duplex (so for RX on QO-100 I have to use my separate SDR but thats another story). So after using the RS-BA1 software the IC-9700 is left in single VFO mode and the second VFO is disabled. There is no way to (re-)activate the sub band VFO and set its frequency and mode.

Stumbling across wfview being able to do all that I re-digged into the sources of hamlib’s rigctl which to date failed reading or writing the sub VFO. From wfview’s sources it seems that it is using different CI-V commands to control the sub band. That led to a study of the CI-V reference manual and there were some interesting commands that are obviously not in use within hamlib/rigctl.

But rigctl has a nice feature allowing to send raw commands to the radio. So I was down to just finding the correct commands. From the manual (all commands in hex copied from that doc):

  • 16 59 01 enables the sub band VFO
  • 07 D1 selects the sub band
  • 00 00 00 54 33 04 sets the frequency to 433.540 MHz
  • 01 01 sets the mode to USB
  • 1A 06 01 01 activates DATA mode and selects filter 1
  • 07 D0 select the main band VFO
  • 00 00 00 04 44 01 sets the frequency to 144.040 MHz
  • 01 01 sets the mode to USB
  • 1A 06 01 01 activates DATA mode and selects filter 1

We also need to send a trailer consisting of FE FE A2 E0 and a trailer being FD. Luckily all these can be send to rigctl in hex format from the command prompt. So I ended up with a little script that always sets the parameters to:

  • Sub VFO to 433.540 MHz USB-D / Filter 1
  • Main VFO to 144.540 MHz USB-D / FIlter 1

The complete script looks like this:

#!/bin/sh
rigctl -m 3081 -r /dev/ic-9700a -s 57600 - 2>&1 > /dev/null <<EOF
w \0xFE\0xFE\0xA2\0xE0\0x16\0x59\0x01\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x07\0xD1\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x00\0x00\0x00\0x54\0x33\0x04\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x01\0x01\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x1A\0x06\0x01\0x01\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x07\0xD0\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x00\0x00\0x00\0x04\0x44\0x01\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x01\0x01\0xFD
w \0xFE\0xFE\0xA2\0xE0\0x1A\0x06\0x01\0x01\0xFD
EOF
exit 0

This may also serve as a blueprint for setting other stuff on the IC-9700. Feel free to use and adapt ;-). A little demo video showing the IC-9700 being controlled by the above script can be found on [1].

Switch Waterfall to Sub Band

Further reading also showed that you can switch the waterfall from main to sub band using the CI-V sequence:

  • 27 12 01 Switch waterfall to sub band

So a line like

w \0xFE\0xFE\0xA2\0xE0\0x27\0x12\0x01\0xFD

added to the script above also switches the spectrum scope to the sub band.

Enabling Speech Compressor

Made another preset for voice operation. This includes the activation of the speech compressor. This can be done using the following line:

w \0xFE\0xFE\0xA2\0xE0\0x16\0x44\0x01\0xFD

Hamlib Issue

In the meantime I discovered that the hamlib rigctl cannot deal with the sub band correctly. It allows to switch to the sub band but reading frequency still reads the content of the main VFO. Exchanging VFOs and then reading frequency works however. Though the more elegant way would be to just read the frequency of the sub VFO without switching or exchanging. There is an ongoing issue on github at [2].

Selecting Mode / Filter BW

The filter bandwith for RX and TX can be set using command 26. The following example sets mode to USB, data mode off and filter to setting FIL2:

w \0xFE\0xFE\0xA2\0xE0\0x26\0x00\0x01\0x00\0x02\0xFD

flrig and plain CI-V

In addition to hamblib from command line I discovered that flrig also offers a config to send pre-defined CI-V commands to the radios. For the IC-9700 for example you can send the recorded message in voice memory one using the commands:

xFE xFE xA2 xE0 x28 x00 x01 xFD

Switching the waterfall between main and sub band can be done with:

xFE xFE xA2 xE0 x27 x12 x01 xFD
xFE xFE xA2 xE0 x27 x12 x00 xFD
flrig Command Config for IC-9700
flrig Command Config for IC-9700

Looking for an option to send the set messages for CW keyer memories there was no documentation in the manual. However there is a CI-V command that allows to send up to 30 characters in hex format via CI-V. So you can send any text apart from the memory contents using:

xFE xFE x94 xE0 x17 x44 x46 x32 x45 x54 xFD

This sends my callsign in CW.

flrig Command Config for IC-7300
flrig Command Config for IC-7300

Switching the waterfall span from 5 to 500kHz can be done with:

xFE xFE x94 xE0 x27 x15 x00 x00 x00 x50 x00 x00 xFD
xFE xFE x94 xE0 x27 x15 x00 x00 x50 x00 x00 x00 xFD

References

[1] https://youtu.be/2qCD4P7rVXU
[2] https://github.com/Hamlib/Hamlib/issues/1456