LINUX.ORG.RU

Различить 2 одинаковых девайса на USB Hub

 ,


0

2

Есть 2 одинаковых девайса подключенных в USB Hub. Как их можно отличить ? Софту нужно точно знать какой из них будет назначен на /dev/ttyUSB0 а какой на /dev/ttyUSB1

root@raspberrypi:/home/pi# lsusb -d 067b:2303
Bus 001 Device 007: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port
Bus 001 Device 008: ID 067b:2303 Prolific Technology, Inc. PL2303 Serial Port

Пробовал по devpath, в /etc/udev/rules.d/50-usb.rules добавил

SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", ATTR{devpath}=="1.2.4", SYMLINK+="usb_rs232_1"
SUBSYSTEM=="tty", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", ATTR{devpath}=="1.2.2", SYMLINK+="usb_rs232_2"

но так не работает, симлинки не создает, если не указать ATTR{devpath}==«1.2.2» то создает один симлинк на рандомный девайс

Линукс - Raspbian

Ответ на: комментарий от false

Спасибо большое за ссылку. Единственное отличие в моем случае это MINOR. Из доки (Minor device numbers distinguish between different devices controlled by the driver.) буду надеятся что он менятся не будет. Но я не могу найти как его заюзать в /etc/udev/rules.d/50-usb.rules Подскажите, пожалуйста

aslubsky
() автор топика

Ты правильно считаешь, что надо привязываться к топологии, но, ИМХО, выбрал неправильные devpath. Посмотри имя устройства в выводе udev monitor.

И да, udev пишут криворукие дебилы на тяжелых наркотиках, так что очень внимательно читай man udev.

tailgunner ★★★★★
()
Ответ на: комментарий от false

Серийников не нашел, вот что udevadm monitor --property выдал:

UDEV  [3999.451012] add      /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB1/tty/ttyUSB1 (tty)
ACTION=add
DEVLINKS=/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2.4:1.0-port0
DEVNAME=/dev/ttyUSB1
DEVPATH=/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.4/1-1.2.4:1.0/ttyUSB1/tty/ttyUSB1
ID_BUS=usb
ID_MODEL=USB-Serial_Controller
ID_MODEL_ENC=USB-Serial\x20Controller
ID_MODEL_FROM_DATABASE=PL2303 Serial Port
ID_MODEL_ID=2303
ID_PATH=platform-bcm2708_usb-usb-0:1.2.4:1.0
ID_PATH_TAG=platform-bcm2708_usb-usb-0_1_2_4_1_0
ID_REVISION=0300
ID_SERIAL=Prolific_Technology_Inc._USB-Serial_Controller
ID_TYPE=generic
ID_USB_DRIVER=pl2303
ID_USB_INTERFACES=:ff0000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Prolific_Technology_Inc.
ID_VENDOR_ENC=Prolific\x20Technology\x20Inc.
ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc.
ID_VENDOR_ID=067b
MAJOR=188
MINOR=1
SEQNUM=877
SUBSYSTEM=tty
UDEV_LOG=3
USEC_INITIALIZED=3999449847

и

UDEV  [4180.201973] add      /devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.0/ttyUSB0/tty/ttyUSB0 (tty)
ACTION=add
DEVLINKS=/dev/serial/by-id/usb-Prolific_Technology_Inc._USB-Serial_Controller-if00-port0 /dev/serial/by-path/platform-bcm2708_usb-usb-0:1.2.2:1.0-port0
DEVNAME=/dev/ttyUSB0
DEVPATH=/devices/platform/bcm2708_usb/usb1/1-1/1-1.2/1-1.2.2/1-1.2.2:1.0/ttyUSB0/tty/ttyUSB0
ID_BUS=usb
ID_MODEL=USB-Serial_Controller
ID_MODEL_ENC=USB-Serial\x20Controller
ID_MODEL_FROM_DATABASE=PL2303 Serial Port
ID_MODEL_ID=2303
ID_PATH=platform-bcm2708_usb-usb-0:1.2.2:1.0
ID_PATH_TAG=platform-bcm2708_usb-usb-0_1_2_2_1_0
ID_REVISION=0300
ID_SERIAL=Prolific_Technology_Inc._USB-Serial_Controller
ID_TYPE=generic
ID_USB_DRIVER=pl2303
ID_USB_INTERFACES=:ff0000:
ID_USB_INTERFACE_NUM=00
ID_VENDOR=Prolific_Technology_Inc.
ID_VENDOR_ENC=Prolific\x20Technology\x20Inc.
ID_VENDOR_FROM_DATABASE=Prolific Technology, Inc.
ID_VENDOR_ID=067b
MAJOR=188
MINOR=0
SEQNUM=893
SUBSYSTEM=tty
UDEV_LOG=3
USEC_INITIALIZED=4180200909
aslubsky
() автор топика

Таки да, через топологию. Иначе никак, серийников нет ((

KERNEL=="ttyUSB*", KERNELS=="1-1.2.2", SYMLINK+="usb_rs232_1"
KERNEL=="ttyUSB*", KERNELS=="1-1.2.4", SYMLINK+="usb_rs232_2"

aslubsky
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.