У меня есть PWA, использующий Web Serial на тех устройствах, где он поддерживается (настольные браузеры на основе Chromium), на всех остальных устройствах (в основном Android) я пытаюсь вернуться к Web USB через последовательный веб-полифилл.
Это отлично работает для большинства устройств, но на некоторых (по крайней мере, на одном) устройствах Android я не могу заявить права на устройство:
NetworkError: Unable to claim interface.
Интересно то, что нативные приложения могут без проблем претендовать на это устройство. Речь идет о Samsung Galaxy A5 под управлением Android 8.
Проверил chrome://device-log/
там все нормально:
[20:49:05] USB device added: id=1005 vendor=1155 "Betaflight", product=22336 "Betaflight STM32F411", serial="0x8000000", guid=9fa08f79-df5e-45bd-b757-c32ab1065bf9
[20:42:42] USB device removed: id=1004 guid=175af943-14ed-4591-a85b-b916a3a5584e
[20:40:42] USB device added: id=1004 vendor=1155 "Betaflight", product=22336 "Betaflight STM32F411", serial="0x8000000", guid=175af943-14ed-4591-a85b-b916a3a5584e
Затем я проверил с помощью этого инструмента https://larsgk.github.io/webusb-tester/ и подтверждает, что есть два интерфейса и ни один из них не заявлен:
2: Betaflight STM32F411 - VID: 0x0483, PID: 0x5740, S/N: 0x8000000
Interface 0 claimed: false
Interface 1 claimed: false
К сожалению или к счастью я не смог найти ни одного другого устройства, где это происходит, но раз это происходит на одном устройстве, то будет происходить и на других устройствах.
Я не совсем понимаю, что происходит, тем более, что родные приложения могут претендовать на устройство.
Единственная связанная с этим проблема, которую я смог найти с идентификатором этот - и, насколько я вижу, есть не совсем похоже на решение, если я правильно понял.
Есть ли способ увидеть, что утверждает устройство на Android? Есть ли что-нибудь, что я могу сделать, чтобы принудительно заявить права на устройство на Android?