【问题标题】:libusb_claim_interface fails on Mac OS X Mountain Lionlibusb_claim_interface 在 Mac OS X Mountain Lion 上失败
【发布时间】:2013-02-12 16:11:05
【问题描述】:

我已经搜索了几个小时没有结果。我到处都看到libusb_detach_kernel_driver 在 Mac OS X 上不受支持,但我找不到补丁或替代方案。

libusb_claim_interface 返回:libusb: 0.863377 error [darwin_claim_interface] USBInterfaceOpen: another process has device opened for exclusive access

如何从内核中分离 USB 设备?

【问题讨论】:

  • 嗨,乔治!你有没有找到解决方案?我在 Mac OS X,Mavericks 上遇到了同样的 USBInterfaceOpen 错误。无论我尝试什么,我都无法认领我的 CDC 设备接口。
  • 不幸的是我没有。如果您发现了什么,请在这里告诉我们!
  • 我得到的最接近的解决方案是有人告诉我编写自己的 .kext 驱动程序文件。此外,您可能会在这里找到有关我的 StackOverflow 问题的一些帮助:stackoverflow.com/questions/20253350/… 最好的方法是尝试串行通信路由,我正在这里尝试:microchip.com/forums/…
  • 是的,这正是我最终所做的。如果你写了kext,请告诉我。如果你需要一些帮助,也许我们可以想办法。

标签: c macos libusb libusb-1.0


【解决方案1】:

许多设备会自动将驱动程序附加到它们被 OSX 识别为的 USB 设备,除非您强制系统手动分离设备,然后才能运行代码并声明设备,否则您将无法声明该设备.例如,如果它将 AppleUSBCDC 设备连接到您插入的某个独特的 USB 设备上,您必须这样做:

sudo kextunload -b com.apple.driver.AppleUSBCDC

在运行尝试声明接口的应用程序之前。

【讨论】:

  • 就我而言,是sudo kextunload -b com.apple.driver.AppleUSBFTDI 解决了这个问题。有什么方法可以知道哪个驱动程序实际持有该设备?
  • 我正在使用 arduino nano 并想通过我的 mac 上的 android 模拟器与 USB 通话。遇到了同样的错误,发现操作系统已将 nano 附加为 FTDI 设备,所以: sudo kextunload -b com.apple.driver.AppleUSBFTDI 为我工作。
  • 对于 macOS Mojave:sudo kextunload -b com.apple.driver.usb.cdc.acm
  • 在 Mojave 10.14.6 (18G87) 上没有找到上述扩展
  • 这是现在 libusb 文档中讨论的三种方法之一:github.com/libusb/libusb/wiki/…
猜你喜欢
  • 2013-09-05
  • 1970-01-01
  • 1970-01-01
  • 2012-06-09
  • 2012-11-15
  • 2012-09-15
  • 2013-09-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多