Проверьте идентификатор USB-устройства и подключенный порт из приложения C - PullRequest
0 голосов
/ 17 июня 2020

Мне нужно иметь возможность идентифицировать подключенное USB-устройство (USB3 и / или USB2) и к какому порту подключен концентратор из программы C. Я работаю над встроенной системой Linux на основе Yocto.

Я могу получить эту информацию из командной строки с помощью lsusb. Например, я подключил две USB-камеры, одну USB3 и другую USB2, и если я запустил lsusb -t, я могу увидеть дерево подключений портов:

/:  Bus 02.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 5000M
    |__ Port 1: Dev 3, If 0, Class=Hub, Driver=hub/4p, 5000M
        |__ Port 4: Dev 6, If 0, Class=Miscellaneous Device, Driver=, 5000M
/:  Bus 01.Port 1: Dev 1, Class=root_hub, Driver=xhci-hcd/1p, 480M
    |__ Port 1: Dev 2, If 0, Class=Hub, Driver=hub/4p, 480M
        |__ Port 3: Dev 3, If 0, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 3, If 1, Class=Video, Driver=uvcvideo, 480M
        |__ Port 3: Dev 3, If 2, Class=Human Interface Device, Driver=usbhid, 480M

Благодаря этому я легко знаю, что камера USB3 подключен к порту 4, а USB2 - к порту 3 (с помощью 4-портового концентратора). Если я запустил только lsusb, получил идентификаторы и имена:

Bus 002 Device 006: ID 20f7:3001 USB3 Camera with CMOS sensor [MQ]
Bus 001 Device 003: ID 0403:de37 Future Technology Devices International, Ltd
Bus 001 Device 002: ID 04b4:650a Cypress Semiconductor Corp.
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 003: ID 04b4:6508 Cypress Semiconductor Corp.
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub

Как я могу легко просканировать порты концентратора и посмотреть, какое устройство (имя или идентификатор) подключено, где (номер порта концентратора) из C application?

Прошу прощения, если где-то уже есть ответ, но я не смог найти конкретный c ответ.

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

1 Ответ

0 голосов
/ 23 июня 2020

Как указано, ответ - libusb, и я нашел полный ответ с примером в этом вопросе .

Также API для libusb определен здесь .

...