【发布时间】:2017-04-21 04:19:44
【问题描述】:
使用navigator.usb.requestDevice 获得对附加设备的访问权限后,我正尝试打开与附加设备的连接,如下所示:
device.open()
.then(() => device.selectConfiguration(1))
.then(() => device.claimInterface(1))
看似成功选择了配置,但是claimInterface这一步会产生如下错误:
DOMException: Unable to claim interface.
我在 Ubuntu 16.10 上以 root 身份运行带有 --disable-webusb-security 标志的 Chrome 55.0.2883.75 测试版(没有那些我没有获得任何设备)。
我怎样才能建立并运行连接?
编辑:
似乎 cdc_acm 驱动程序已经声明了该接口,因为我尝试附加的设备是一个串行设备,卸载驱动程序将允许您声明该设备(但是在此之后它抱怨接口 1 不可用,因为以及 0 或 2)。
【问题讨论】:
-
由于此设备有多个接口,我们应该确保您声明正确的接口。请为您的设备包含
lsusb -v的输出,其中将列出完整的设备描述符。 USB CDC 设备确实很难与 WebUSB 一起使用,因为加载了现有的驱动程序,但是强制卸载驱动程序应该释放接口。当您收到“无法声明接口”之类的错误时,Chrome 可能会在 chrome://device-log 中提供有关该错误的更多详细信息。
标签: javascript google-chrome chromium webusb