Udev规则不适用于Ubuntu 12.04上的libusb

我在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 

并再次运行通讯程序,然后设备完美工作。 问题是,每当我插入设备,最后一个数字的变化,所以我应该不得不chmod每一次的USB总线,但由于不是所有的用户知道pipe理员密码这是一个问题。

所以制造商build议如下编辑udev规则。 在/etc/udev/rules.d里创build一个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的权限。

如何在每次重新启动时制定这些规则permament? 如果我改变USB设备的端口,我也想让它们永久。

除非你有一个很老的udev,这个规则是错误的,它应该是:

 SUBSYSTEM=="usb", ATTR{idVendor}=="0403", ATTR{idProduct}=="da77", GROUP="plugdev" 

将规则放在/etc/udev/rules.d/文件中是使它永久存在的正确方法。

你可以放在规则文件中的其他东西在手册页中 。

好的,这里有所有的步骤来让这个工作。 我在网上找到的所有回复都遇到了问题,无处不在,没有任何单一的工作解决方案(运行Android Studio,Jmonkey 3D和Ubuntu 14.04)

如果adb设备显示Android设备为????????? (没有权限)按照这些说明:

1)创建文件/etc/udev/rules.d/51-android.rules

 sudo gedit /etc/udev/rules.d/51-android.rules 

2)复制并粘贴下面的内容:

 SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0e79", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0502", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0b05", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="413c", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0489", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="091e", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="18d1", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0bb4", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="12d1", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="24e3", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="2116", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0482", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="17ef", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="1004", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="22b8", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0409", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="2080", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0955", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="2257", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="10a9", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="1d4d", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0471", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="04da", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="05c6", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="1f53", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="04e8", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="04dd", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0fce", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="0930", MODE="0666", GROUP="plugdev" SUBSYSTEM=="usb", ATTRS{idVendor}=="19d2", MODE="0666", GROUP="plugdev" 

3)运行以下命令更改文件权限:

 sudo chmod a+r /etc/udev/rules.d/51-android.rules 

4)通过USB连接你的手机,并运行以下命令:

 lsusb 

查找您的设备示例(Nexus 5):

Bus 003 Device 074:ID 18d1 :4ee7 Google Inc.

对于Nexus 5 ,供应商ID是18d1 ,我的是“ 003

5)现在用以下命令重新加载规则:

 sudo udevadm control --reload-rules sudo service udev restart sudo udevadm trigger 

6)验证设备现在允许插件用户组访问

 ls -l /dev/bus/usb/<bus number from step 4> 

例:

 ls -l /dev/bus/usb/003 crw-rw-rw- 1 root plugdev 189, 329 Jul 3 18:23 074 

7)运行adb设备确认权限是否正确,享受!

注意:如果您还没有创建插件组,并添加了您的用户名 (如果权限被拒绝,请在命令后加上“sudo”):

1)添加plugdev组:

 groupadd plugdev 

2)将您的用户名添加到plugdev组(useradd -G {group-name}用户名):

 useradd -G plugdev billy 

3)重新启动udev(您可能需要注销并重新登录才能更新用户组):

 sudo service udev restart 

我也在或多或少是一样的东西,并重新加载我有使用该功能相同的问题,但如果你要使用

 udevadm trigger 

它实际上会重新加载规则另外,我不知道你是否已经这样做了,我想你必须将用户添加到你创建的组

有时,用户不是被udev规则授予访问权限的组的一部分。 要将(现有)用户添加到(现有)组plugdev,您应该这样做:

 sudo usermod -a -G groupName userName