====== About ====== In October 2014, FTDI released a new driver for their popular USB to UART devices (e.g. FT232) that bricks non-genuine FTDI chips by nulling the ProductID. The chips exist in many different devices and it is essentially impossible to determine which chips are genuine and which are not. These devices are only bricked by the v2.11.00 and v2.12.00 versions of the driver on windows. The v2.10.00 driver (which does not brick the devices) does still exist to be downloaded at the time of this writing. Using that driver and the FT_PROG utility one can re-program these devices back to normal. Using the 2.11.0+ drivers on Windows (at the time of this writing) will always reset the ProductID of these chips to 0000. Avoid using these drivers whenever possible. Note: the drivers included in the current Linux kernel and in OSX do NOT reset this value. This only occurs with the Windows drivers. ====== How To ====== Following this guide could brick your device even worse than it already is. This guide is provided for educational purposes ONLY. To get started, download the 2.10.00 version of the Virtual COM Port driver. This is currently available from the FTDI driver download site here: [[http://www.ftdichip.com/Drivers/VCP.htm]] **Should FTDI remove the download above, I have hosted it locally here: {{:cdm_v2.10.00_whql_certified.zip}}** Once the file is downloaded and decompressed, open ftdibus.inf and ftdiport.inf in your text editor of choice. Open Device Manager by running devmgmt.msc from the start menu search box or run dialog. Open the properties dialog for the device in question. Select Hardware IDs from the details tab and verify that the Product ID has been set to '0000'. It will look somewhat like this: USB\VID_0403&PID_0000&MI_00 Note: If your PID value is not nulled (0000) then your device has not been disabled by the new FTDI drivers. If your PID is set to a value like 6001 or 6010 then it has a valid PID and has not been bricked. If your device still does not work as expected you likely are experiencing other issues and this guide is not for you. If your PID //has// been set to 0000, then you can continue below. In the ftdibus.inf and ftdiport.inf files you opened earlier, replace all instances of 6001 with 0000. I have confirmed this specifically for FTDI FT232 devices. It is entirely possible that your bricked FTDI device is not an FT232 and has a different PID code, such as 6011, 6014, etc. I do not have one of these devices (bricked) on hand to test with, so use whatever resources to have available to verify the correct PID of the device in question. I suggest looking up the part number on the chip itself. This information is confirmed to work with bricked FT232s with the PID 6001. Replacing the 6001 PID values with 0000 will not resolve the issue, but it will allow Windows to assign the driver to the device, which is the first step in reprogramming the chip. In theory, you **could** leave the PID as 0000 and use this modified driver, but the device will //only// work on systems that have this customized driver. Once the modified files have been saved, go back the device properties pane from Device Manager in Windows and click "Update Driver". You will need to browse to the folder that contains the files you edited. If you did everything correctly, the device should enumerate as a COM port. You can test it at this point to verify that it works if you wish. ===== Reprogramming ===== Despite how annoying it is that FTDI released a driver that bricks counterfeit chips, their (freely available) reprogramming utility can and will reprogram these chips back to a working state. To do so, first download FT_PROG here: [[http://www.ftdichip.com/Support/Utilities.htm]]. I am working with version 2.8.2.0. If this is removed by FTDI, let me know. The application is Windows only (shouldn't be a problem since the problem originates from Windows systems) and requires .NET 4.0/3.5. Using it is very straight forward but be warned, you can do serious damage to your device using it. Proceed only at your own risk. Consult the [[http://www.ftdichip.com/Support/Documents/AppNotes/AN_124_User_Guide_For_FT_PROG.pdf|FT_PROG manual]] as necessary. This will most likely not work with VM Guests using virtualized USB ports. The device must be connected directly to the host computer. To begin, open FT_PROG and browse to Devices > Scan and Parse. Your device should be listed. Browse to USB_Device_Descriptor and using the dropdown box select FTDI Default. You can now click "Program" and the device will be reprogrammed with the new PID. At this point, unplug the device and attach it to a new computer. Check the PID on the new computer and make sure it is corrected to 6001. If it is set to 6001 then your device has been reprogrammed successfully! If not, try programming it again.