Fixing the FTDI drivers – prevent auto updates
There is also an older post on this thematic in my blog, which describes the problem, but not so much the fix.
Ok, this is basically very similiar to the Prolific driver fix. It makes the system think that the older driver is actually newer and thus prevents Windows updates. Also a few lines are added so the INF file so the PID 0000 and possibly any other PID is automatically picked up / detected by the driver.
Please note that this howto is meant for those who know what they are doing. If you don’t understand what you are doing you shouldn’t do it. Deleting system files accidentaly or on purpose may cause you trouble ๐
The first step is to uninstall any present drivers. Open Device manager, you can get to it by right-clicking on the My Computer and choosing Manage. Choose Device manager from the devices in right-hand choice tree.
Under view menu you can choose to also show hidden devices / devices not currently connected to the computer. The hidden devices icons will be shown half transparent in device tree. The FTDI converters will be shown under Ports or under USB controllers, depending on which drivers you are using and which PID is currently programmed into FTDI controller.
To remove the device right click on it and choose Remove.
If you want to also remove the drivers you should select the remove drivers option. Please note that the driver removal can not be reversed (it deletes driver install files in DriverStore), however you can always install a new driver manually or from windows update.
After you have uninstalled the driver from Device manager you can also check the driverstore directory for any remaining driver installation folders. Navigate to C:\Windows\System32\DriverStore\FileRepository. The FTDI drivers installation files reside in folders starting with ftdibus and ftdiport. Delete those folders.
You should not have any FTDI device plugged into your computer. When there are no ftdi folders anymore in the DriverStore you can install any flavour / version of the driver you want. If you use exe installer just click on it and if you use the zip driver archive you should right click on each of the inf files and click install. The driver installation copies the drivers to DriverStore folder, so windows are able to pick it up when you plug your USB device. Restart computer but do not plug in the device yet.
When your system is restarted the memory resident drivers will be wiped out, so our new drivers will be able to load. Still before plugging in the device we will change the INF files so that 1) they will also pick up the device with modified PID, and 2) Windows won’t be tempted to update the driver every time we plug in a new device, 3) we make sure that this is the driver that will be installed.
Navigate to C:\Windows\System32\DriverStore\FileRepository and locate folders starting with ftdibus and ftdiport. Inside each folder there is the INF file. Open each INF file with the text editor of your choice. I use Notepad ++, but any other editor will do.
You should make the following changes:
First change the driver version so that the windows will think it is the latest one. Both the date and the version should be changed. It is also good to leave some reference on the original driver version for our ourself.
Find (this may be different depending on which version of the driver you are installing):
1 |
DriverVer=03/18/2011,2.08.14 |
Change to:
1 |
DriverVer=03/18/2021,12.08.14 |
If you want the driver to also automatically pick up the devices with PID programmed to 0000 or any other number (this may be useful if you reprogrammed the PID to some other number while playing around) you can add a few lines. Basically what you do is just add a duplicate a line (in each set of VID/PID associations), but edit the PID numbers to ones of your liking. You can add multiple lines if you want multiple PID-s supported.
Find:
1 2 |
[FtdiHw] %VID_0403&PID_6001.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_6001 |
Between the two lines add line:
1 |
%VID_0403&PID_0000.DeviceDesc%=FtdiPort.NT,FTDIBUS\COMPORT&VID_0403&PID_0000 |
Find:
1 2 |
[FtdiHw.NTamd64] %VID_0403&PID_6001.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_6001 |
Between the two lines add line:
1 |
%VID_0403&PID_0000.DeviceDesc%=FtdiPort.NTamd64,FTDIBUS\COMPORT&VID_0403&PID_0000 |
Find:
1 2 3 4 5 6 |
[Strings] FTDI="FTDI" DESC="CDM Driver Package - VCP Driver" DriversDisk="FTDI USB Drivers Disk" PortsClassName = "Ports (COM & LPT)" VID_0403&PID_6001.DeviceDesc="USB Serial Port" |
After the PortClassName line add add line ( ๐ you can also get more creative with the names):
1 |
VID_0403&PID_0000.DeviceDesc="USB Serial Port 0000" |
You should do this in both INF files (lines in the second file may be slightly different but the principle is the same). You won’t be able to save the INF files to their original location because of the user right needed to do so. Save the edited files to desktop with the same names (ending in .inf). Then copy/move them to their original locations.
After that it is time to plug the FTDI device into computer for the first time after uninstalling the drivers. If you did changes to INF files correctly Windows will auto-install the driver.
If your device was already reprogrammed by the malware driver to a PID of 0000 it will show up as USB Serial Port 0000.
You can check the driver version by right clicking on device and choosing Properties option. Look under tab Driver. The data entered into the INF file should show up under date and version (here the vesion/date are slightly different, but you can see that they were modified).
Next you may want to change the PID back to the original 6001 (with driver modification also 0000 devices work without a problem). To do this use FT_PROG software from ftdi (currently the v2.8.2.0 works ok). The drivers should be installed or the FT_PROG won’t pick up the device (you can install the drivers by the outlined procedure or manually), and of course the device you want to reprogram shoud be connected to USB.ย After opening the program press the magnifying glass icon to scan for devices (or F5). After successfuly finding the devices you can change the PID under USB Device Descriptor.
You probably want to enter 6001 or choose FTDI default from top dropdown menu. Press lightning icon and choose Program button to program the device. When you replug the device after the programming the new PID will be active. In device manager the standard 6001 PID should show up as USB Serial Port (without the zeros). If the PID keeps reseting to 0000 you still have the newest driver. Also plugging the device in any other computer with the newest driver will reset the PID to 0000.
There is only one drawback to this solution – namely the driver will not update, which means that if new features / chips are added to the driver you won’t be able to take advantage of them. This trick may be used to keep the devices working, however you should contact the one who sold you the counterfeit device and demand for a refund… That is the only proper way to ensure you will get a genuine device next time you buy the product.
Thank you, your guide really helped me fixing my ftdi issue!
I used 2.10 driver on win7 (running on virtualbox on a macbook).
Thanks!
driver 2.12.04 has been released; do you know is it still brick the fakes?
i haven’t one to test.
I have briefly tested 2.12.00 version (available on windows update) on a Windows 7 computer and it seems to work ok, without bricking the chip. However this was just a quick update, plug and see test, so I can’t guarantee anything. I haven’t even restarted the computer in the process.
I’ve been rolling back drivers successfully under Windows 8.1 for a while now, and finally tried your driver date/version change method today, but it failed. When I performed an install of the 2.10 drivers, I was got a popup from the OS that “The hash for the file is not present in the specified catalog file. The file is likely corrupt or the victim of tampering.”
As a result, I’ll need to brush up on installing unsigned drivers and disabling integrity check as well.
Well, actually the method is a bit of a hack – it may be that the Microsoft patched some security holes in Windows in the meantime… At the time of writing the method worked on W8 and W8.1, dunno if it still works or not. My previously installed drivers still work as they should…
How can I save a modifified ini in the system32 folder? Ive tried running notepad as admin, I have uac disabled. I cants get it to save. Says I do not have permissions to save there. I have also tried to modify it then replace it from desktop to no avail. I have found a way to delete the ini all together but not put another in its place. Thank You.
I also couldn’t edit the file in place. I got permission denied when I tried to save the changed file to its original location. The way it worked for me, when I originally wrote this post, was to save it on desktop and then drag and drop it to the original location. Unfortunately with new security updates to windows it now seems to be impossible to change files in DriverStore/FileRepository folder, even with Administrator rights (tested on W7 SP1)…