OpenSUSE 15.3下如何基于VID:PID自定义UDEV规则以覆盖系统默认HID设备规则?
当然可以!你完全可以通过设备的VID(供应商ID)和PID(产品ID)创建专属的udev规则,轻松覆盖系统预装的通用规则。下面是一步步的实现方法和关键注意事项:
第一步:获取目标设备的VID和PID
插入你的HID设备后,在终端运行lsusb命令,找到对应设备的行,比如:Bus 001 Device 007: ID 1234:5678 My Custom HID Device这里的
1234就是VID,5678就是PID,记下来备用(注意是小写十六进制格式)。第二步:创建自定义udev规则文件
udev规则的优先级由文件命名和存放目录决定:/etc/udev/rules.d/下的规则会优先于/usr/lib/udev/rules.d/的系统默认规则,且文件名数字前缀越大,执行顺序越靠后(后执行的规则会覆盖先执行的)。
建议创建一个后缀数字比系统默认的60-更大的文件,比如运行sudo touch /etc/udev/rules.d/99-my-custom-hid.rules,这样能确保你的规则最后执行,完全覆盖系统规则。第三步:编写专属规则内容
用文本编辑器打开刚才创建的文件(比如sudo nano /etc/udev/rules.d/99-my-custom-hid.rules),添加类似下面的规则:SUBSYSTEM=="input", ATTRS{idVendor}=="1234", ATTRS{idProduct}=="5678", MODE="660", GROUP="users"解释一下核心字段:
SUBSYSTEM=="input":匹配输入类设备,和系统默认规则的匹配范围保持一致ATTRS{idVendor}=="1234"和ATTRS{idProduct}=="5678":精准锁定你的目标设备MODE="660":设置你想要的设备权限(替换成你需要的数值即可)- 你还可以额外添加
OWNER="your-username"或GROUP="your-group"来指定设备的所属用户/组
第四步:让新规则生效
保存规则文件后,在终端运行以下命令重新加载udev规则:sudo udevadm control --reload-rules然后重新插拔你的HID设备,或者用以下命令触发规则应用到已连接的设备:
sudo udevadm trigger验证规则是否生效
你可以通过查看设备节点的权限来确认:找到设备对应的/dev/input/eventX节点(可以用evtest工具或者udevadm info查找),然后运行ls -l /dev/input/eventX,检查权限是否符合你设置的MODE。
内容的提问来源于stack exchange,提问作者Torsten Mohr

