如何编写udev规则为指定USB设备创建固定sysfs符号链接?
实现USB设备sysfs固定符号链接的udev配置方案
不需要编写额外驱动,通过udev规则即可实现需求,以下是具体配置步骤:
编写udev规则文件
创建(或编辑)udev规则文件 /etc/udev/rules.d/99-usb-custom-links.rules,添加以下内容:
USB Hub规则
SUBSYSTEM=="usb", ATTR{idVendor}=="2109", ATTR{idProduct}=="2817", ACTION=="add", RUN+="/bin/ln -sf $devpath /sys/test-usb-hub" SUBSYSTEM=="usb", ATTR{idVendor}=="2109", ATTR{idProduct}=="2817", ACTION=="remove", RUN+="/bin/rm -f /sys/test-usb-hub"
无线鼠标规则
SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c52b", ACTION=="add", RUN+="/bin/ln -sf $devpath /sys/test-mouse" SUBSYSTEM=="usb", ATTR{idVendor}=="046d", ATTR{idProduct}=="c52b", ACTION=="remove", RUN+="/bin/rm -f /sys/test-mouse"
规则说明
SUBSYSTEM=="usb":匹配sysfs中的USB设备对象(而非/dev下的字符设备节点)ATTR{idVendor}/ATTR{idProduct}:通过厂商ID和产品ID精准定位目标设备ACTION=="add"/ACTION=="remove":分别在设备接入和移除时执行对应命令RUN+="/bin/ln -sf $devpath /sys/test-usb-hub":创建符号链接指向设备在sysfs中的实际路径,$devpath是udev提供的环境变量,代表设备在sysfs中的相对路径(如/devices/pci0000:00/0000:00:14.0/usb1/1-2)- 移除时的
rm命令用于清理无效链接,避免残留
生效规则
执行以下命令重载udev规则并触发设备事件:
udevadm control --reload-rules udevadm trigger --subsystem-match=usb
验证效果
设备接入后,可通过以下路径访问设备属性:
- 查看Hub制造商名称:
cat /sys/test-usb-hub/manufacturer - 查看鼠标制造商名称:
cat /sys/test-mouse/manufacturer
内容的提问来源于stack exchange,提问作者raj123
相关产品推荐
相关产品推荐

