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.