用 zadig 替换特定的 FTDI 设备驱动程序(保持类似设备不变)

用 zadig 替换特定的 FTDI 设备驱动程序(保持类似设备不变)

我找到了有关该主题的相关问题,但没有找到针对这个特定问题的答案(至少没有解决方案)。

我在同一台 PC(Windows 8/Windows 10)上使用两种 USB/串行适配器。其中一个适配器内部有 FT245R,另一个适配器内部有 FT232R(我通过使用 FTDI 的 FT_Prog 工具读取设备信息来查看)。

我想要做的是将其中一个适配器与“标准” FTDI VCP 驱动程序一起使用,并通过 libusk 和 python(libftdi)使用第二个适配器。

因此,我首先安装了 FTDI 串行驱动程序,然后拔下一个设备并使用 ZADIG 工具将剩余适配器的驱动程序更改为 libuskK。

问题是,当我查看设备管理器并再次插入第二个设备时,第二个设备(我没有更改其驱动程序)也被列为 libusbk 设备。

我怀疑这是因为上述两种 FTDI 芯片都使用相同的 PID 0x6001(顺便问一下:PID 是否是选择给定设备的驱动程序的唯一属性?)

解决这个问题的干净方法是什么(无需手动更改其中一个适配器的 PID)?

答案1

PID 是否是为给定设备选择驱动程序的唯一属性

Windows 使用 VID:PID 对来检测应该使用哪个驱动程序 - 这些inf文件中引用了这些驱动程序。

当您想要为设备使用不同的驱动程序时,您应该更改 PID。

Zadig 允许一种解决方法(某种程度上):手动安装 libusb_win32 过滤驱动程序。这允许在 libusbK 和正常 COM 端口操作之间切换而无需重新安装驱动程序,但会影响具有相同 VID:PID 对的所有其他设备。

答案2

根据您的使用情况,可能存在无需安装不同驱动程序的解决方案。您提到您使用 libftdi 进行 python 开发。我只是假设您想要使用一些 MPSSE 功能。在这种情况下,使用 FTDI 通过 ctypes python 模块提供的本机 MPSSE dll 可能是一种替代方案。我最终选择了这个解决方案,因为驱动程序替换对我来说不是最佳选择。有多个来源显示了使用 ctypes 使用本机 DLLS 的用法,包括一些 MPSSE-SPI 和 MPSSE-I2C 的示例(例如搜索“mpsse I2C ctypes python”)。

相关内容