TIP: How to stop CQRlog from switching rig-control when USB-tty chips are the same.

14 posts / 0 new
Last post
on5hb's picture
TIP: How to stop CQRlog from switching rig-control when USB-tty chips are the same.

Hi there,

I have been fighting 2 tranceivers, the Icom IC-7300 and the Yeasu FT991A, they use the same USB-UART and as such they switch /dev/ttyUSBx all the time.

So create a file like this; nano /etc/udev/rules.d/40-ttyusb.rules

SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="IC-7300 03011067", SYMLINK+="icom"
SUBSYSTEM=="tty", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea70", ATTRS{serial}=="00E3DAB0", SYMLINK+="yeasu"

Insert something like above and you find the exact parameters with this command:

udevadm info --name=/dev/ttyUSB0

It will show you:

ID_SERIAL_SHORT=IC-7300_03011067 => {serial}
ID_VENDOR_ID=10c4 => {idVendor}
ID_MODEL_ID=ea60 => {idProduct}

As seen above, the symbolic link is made like /dev/icom and that is what you put in rt/tx control instead of /dev/ttyUSB0

No matter when, where or later you plug the radio, it will know the device and create the symlink.

You can see it being created buy running: ls /dev/*

It should show the symlink name, in my case icom and yeasu. If it doesn't show them, reboot and check again.

Hopefully it helps others as I was gowing nuts over switching tranceivers :-)

Bas - ON5HB.

TIP: How to stop CQRlog from switching rig-control when USB-tty

Thanks for info, Bas!

Udev symlink is the "good old way" to separate devices and catch them no matter to what port they are plugged.
I have symlink /dev/icom7300 for my rig.

If you use new Hamlib (4.0 or up) you can also use long device names.
You will find them from /dev/serial/by-id
My icom shows up there as /dev/serial/by-id/usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_IC-7300_03003483-if00-port0

That does not need any symlinking to separate devices from /dev/serial/by-id


on5hb's picture
If I take your way of doing

If I take your way of doing it.....it shows...

Hi Saku,

Well it presents the same problem, my devices list as:

bas@workstation:~/Bureaublad$ ls /dev/serial/by-id

How do you know what is what? This is 2 tranceivers. But they list as 3.....

I find my way better, as you can also backup the rule and it works again.


Greetings, Bas. ON5HB

TIP: How to stop CQRlog from switching rig-control when USB-tty

Hi Bas!
Form your listing you can clearly see what is icom rig. Bridge controller is different type (CP2102) and it even identifies itself as IC-7300.

With Yaesu you should consult your rig manual to see what are the two ports there. As you can see there are interface 1 (if00) and interface 2 (if01).
With quick Googling it seems that first port (-if00-) could be the CAT port. What is he other port should be found from manual.

So the main purpose, to clear out what port belongs to what rig can be very easily seen. Just like with symlinking, but without doing any changes to linux udev setup and without need of backup that.

But if you see symlinking easier to understand and use so do it.

I also use symlinking but it is from so far from past that there were not /dev/serial/by-in change and I have been too lazy to change that. (Do not touch working system!)


TIP: How to stop CQRlog from switching rig-control when USB-tty

Hi Bas
I have the same problem, and following your post I create a rule in /etc/udev/rules.d/40-ttyusb.rules.
Running ls /dev/* it don't show the symlink name.
By adding in rule the SUBSYSTEMS=="usb", now it show the symlink name icom.
in Preferences I change the /dev/ttyUSB0 to /dev/icom , but it don't connect with my IC-7300...
Any idea?
Thank you
73 de Raz IU1HCC


SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="IC-7300_03011034", SYMLINK+="icom"

on5hb's picture
I didn't need to add the

I didn't need to add the subsystem.
Did you powerdown everything and then boot the PC and after connect the 7300?
As this rules stuff can be a bit weird. Don't forget that the 7300 keeps usb-connected when 12V is supplied to the set.

Greetings, Bas. ON5HB

yes, reboot and power off the

yes, reboot and power off the radio...
After reading on internet, found that is working for me...
Thank you Bas for fast reply

SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="IC-7300 03011034", SYMLINK+="icom"

on5hb's picture
Took me some fiddling and

Took me some fiddling and playing with the fields too.
Glad you got it working.

Greetings, Bas. ON5HB

on5hb's picture
I still had problems, it

I still had problems, it wouldn't always work.
It turns out Linux is a bit stupid at this....

If you make it like this:


It works all the time, it seems that it MUST start with tty else it's not seen properly.

After I made every tranceiver start with ttyXXXXX it worked every single time and trouble free.

Greetings, Bas. ON5HB


Hi Bas
and thank you
me too had some problems , but not all the time...
your solution is working very good
Best 73 de Raz IU1HCC

on5hb's picture
To make it simple for others,

To make it simple for others, my rules are like this:


Works fine. Of course if you have multiple same brand devices you need to add the serial-number as well.

Greetings, Bas. ON5HB


Nice work Bas, thank you
in my case, don't ask why, is working ONLY like this...
SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="usb",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60",ATTRS{serial}=="IC-7300 03011034",SYMLINK+="ttyICOM"

SUBSYSTEM=="tty",ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea70",ATTRS{serial}=="AAK21X5E230063",SYMLINK+="ttyYAESU"
seems is more stable now with "ttyYAESU" and "ttyICOM"

TNX, 73 de IU1HCC

on5hb's picture
I did rename the rules from

I did rename the rules from 40 to 99, that seems to help also.
Maybe they were initiated too soon as well.

So far it didn't fail at all.

Greetings, Bas. ON5HB

I did rename the rules

Thank you Bas, for the hint