linux open usb失败,Linux libusb "LIBUSB_ERROR_ACCESS" libusb_open返回值为-3 error解决方法...

Linux下libusb开发遇到如下问题

在Linux下用libusb进行usb设备打开时遇到“LIBUSB_ERROR_ACCESS  libusb_open函数返回值为-3”

此问题原因为该用户没有权限!

解决方法

第一步:执行以下命令

sudo chmod -R 777 /dev/bus/usb/

重新运行测试程序,若还报错,执行第二步

第二步:永久修改 USB 设备权限

1)使用lsusb命令找出 USB 设备的 vendorID 和 productID

2)创建一个新的udev规则

sudo vim /etc/udev/rules.d/myusb.rules

#在文件中添加下面的话

#用你自己的"idVendor"和"idProduct"来替换默认值。MODE="0666"表示USB设备的权限。

SUBSYSTEMS=="usb", ATTRS{idVendor}=="067b", ATTRS{idProduct}=="2303", GROUP="users", MODE="0666"

GROUP代表用户组,要确保此时登录的系统用户在该用户组中;

可用 "usermod -a -G username groupname" 将用户添加到用户组中

3)重启电脑或重新加载 udev 规则

sudo udevadm control --reload

重新运行测试程序,若还报错,执行第三步

第三步:su 切换到root用户下运行测试程序

参考链接

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
(messenger-libusb.cpp:42) control_transfer返回了错误,索引: 768,错误。 这个错误是指在messenger-libusb.cpp文件中的第42行,执行了一个名为control_transfer的函数,但该函数返回了错误。错误信息显示索引为768,但具体的错误原因并没有提供。 要解决这个问题,我们可以进行以下几步: 1. 检查索引是否超出了范围。索引通常用于引用某种数据或操作对象,如果超过了其有效范围,就会导致错误。检查代码中对该索引的使用,并确保其在合理的范围内。 2. 检查传递给control_transfer函数的参数是否正确。函数可能需要特定的参数或特定的格式。查看函数的文档或源代码,确保传递给它的参数是正确的。 3. 检查是否需要更新或更改相关的库文件。错误可能是由于库文件中的bug或不兼容性引起的。查看最新版本的库文件,并尝试更新或更改它们来修复错误。 4. 使用调试工具进行调试。通过使用调试器或日志记录器等工具,可以跟踪代码的执行过程,以便更容易发现错误所在。可以逐步执行代码并观察变量的值,以找出导致错误的原因。 5. 寻求帮助。如果以上方法都没有解决问题,可以向开发人员或相关论坛或社区寻求帮助。提供具体的错误信息和相关的代码片段,以便他们更好地理解问题并提供解决方案。 总之,错误(messenger-libusb.cpp:42) control_transfer返回了错误,索引: 768,错误表明在执行control_transfer函数时出现了问题。我们需要检查索引范围、参数正确性、库文件更新、调试等方面,以找出并解决问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值