Skip to content
mcuee edited this page Feb 24, 2024 · 26 revisions

FAQ for avrdude

Please refer to the following Wiki page about the known limitations

https://github.com/avrdudes/avrdude/wiki/Known-limitations-of-avrdude

Please also refer to the avrdude documentation here.

https://avrdudes.github.io/avrdude/

How to report an issue to avrdude project?

  1. Create a separate issue for each problem
  2. Tell us what exactly the problem is and how you came to experience it
  • OS
  • Programmer
  • Part
  • How host, programmer and part are connected/rigged up
  • AVRDUDE binary version used (in bash avrdude -v 2>&1 | grep -i version)
  • Full command line including all options
  • Output of the command
  • Please try to use the latest released version
  • You may be requested to try out git main as well
  • Sometimes it also helps us if you upload a file with the -vv or -vvvv output
  • Sometimes it also helps us if you post the hex file used (if you are okay to share the hex file)
  • What you would have expected to happen

I do not want to build from source, where can I get the binaries for git main?

Latest binary snapshots are linked here, for Linux, macOS and Windows. https://github.com/avrdudes/avrdude/wiki/Getting-Nightly-Builds-for-AVRDUDE

I am new to avrdude and I do not have a programmer, what are the recommended programmers to be used with avrdude?

avrdude supports many programmers. Here are some examples of low cost and well-supported programmers.

  1. usbasp, usbtinyisp, stk500v2 clones, AVRISPmkII clones, etc, for classic AVRs
  2. AVRISP mkII clones also support xMega AVRs
  3. serialupdi for new UPDI parts; jtag2updi can be used as well but it does not support newer UPDI parts.
  4. If you prefer official tools from Microchip, then SNAP is also well supported. PICKit 4 is also well supported but it is more expensive and considered EOL by Microchip.

I have got the programmer working. Now I want to try using bootloader. which bootloader should I use?

Survey of AVR bootloaders:

We recommend urboot for classic AVR chips.

For xmega, you may want to try xboot (AVR109 based)

For UPDI parts, you may want to try optiboot_x and optiboot_dx.

If you use USB AVRs, you may want to try Caterina (AVR109 based) or FLIP1/FLIP2 (Atmel extension to USB DFU).

How to read the fuse settings with avrdude 7.0 and later?

If you want to do more, try "terminal mode" (-t). You can browse around interactively through your device, including the fuse values. Non-interactively, it would need -U options, like:

avrdude … -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

optiboot timeout too fast, how to use it effectively in terminal mode?

You can use piping.

echo "dump eeprom 0 0x10" | .\avrdude_pr1121v1 -c arduino -P COM4 -b 115200 -t

How to write write all or some ELF sections at once?

Please refer to the above issue for the ways to write all ELF sections at once. Step 1: to check the unique memory sections.

avrdude `avrdude -pATmega328p/At | grep ^.ptmm.A | cut -f3 | uniq | sed "s/.*/-U &:w:blink.elf:a/"`

Or

$ avrdude -pm32u4/ot|grep write|cut -f3|uniq
eeprom
flash
lfuse
hfuse
efuse
lock

Step 2: to write the avrdude command based on the output of Step 1.

avrdude -v -pm32u4 -cusbasp -U{eeprom,flash,{l,h,e}fuse,lock}:w:"$1":e "${@:2}"

Flashing boards like Arduino Leonardo can be tricky

Please refer to the following discussion for the tips under different OS.

PR #1507 has been merged to address this issue. It will be included in avrdude 7.3 release.

New version 3.8 drivers for CH340 under Windows may cause troubles, please downgrade to version 3.5

Please refer to the following issue. It has the driver attached as well.