当前位置: 首页 > news >正文

linux libusb使用libusb_claim_interface失败(-6,Resource busy)解决方案

linux libusb使用libusb_claim_interface失败(-6,Resource busy)解决方案

  • ✅ 问题原因
  • 🛠️ 解决方案
    • 🔸 方法一:分离内核驱动 libusb_detach_kernel_driver()
    • 🔸 方法二:使用 usb-devices 和 lsmod 查看占用情况
    • 🔸 方法三:使用 udev 禁止自动绑定内核驱动(可选)

在 Linux 上使用 libusb_claim_interface() 失败,返回错误 -6 (LIBUSB_ERROR_BUSY),说明该接口当前正被别的驱动或程序占用。以下是排查和解决这个问题的常用步骤:

✅ 问题原因

接口已被内核驱动占用(最常见,比如 usb-storage, usbhid, btusb, 等)。
另一个进程正在访问该设备。
设备没有正确分离内核驱动绑定。

🛠️ 解决方案

🔸 方法一:分离内核驱动 libusb_detach_kernel_driver()

在调用 libusb_claim_interface() 之前,使用:

if (libusb_kernel_driver_active(handle, interface_number)) {libusb_detach_kernel_driver(handle, interface_number);
}

完整代码示例:

libusb_device_handle *handle;
int interface_number = 0;libusb_init(NULL);
handle = libusb_open_device_with_vid_pid(NULL, 0x0a12, 0x0001); // 替换为你的 VID/PIDif (handle) {if (libusb_kernel_driver_active(handle, interface_number) == 1) {libusb_detach_kernel_driver(handle, interface_number);}int ret = libusb_claim_interface(handle, interface_number);if (ret != 0) {fprintf(stderr, "claim failed: %s\n", libusb_error_name(ret));} else {printf("Interface claimed successfully!\n");}
}

🔸 方法二:使用 usb-devices 和 lsmod 查看占用情况

查看是不是内核驱动在占用设备:

lsmod | grep btusb

也可以查看具体接口被绑定了哪个驱动:

usb-devices

或使用:

dmesg | grep usb

如果是 btusb 这样的驱动,你可以先移除内核模块:

sudo modprobe -r btusb

⚠️ 注意:这样会影响系统蓝牙功能,谨慎使用,特别是在系统依赖该功能时。

🔸 方法三:使用 udev 禁止自动绑定内核驱动(可选)

写一个规则防止内核自动绑定,比如用于蓝牙 dongle

sudo vim /etc/udev/rules.d/99-usb-nobind.rules

添加如下内容:

ATTR{idVendor}=="0a12", ATTR{idProduct}=="0001", DRIVER=="btusb", ATTR{authorized}="0"

然后重启 udev:

sudo udevadm control --reload
sudo udevadm trigger

相关文章:

  • 【javascript】泡泡龙游戏中反弹和查找匹配算法
  • 第十三章 RTC 实时时钟
  • 走迷宫 II
  • NIFI的处理器:ConsumeMQTT 2.4.0
  • Java异步编程之消息队列疑难问题拆解
  • 3.1 数据链路层的功能
  • (LeetCode 每日一题) 3442. 奇偶频次间的最大差值 I (哈希、字符串)
  • NLP学习路线图(三十七): 问答系统
  • CppCon 2015 学习:The dangers of C-style casts
  • S1240核心的连接关系和工作流程
  • 【动手学深度学习】3.2. 线性回归的从零开始实现
  • idea中黄色感叹号打开
  • 纯血Harmony NETX 5 打造趣味五子棋:(附源文件)
  • ArcGIS土地利用数据制备、分析及基于FLUS模型土地利用预测技术应用
  • 1.4 超级终端
  • gbase8s之message log rotate
  • 路径规划算法概论:从理论到实践
  • Python 基础语法(1)【 适合0基础 】
  • C# StringBuilder代码中预分配容量的作用
  • Java免费获取汇率工具实现
  • 两学一做的做题网站是多少/网络销售是做什么的
  • 泰兴网站建设/济宁seo优化公司
  • 手机网站和pc网站的区别/长沙关键词优化首选
  • 做电影网站用什么虚拟主机/新的数据新闻
  • 免费空间测试网站/黑帽seo365t技术
  • wordpress 古典/淘宝关键词优化软件