How To Check Usbasp Firmware Version
The USBASP is a popular and inexpensive programmer for AVR controllers. These are frequently sold with an outdated firmware. Find out below how to easily update it to support TPI and get rid of warning messages.
- Usbasp Driver
- How To Check Usbasp Firmware Version For Windows 7
- How To Check Usbasp Firmware Version Windows 10
- Therefore, there is no need to burn the bootloader firmware again if you are getting an Arduino Board. Step 1: Get an AVR USBASP programmer. The USBasp programmer can be obtained from here. Step 2: Connect the USBASP programmer to the Arduino Board. The socket from USBasp to ICSP connector on Arduino Board is not compatible.
- To get rid of this 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. 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.
- Before continuing, better check which USBASP chip in your board. This information is useful to determine which Laterst firmware for particular board. In the picture above, we can use eXtreme burner to get this information.
The problem
Before continuing, better check which USBASP chip in your board. This information is useful to determine which Laterst firmware for particular board. In the picture above, we can use eXtreme burner to get.
The USBASP is an open-source in-circuit programmer for Atmel AVR controllers designed by Thomas Fischl. On his website1, you can download the most recent firmware and find all the information to build one. You can also buy it for really cheap from several places on the web. However the cheap versions may have an outdated firmware. One sign of old firmware is the following warning message:
However, this is just a warning and the programmer is probably still uploading the files correctly. One feature your USBASP is missing is the support for Tiny Programming Interface (TPI)2 required to program smaller AVR microcontrollers like the ATtiny10. Therefore if you want to program the ATtiny10 you better update the USBASP.Updating the firmware it’s relatively easy and can be done with just an Arduino and some jumpers.
Usbasp Driver
- a common USBASP programmer -
Set up Arduino as ISP
We need Arduino to act as a programmer. To do so we just need to upload a sketch already available within the Arduino examples.Therefore from the Arduino IDE:
How To Check Usbasp Firmware Version For Windows 7
- Go to File > Examples > ArduinoISP
- Connect Arduino
- Click on Upload
Done. Now Arduino is ready to upload a firmware to another device, the USBASP in our case.
Wiring
The following scheme shows the connections between the Arduino pins and the USBASP. Double-check the connections as most of the issues will come from a loose wire or wrong pins connected.
Arduino | USBASP |
---|---|
5V | 2 |
GND | 10 |
13 | 7 |
12 | 9 (MISO) |
11 | 1 (MOSI) |
10 | 5 (RESET) |
Close jumper 2
Make sure you close the JP2 in on the USBASP board. Without doing so the board cannot be reprogrammed.To close jumper 2 on the USBASP you can solder something to it or simply use a wire and tighten it to both holes. Make sure it doesn’t move and lose the connection halfway the firmware upload.
- close the jumper using even just a wire or a paper clip. No need to solder. -
Firmware
The firmware can be downloaded from Thomas Fischl website. Once you have downloaded the latest version you should find a .hex file inside the archive. That is the file we’ll upload to the device.In case of the 2011 firmware (the most up-to-date the time of writing), is the following:
avrdude
The final step is to upload the firmware using avrdude3. I will assume you have the Arduino IDE installed. Then the easiest way to get Avrdude is to look for it inside the Arduino IDE files (alternatively you can get it from the web).The avrdude executable will be at the following location:
How To Check Usbasp Firmware Version Windows 10
We will also need a configuration file avrdude.conf
that can be found here:
Copy4 these two files and paste them inside a folder together with the firmware file (usbasp.atmega8.2011-05-28.hex
in this case).Then you need to identify the port used by Arduino. To find it:
- Connect Arduino to the USB
- Open the Arduino IDE
- Go to Tools>Port
Make note of the port used (/dev/cu.usbmodem14101 in my case)From the terminal navigate inside the folder where you placed avrdude and type the following command using the right port for the option -P
Done! If you don’t get any error message, your USBASP is ready.
References
Thomas Fischl website↩
TPI Notes from Atmel ↩
Avrdude user manual↩
Here I suggest to copy the avrdude executable and configuration file inside a folder with the .hex file just because when running it from the terminal the path is shorter ↩
Help! I've spent the last couple of hours banging my head against the wall. I was trying to update my firmware with my new usbasp programmer, and have only managed to erase my chip.
I bought the programmer off ebay (it says USBASP V2.0 - LC Technology), and wired an adapter cable with the following mappings (from Sanguino to programmer):
1 - 9 (MISO)
2 - 2 (VCC)
3 - 7 (SCK)
4 - 1 (MOSI)
5 - 5 (CS)
6 - 10 (GND)
When using, it, the 1284p is detected and has the correct signature, and I can successfully read and change the fuses, so the connection seems okay. However, when trying to upload a bootloader or marlin build, it always fails to verify as follows. Any ideas? The programmer itself only has a jumper for 3.3/5V (currently set to 5V).
>avrdude -C ..etcavrdude.conf -c usbasp -p m1284p -U flash:w:SolidoodleMarlin.cpp.hex -v -D
avrdude: Version 5.4-arduino, compiled on Oct 11 2007 at 19:12:32
Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
System wide configuration file is '..etcavrdude.conf'
Using Port : lpt1
Using Programmer : usbasp
AVR Part : ATMEGA1284P
Chip Erase delay : 9000 us
PAGEL : PD7
BS2 : PA0
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 Max
W ReadBack
----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ---
-- ---------
eeprom 65 10 128 0 no 4096 8 0 9000 90
00 0xff 0xff
flash 65 10 256 0 yes 131072 256 512 4500 45
00 0xff 0xff
lock 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
lfuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
hfuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
efuse 0 0 0 0 no 1 0 0 9000 90
00 0x00 0x00
signature 0 0 0 0 no 3 0 0 0
0 0x00 0x00
calibration 0 0 0 0 no 1 0 0 0
0 0x00 0x00
Programmer Type : usbasp
Description : USBasp, http://www.fischl.de/usbasp/
avrdude: AVR device initialized and ready to accept instructions
Reading | ################################################## | 100% 0.02s
avrdude: Device signature = 0x1e9705
avrdude: safemode: lfuse reads as DE
avrdude: safemode: hfuse reads as DB
avrdude: safemode: efuse reads as F8
avrdude: reading input file 'SolidoodleMarlin.cpp.hex'
avrdude: input file SolidoodleMarlin.cpp.hex auto detected as Intel Hex
avrdude: writing flash (110734 bytes):
Writing | ################################################## | 100% 59.31s
avrdude: 110734 bytes of flash written
avrdude: verifying flash memory against SolidoodleMarlin.cpp.hex:
avrdude: load data flash data from input file SolidoodleMarlin.cpp.hex:
avrdude: input file SolidoodleMarlin.cpp.hex auto detected as Intel Hex
avrdude: input file SolidoodleMarlin.cpp.hex contains 110734 bytes
avrdude: reading on-chip flash data:
Reading | ################################################## | 100% 57.39s
avrdude: verifying ...
avrdude: verification error, first mismatch at byte 0x0000
0x0c != 0x00
avrdude: verification error; content mismatch
avrdude: safemode: lfuse reads as DE
avrdude: safemode: hfuse reads as DB
avrdude: safemode: efuse reads as F8
avrdude: safemode: Fuses OK
avrdude done. Thank you.