FTDI – Serial Killer, Not quite

Many of my fellow radio amateurs will be familiar with USB to Serial adaptors, the lack of RS-232 ports on modern computers mean they see plenty of use within the radio amateur community especially for CAT control of our Radio’s.

One of the most popular (and the one offering the best compatibility) is the FT232R chip from the scottish company FTDI. They have built a reputation for producing great USB UART IC’s with excellent compatibility and more importantly drivers that are included within windows. These devices are found in thousands of other devices from aurduino’s to 3D printers. Their popularity however means that there are a whole host of clones and couterfeit devices out there, most of which are indistiguishable from the real thing and it seems that FTDI have decided to do something about it by rendering these fakes inoperable.

A recent driver update that was pushed out via windows updates uses a clever trick to determine if it is a genuine device and if it isn’t then the PID (Product ID) of the device is updated to 0000. This has the effect of rendering the device inoperable, even if you downgrade your drivers or use them in another computer.

Following a huge backlash from the EE and Maker communities (and i suspect some heavy pressure from Microsoft), FTDI have now removed this from their drivers, however this doesn’t help much if you have already have a device that’s been rendered useless. However as they only update the PID, this can easily be reveresed. So if you have been affected by this, follow the instructions below to unbrick your device.

Unbricking the FTDI FT232R

To do this you will need access to a linux based machine. The instructions here are based on using Ubuntu.

USB Devices use a combination of VID (Vendor ID) and PID (Product ID) in order to identify the device and which driver it should be using, the VID:PID combination of the FT232R should be 0403:6001, however the recent driver update will change fake devices to 0403:0000 so in order to bring the device back to life we need to set the PID back to 6001.

  1. Insert your bricked device into a linux computer
  2. Verify that the device is indeed the one in question, run “lsusb”, you should see a device with VID:PID of  “0403:0000”
  3. Download the ft232r_prog version 1.24 and extract it to a folder using the command “tar -zxvf ft232r_prog-1.24.tar.gz” from the folder containing the downloaded file
  4. You will now need to ensure you have any dependecies installed by running “sudo apt-get install make gcc libftdi-dev”
  5. Change the directory to the one containing the extracted program by doing “cd ft232r_prog-1.24”
  6. run the command “make” to build the program
  7. now run the following to set the PID correctly and unbrick your device “sudo ./ft232r_prog –old-pid 0x000 –new-pid 0x6001”
  8. Now verify that it’s worked, unplug and plug back in your device and run “lsusb”, you should now see an id of “0403:6001”
  9. Your done, you have now unbricked your device.

 

About author View all posts

M0YOM

M0YOM

I'm James, a radio amateur, software engineer and professional geek. I'm the IT Director for a software company and Director and part owner of a web design, hosting and media business.

7 CommentsLeave a comment

  • Ah, that was brilliant! I had give a friend of mine a modem I built, that was using an FT232R, and one day he came to me quite bewildered with a now non-working modem. I was quite bewildered as well, until I discovered that this was the issue! Thanks a bunch for your guide! The adapter is now working again! Yay!

  • Worked perfectly!
    after doing it, windows recognized my device ans assigned it a COM port, but i could not program my funduino (via an USB to TTL adapter with FTDI chip).
    Finally i repeated your tutorial and de PID was also changed, so keep your devices far from Windows if you have this issue (until a new driver does not brick it or you find an old driver)

    Thanks a lot!

  • I’m new to Linux. Each step in this process seems to work fine, except the last one. When I’m in terminal and type “sudo ./ft232r_prog –old-pid 0x000 –new-pid 0x6001”, I get “unrecognized arg: “–old-pid””. I get the same thing when I copy and paste the exact text from line 7 above.

    It’s obvious (?) to me that the character immediately in front of “old” is not a dash (or minus sign). I can’t enter that character in the terminal, but copying it and pasting ought to work (if indeed it is an odd character not on my U.S. keyboard. What gives? (I suspect this is going to be an obviously embarassing answer.)

  • By the way, here are the terminal lines as I see them:

    [email protected] ~/ft232r_prog-1.24 $ sudo ./ft232r_prog –old-pid 0x000 –new-pid 0x6001

    ft232r_prog: version 1.24, by Mark Lord.
    unrecognized arg: “–old-pid”

  • Oh, my gosh. It’s a double dash! Somewhere in the text editors/web editors/etc., the “–” (two en-dashes) is changed to an em-dash in the displayed text (two dashes are changed to a hyphen). I know Word does this edit automatically, so I don’t know if this is a “feature” of M0YOM’s web page editor or something on my end.

    In any event, THANKS A MILLION. My bricked Arduino Nano (ok, my five bricked Nanos) are now corrected. This has saved me a handful of controller boards. KUDOS!

  • It’s work! But I have problem. Window continuously rewrite PID back to 0000 after unplug/plug cycle. Is it possible lock right value forever?

    • Hi Matt,

      You need to make sure that the driver version you are using is not one that bricks the clone chips. It will be resetting the PID as you are still running the old driver that resets it.

Leave a Reply

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