我买了一个 streamdeck 来玩。该公司不支持 Linux,但有一个用 Python 编写的 streamdeck-ui,它有点用(但有点用不上,所以我想用别的,可能是我自己的)。编写应用程序相对容易,困难的部分是使用现有的 hid 库/与设备通信。Streamdeck-ui 要求 udev 规则具有以下格式:
子系统=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0060", TAG+="uaccess"
我可以用 lsusb 打印的实际值替换正确的 idVendor、idProduct,这样就没问题了。streamdeck-ui“按预期工作”。我想继续,但如果我尝试使用任何 java(抱歉)hid 库连接到设备,由于访问问题,我无法打开它。如果我以 root(yuck)身份运行相同的代码,它可以工作。与 streamdeck-ui 在没有 udev 规则的情况下的行为类似;它在 root 下工作,但除此之外它没有。这意味着,java hid 库可能需要一些其他/比 python 所需的规则更多的规则。
我还看到以下模板被推荐:
子系统=="usb", ATTRS{idVendor}=="0fd9", ATTRS{idProduct}=="0080", MODE="0666", GROUP="plugdev"
这对我来说也不起作用,而且我看到某处说不应该使用 MODE,而 TAG 是正确的方法。
是的,我确实重新加载了规则,甚至重启了机器,但没有任何效果。没有其他人使用该设备。这意味着可能缺少了一些东西。我必须阅读 streamdeck-ui 的源代码才能了解他们在做什么,但有人能建议如何调试 udev 吗?如何找出操作系统拒绝访问的原因以及如何允许访问?这可能是一些基本的 udev 知识(我缺少)。
答案1
我不知道正确的 udev 规则应该是什么,但可以从此注册表中获取 HID 设备 ID:https://usb-ids.gowdy.us/read/UD/0fd9。