#linux #serial-port #usb #udev
#linux #последовательный порт #usb #udev
Вопрос:
У меня есть несколько USB-последовательных преобразователей (Prolific), подключенных к USB-концентратору. Я не могу найти никакой информации udev, которая позволила бы мне различать эти преобразователи в зависимости от физического порта, к которому они подключены.
Я надеюсь, что путь к устройству может дать мне эту информацию…
/devices/pci0000:00/0000:00:0f.5/usb1/1-3/1-3.1/1-3.1:1.0/ttyUSB0
… но я не смог найти никакой документации, объясняющей значение чисел (надеюсь, одно из них точно идентифицирует физический порт). Может кто-нибудь объяснить эти цифры и сказать мне, позволяют ли они мне четко идентифицировать физический порт?
Ответ №1:
Я не эксперт в этой области, но это моя интерпретация этих цифр:
pci0000:00
: Это ваш контроллер PCI.0000:00:0f.5
: Это идентификатор PCI вашего USB-контроллера.usb1
: Сам USB-контроллер.1-3
: Идентификатор USB-концентратора. Это может быть внутренний концентратор, или он может отсутствовать.1-3.1
: Устройство подключено к первому порту этого концентратора.1-3.1:1.0
: Конфигурация # 1, интерфейс # 0 на этом устройстве.
Итак, я предполагаю, что физический порт идентифицируется с помощью 1-3.1, то есть строки слева от двоеточия в последней части пути к устройству.
У меня нет концентратора, но я бы поспорил, что если вы подключите его через концентратор, вы получите что-то вроде:
/devices/pci0000:00/0000:00:0f.5/usb1/1-3/1-3.1/1-3.1.1/1-3.1.1:1.0/ttyUSB0
Физическим портом будет 1-3.1.1
, и этот последний 1 будет портом, используемым в этом концентраторе.
Комментарии:
1. Это опечатка в последнем предложении? Не так ли
1-3.1
?2. Нет, это было мое предположение, если вы добавите USB-концентратор посередине. 1-3.1 будет сам концентратор, 1-3.1.1 устройство, подключенное к первому слоту концентратора, 1-3.1.2 ко второму и т. Д. Но я не проверял это, поэтому я могу ошибаться.
Ответ №2:
Этот сайт: http://hackaday.com/2009/09/18/how-to-write-udev-rules / ссылается на команду: udevadm info -a -p $(udevadm info -q path -n /dev/ttyUSB0) (хорошо, это немного по-другому, но эта команда работает)
который сообщает нам такую информацию:
KERNELS=="3-1"
SUBSYSTEMS=="usb"
DRIVERS=="usb"
Я использовал эту информацию в прошлом, чтобы составить правило, подобное этому:
KERNELS=="3-1", SUBSYSTEMS=="usb", DRIVERS=="usb", SYMLINK ="USBPORT1"
Таким образом, каждый раз, когда устройство подключается к usb-порту 1, оно создает simlink в папке / dev, которая является согласованной, независимо от того, в каком порядке подключены вещи.