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

2023-12-29

我使用的是 Ubuntu 12.04.5 LTS,x86_64。

我有一个 USB 设备,它使用 libusb 与计算机进行通信。 将其插入计算机并运行通信程序后,出现以下错误:

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 设备的端口,我还想让它们永久存在。


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

If 亚行设备将 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):

总线 003 设备 074:ID18d1:4ee7 谷歌公司

For 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>

Example:

ls -l /dev/bus/usb/003

crw-rw-rw- 1 root plugdev 189, 329 Jul  3 18:23 074

7) Run 亚行设备确认权限正确并享受!

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

1)添加plugdev组:

groupadd plugdev

2)添加您的username to plugdev组(useradd -G {组名} 用户名):

useradd -G plugdev billy

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

sudo service udev restart
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Udev 规则不适用于 Ubuntu 12.04 上的 libusb 的相关文章

  • 为什么在 Linux 上字符串文字的内存地址与其他字符串文字的内存地址如此不同?

    我注意到字符串文字在内存中的地址与其他常量和变量 Linux 操作系统 非常不同 它们有许多前导零 未打印 Example const char h Hi int i 1 printf p n void h printf p n void
  • Inotify linux 监视子目录

    是否可以以这种模式监视目录 storage data usernames Download gt storage data Download 我需要监视每个用户的下载文件夹中是否进行了更改 也许我需要创建所有路径的列表 将其放入数组中 并在
  • 如何不断刷新屏幕并实时更新[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想在linux上写一个C程序 不断刷新屏幕并实时更新 例如类似于top终端中的命令 谁能指出我正确的方向 为了保持它跨终端类型的可移
  • 在Linux中断上下文中运行用户线程

    我正在编写一些定制的应用程序 并允许更改 Linux 内核中的中断处理程序代码 我有一个用户线程正在等待中断发生 如果发生中断 那么我要做的第一件事就是执行该用户线程 有什么办法让它发挥作用吗 Thanks 创建一个字符设备 这就是内核所做
  • 在 Ubuntu 16.04 上找不到 printf.c

    我最近切换到Ubuntu 16 04 我在用vscode作为 Ubuntu 上的 IDE 我配置了其他语言 但我无法做到这一点C C 我创建c cpp properties json launch json tasks json 当我开始编
  • apt-get install tzdata 非交互式

    当我尝试 apt get install y tzdata 将显示用于选择时区的命令行选项 我试图在脚本中使用它来进行一些设置 如何在没有用户输入的情况下使 apt get 运行 我知道重新配置 tzdata 我可以做 echo Ameri
  • 如何以编程方式从Linux中的进程名称获取进程ID

    在我的项目中 我们使用 ACE 自适应通信环境 中间件来编写可在 Windows 和 Linux 上运行的独立于操作系统的代码 要求是从进程名称中获取进程 ID 由于 ACE 不支持这一点 因此我们必须使用特定于平台的宏来分离 Window
  • 如何让“grep”从文件中读取模式?

    假设有一个很大的文本文件 我只想打印与某些模式不匹配的行 显然 我可以使用egrep v patter1 pattern2 pattern3 现在 如果所有这些模式都在一个文本文件中怎么办 最好的制作方法是什么egrep从文件中读取模式 g
  • 如何在特定 systemd 服务重新启动时触发自定义脚本运行

    我想知道如何安排自定义脚本在重新启动服务时运行 我的用例是 每当重新启动 Tomcat 服务时 我都必须运行多个命令 我想知道是否有一种方法可以编写脚本并安排它在重新启动 Tomcat 服务时运行 我已将 tomcat 脚本设置为 syst
  • 为什么 Linux 对目录使用 getdents() 而不是 read()?

    我浏览 K R C 时注意到 为了读取目录中的条目 他们使用了 while read dp gt fd char dirbuf sizeof dirbuf sizeof dirbuf code Where dirbuf是系统特定的目录结构
  • 如何查找连接到 AF_INET 套接字的客户端的 UID?

    有什么方法或类似的东西ucred for AF UNIX如果是AF INET插座 TCP在我的例子中 找出连接到我的套接字的客户端的UID 还有 proc net tcp但它显示了UID of the creator插座的而不是连接的cli
  • Composer 安装要求

    我正在尝试将 Composer 安装到 Laravel 项目中 当我做的时候sudo composer install在项目目录中它显示了两个错误 Problem 1 Installation request for simplesoftw
  • Docker:处理 tar 文件时出错(退出状态 1):设置枢轴目录时出错:不是目录

    我是 Docker 新手 不知道是什么原因导致此错误或如何诊断它 任何有关此问题的具体帮助或有关首先检查何处以诊断此类问题的提示将不胜感激 我的 Dockerfile FROM java 8 Install maven RUN apt ge
  • Apache 反向代理的基本身份验证问题

    我想为在 Ubuntu 服务器 12 04 1 上运行的 Apache 反向代理站点添加基本身份验证 网络应用程序是Jenkins http jenkins ci org运行在 Java EE 容器上 我在中添加了以下配置httpd con
  • SONAR - 使用 Cobertura 测量代码覆盖率

    我正在使用声纳来测量代码质量 我不知道的一件事是使用 Cobertura 测量代码覆盖率的步骤 我按照以下步骤操作http cobertura sourceforge net anttaskreference html http cober
  • 如何制作和应用SVN补丁?

    我想制作一个SVN类型的补丁文件httpd conf这样我就可以轻松地将其应用到其他主机上 If I do cd root diff Naur etc httpd conf httpd conf original etc httpd con
  • 并行运行 make 时出错

    考虑以下制作 all a b a echo a exit 1 b echo b start sleep 1 echo b end 当运行它时make j2我收到以下输出 echo a echo b start a exit 1 b star
  • 在 Linux 中禁用历史记录 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 要在 Linux 环境中禁用历史记录 我执行了以下命令 export HISTFILESIZE 0 export HISTSIZE 0 u
  • Django + nginx + uwsgi 无法登录

    我有非常简单的登录逻辑 类似于官方 Django 解决方案 class Login FormView template name login html form class AuthenticationForm def get self a
  • 创建 jar 文件 - 保留文件权限

    我想知道如何创建一个保留其内容的文件权限的 jar 文件 我将源代码和可执行文件打包在一个 jar 文件中 该文件将在使用前提取 人们应该能够通过运行批处理 shell 脚本文件立即运行示例和演示 然后他们应该能够修改源代码并重新编译所有内

随机推荐

  • WCF ChannelFactory 和通道 - 缓存、重用、关闭和恢复

    我为我的 WCF 客户端库规划了以下架构 使用 ChannelFactory 而不是 svcutil 生成代理 因为 我需要更多的控制权 而且我想让客户处于单独的状态 程序集并避免在我的 WCF 服务更改时重新生成 需要将消息检查器的行为应
  • 如何在 Angular 5 中导入外部 js 文件?

    我需要在我的 Angular 5 项目中使用外部 js 我的例子是这样的 https codepen io sfdsfssdfdf pen opJpJM https codepen io sfdsfssdfdf pen opJpJM 我将
  • 如何在Windows Phone 7中强制使用浅色主题?

    在我的 Windows Phone 7 应用程序中 我想使用浅色主题 无论用户在手机中设置什么主题 怎么做 我需要自定义样式或主题吗 我只想要默认的浅色主题 Thanks Jeff Wilcox 提供了一种使用他开发的主题管理器来实现此目的
  • 对于多对多关系,使用关系数据库好还是nosql好?

    对于多对多关系 使用关系数据库好还是nosql好 假设您有一群用户 每个用户都可以拥有来自同一用户表的朋友 所以它本质上是与其自身的多对多关系 关系数据库中的多对多关系将创建第三个表 现在我想知道假设这个用户表很大 就像里面有数百万人一样
  • 什么是 AU3_Spy.exe?我在哪里可以找到它?

    每当我尝试在 AutoHotkey 中启动 Windows Spy 实用程序时 都会失败并显示错误 无法启动文件 U Software AutoHotkey 1 1 26 00 AU3 Spy exe 最初我以为我下载的文件可能已损坏 然而
  • 如何从 JSON 输出中分离纬度和经度值?

    我正在尝试两个位置之间的两条绘制路线 为此我从 Google Map API Web 服务获取所有点 JSON输出格式 解析后JSON数据和解码点我存储了所有点NSMutableArray 每个索引数组都包含这种类型的值 lt 10 901
  • 在谷歌玩游戏中默默解锁成就,不显示通知

    我正在使用谷歌播放服务 在我的android游戏中取得成就 它实际上是统一的 但并不重要 To unlock achievement I use plugin which calls unlock GoogleApiClient apiCl
  • 如何验证货币字段?

    我有一个带有此货币字段的 ASP NET MVC 4 应用程序 DisplayFormat ApplyFormatInEditMode true DataFormatString 0 c ConvertEmptyStringToNull t
  • 获取通用字典的指定值的多个键?

    从 NET 通用字典中获取键的值很容易 Dictionary
  • 在不使用 WPF 的扩展玻璃框架中绘制文本框

    我正在尝试在表单的扩展玻璃框架上绘制一个文本框 我不会描述这个技术 它是众所周知的 对于那些还没有听说过的人来说 这是一个例子 http www danielmoth com Blog Vista Glass In C aspx http
  • MVC 3 / Razor 中的通用操作链接

    刚刚开始一个新的 MVC 3 项目 我无法获得我在 MVC 2 future 中习惯的强类型通用操作链接和 url 帮助器 我需要推迟哪些 nuget 包和命名空间 Example Html ActionLink
  • 如何安装react(v16.x)和react-scripts(3.x)

    正如标题所示 我不想使用 npx create react app app name 因为该命令安装了react 17x 和react scripts 4 x I tried npm init react app app name scri
  • XML 架构 minOccurs / maxOccurs 默认值

    我想知道 XML 模式规范如何处理这些情况
  • C# 中派生类的可视化

    我有一个基类 代表一个充满小球体的现实世界容器 和一些派生类 这很好用 我的问题是如何进行可视化 我有一个可视化基类的用户控件 为每个派生类都有一个派生的 UserControl 是最佳解决方案吗 还是让一个人为所有人工作更好 Edit 显
  • 如何在 API 级别 < 28 上获取主线程的 Executor

    在 API 级别 28 Pie 上 引入了一种新方法Context获取主线程执行器的类getMainExecutor https developer android com reference android content Context
  • 带颜色条的圆形图

    我正在尝试用颜色条绘制圆形图 几乎像这样 然而 颜色条的最小值当前为1 我希望能够将其设置为 0 import pandas as pd import matplotlib pyplot as plt import matplotlib c
  • 如何使用 MATLAB 的 num2str 格式化输出

    我正在尝试在 MATLAB 中将数字数组作为字符串输出 我知道这很容易使用num2str http www mathworks com access helpdesk help techdoc ref num2str html 但我想要逗号
  • 在 Angular dart 中 type() 的另一种方式

    我完成了 Angular dart 教程 但我有一个问题 要声明可用于依赖注入的类型 我必须这样做 class MyAppModule extends Module MyAppModule type RecipeBookController
  • C 中的静态结构初始化

    我有一个struct输入如下图所示 typedef struct position float X float Y float Z float A position typedef struct move position initial
  • Udev 规则不适用于 Ubuntu 12.04 上的 libusb

    我使用的是 Ubuntu 12 04 5 LTS x86 64 我有一个 USB 设备 它使用 libusb 与计算机进行通信 将其插入计算机并运行通信程序后 出现以下错误 libusb couldn t open USB device d