FTDI plays Dirty : Drivers Scandal

Woahh!! feeling like “No!! Not this” or “Nice move there”.
You can be one of the two people saying above lines by the action taken by FTDI .

So, What is FTDI ?  [[Those who already know skip Down to “Driver Scandal”.  ]]   

FTDI is actually a company that manufactures chips and electronics solutions mostly regarding USB.  Above is given the link for their website.
Typical chips are FT232R, FT232H , FT245R/B etc etc. ( lots of them).

Where I use FTDI ?

Lets start with the devices that you use to communicate with your PC/Laptop or to other devices with USB as interafce.  Arduino is a typical example, although it no longer uses FTDI chip as they have developed their own USB interfacing firmware which they upload in some other IC(atmega 32u2) with the open source code.

The old Serial ports are actually replaced by FTDI and similiar chips like PL2303, CP2102 etc etc.  But FTDI gained popularity because of its reliability of drivers.  A lot of or perhaps almost all USB to Serial Converters that you purchase in the market is nothing more than one of these IC in there.

usb-serial-adapter
SRC :
http://www.codeproject.com/Articles/32330/A-Useful-WMI-Tool-How-To-Find-USB-to-Serial-Adapto

So, we loosely say that FTDI’s one of the product is nothing more than the most awesome thing that has eased our lives from those serial connectors and provided the universality with USB.  Now we connect all our devices(controllers with serial ports) to a USB directly by simply putting a FT232 chip on the board itself.
Obviously, the communication’s physcial standards are changed but not the communication itself.  It is still the SAME serial communication with the same SLOW rate as of it used to be with serial conector.

ft232rl
DRIVER SCANDAL:

 

Short story –
its really like the new updated FTDI drivers in Windows(with WHQL certification ON) are killing or disabling the fake chips from functioning.

My Description –
After the successfull testing and deploying of our Arduino Moto boards which used FT232 for serial to usb conversion, there occured a problem all of a sudden that all the boards stopped working and my senior called me up for catching up to the problem.
I was having one of the board but that was working all fine yet.  So, I surmised that the people using the board might have screwed something up.

I connected those defected boards into my system which is LINUX and I saw that no serial port being initiallised for the connected FTDI.  So, I checked what the demon wrote in the Death Note :

beyond@beyondPC:~/Downloads/ftdi$ dmesg
[25330.895944] usb 3-3: new full-speed USB device number 56 using xhci_hcd
[25331.202952] usb 3-3: New USB device found, idVendor=0403, idProduct=0000
[25331.202960] usb 3-3: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[25331.202965] usb 3-3: Product: FT232R USB UART
[25331.202968] usb 3-3: Manufacturer: FTDI
[25331.202971] usb 3-3: SerialNumber: A9ILXZB7
beyond@beyondPC:~/Downloads/ftdi$

It was clear from the dmesg, that the enumeration for the USB is not complete and hence no serial port is assigned to it.  What rather was astounding => idProduct = 0000
whereas the idProduct should have been 6001 for these devices (standards of FTDI).

Then I was startled and thought this particular IC gone haywire, and tried others but Alas! all the same.  So it was clear that all the FT232 are corrupted or not working OKAY.
I tried googling but the problem itself was not clear that what is it that is actually stopping the enumeration process ??
At the end, I got through some links that mentioned about the recent activity by FTDI people to prevent their IC’s duplicacy along with the Microsoft update.

During the recent windows update, the WHQL certification in Windows and updating the FTDI drivers has led FTDI people to detect the fake chips and deliberately making the chip non-workable i.e. it writes 0000 to product id and stops it further enumeration and thus making the chip worthless.

My probing with these defective FTs gave me this:
I used USBVIEW on this FT232

FT232R USB UART
Manufacturer: FTDI
Serial Number: A9ILXZB7
Speed: 12Mb/s (full)
USB Version: 2.00
Device Class: 00(>ifc )
Device Subclass: 00
Device Protocol: 00
Maximum Default Endpoint Size: 8
Number of Configurations: 1
Vendor Id: 0403
Product Id: 0000
Revision Number: 6.00

Config Number: 1
Number of Interfaces: 1
Attributes: a0
MaxPower Needed: 90mA

Interface Number: 0
Name: (none)
Alternate Number: 0
Class: ff(vend.)
Sub Class: ff
Protocol: ff
Number of Endpoints: 2

Endpoint Address: 81
Direction: in
Attribute: 2
Type: Bulk
Max Packet Size: 64
Interval: 0ms

Endpoint Address: 02
Direction: out
Attribute: 2
Type: Bulk
Max Packet Size: 64
Interval: 0ms

Well, this seems like FTDI is really really angry about their past loss because of the clone chips in market being sold at a way cheaper rates than the original FT ICs.  So, screwing the ICs via a driver update with Windows surely seems to be a desperate move to gain back the control.

Me and other hundreds and thousands of poor guys who uses linux are indifferent to this as there is no such COMPELLING to us by FTDI.
The *.inf files in windows that I probed seemed to be
Ftdibus.inf
Ftdiport.inf
which are doing the dirty shit and writing somehow bad descriptors and scary shit with the EEPROM or the flash inside FTDI chips.  Well, obviously the utilities like FT_prog are not going to work!(they are not stupid!!).

But there seems to be a linux specific library for accessing the FTDI chips, libftdi but I haven’t yet seen anobody on internet with all positive report on writing the FTDI devices.
Lets do some probing and hacking inside the libraries and drivers in order to make an attempt to make the chips working.

For more information I gathered the links up for you greedy folks: (my leads uptil now)

http://www.dlpdesign.com/tnt/VIDPIDevils.pdf
http://www.intra2net.com/en/developer/

–check the whole libftdi1 there