libusb_claim_interface 在 Mac OS X Mountain Lion 上失败

Posted

技术标签:

【中文标题】libusb_claim_interface 在 Mac OS X Mountain Lion 上失败【英文标题】:libusb_claim_interface fails on 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 驱动程序文件。此外,您可能会在这里找到有关我的 *** 问题的一些帮助:***.com/questions/20253350/… 最好的方法是尝试串行通信路由,我正在这里尝试:microchip.com/forums/… 是的,这正是我最终所做的。如果你写了kext,请告诉我。如果你需要一些帮助,也许我们可以想办法。 【参考方案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/…

以上是关于libusb_claim_interface 在 Mac OS X Mountain Lion 上失败的主要内容,如果未能解决你的问题,请参考以下文章

NOIP 2015 & SDOI 2016 Round1 & CTSC 2016 & SDOI2016 Round2游记

秋的潇洒在啥?在啥在啥?

上传的数据在云端的怎么查看,保存在啥位置?

在 React 应用程序中在哪里转换数据 - 在 Express 中还是在前端使用 React?

存储在 plist 中的数据在模拟器中有效,但在设备中无效

如何在保存在 Mongoose (ExpressJS) 之前在模型中格式化数据