Digirig, Raspberry Pi, and Older Icoms (IC-703, IC-706MkIIg, IC-718)


  • Tue 08 March 2022
  • misc

This is a companion to my previous post about setting up a Raspberry Pi for a dedicated headless shack computer.

My return to digital modes in a big way was spurred in no small part by my friend Brett pointing me at the Digirig Mobile, a tidy little box which is both a USB soundcard/aux port interface and a CAT interface in one tiny, reasonably priced box about the size of your thumb. If you think "RigBlaster or Signalink USB plus serial port plus Icom CI-17 all in the same box" you've got the right idea.

I might add I always found the Signalink to be fiddly, above and beyond what one might expect from such a box, and had already made a decision that when I returned to air it would be with an improved interface. Chief among my complaints was that the DAC was off by an unconscionable amount (a well published problem) and required correction that not all communication programs are capable of to avoid chasing QSOs up the band on PSK-31.

In the fleet here are three older model Icom radios - a non-Plus 703, a 706MkIIG, and a 718 - the last may or may not be made anymore but in any event there is a LOT of new stock available at HRO (and presumably other vendors).

Each of them has plusses and minuses. They all speak Icom's CI-V protocol, but it is important to understand that this is Icom's version of Computer Aided Transceiver (CAT), with the emphasis on "Aided". The feature sets are nowhere near at parity across different years and versions of radios (a problem that is not limited to Icom, by the way). The use case for CAT, across multiple manufacturers, has historically been "computer as a companion device to the rig" (think RTTY or sound card modes, filling out fields in a logging program, etc), not "full remote". If you're looking to run your rig from an iPad or laptop from another room, you're looking for the ability to adjust controls and read status via CI-V, and some are more important than others.

How do we find these? They're in your manual. Probably in the further back pages. I found a bit of a rosetta stone that contains the protocol descriptions as well as the supported command description pages for rigs older than 2002/3 - to wit, the 706, 706MkII, 706MkIIg, 707, 718, 746, 746PRO, 756, 756PRO, 766PROII, 820H, 821H, 910H, R10, R8500, 703, 7800. If your rig is newer than that generation, consult your manual BUT it may still be useful to dig through this manual for context to see which rigs to what.

Generally speaking the commands that you'll find especially interesting and/or variable for "full remote" of PSK and WSJT modes are the 0x14 and 0x15 family on HF. Here's a brief synopsis of the ones you will especially care about and what radios support them::

Family Subcommand Description 703 706MkIIg 718
0x14 0x01 Set/Read AF gain level (RX)
Y
n
Y
0x02 Set/Read RF gain level (RX)
Y
n
Y
0x0a Set/Read RF power setting (TX)
Y
n
Y
0x0b Set/Read mic gain setting (TX)
Y
n
Y
0x15 0x02 Read S-meter level (RX)
Y
Y
Y
0x11 Read RF power meter (TX)
Y
n
n
0x12 Read SWR meter (TX)
Y
n
n
0x13 Read ALC meter (TX)
Y
n
n


The 703 has all of the remote control features we would like to see, but it's only 10 watts PEP; you shouldn't drive it to more than 6 or 7 for key-down modes like RTTY/PSK/FTx. 35 watts is a popular power level; this means you're at least 6 dB worse off than everyone you're trying to work. This is not to say that it can't be done! I had really good success working stations who were relatively loud.

The 706MkIIg has... basically nothing. The original 706 was released in 1995, and whatever improvements were associated with making the MkII and then the MkIIg, "up the spec on the CI-V" was not top of mind. That doesn't make it useless for doing FT8 or PSK (I made a lot of PSK31 contacts with this same radio years ago and didn't have CI-V hooked up at all). But you will want to be sitting in the shack not the living room to do it.

The 718 is a reasonable compromise at a resaonable price point. It has the RF gain control which is the one that you really can't live without for remote control operation - the volume control does not affect the volume at the AUX port on the rear of the radio, and so depending on what band you join and how busy it is, you will find yourself adjusting the RF gain in order to keep WSJT-X in the nice and happy "green/80%" zone.

I'm using the 718 today. Do I wish it had an remote reading of the RF power, SWR, etc. so I'd know things were good while I was transmitting? Sure, but I have a multiband antenna and keep an auto tuner in the loop just-in-case - we're reasonably sure all is well even without keeping an eye on the meter. The price was right for an interim solution until I decide to buy a rig from Flex. They seem to hold their value well too so I'm hanging on to the box and manual so when that day comes I can pare down my collection a bit.

Building on what I wrote earlier on setting up a Pi for the shack, here are my configuration notes for the Digirig on a Pi with one of the Icoms above. Assumed platform is the same version of Raspberry Pi OS mentioned in the previous article.

From the command line, recompile locales and install some software:

sudo bash
sed -i "s/# en_US.UTF-8/en_US.UTF-8/g" /etc/locale.gen
locale-gen

apt-get install -y flrig
apt-get install -y fldigi

cd Downloads/
wget https://physics.princeton.edu/pulsar/K1JT/wsjtx_2.5.4_armhf.deb
dpkg -i wsjtx_2.5.4_armhf.deb

Note that the dpkg command will generate some errors due to missing dependencies. This is normal and expected, but needs to be fixed:

apt-get --fix-broken -y install

Once you've plugged your Digirig into the Pi, let's take a look at it under Linux.

pi@raspberrypi:~ $ lsusb
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 011: ID 10c4:ea60 Cygnal Integrated Products, Inc. CP2102/CP2109 UART Bridge Controller [CP210x family]
Bus 001 Device 010: ID 0d8c:013c C-Media Electronics, Inc. CM108 Audio Controller
Bus 001 Device 009: ID 0424:2412 Standard Microsystems Corp. 
Bus 001 Device 002: ID 2109:3431 VIA Labs, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
pi@raspberrypi:~ $

The "CP2102/CP2109 UART Bridge Controller" and the "C-Media Electronics, Inc. CM108 Audio Controller" are the serial and sound ports on the Digirig respectively. Linux has built in drivers for both.

pi@raspberrypi:~ $ aplay --list-devices
**** List of PLAYBACK Hardware Devices ****
card 0: b1 [bcm2835 HDMI 1], device 0: bcm2835 HDMI 1 [bcm2835 HDMI 1]
  Subdevices: 4/4
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
card 1: Headphones [bcm2835 Headphones], device 0: bcm2835 Headphones [bcm2835 Headphones]
  Subdevices: 4/4
  Subdevice #0: subdevice #0
  Subdevice #1: subdevice #1
  Subdevice #2: subdevice #2
  Subdevice #3: subdevice #3
card 2: Device [USB PnP Sound Device], device 0: USB Audio [USB Audio]
  Subdevices: 1/1
  Subdevice #0: subdevice #0
pi@raspberrypi:~ $ 

Card 0 is Raspberry Pi sound out over HDMI. Card 1 is the headphone jack. Card 2 is your Digirig.

The serial port has two names: /dev/ttyUSB0 and its actual name in /dev/serial/by-id. The pop-up menu in flrig seems to like by-id.

pi@shackpi:~ $ ls -l /dev/serial/by-id/
total 0
lrwxrwxrwx 1 root root 13 Mar  4 19:46 usb-Silicon_Labs_CP2102N_USB_to_UART_Bridge_Controller_1833892d25afeb11b77e102518997a59-if00-port0 -> ../../ttyUSB0
pi@shackpi:~ $ 

There's more than one way to set things up - WSJT-X claims to be able to talk directly to the rig via Hamlib, but I never had any luck doing that due to some sort of permissions problem. I've always run it with flrig acting as the CI-V shim layer talking to the rig and WSJT-X or fldigi talking to the audio port directly and for communication talking to flrig which then goes ahead and runs the radio.

Do your initial set-up (selecting the rig type etc) with the rig unplugged from the Digirig. There are some unfortunate default choices in FLrig that will result in keying your transmitter nonstop until you figure out what's going on. Also beware that if you switch rig types (perhaps because you are swapping radios around or got it wrong the first time) the CI-V address is sticky and will remain trying to talk to the old radio's address after you switch radio types. You'll want to click the "Default" button next to the "CI-V Address" field in Config->Setup->Transceiver after you change rig types.

All three Icoms I mentioned are happy with open collector and no voltage on RTS for PTT. The 703 will also do PTT over CAT/CI-V, but I couldn't get the others to.

The config panes in flrig should look like this:

flrig xcvr

Note that the PTT pane doesn't get used here - it's for doing PTT on a different serial port than the CI-V/CAT port. flrig xcvr

See all the grayed out fields? Those aren't supported on this radio. flrig poll

Now let's configure WSJT-X. We will configure it to work with flrig but speak directly to the audio drivers. Counterintuitively, when one configures to use flrig as an intermediary by setting the rig type to "FLRIG", one must select CAT for the PTT, regardless of how flrig is configured to pass the commands onward. Makes sense when you think about it; CAT commands can be intercepted by flrig which will then do the right thing whereas a direct poke at the flow control lines on the serial interface can not be.

flrig wsjtx radio

Did you notice how I have "Split Operation" set to "Fake It"? What does this do? Well, there's a sweet spot between 1000 and 1500 KHz where the audio filters in the transmit chain don't do much to your voice. It's most constructive to transmit your narrowband signal in this sweet spot... so if you enable this feature, every time you transmit if your selected signal frequency is outside of this range the rig's tuning will get warped up or down to bring your transmitted signal back into the sweet spot, and then undone at the end of your transmission so when you're receiving you'll be again decoding the whole watering hole.

flrig wsjtx audio

wsjt-x will give you a whole bunch of audio drivers to choose from. You want the ALSA drivers for the USB PnP sound card, set to mono.

Resources and further reading:

WSJT-X Home Page

WSJT-X User Guide

Inexpensive All Mode Remote Operating with a Raspberry Pi, Fldigi/Flrig, WSJT-X, and NoMachine

Gary Hinson's FT8 Operating Guide (local copy)