gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 11:23:56 24 4
gpt4 key购买 nike

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

所以如果我按如下方式修改/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 设备的端口,我也想让它们永久化。

最佳答案

好的,这里是让它工作的所有步骤。我在网上找到的所有回复都遇到了问题,到处都是点点滴滴,没有任何特定的顺序,也没有单一的工作解决方案,(运行 Android Studio、Jmonkey 3D 和 Ubuntu 14.04)

如果 adb devices 将 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) 验证设备现在允许plugdev 用户组访问

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 devices 以确认权限正确并享受!

注意:如果您还没有创建 plugdev 组并添加您的用户名(如果权限被拒绝,请在前面加上“sudo”以下命令):

1) 添加plugdev组:

groupadd plugdev

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

useradd -G plugdev billy

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

sudo service udev restart

关于linux - Udev 规则不适用于 Ubuntu 12.04 上的 libusb,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25445178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com