WebUsb productName и ManufacturerName пусты
Я разрабатываю USB-устройство на основе микрочип микроконтроллера. Я могу открыть устройство с помощью webusb, поговорить с ним и все.
Просто поля productName и factoryName являются пустыми строками и во всплывающем окне выбора устройства отображается "Неизвестное устройство от Microchip Technology Inc." вместо того, что фактически возвращается устройством.
Windows правильно перечисляет устройство, читает дескриптор BOS, который содержит дескриптор расширения USB 2.0 (LPM), дескриптор платформы WebUSB и запись MS OS 2.0.
Я использую программное обеспечение USBlyzer для захвата связи USb, и я вижу, что:
- дескриптор BOS правильно выбран
- URL-дескриптор WebUSB правильно выбран
- дескриптор MS OS 2.0 правильно выбран
Windows правильно устанавливает драйвер WinUSB, и устройство работает при открытии из собственного приложения (с использованием libusb). Я также могу прочитать строки названия продукта и производителя с устройства.
Я проверил это под: последний хром, последняя хромовая канарейка, последний хром (из дерева), последняя опера и под всеми этими устройствами устройство отображается как "неизвестное устройство от Microchip Technology Inc." (в основном имя вычитается из VID). Должно быть, я что-то делаю не так, но даже не знаю, с чего начать отслеживать эту проблему.
В "chrome://device-log" я вижу записи типа: "Не удалось отправить передачу: объект не найден", прямо перед тем, как добавлено USB-устройство: vendor=1240 "", product=60944 "", serial="4326", guid=fcc527ca-5c19-45e0-9334-745475ae430d', это не очень полезно.
1 ответ
Как Chrome читает такие строки, как productName
а также manufacturerName
с устройства во время перечисления, как известно, глючит в Windows, потому что он конкурирует с другими частями стека драйверов Windows. В настоящее время внедряется новый бэкэнд для USB под Windows, который решает эту проблему. Эта работа отслеживается в выпуске 637404. Для некоторых типов устройств это уже работает должным образом, и вы можете проверить это, установив chrome://flags#new-usb-backend
чтобы включен.