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.
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
--
Saku
OH1KH
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
usb-Silicon_Labs_CP2102_USB_to_UART_Bridge_Controller_IC-7300_03011067-if00-port0
usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00E3DAB0-if00-port0
usb-Silicon_Labs_CP2105_Dual_USB_to_UART_Bridge_Controller_00E3DAB0-if01-port0
bas@workstation:~/Bureaublad$
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.
Bas.
Greetings, Bas. ON5HB
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!)
--
Saku
OH1KH
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
ID_SERIAL_SHORT=IC-7300_03011034
ID_VENDOR_ID=10c4
ID_MODEL_ID=ea60
SUBSYSTEM=="tty", SUBSYSTEMS=="usb", ATTRS{idVendor}=="10c4", ATTRS{idProduct}=="ea60", ATTRS{serial}=="IC-7300_03011034", SYMLINK+="icom"
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 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"
Took me some fiddling and playing with the fields too.
Glad you got it working.
Greetings, Bas. ON5HB
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:
SYMLINK+="ttyICOM"
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
To make it simple for others, my rules are like this:
SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="usb",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea60",SYMLINK+="ttyICOM"
SUBSYSTEM=="tty",SUBSYSTEMS=="usb",DRIVERS=="usb",ATTRS{idVendor}=="10c4",ATTRS{idProduct}=="ea70",SYMLINK+="ttyYEASU"
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
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
Thank you Bas, for the hint
73