Fedora 20 udev 的 hidraw 规则不起作用

标签 fedora hid udev

我有一个在 Ubuntu (14.04) 和 Fedora (20) 上运行的 Qt 应用程序,它需要与 USB HID 设备通信 没有 root 权限(以 root 身份运行应用程序可以正常工作,因此没有问题)。
在 ubuntu 上,这适用于将 HID 设备添加到 plugdev 组的以下规则。

SUBSYSTEM=="usb", ATTR{idVendor}=="0600", ATTR{idProduct}=="0070", MODE="0660", GROUP="plugdev"
SUBSYSTEM=="hidraw" , ATTRS{idVendor}=="0600", ATTRS{idProduct}=="0070", MODE="0660", GROUP="plugdev"

但是将此规则添加到 Fedora 中似乎无法从应用程序访问 HID 设备。这部分是因为在 Fedora 上不存在 plugdev 组。

但我似乎无法在 Fedora 上找到与 plugdev 等效的工具,也找不到使应用程序能够访问 HID 设备的正确方法。

有任何想法吗?

编辑>>
尝试像@askb 建议的那样删除 GROUP 权限。这并没有解决任何问题。但作为测试,我添加了 RUN+="/udevtest.sh"SUBSYSTEM=="hidraw"它将某些内容记录到/tmp/udev.log 中,这似乎 react 很好。所以udev规则通过了。但是我的应用程序(使用 libusb)仍然只能在运行 sudo 时访问它...

最佳答案

'plugdev' 组是解决热插拔设备问题的 Ubuntu 独有功能
权限。其他发行版不需要这个,也不应该开始使用
任何小组作业 IMHU。我建议删除 GROUP="plugdev"在 Fedora 的 udev 规则文件中,并为两个发行版提供一个 diff 规则文件作为替代。只要产品/供应商 ID 匹配,udev 规则文件就应该按预期工作。

关于Fedora 20 udev 的 hidraw 规则不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24958420/

相关文章:

.net - 为具有集成硬件的专用计算机开发

python - pyudev:如何获取设备的 "friendly"名称?

arduino - 如何为每个 Arduino 获取唯一的 ID

linux - udev 设备文件的自动权限?

linux - 在没有源代码的情况下在 linux 中分发程序

java - Fedora OpenJDK 设置 JAVA_HOME

linux - UDP 服务器进程无法接受来自内核的数据包

c++ - 在 Windows 上与 USB HID 设备进行通信的最佳 USB 库是什么?

java - "The crash happened outside the Java Virtual Machine in native code."如何解决这个错误(Java)?

ruby-on-rails - 在服务器启动时启动 ruby​​ rake 任务