1

我似乎无法使用 webusb 声明隐藏接口。我正在尝试编写一个 yubikey OATH 包装器

navigator.usb.requestDevice({filters: filters}).then(...);

USBDevice {usbVersionMajor: 2, usbVersionMinor: 0, usbVersionSubminor: 0, deviceClass: 0, deviceSubclass: 0, …}configuration: USBConfiguration {configurationValue: 1, configurationName: null, interfaces: Array(2)}configurations: [USBConfiguration]deviceClass: 0deviceProtocol: 0deviceSubclass: 0deviceVersionMajor: 3deviceVersionMinor: 4deviceVersionSubminor: 9manufacturerName: "Yubico"opened: falseproductId: 273productName: "Yubikey NEO OTP+CCID"serialNumber: "0005610818"usbVersionMajor: 2usbVersionMinor: 0usbVersionSubminor: 0usbVersionSubminor: 0usbVersionSubminor: 0usbVersionSubminor__proto__: 0vend USBDevice: 0vend现在 USBDevice {usbVersionMajor: 2, usbVersionMinor: 0, usbVersionSubminor: 0, deviceClass: 0, deviceSubclass: 0, ...}

ykey.open(...).then(...);
ykey.claimInterface(0)

Promise {[[PromiseStatus]]: "pending", [[PromiseValue]]: undefined} Uncaught (in promise) DOMException: Unable to claim interface。

我怀疑这是与 chrome.usb api 类似的问题。我是否应该编写一个 udev 规则以不使用该设备上的 usbhid 驱动程序来完成这项工作?

4

1 回答 1

1

Reilly在一次 IRC 对话中提到

不得加载 HID 驱动程序,因此可以使用 udev 规则。

限制来自操作系统,因为当加载 HID 驱动程序时,该接口被“声明”,因此 Chrome 不能为自己声明它。

于 2017-08-15T21:11:08.207 回答