How to Update the Firmware on a USBasp V2.0

REVISED 2018-07-16

If you buy a cheap USBasp V2.0 ICSP programmer on eBay, chances are, avrdude will give you the following warning message:

avrdude: warning: cannot set sck period. please check for usbasp firmware update.

While it’s just a benign warning message which can be ignored with no ill effects, it’s still a constant irritant. Furthermore, it also prevents my speed up technique from working, because it relies on changing the sck period. To get rid of the warning, you must update the firmware to the latest version: usbasp.2011-05-28.tar.gz

If you have another ICSP programmer already, such as a USBtinyISP, programming in the new firmware is quite simple. If you have more than one USBasp, you can even use them to program each other. Here are the steps:

0. Verify that you have a USBasp V2.0, and that it has a 12MHz crystal and an ATMEGA8 or ATMEGA8A MCU onboard. DO NOT CONNECT IT TO THE USB PORT OF YOUR COMPUTER.

1. Short the JP2 (self-programming) jumper.

2. Connect the USBasp V2.0 to the USBtinyISP (or other ISP) using a 10-pin ribbon cable


3. Flash in the new firmware: avrdude -c usbtiny -p atmega8 -U flash:w:usbasp.atmega8.2011-05-28.hex

4. Reprogram the USBasp’s fuses: avrdude -c usbtiny -p atmega8 -u -U hfuse:w:0xc9:m -U lfuse:w:0xef:m

If you’re not using a USBtinyISP, substitute the proper parameter after -c (e.g. -c usbasp).

Note that the usbasp.2011-05-28.tar.gz archive doesn’t contain a compiled .hex file, so you have to re-compile it using WinAVR. Instead, you can just use my hex file, which I compiled directly from the sources:

If you don’t have another ICSP programmer, you can use an Arduino, following these instructions: Updating firmware on USBASP bought from eBay. However, you may also have to also set the fuses according to Step 3 above. My PC wouldn’t recognize the reprogrammed USBasp until I set the fuses.

There are 25 Comments to "How to Update the Firmware on a USBasp V2.0"

  • surender says:

    cannot set sck period update firmware,,,,

    i am using usbasp programmer, interfacing with atmega8 microcontroller,
    i want to burn program into atmega8 controller, using usbasp programmer , the same error i am getting ,,

    what can i do? how to solve this error?

    i need command line based setting. if any hardware setting are their it’s ok, please please…………i am new to this controller & linux…….how to over come this error sir…?

    • lincomatic says:

      You can just ignore the error. It’s just a warning. Or, if you don’t want to see it anymore, follow my article to update its firmware.

  • paco says:

    grasias por la informacion.

  • Miloš says:


    I made my own USBasp and set fuses and programmed it just like you did, and now the red LED is glowing, but is not recognized by windows (device descriptor request failed). Do you maybe know what could be the issue?

  • PFo says:

    I used your info as a reference although I re-flashed mine using an Arduino. The fuse bits were relevant. Thanks for sharing!

  • Geert says:

    After flashing this firmware update the USBasp is not recognise anymore under Win7.

    Any idea?

    • lincomatic says:

      It sounds like there was an error when you flashed the firmware. It should work. Did you see any errors from avrdude when you flashed it?

  • Alan Kirk says:

    Sam Would you mind posting an .eep file so I can use avrdudess to set the fuses. I have been able to flash my Chinese USBASP using another like unit which uses an ATMEGA8L. I am now unable to get that one to be recognized by my WIN7 computer, suspect the fuses.


    • lincomatic says:

      Hi Alan, sorry, I didn’t see this until just now, but I see that you figured out how to set the fuses yourself.

  • Nigel says:

    Used a usbtiny to reprogram a usbasp and worked great. Thanks for taking the time to write this up.

  • Pepe says:

    Hi, i do like u wrote. Work for me. After flashing, only 1 code can be written on chip (atmega 32 through arduino sw), if i want write another, i obtain error:
    avrdude: error: programm enable: target doesn’t answer. 1
    avrdude: initialization failed, rc=-1
    Double check connections and try again, or use -F to override
    this check.

    After unplug and plug usbasp back – work for 1 cycle again.
    Any idea?

  • Steven says:

    Managed to reprogram my usbasp successfully. Thanks.

  • Johnny Kaka says:

    yeehaa worked perfectly first time – this was the easiest guide I found thanks

  • cosailer says:

    side note: some usbasp clones prevents firmware reads and setting fuses, therefore you need to do a chip erase first. just upgraded mine. thank you 🙂

  • Angelo says:

    Great post. I updated my new USBASP using your .hex file and worked fine. I also use Khazama AVR GUI. It helps understand which fuse is what! My new chinese USBASP has only one unamed jumper under the ATmega8, acessible only by solder side. I assumed as JP2 and it worked. By the way, I installed a male jumper there for future updates! Thank you for your post.

  • farrukh says:

    after updating usbasp firmware, it is no more recognized, get device descriptor error.

  • farrukh says:

    issue was with fuse bits, thanks a lot, it works.

  • Ok I have two of those low cost USBasp burners. Now what I understand how to connect them .. just use the 10 pin ribbon cable and be sure to set the jp2 on the one to be programmed. But what software do I used to program it with? The Arduino IDE?? Thanks Great day to you.

  • Richard Brown says:

    How do you do this? Verify that you have a USBasp V2.0, and that it has a 12MHz crystal and an ATMEGA8 or ATMEGA8A MCU onboard. The chip is real small. It says Atmel and there is a 12.00 MHZ clock ship how do you know if it is V2.0? Thanks again

Cancel Reply

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>