【问题标题】:libusb interface already claimedlibusb 接口已声明
【发布时间】:2011-09-15 22:58:29
【问题描述】:

我正在使用 libusb 为 USB 设备编写设备驱动程序。当我尝试认领设备时,我收到错误代码 LIBUSB_ERROR_BUSY (-6)。根据文档,这意味着该设备已被认领 (link)。

我如何知道是哪个驱动程序/程序声明了设备,更重要的是,我如何我自己在设备被声明后声明它。

代码sn-p:

r = libusb_claim_interface(handle[0], 0);
if (r < 0) {
    fprintf(stderr, "libusb_claim_interface error %d\n", r);
    goto out_release;
}
printf("claimed interface\n");

输出:

libusb_claim_interface error -6

【问题讨论】:

标签: linux usb driver libusb


【解决方案1】:

您在libusb_claim_interface() 之前拨打libusb_detach_kernel_driver() 吗?这可能是必要的。

【讨论】:

    【解决方案2】:

    这个问题很可能是另一个 Linux 驱动程序声明了接口。拨打libusb_detach_kernel_driver()并指定接口号,然后你应该可以连接它。

    【讨论】:

      【解决方案3】:

      您在libusb_claim_interface() 之前拨打过libusb_set_configuration() 吗?

      即使描述符中只有一个配置,也必须调用它。

      【讨论】:

      • 我确实尝试过,但得到了完全相同的错误 (-6)。从终端列表中以usb-devices 为峰值,将usb-storage 作为设备的驱动程序。由于某种原因,该设备正在分配驱动程序,而我无法阻止这种情况。我尝试过使用 udev 规则。
      猜你喜欢
      • 2014-03-27
      • 2012-06-20
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 2019-07-16
      • 2021-12-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多