我正在尝试使用WebUS,或更准确地说,通过使用DART(Angular DART)编写的网页访问USB设备。
在摆弄了一下后,我在Windows 10台式电脑上使用Chrome V63获得了基本概念。它允许我向USB端点发送和接收数据。到现在为止还挺好 :-)
但是,在运行Chrome版本63的(Samsung 500C)Chromebook上尝试使用相同的网址时,如果调用USBdevice.open()
时会出现问题,我会收到“未捕获的DOMException:拒绝访问”异常。
在调试器中,查看USB设备属性,opened: false
和接口claimed: false
表示没有其他人正在使用USB适配器。
再看看,device_event_log
下的Chrome://系统显示了USB EVENT: usb_device_linux.cc:99 Permission broker failed to open the device: org.freedesktop.DBus.Error.Failed: permission_broker/permission_denied:Permission to open '/dev/bus/001/032' denied (2)
欢迎任何建议。
Chrome操作系统permission_broker将访问控制规则应用于可能不适用于其他平台的USB设备。这些规则的目的是阻止Chrome应用程序(使用chrome.usb API)或网站(使用WebUSB API)访问对系统很重要的USB设备。
检查是否允许设备访问请求时通过或失败的规则将记录到系统日志中,该日志位于Chrome OS设备上chrome:// system的“syslog”部分中。搜索包含字符串“permission_broker”的行,您将看到如下所示的部分:
2018-02-04T20:27:31.845733-05:00 INFO permission_broker[1249]: ProcessPath(/dev/bus/usb/001/003)
2018-02-04T20:27:31.883050-05:00 INFO permission_broker[1249]: AllowUsbDeviceRule: ALLOW
2018-02-04T20:27:31.883058-05:00 INFO permission_broker[1249]: AllowTtyDeviceRule: IGNORE
2018-02-04T20:27:31.918667-05:00 INFO permission_broker[1249]: DenyClaimedUsbDeviceRule: IGNORE
2018-02-04T20:27:31.918722-05:00 INFO permission_broker[1249]: DenyUninitializedDeviceRule: IGNORE
2018-02-04T20:27:31.918758-05:00 INFO permission_broker[1249]: DenyUsbDeviceClassRule: IGNORE
2018-02-04T20:27:31.918765-05:00 INFO permission_broker[1249]: DenyUsbDeviceClassRule: IGNORE
2018-02-04T20:27:31.918789-05:00 INFO permission_broker[1249]: DenyUsbVendorIdRule: IGNORE
2018-02-04T20:27:31.918794-05:00 INFO permission_broker[1249]: AllowHidrawDeviceRule: IGNORE
2018-02-04T20:27:31.918799-05:00 INFO permission_broker[1249]: AllowGroupTtyDeviceRule: IGNORE
2018-02-04T20:27:31.918804-05:00 INFO permission_broker[1249]: DenyGroupTtyDeviceRule: IGNORE
2018-02-04T20:27:31.918814-05:00 INFO permission_broker[1249]: message repeated 2 times: [ DenyGroupTtyDeviceRule: IGNORE]
2018-02-04T20:27:31.918819-05:00 INFO permission_broker[1249]: DenyClaimedHidrawDeviceRule: IGNORE
2018-02-04T20:27:31.918824-05:00 INFO permission_broker[1249]: DenyUnsafeHidrawDeviceRule: IGNORE
2018-02-04T20:27:31.918830-05:00 INFO permission_broker[1249]: Verdict for /dev/bus/usb/001/003: ALLOW
您最有可能发现它是阻止设备的DenyClaimedUsbDeviceRule。这意味着已经有一个Linux内核驱动程序已将其自身附加到该设备。