HowTo: Fix AVRDUDE 6.3/Arduino 1.6.10+ Compatibility Issues with USBasp Clones

I recently upgraded to Arduino 1.6.13, and found that I could no longer program my boards with my Chinese USBasp clone programmer. When the Arduino IDE tried to load the firmware with my USBasp, AVRDUDE couldn’t find my USBasp, and gave this error:

avrdude: error: could not find USB device with vid=0x16c0 pid=0x5dc vendor=’www.fischl.de’ product=’USBasp’

It turns out that the that AVRDUDE 6.3, which is bundled with Arduino 1.6.10+, has timing issues with USBasps. The fix is to replace your libUSB-win32 driver with libusbK v3.0.7.0. An easy way to install libusbK v3.0.7.0 is to use zadig. Download the zadig from

http://zadig.akeo.ie/

Plug your USBasp into your PC.

Launch zadig, and from the menubar, select Options->List All Devices

Next, from the top listbox, select USBasp.

From the Driver selector box, click the up or down arrow key until libusbK (v3.0.7.0) appears.

Finally, click the Replace Driver button.

The screen should look like this:

zadig

You do not have to reboot or disconnect/reconnect your USBasp. After Zadig finishes installing libusbK, AVRDUDE 6.3 will start working correctly with your USBasp.

NOTE: the version of AVRDUDE that Arduino 1.6.x uses is actually controlled by the Boards Manager (Tools->Board->Boards Manager). Even if you have a version of Arduino 1.6.x prior to 1.6.10, if your Arduino AVR Boards by Arduino is version 1.6.10+, it will use AVRDUDE 6.3.

There are 7 Comments to "HowTo: Fix AVRDUDE 6.3/Arduino 1.6.10+ Compatibility Issues with USBasp Clones"

  • Alan Kirk says:

    Thanks, saved me a lot of anguish! You might mention that the USBasp needs to be plugged in to see it in the Options / List all devices.

  • Alan Kirk says:

    All was working well with my China USBasp until today. I was attempting to use my USBasp with Arduino 1.8.1 and a simple sketch to blink the LED on an ESP8266. It was on Com 5 and had worked successfully with V. 1.6.4 . With 1.8.1 I got an set of 4 Errors that appeared to be unsuccessful communication problems. I thought the problem might be the USBasp timing so I used this technique to “improve” the driver. Now the dropdown device menu shows “CP2102 to USB Bridge Controller” and not “USBasp”. Any clue as to what I did? The Arduino Tools also doesn’t give me a Port to select from. Is there a USBasp driver?

    • lincomatic says:

      You’re getting AVRs and ESP8266s mixed up. The USBasp is an ISP programmer for AVR MCU’s like the ATmega328P. The USBasp uses libUSB to communicate with your PC. The ESP8266 is programmed via its UART. The CP2102 is a USB->UART converter. Is that what you’re connecting to your Huzzah to program it? You can’t program an ESP8266 with a USBasp

  • Alan Kirk says:

    Right! Confusion at this end. I do have the CP2102 USB to UART board attached, which is connected to the Huzzah ESP8266.
    I was confused by the IDE Tools Programmer showing USBasp.
    The current issue appears to be there is a blank Port entry in Tools. It use to be Com 5, then when I ran Zadig and installed libusK I killed the Com 5 entry.
    How do I get it back? I’ve tried power down and restart of the PC.
    Should I take this conservation elsewhere as it has gone way off course from your posting?

  • Alan Kirk says:

    Reinstalled the Silab CP2102 driver and that fixed the Port issue. The libusbK (3.0.3.00 install must have broken that connection.
    Thanks for the help

Write a Comment

XHTML: You can use these tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>