Win 10 FTDIgate solved!

My recent upgrade to Windows 10 has brought back to me an old issue: FTDI drivers.

Yes, I’ve bought cheap Chinese Arduino clones, mostly small boards to use in my projects as the official ones are quite expensive.

I never had problems on my previous Windows 7 install: even if I knew I was probably using one or more of those infamous FTDI counterfeited usb-to-ttl chips, I was lucky enough to dodge the FTDIgate.

When today, while setting up again my Eclipse + Arduino Eclipse Plugin, I stumbled into a weird message on the serial console my first thought was they did it again!

So, if your cheap Arduino clone has suddenly stopped responding and your OS is Windows 8, 8.1 or 10 you are probably stumbling on my exact same issue and you might want to carefully read this post to solve your troubles.

1. Assess

First of all you want to verify you are affected by the new FTDIgate, so connect via a serial terminal of your choice to your problematic Arduino: if you see a repeated message stating NON GENUINE DEVICE FOUND! then welcome aboard!

2. The tools

We will download all the tools we need upfront because this process implies we will have to disconnect from the Internet at a certain point to prevent Windows 10 to kick our butts with its automatic updates.

What you need is:

  • an older version of the FTDI drivers, latest working ones are 2.10.00, which you can get from FTDI in the No Longer Supported section (get the zip version)
  • a tool called CDMUninstaller which completely removes the existing drivers and it’s distributed by FTDI itself

3. Clean up

First we need to remove the drivers causing us all these troubles. If you believe you can do that via the Windows Device manager then youa re wrong: these drivers come in two separate parts, only one of which can be managed via the default driver management tool. You need the CDMUninstaller tool to ensure the drivers are completely removed:

remove

I’m not 100% it is needed, but I suggest you restart your system now, just to be sure there are no leftovers.

4. Prepare

It’s now time to load the new drivers, but be sure to do it with your Arduino board unconnected and while being offline.

Start decompressing the drivers package, then install the drivers right clicking on the two .inf files and selecting Install from the context menu.

Now it’s a good time to verify you have solved your problem, so open a serial terminal and check you can now communicate again with your Arduino.

The drivers we have just installed are going to be replaced at first opportunity by Windows with the trouble-making ones. In order to prevent Windows to find a more recent drivers version online, which will occur as soon as you’ll go back online, you have to open the two .inf files in any text editor, change the DriverVer line with a date very far in the future (I sat mine to 01/27/2034) and save.

If you now right click on the two .inf files and select Install from the context menu you’ll receive an error message informing you the files do not match their signature: don’t worry, we are going to solve this little issue.

We need to restart our OS, but allowing for unsigned drivers install: this can be achieved only with a system restart so open the Settings app and navigate to Update & security > Recovery.

Since the next step will actually restart your computer you have to read the next paragraph carefully before selecting the Restart Now button in the Advanced startup section.

5. Advanced Restart

Once in the Advanced restart section you’ll have to browse the advanced settings to Disable drivers signature verification, something a little tricky to achieve, but look at the following pictures and prepare yourself:

656x307ximage49-pagespeed-gpjpjwpjjsrjrprwricpmd-ic-cwzcnv7v-_

Select option Troubleshoot

656x307ximage50-pagespeed-gpjpjwpjjsrjrprwricpmd-ic-s7_14-sqwn

Head into Advanced Options

656x307ximage51-pagespeed-gpjpjwpjjsrjrprwricpmd-ic-izel4o6a5

Pick the Startup Settings

656x307ximage52-pagespeed-gpjpjwpjjsrjrprwricpmd-ic-mfl_b-m4mc

And finally Restart

656x473ximage53-pagespeed-gpjpjwpjjsrjrprwricpmd-ic-m7oxusdlqr

Activate the Disable driver signature enforcement setting

During the restart process you will be asked to select an option to activate during the next boot: we need to disable drivers signature verification, which was option number 7 for me.

6. Permanent Install

After reboot you will be able to right click on the two .inf files and select Install from the context menu: you will still receive a warning, but this time you will be able to get around the issue and proceed ignoring the verification error.

You can now go back online on the Internet, this time Windows shouldn’t be able to replace your working drivers!

7. Verify

It’s now time to restart your computer and verify everything still works. After a reboot open the Device Manager, select the problematic Arduino COM port and check the drivers version: if it’s anything above the version you selected…. well, something went wrong.

If I were you would try restarting from step 1, but this time try to read more carefully the instructions!

Advertisements

3 thoughts on “Win 10 FTDIgate solved!

  1. Viste le difficoltà che hai incontrato a riguardo con Windows 10, io avrei agito diversamente, tipo creare un’immagine virtuale di Windows XP, al cui interno inserirei tutto l’occorrente per sviluppare e collaudare Arduino et cloni. Potrebbe risultare una soluzione dispendiosa a livello di tempo per la sua preparazione ma almeno ti eviterebbe una serie di incompatibilità e ti consentirebbe di creare una sandbox ad hoc definitiva, sempre pronta e soprattutto “trasferibile” facilmente da PC a PC, a prescindere dal sistema che poi si utilizzerà per farla partire (sia esso Win8/10 oppure una distro Linux)

    Like

    • Hi Francesco and thanks for your comment.
      In reality working in a virtual environment is going to be harder because whenever there is a communication problem you will not know if it’s in the host controller driver or in the guest OS driver… Less layers mean easier troubleshooting, but I get your point in making a complete box and I actually might decide to invest some time in giving that a try: thanks for the suggestion!

      Like

      • A quick update on this virtualization suggestion: since the host OS doesn’t mount the serial port without the proper drivers virtualization is not going to provide any help as the serial port will not be made visible to the guest OS unless it is also visible to the host OS.
        Good idea Francesco, sadly it cannot help in this context…

        Like

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s