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