В Linux есть свои прелести. Например, удобная команда lsusb, которая упрощает жизнь при отладке контроллера с USB интерфейсом. Но не все так просто.
Чтобы подключить наше устройство нужно сделать следующее:
В файле /etc/udev/rules.d создать файл 88-mydevice.rules
1 2 |
SUBSYSTEMS=="usb", ATTRS{idVendor}=="0439", ATTRS{idProduct}=="0f1a", MODE="666" SUBSYSTEMS=="hidraw*", ATTRS{idVendor}=="0439", ATTRS{idProduct}=="0f1a", MODE="666" |
Перезагрузить правила
1 |
# udevadm control --reload-rules |
При попытке просмотра того, что у нас получилось с помощью lsusb мы получим такую вот проблему:
Report Descriptors:
** UNAVAILABLE **

Данные дескриптора репорта нам недоступны. При этом надо заметить, что само по себе устройство успешно работает.
Запускаем dmesg
Получаем примерно такое:
1 |
iddev0,hidraw2: USB HID v1.11 Device [STMicroelectronics STM32 Custom Human interface] on usb-0000:00:1d.0-1.7/input0 |
Запускаем команду
1 |
sudo bash -c "echo -n 2-1.7:1.0 >/sys/bus/usb/drivers/usbhid/unbind" |
Где указываем адрес нашего устройства, полученный из dmesg
Теперь все показывается.

Если мы опишем дескриптор репорта с ошибками, в dmesg это будет видно.