USBasp USB-Programmer Firmware update

IMG_6997 The labeling on my programming adapter did not correspond to Thomas Fischl’s layout. However, by following the routes on the PCB I figured out, that JP2 is used to set +5 V, JP4 to select a slow SCK and JP1 to enable selfprogramming.

Next, I linked the jumpers J1 and J2 and wired the programming adapter to the Arduino Uno, programmed with the Arduino ISP sketch. Since the programming adapter will be powered by the Arduino UNO, you must disconnect the device from the USB bus!

USBasp  Arduino UNO
+5V     -> +5V
GND     -> GND
RST     -> 10
SCK     -> 13
MISO    -> 12
MOSI    -> 11

If you haven’t done it, yet, download and install the avrdude program on your computer. Now, check that avrdude can connect to the USBasp through the UNO:

sudo avrdude -c arduino -P /dev/ttyACM0 -b 19200 -p m8 -v

Adjust the -p option of the command line above according to the chip present on your programmer (ATmega8 or ATmega88). If you see the message:

avrdude: stk500_recv(): programmer is not responding

then, check your wires and jumper settings or check your programmer’s chip to make sure it has the ATMEGA8, and if not, change the “m8″ to whatever chip is used. If your setup is correct, you should see the following output:

avrdude: Version 6.1, (openSUSE Buildservice)
 Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
 Copyright (c) 2007-2014 Joerg Wunsch
System wide configuration file is "/etc/avrdude.conf"
 User configuration file is "/root/.avrduderc"
 User configuration file does not exist or is not a regular file, skipping
Using Port : /dev/ttyACM0
 Using Programmer : arduino
 Overriding Baud Rate : 19200
 AVR Part : ATmega8
 Chip Erase delay : 10000 us
 PAGEL : PD7
 BS2 : PC2
 RESET disposition : dedicated
 RETRY pulse : SCK
 serial program mode : yes
 parallel program mode : yes
 Timeout : 200
 StabDelay : 100
 CmdexeDelay : 25
 SyncLoops : 32
 ByteDelay : 0
 PollIndex : 3
 PollValue : 0x53
 Memory Detail :
Block Poll Page Polled
 Memory Type Mode Delay Size Indx Paged Size Size #Pages MinW MaxW ReadBack
 ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
 eeprom 4 20 128 0 no 512 4 0 9000 9000 0xff 0xff
 flash 33 10 64 0 yes 8192 64 128 4500 4500 0xff 0x00
 lfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
 hfuse 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
 lock 0 0 0 0 no 1 0 0 2000 2000 0x00 0x00
 calibration 0 0 0 0 no 4 0 0 0 0 0x00 0x00
 signature 0 0 0 0 no 3 0 0 0 0 0x00 0x00
Programmer Type : Arduino
 Description : Arduino
 Hardware Version: 2
 Firmware Version: 1.18
 Topcard : Unknown
 Vtarget : 0.0 V
 Varef : 0.0 V
 Oscillator : Off
 SCK period : 0.1 us
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100{c7f7cb1468c0d02af358b3ce02b96b7aadc0ce32ccb53258bc8958c0e25c05c4} 0.01s
avrdude: Device signature = 0x1e9307
avrdude: safemode: lfuse reads as BF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: lfuse reads as BF
avrdude: safemode: hfuse reads as D9
avrdude: safemode: Fuses OK (E:FF, H:D9, L:BF)
avrdude done. Thank you.

Now, you can download the updated firmware from the site. Here’s the link: http://www.fischl.de/usbasp/ Just download, extract, and use this command to update the firmware:

avrdude -c arduino -P /dev/ttyACM0 -b 19200 -p m8 -U flash:w:usbasp.atmega8.2011-05-28.hex

It might be necessary that you also have to reprogram the chip’s fuses by doing a:

avrdude -c arduino -P /dev/ttyACM0 -b 19200 -p m8 -u -U hfuse:w:0xc9:m -U lfuse:w:0xef:m

If everything went fine, the outdated firmware warning should be gone, next time you use the Arduino IDE with the USBasp programming adapter. Note that the adapter does not appear as a serial port on your computer.

Subscribe
Notify of
1 Comment
Inline Feedbacks
View all comments
Yuri Plaksyuk
8 years ago

Just want to thank you. I experienced problems with USBasp. I couldn’t change sck speed. I followed your instructions and everything works fine now.