У меня есть USB-HID-устройство, которое может работать в двух разных режимах. Выбор режимов основан на последовательности отправленных ему пакетов перечисления/инициализации USB.Как я могу запретить Linux инициализировать USB HID-устройство
Я использую Raspberry Pi 3, работающий на Raspbian, однако я также вижу ту же проблему, если я скомпилирую свой код для своего настольного дистрибутива Ubuntu.
Проблема заключается в том, что Linux распознает устройство USB как устройство HID и затем отправляет последовательность команд, которые он считает необходимыми для запуска устройства, и это работает правильно и запускает устройство в «режиме 1».
Однако мне нужно запустить устройство в «режиме 2», и для этого мне нужно отправить несколько другой набор команд перечисления/инициализации.
Я новичок в Linux, но очень опытен с LibUSB и LibUSBDotNet под окнами и могу получить поведение, которое я желаю под окнами.
Windows имеет аналогичное поведение с Linux, поскольку оно будет перечислять, распознавать устройство как устройство USB HID и затем инициализировать его по своему усмотрению, в результате чего устройство переходит в «Режим 1». Чтобы предотвратить появление окон, я могу создать драйвер фильтра LibUSB для устройства, который затем заменяет драйвер по умолчанию, поэтому теперь окна будут выполнять начальное перечисление, поймут, что VID и PID устройства управляются драйвером фильтра LibUSB (скорее чем драйвер HID Windows), а затем прекратить перечисление/инициализацию - это позволяет моему коду взять на себя и завершить инициализацию в «Режим 2».
Как я могу остановить Linux от полного перечисления/инициализации этого устройства (как в случае с окнами). Возможно, мне нужно что-то сделать с правилами udev или чем-то еще, но я бы понятия не имел, как я новичок в Linux.
Любая помощь очень ценится
ли отсоединение от ядра и делать свою собственную магию, чтобы опоздать на смену режима 2? – dryman