Replace specific FTDI device driver with zadig (leaving similar devices untouched)

Posted on


I have found related questions on this topic, but not an answer to this specific question (at least none that is a solution).

I use two kinds of USB/Serial Adapters on the same PC (Windows 8 / Windows 10). One of the adapters has an FT245R inside, the other one an FT232R (I see that by reading the device information with the FT_Prog tool from FTDI).

What I want to do is use one of the adapters with the “standard” FTDI VCP Driver and the second adapter via libusk and python (libftdi).

Therefore, I have first installed the FTDI Serial Drivers, then unplugged one device and used the ZADIG tool to change the driver of the remaining adapter to libuskK.

Problem is that when I look into the device manager and plug in the second device again, also the second one (for which I did NOT change the driver) is listed as a libusbk device.

I suspect this is because both mentioned FTDI chips use the same PID 0x6001 (btw: is the PID the only property upon which a driver is selected for a given device?)

What is a clean solution to the problem (without manually changing the PID of one of the adapters)?


is the PID the only property upon which a driver is selected for a given device

Windows uses the VID:PID pair to detect which driver it should use – these are referenced in those inf files.

When you wanted a different driver for a device, you are supposed to change the PID.

Zadig allows for a workaround (sort of): Manually install the libusb_win32 filter driver. This allows switching between libusbK and normal COM port operation without driver re-install, but would affect all other devices with the same VID:PID pair.

Depending on your usecase there might be a solution without the need to install different drivers. You mentioned that you use libftdi for python. I just make the assumption that you want to use some MPSSE functionality.
In this case using the native MPSSE dlls provided by FTDI via the ctypes python module might be an alternative. I end up with this solution as the driver replacement was a suboptimal option for me.
There are several sources showing the usage of ctypes to use native DLLS including some examples for MPSSE-SPI and MPSSE-I2C (e.g. search for “mpsse I2C ctypes python”).

Leave a Reply

Your email address will not be published. Required fields are marked *