我使用的是Ubuntu 12.04.5 LTS,x86_64。
我有一个使用libusb与计算机通信的USB设备。将其插入计算机并运行通信程序后,出现以下错误:
libusb couldn't open USB device /dev/bus/usb/008/004: Permission denied.
libusb requires write access to USB device nodes.
libusb failed to find the Optotrak USB device. Are you sure you have set the udev permissions correctly?
因此,如果我按如下所示chmod / dev / bus / usb / 008/004:
sudo chmod 777 /dev/bus/usb/008/004
然后再次运行通信程序,则设备可以正常运行。问题在于,每次插入设备时,最后一个数字都会更改,因此每次USB总线时我都必须使用chmod,但是由于并非所有用户都知道管理员密码,因此这是一个问题。
因此,制造商建议如下编辑udev规则。在/etc/udev/rules.d内创建一个12-ndi-rules:
BUS=="usb", SYSFS{idVendor}=="0403", SYSFS{idProduct}=="da77", GROUP="plugdev"
(我已经通过lsusb检查了SYSFS是否正确)
lsusb
Bus 008 Device 004: ID 0403:da77 Future Technology Devices International, Ltd
然后重新加载规则:
sudo udevadm control --reload-rules
但是仍然没有正确设置总线008/004的权限。
如何在每次重新启动时使这些规则保持不变?如果更改USB设备的端口,我也希望使其永久不变。
除非您有真正的udev,否则规则是错误的,应该是:
SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="da77", GROUP="plugdev"
将规则放入文件中/etc/udev/rules.d/
是使其成为永久性的正确方法。
您可以在规则文件中添加的其他内容在手册页中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句