FTDI, the manufacturer of the popular USB to Serial converter used by many Arduinos released a driver (2.11.0 and 2.12.0) that bricks chips that it believes to be counterfeit. What it did was to set the PID (Product ID) to 0000 instead of 6001 which renders the chip unusable as Windows cannot find a driver for it.
There was a time when USB to serial hardware meant one company: FTDI. But today there are quite a few to choose from and one of the most common ones is the WCH CH341. There’s been support for these chips in Linux for a while, but only for use as a communication port. The device actually has RS232, I2C, SPI, and 8 general purpose I/O (GPIO) pins. [ZooBaB] took an out-of-tree driver that exposes the GPIO, and got it working with some frightening-looking CH341 boards.
He had to make a slight mod to the driver to get six GPIOs in /sys/class/gpio. Once there though, it is easy to manipulate the pins using a shell script or anything that can write to the virtual files corresponding to the GPIO pins.
I know it's possible (in theory) to reprogram the VID PID details back into a chip. It is however way beyond me.
Recently I learned that Microsoft distributed a piece of malicious software as part of their Windows update service. This virus was written by the FTDI chip makers to brick any chips such as the CH341's found in many cheaper Arduinos et al.
The virus attacked my CH341A serial to USB chip by writing 0's to the VID PIC and probably other locations. This makes the hardware 'Unknown' and even if you have the correct driver software, the device is never associated with it.
Does anyone know a solution to get the zeroed information back into the CH341A?
JamesJames
2 Answers
Here's the guide I used to correct the problem :-
HOW TO FIX THE USB-FTDI PROBLEM
(on arduino nano, usb ttl, ft232, ...)
There must have been a production of faulty ftdi drivers (version 2.12.0.0 or later) on august 2014 that makes some arduino boards and other usb devices not readable from the computer. The problem is random, meaning that it is possible to program the arduino a couple of times and then it comes out the ftdi problem, at that point the board isn't accessible anymore.
Once you come up with this problem, upgrading/downgrading the drivers, the IDE or the bootloader is just a waste of time, as the ftdi driver installed leaves some wrong data. This guide followed step by step will completely fix the driver problem thus making your board working again.
Step 1: check if you have a faulty ftdi chip driver
Not every ftdi chip has faulty drivers, so the first step is to check the chip's driver version. In order to check the version you need a software like usbview or usbdeview (both freeware and don't need any installation). Run the software and look for the 'USB serial converter' device which is the one related to the ftdi driver, then read the vendor-id and the Product-id whose values should be 0x0403 for the vendor and 0x6001 for the product. The goal is to modify that 0x6001 value with 0x0000, and to do that we need some other software.
Step 2: modify values
Unplug your arduino nano or usb device. In order to modify the driver values you need CDMUninstaller (no installation needed). Fill the vendor and product fields with the values found with usbview (0403 and 6001) and click 'add', finally click 'remove devices'.
Step 3: download the 2.10.0.0 ftdi driver
Go to the ftdi website and download the 2.10.0.0 virtual driver choosing between 32 or 64 bit version, voiding the 'setup executable' file: just download the folder. After downloading the folder, we have to overwrite some files inside of it. Click FTDI.rar to download the files already modified, and place them inside the 2.10.0.0 folder overwriting the old ones.
Step 4: connect your arduino board
connect your arduino board, and stop windows from looking for new drivers. Go to device manager and look for FT232 USB device, then right click on it, select Properties and click on update drivers. Manually select the place in which scan for the new drivers and choose the 2.10.0.0 driver folder with the modified files. Now windows will prompt you saying that it can't certificate the new drivers. Ignore the alert and proceed with the installation. Once installation has finished, windows should recognize the connected board as 'USB recuperacion'.
Close the window and go to device manager, and look for the COM ports device. The connected device is now showing up like USB recuperation by ElectroHobby.es
Step 5: modify the chip eeprom
This is the last step and you need to restore the initial vendor and product values inside the ftdi chip eeprom. In order to do that you need to download and install Ftprog, click on the magnifing glass icon, select 'USB device descriptor' and again select 'custom pid'. Finally click on 'ftdi default'.
A new window shows up and you just need to check flag the device list and then click on 'program'.
Bra1nBra1n
What you call a “virus” is, more properly, malware. FTDI's driver that bricked fake FT232R chips was withdrawn from Windows Update in October of 2014. (See, for example, discussion at epanorama.net, sparkfun, and hackaday. The hackaday article, “Unbricking a counterfeit FTDI chip”, has links to an article about unbricking counterfeits.)
The CH341A is not a fake FT232; it is a cheaper alternative that requires a different driver. The driver is not automatically installed by Windows. Several web pages I've seen about it suggest downloading from Chinese-language web pages, which is a gamble if you don't understand what the page says. [However, English-language driverscape.com seems to have a CH341A driver at the moment. I don't know if it works or whether it is free, and anyway have no Windows machine to test it on.]
James Waldby - jwpat7James Waldby - jwpat7