从 Mac/OSX - install-driver 技术连接到 FTDI 设备

Connect to an FTDI device from Mac/OSX - install-driver technique

根据 OS 版本和 driver 选择,有多个选项可用于从 Mac 连接到 FTDI 设备。一些技术已在其他 Whosebug 问题中介绍。尚未涵盖一项技术(据我所知),所以我希望有人可以帮助解决最后一项技术。

当前连接选项如下:

  1. (仅限pre-Mavericks)将来自 FTDI driver 的 .dylib 和 header 文件直接包含在您的 Xcode 项目中(无需 driver 安装),如 this question 中所述。此技术在 OSX Mavericks 及更高版本下失效。
  2. (小牛队及以后)使用 pre-installed Apple FTDI driver. It's poorly documented, and seems a lot harder to use than the original FTDI driver。如果您希望支持 pre-Mavericks 操作系统,则此技术将不起作用。
  3. (小牛队及以后)Unload the kext for Apple's Driver,然后使用上面的技巧 #1。如果您计划将您的应用分发给 non-tech-savvy 客户,这不是一个好的选择。此外,它不是 Mavericks+ 的永久解决方案,因为 kext 会倾向于 re-appear.
  4. (任何 mac 版本)实施无代码 kext,其匹配优先级高于 Apple 的 kext,从而防止 Apple 的 driver 劫持与您设备的连接。然后使用上面的技巧#1。这是 Apple's documentation and by the comments in 建议的技术之一。它旨在用于使用自定义连接解决方​​案的应用程序,但它也适用于那些只想在项目中直接包含 FTDI 的 dylib 和 headers 的人。
  5. (任意mac版本)安装原版FTDI driver (as opposed to simply referencing the .dylib and headers in your project). This is, obviously, harder than technique #1, especially when it comes to building an installer for your app, but it has the benefit of working on any Mac version. Also, like #4, it is a technique supported by Apple's documentation.

技术 1-4 已在其他 Whosebug 问题中介绍(如内联所述)。我想弄清楚如何做#5。根据 FTDI driver, "installing" simply means plopping the .dylib in the /usr/local/lib/ directory and the .h files in the /usr/local/lib/ directory. I've been able to get this technique to work, but ONLY if I also unload Apple's kext. However, according to Apple's documentation, I shouldn't need to unload Apple's kext when using this technique. From Apple's docs 附带的自述文件:

"the Apple driver intentionally sets a lesser probe score match to ensure that the FTDI Interface driver matches, when present"

所以,显然,"install the FTDI driver" 对 Apple 的意义与对 FTDI 的意义不同。

有谁知道如何 "install the FTDI driver" 按照 Apple 的文档预期的方式,这样它将比 Apple 的 kext 具有 "higher probe score match",因此不需要我卸载 Apple 的 kext?

Does anyone know how to "install the FTDI driver" in the way that Apple's documentation intends, such that it will have a "higher probe score match" than Apple's kext and, thus, will not require me to unload Apple's kext?

这里提到的"driver"是FTDI提供的VCP内核扩展,不是D2XX驱动。不过,安装它并不能解决您的问题;它只会让设备被 FTDI 的驱动程序而不是 Apple 的驱动程序占用。

如果您想直接在 Mac OS X 上访问 FTDI 设备,最好的办法是将设备的 VID/PID 设置为任何一个都无法捕获的值Apple 或 FTDI 的驱动程序。您可以在 Mac OS X 或 Linux 上使用 FT_PROG on Windows, or ft232r_prog 来完成此操作。 (请注意,这也需要直接访问 FTDI 设备,因此您需要暂时卸载内核扩展以在 Mac OS X 上第一次重新编程 VID/PID。)