I have two different USB devices based on the same USB-RS232 chips.
When I plug those in the USB they are mounted to /dev/ttyUSB0…3
My problem is how, inside a script, I can find out which one is on what tty?
Using lsusb I can differentiate them:
$> lsusb | grep 0403:f850
Bus 004 Device 002: ID 0403:f850 Future Technology Devices International, Ltd
$> lsusb | grep 0403:6001
Bus 004 Device 003: ID 0403:6001 Future Technology Devices International, Ltd FT232 USB-Serial (UART) IC
And using dmesg I can tell where they were mounted:
$> dmesg | grep 'FTDI USB Serial Device converter now attached'
[36051.393350] usb 4-2: FTDI USB Serial Device converter now attached to ttyUSB1
[36061.823513] usb 4-1: FTDI USB Serial Device converter now attached to ttyUSB0
But "usb 4-1" does not seem to correspond to "Bus 004 Device 002".
Can I assume that "Bus 004 Device 001" will always be an "USB root hub" and thus dmesg will count from 1 onwards and lsusb from 2 onwards?
Or do you have another suggestion on how to correlate device ID to mount point (inside a script)?
I'm using Ubuntu 10.04 LTS.
Best Answer
Find more info using sysfs:
Of course, the linked devices/... node contains a lot of information
Adding information based on the OP's comment:
The device number keeps growing if devices are removed/inserted.
lsusb -t
can be used to correlate the device numbers with usb bus/port.Then, 'lsusb -d devID' can determine what device is on which port. Finally 'ls /sys/bus/usb-serial/devices/ -ltrah' will list (by bus/port) where it was mounted.
Not very convenient, but it 'works'