Want to update the firmware of an old USBASP without a second USBASP

I have an old USBASP and the firmware needs to be updated for it to function (error: avrdude: warning: cannot set sck period. please check for usbasp firmware update). I don't have another USBASP with which to update it so I was thinking I could perhaps use an Arduino (Nano Every) as ISP but I'm not sure I can upload the firmware I downloaded with the Arduino IDE.

I got the latest firmware from here: USBasp - USB programmer for Atmel AVR controllers - fischl.de

which includes the source code but it's in the form of many different files that I'm not sure I can use with the Arduino IDE.

I found instructions here on how to use a second USBASP with a program called Khazama AVR Programmer but I don't think there's a way to get it to use my Arduino Nano Every. https://www.instructables.com/Firmware-Upgrade-for-USBASP-Clone-Fixing-Error-Set/

Is there a way I can update the firmware of the USBASP without a second USBASP?

I can recommend to have a look at AVRDudess. It is a GUI for uploading and downloading AVR's through a variety of programmers.

You could use your "Arduino as ISP" and then update the Atmega8 on the USBASP stick via AVRDudess.

Thanks very much for the suggestion. I'm trying to do this now.

When I try to run the configuration: -c arduinoisp -p m8 -P COM9 -b 19200 -U flash:r:"E:\Projects\Electronics\USBASP firmware backup\oldfirmware.hex":h

using AVRDudess, I get the error

avrdude.exe: Error: Invalid -P value: 'COM9'
             Use -P usb:bus:device
avrdude.exe: opening programmer "arduinoisp" on port "COM9" failed

I'm certain that COM9 is the correct com port for the Arduino Every (which has been flashed with ArduinoISP) though.

Am I supposed to enter details from the Details tab of the Properties box for the device in Device Manager? I'm using Windows 10.

Is this what it wants? Hardware ID USB\VID_2341&PID_0058&REV_0100
Busnumber 00000000

The goal was to back up the old firmware before attempting to write new firmware.

arduinoisp is the wrong protocol for the "Arduino as ISP" programmer. Confusingly, Arduino manufactured a programmer named "ArduinoISP" that was actually a USBtinyISP programmer. The arduinoisp protocol is for use with that long since retired programmer hardware.

You must use the stk500v1 protocol with the "Arduino as ISP" programmer (or the arduino protocol if you are using an ATmega32U4-based board like the Leonardo as the programmer).

Unfortunately my experiments indicate this board can not be used as an "Arduino as ISP", but feel free to give it a try.

If you bought a Chinese USBasp clone then it probably is not possible. The reason is the manufacturers of those programmers set the fuses on the microcontroller to prevent reading the binary. You can run the AVRDUDE read command, but the file you get will be worthless. So changing the firmware on those programmers is a one way street.

This topic was automatically closed 180 days after the last reply. New replies are no longer allowed.