我正在使用 Ubuntu 23.10,并尝试使用具有 WebHID 的设备。我已经添加了所有适当的规则,即
KERNEL=="hidraw*", SUBSYSTEM=="hidraw", ATTRS{idVendor}=="1209", ATTRS{idProduct}=="d035", GROUP="plugdev", MODE="0660"
到
/etc/udev/rules.d/99-oledscope.rules
。
并且,我可以看到 hidraw* 已正确配置:
ls -lah /dev/hidraw*
crw-rw---- 1 root plugdev 241, 0 Apr 24 04:40 /dev/hidraw0
crw-rw---- 1 root plugdev 241, 1 Apr 24 04:40 /dev/hidraw1
我还验证了我在 Plugdev 组中。
这是我的报告描述符:
HID_USAGE_PAGE ( 0xff ), // Vendor-defined page.
HID_USAGE ( 0x00 ),
HID_REPORT_SIZE ( 8 ),
HID_COLLECTION ( HID_COLLECTION_LOGICAL ),
HID_REPORT_COUNT ( 254 ),
HID_REPORT_ID ( 0xaa )
HID_USAGE ( 0x01 ),
HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,
HID_REPORT_COUNT ( 63 ), // For use with `hidapitester --vidpid 1209/D003 --open --read-feature 171`
HID_REPORT_ID ( 0xab )
HID_USAGE ( 0x01 ),
HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ) ,
HID_COLLECTION_END,
通过上述内容,我可以使用 hidapi.h 访问设备并发送/接收适当的报告,但是当我使用 Chrome(来自 Snap 的 124.0.6367.60)时,我收到以下错误:
Could not open; NotAllowedError: Failed to open the device.
然后,如果我查看设备日志中的
chrome://device-log/
,我会看到源源不断的
HIDEvent[04:40:26] Failed to open '/dev/hidraw1': FILE_ERROR_ACCESS_DENIED
HIDEvent[04:40:26] Access denied opening device read-write, trying read-only.
我不确定这是因为我使用的是 snap 包,但是,无论哪种方式,我都无法从 Chrome 访问我的 WebHID 设备。
我可以做些什么来确保 snap 包可以访问 hidraw?
哇!我只是想在这里问一下!事实证明,这是因为一些严格的规则,并且有一个解决方法:
https://askubuntu.com/a/1296762指出您可以创建一个chrome启动器,但取消捕捉它,如下所示。虽然很受诅咒。
/snap/chromium/current/usr/lib/chromium-browser/chrome --user-data-dir=~/ChrUnsnapped --class="ChrUnsnapped" %U
如果有人有其他解决方案,我很想知道!