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=’’ 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

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:


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.

8 thoughts on “HowTo: Fix AVRDUDE 6.3/Arduino 1.6.10+ Compatibility Issues with USBasp Clones”

  1. 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.

  2. 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?

    1. 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

  3. 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?

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

  5. I built a charging station kit I’ve had for awhile and want to update the FW to 5.0.1 I DL’ed 5.0.1 tonight and Arduino 1.6.5 is giving me an error that the sketch is too big. It’s at 105% with no edits done. I tried to delete a few things hoping to make room but it didn’t help, I deleted the two Mennekes files on a guess (as I’m not using a Mennekes lock) in the firmware folder that contains the plethora of files (libraries?) and the open_evse file. After spending a few hours I’m stuck. I can’t understand why the sketch is too big right out of the box.

    Searching for a solution google found your blog post, i tried your solution and it broke the compiler surprisingly, i wouldnt this the usb driver could do that, i get
    a cc1.exe: error: -fno-fat-lto-objects are supported only with linker plugin.

    error, when i switched to libusb v1.2.6.0 with Dazig the compiler works again. i had driver v0.1.12.1 when i started, dazig didnt have that as an option to go back to.

    I worked on this for hours last night, im really hating updating openevse FW, its always soo difficult and full of technical hurdles, then when their solved, new FW comes out and i get loading problems all over, usually sketch is too big. Please HELP!

Leave a Reply