Есть ли способ получить узел устройства USB-устройства с помощью API-интерфейсов libusb?

Я пытаюсь получить узел устройства (например, /dev/sdb) USB-устройства.

Мне было интересно, есть ли какой-либо API-интерфейс libusb, который дал бы мне конкретный узел устройства, с которым связано USB-устройство.

Если нет API, есть ли другие альтернативные способы достижения этого? Любое понимание этого окажется ДЕЙСТВИТЕЛЬНО полезным.

Заранее спасибо.


person Prashanth    schedule 30.10.2012    source источник


Ответы (1)


В Linux самый простой способ изучить подключенные USB-устройства и их свойства — просто просканировать каталог /sys/bus/usb/devices. В этом виртуальном каталоге перечислены все подключенные устройства. Каждая запись имеет очень простую структуру, и для каждого устройства, к которому подключено подчиненное устройство (например, устройство, подключенное через концентратор), существует виртуальный подкаталог. Что также приятно, в целом вам не нужно быть root, чтобы прочитать множество свойств устройства, таких как производитель или серийный номер.

Еще одним очень хорошим свойством этого интерфейса является его полустабильность. То есть каждое устройство имеет уникальный идентификатор вида a-b.c.d.e:x.y (a - номер шины, b,c - корневой концентратор, следующий концентратор, порт и т.д., x,y - функция, подфункция), и это перечисление устройств не будет резко сдвиг для всех устройств, если одно устройство подключено или отключено.

Вы также можете легко сопоставить эти идентификаторы устройств с номерами шин/устройств в стиле libusb (но они нестабильны).

К сожалению, это специфично для Linux и, похоже, недоступно для других операционных систем. Я бы хотел, чтобы libusb реализовал что-то подобное, но это не так. В любом случае, удачи!

person mvp    schedule 30.10.2012