首页 > 解决方案 > WebUSB 无法在某些 android 设备上声明设备

问题描述

我有一个 PWA 在支持它的设备(基于 Chromium 的桌面浏览器)上使用 Web Serial,在所有其他设备(基本上是 Android)上,我尝试通过web serial polyfill回退到 Web USB 。

这对大多数设备都很有效,但在某些(至少一个)Android 设备上,我无法声明该设备:

NetworkError: Unable to claim interface.

有趣的是,本机应用程序可以毫无问题地声称该设备。有问题的设备是运行 Android 8 的三星 Galaxy A5。

我检查了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 上声明设备?

标签: webusb

解决方案


我相信这是该问题的重复,并且自动分离 Android 上的驱动程序(由 Chromium问题 1099521跟踪)将解决该问题。


推荐阅读