LINUX.ORG.RU

Как получить имя serial USB устройства, зная его VID и PID?

 , ,


0

1

Есть USB CDC девайс, который создаёт девноды /dev/ttyACMxx. Как канонично определять имя созданного девайса, зная VID и PID?

Я так понимаю, нужно лезть в /sys и там где-то шариться

★★★★★

Как вариант через netlink ловить события. Стоп, а тебе для чего? В скрипт?

false ★★★★★
()
Последнее исправление: false (всего исправлений: 1)

Можно использовать libusb. http://stackoverflow.com/questions/14279796/linux-libusb-get-usb-device-path

Можно написать правило udev, которое будет куда-то сохранять информацию о найденных девайсах с такими VID:PID.

Можно посмотреть исходники QSerialPort. Он умеет находить все доступные последовательные порты (как USB-переходники, так и аппаратные) и возвращать различную информацию о них. В том числе VID:PID, если речь идёт о USB-порте. Так что там должен быть нужный код. Если же проект допускает использование Qt, то можно просто воспользоваться этой библиотекой.

KivApple ★★★★★
()
lsusb -d [vendor]:[product]
              Show only devices with the specified vendor and product ID.  Both ID's are given in hexadecimal.
aido ★★
()
Ответ на: комментарий от alx777

Может правила для udev лучше написать чтобы сразу нужные симлинки создались ?

и на все компы их прописать ? конечно это проще )

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

и на все компы их прописать ? конечно это проще )

Ну так в постановке задачи нет ничего о том что это должно работать на произвольном компе с Линуксом

А то вдруг там нету libusb ? Или поддержка USB в ядре отключена ?

Во многих случаях правила для udev вполне себе решение, особенно когда надо привязываться по серийному номеру или номеру порта

alx777 ★★
()
for d in /dev/ttyACM*; do
    udevadm info --query=path $d; 
done | sed -rn 's|.*:([0-9A-F]{4}:[0-9A-F]{4}).*?(/ttyACM.*?$)|\1 is \2|p' \
| grep $VID:$PID

try this

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