Значение пути к USB-устройству Linux? (нужно различать USB-последовательные преобразователи)

#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, которая является согласованной, независимо от того, в каком порядке подключены вещи.