RIGblaster duo will not plug and play on Ubuntu 20.04.3 LTS


Environment:

Laptop – Juno Nyx 15” AMD v2, 16GB memory, 512GB SSD
Operating System - Ubuntu 20.04.3 LTS
Software - WSJT-X v2.5.4
Hardware - RIGblaster duo


Setup:

Using a RIGblaster duo connected to a YAESU FT-100D and Kenwood TS-690S with receive audio going into the RIGblaster then out to mic input of a USB soundcard adapter plugged into the Laptop. RIGblaster USB cord is going to the Laptop for PTT control only. I am not using full rig control to the radios.


Background:

The setup was working fine for years with a older laptop running Windows 10. That laptop became so slow it was unbearable. So I opted to go with a new laptop running Linux preinstalled by Juno Computers. Hardware that Ubuntu just found and made work upon plugging in: Canon wireless printer, Logitech wireless mouse, HDMI port to 2nd display, and a USB sound card interface – all good!


Problem:

The RIGblaster duo was also “found” when plugging in the USB cable to the laptop. It can “hear” received audio from the radios via the USB Soundcard interface mic input. WSJT-X needs to have a serial com port configured to allow the PTT function over the USB port to the RIGblaster duo so it can then control PTT through the radios mic input.

I was able to see the RIGblaster duo connected to USB:
Code:
 $ lsusb
 Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 003 Device 003: ID 5986:9102 Acer, Inc BisonCam,NB Pro
 Bus 003 Device 002: ID 8087:0029 Intel Corp.  
 Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
 Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
 Bus 001 Device 003: ID 0c76:120b JMTek, LLC. Plugable USB Audio Device
 Bus 001 Device 002: ID 0403:b338 Future Technology Devices International, Ltd RIGblaster Duo
 Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Now I attempt to look for com ports associated to this USB, but this is all I see:
Code:
$ dmesg | grep tty

 [    0.097886] printk: console [tty0] enabled
Maybe the FTDI driver is not installed? So I issue the following commands and it does find it:
Code:
 $ dmesg | grep -i ftdi
[10141.816157] usbcore: registered new interface driver ftdi_sio
[10141.816167] usbserial: USB Serial support registered for FTDI USB Serial Device
Check if the FTDI driver is pre-compiled as dynamically-loadable kernel modules.
You should see an ftdi_sio (Serial I/O) module (and we do) with the command:
Code:
 $ find /lib/modules | grep -i ftdi
/lib/modules/5.14.0-1011-oem/kernel/drivers/usb/misc/ftdi-elan.ko
/lib/modules/5.14.0-1011-oem/kernel/drivers/usb/serial/ftdi_sio.ko
/lib/modules/5.13.0-27-generic/kernel/drivers/usb/misc/ftdi-elan.ko
/lib/modules/5.13.0-27-generic/kernel/drivers/usb/serial/ftdi_sio.ko
/lib/modules/5.14.0-1020-oem/kernel/drivers/usb/misc/ftdi-elan.ko
/lib/modules/5.14.0-1020-oem/kernel/drivers/usb/serial/ftdi_sio.ko
Check to see if the FTDI module has been dynamically loaded into the running kernel (and it is), by using the command:
Code:
$ lsmod | grep -i ftdi
ftdi_sio 61440 0
usbserial 57344 1 ftdi_sio
With all that in place, the FTDI driver should have created a tty device. Checking with the following command we do not see one:
Code:
$ ls -l /dev/ttyUSB*

 ls: cannot access '/dev/ttyUSB*': No such file or directory

Root Cause:

At this point I reached out for help from Tech Support at West Mountain Radio, the manufacturer of the RIGblaster duo. Here was their response:

My best guess is that the RIGblaster hardware id isn't listed in the current ftdi driver.”

Looking at the source code for the current ftdi linux driver, specifically the file ftdi_sio_ids.h (see https://github.com/torvalds/linux/blob/master/drivers/usb/serial/ftdi_sio_ids.h) It has no definition for a product_id pid=0xb338, so that is surely the cause of the problem, i.e. the USB product_id for the RigBlaster Duo is not known to the built-in ftdi serial-I/O driver in Linux.


Solution:

Now knowing what the actual cause of the problem is, an internet search produced the following forum post:
https://unix.stackexchange.com/questions/67936/attaching-usb-serial-device-with-custom-pid-to-ttyusb0-on-embedded

Their solution to dynamically add the product_id to the running kernel worked! Here is the sequence:

1) Unplug the device
2) issue commands:

Code:
$ modprobe ftdi_sio
$ echo 0403 b338 >/sys/bus/usb-serial/drivers/ftdi_sio/new_id
4) Plug in the device


Farther down in that same forum post is a way to make it happen automatically at boot time which also worked:

Add the following single line to /etc/udev/rules.d/99-ftdi.rules
Code:
ACTION=="add", ATTRS{idVendor}=="0403", ATTRS{idProduct}=="b338", RUN+="/sbin/modprobe ftdi_sio" RUN+="/bin/sh -c 'echo 0403 b338 > /sys/bus/usb-serial/drivers/ftdi_sio/new_id'"


If the file does not exist, create a empty file with this command:
Code:
 
$sudo touch /etc/udev/rules.d/99-ftdi.rules
Once the file exists, you can edit it with the following command:
Code:
$ gedit admin:///etc/udev/rules.d/99-ftdi.rules
Note: It would be best to cut and paste the above into the file to avoid a typo. Additionally, if your device is not the RIGblaster duo, you will need to substitute the values of 0403 and b338 as found with issuing the command previously listed above ($lsusb)

Save the edited file and reboot.

The RIGblaster duo should now have a ttyUSB* associated with it that can be configured in WSJT-X. In my case it was ttyUSB0.


Reverting Changes:

If this solution does not work for your problem and the 99-ftdi.rules file was newly created by you in solution section above, simply issue the following commands and reboot:
Code:
$cd /etc/udev/rules.d
$sudo rm 99-ftdi.rules
If the 99-ftdi.rules file previously existed you will need to edit it and remove the pasted line you previously added leaving all previous file contents in place and reboot.


Credits:

Many thanks to the following sources!

QRZ.com Forum - click here to view post
eham.net Forum - click here to view post
unix.stackexchange.com Forum – see link above in Solution section
David Nessl, W1DRN – Linux commands, ftdi driver source code troubleshooting and suggestions
Sholto Fisher, K7TMG - Tech Support at West Mountain Radio


Thanks,
Rick/WX9M