Linux libusb "LIBUSB_ERROR_ACCESS" libusb_open返回值为-3 error解决方法

Linux下libusb开发遇到如下问题

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

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

解决方法

第一步:执行以下命令

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

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

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

2)创建一个新的udev规则
 

sudo vim /etc/udev/rules.d/90-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用户下运行测试程序

 

 

转载于:https://blog.youkuaiyun.com/jiguangfan/article/details/86493660

这个错误信息通常出现在使用libusb库进行USB设备通信时,表示程序无法访问指定的USB设备。以下是一些可能的原因和解决方法: 1. **权限问题**:程序可能没有足够的权限访问USB设备。 - **解决方法**:在Linux系统中,可以尝试以root用户运行程序,或者将当前用户添加到`usbusers`组中。在Windows系统中,确保以管理员身份运行程序。 2. **设备被其他程序占用**:其他程序可能正在使用该USB设备。 - **解决方法**:关闭所有可能使用该设备的程序,或者确保没有其他程序在后台占用该设备。 3. **驱动程序问题**:设备驱动程序可能未正确安装或配置。 - **解决方法**:检查设备管理器(Windows)或`lsusb`命令输出(Linux),确保设备驱动程序已正确安装。如果需要,重新安装驱动程序。 4. **设备路径错误**:程序中指定的设备路径可能不正确。 - **解决方法**:确认设备路径是否正确,可以在程序中使用`libusb_get_device_list`列出所有连接的USB设备,并检查目标设备的路径。 5. **系统策略限制**:某些系统策略可能阻止对USB设备的访问。 - **解决方法**:检查系统策略设置,确保允许对USB设备的访问。 示例代码(以C语言为例): ```c #include <stdio.h> #include <libusb-1.0/libusb.h> int main() { libusb_context *ctx = NULL; libusb_device_handle *handle = NULL; int r; r = libusb_init(&ctx); if (r < 0) { fprintf(stderr, "Failed to initialize libusb: %s\n", libusb_error_name(r)); return 1; } libusb_set_option(ctx, LIBUSB_OPTION_LOG_LEVEL, 3); handle = libusb_open_device_with_vid_pid(ctx, 0x1234, 0x5678); if (handle == NULL) { fprintf(stderr, "Failed to open device: %s\n", libusb_error_name(libusb_get_last_error(ctx))); libusb_exit(ctx); return 1; } // Perform USB operations here libusb_close(handle); libusb_exit(ctx); return 0; } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值