У меня есть проприетарное USB-устройство с функцией перепрошивки через USB. Я хотел бы воспроизвести эту функцию мигания из браузера, но я не уверен, какой API использовать.
Посещение chrome://usb-internals/
для проверки моего устройства дает мне следующую информацию:
Устройство рекламирует себя с кодом класса 8: запоминающее устройство большой емкости. Устройство не отображается в моей файловой системе, например это не обычный USB-накопитель. Согласно этому ответу StackOverflow, WebUSB заблокирован для доступа к запоминающим устройствам из соображений безопасности, и вместо этого я должен использовать WebHID.
Однако использование WebHID по-прежнему не позволяло мне подключиться к моему устройству. Это пример кода, который я использовал:
const filter = [
{
vendorId: 0xabcd, // correct VID:PID obtained via lsusb
productId: 0x1234
}
];
const [device] = await navigator.hid.requestDevice({ filter });
Кроме того, посещение chrome://device-log/
имеет четкое различие между USB- и HID-устройствами. Когда я, например, подключаю мышь, журнал устройства Chrome показывает, что подключено USB HID-устройство. Когда я подключаю USB-накопитель, я получаю две строки в журнале отладки: одно HID-устройство, одно запоминающее устройство. Когда я подключаю свой собственный диск, я получаю одну строку: USB Mass Storage device.
Как мне убедить WebHID подключиться к моему проприетарному запоминающему устройству?