So I'm trying to build an Arduino Micro using a bread-board and through-hole components. I'm leaving out the voltage regulator and voltage selector (see schematic at the bottom for reference). I'm powering off of USB, so the +5V line is connected to VUSB.

I checked over the circuit many times, so I think it's okay. Below is a picture of me trying to use an Arduino Micro to load the bootloader on to the Atmega32U4:

Arduino Micro circuit

I looked here and here as references for trying to load the bootloader, but every time I try it gives me an error. It seems like the MCU is not being recognized. Has anyone tried this before, and successfully done it? I'd like some pointers as to how to achieve this.

EDIT: I've moved the crystal (and 22 pF cap's) closer to pins 16 and 17. The steps I take are:

  1. Upload "ArduinoISP" sketch to Arduino Micro (the "programmer").
  2. Select "Arduino Micro" as the board to be programmed.
  3. Select "Arduino as ISP (Atmega32U4)" as the programmer.
  4. Burn bootloader.

Here is the verbose output (compilation and upload):

Arduino: 1.6.12 (Windows 7), Board: "Arduino/Genuino Micro"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega32u4 -carduino -PCOM5 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xcb:m -Uhfuse:w:0xd8:m -Ulfuse:w:0xff:m 

avrdude: Version 6.3, compiled on Sep 12 2016 at 17:24:16
         Copyright (c) 2000-2005 Brian Dean, http://www.bdmicro.com/
         Copyright (c) 2007-2014 Joerg Wunsch

         System wide configuration file is "C:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf"

         Using Port                    : COM5
         Using Programmer              : arduino
         Overriding Baud Rate          : 19200
         AVR Part                      : ATmega32U4
         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  MaxW   ReadBack
           ----------- ---- ----- ----- ---- ------ ------ ---- ------ ----- ----- ---------
           eeprom        65    20     4    0 no       1024    4      0  9000  9000 0x00 0x00
           flash         65     6   128    0 yes     32768  128    256  4500  4500 0x00 0x00
           lfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           hfuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           efuse          0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           lock           0     0     0    0 no          1    0      0  9000  9000 0x00 0x00
           calibration    0     0     0    0 no          1    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% 0.00s

avrdude: Device signature = 0xffffff (probably .reduced_core_tiny) (retrying)

Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0xffffff (probably .reduced_core_tiny) (retrying)

Error while burning bootloader.
Reading | ################################################## | 100% 0.00s

avrdude: Device signature = 0xffffff (probably .reduced_core_tiny)
avrdude: Yikes!  Invalid device signature.
         Double check connections and try again, or use -F to override
         this check.


avrdude done.  Thank you.

Arduino Micro schematic

  • 3
    Are you sure you aren't trying to build a radio receiver? – Ignacio Vazquez-Abrams Oct 29 '16 at 23:35
  • 1
    My page about uploading bootloaders may help you. – Nick Gammon Oct 29 '16 at 23:41
  • 2
    1. Where is "here and here" ? 2. Edit question and show what commands or sequence you used for bootloader transfer. 3. What do you get when you try to read the fuses? – James Waldby - jwpat7 Oct 29 '16 at 23:50
  • 2
    Loading the "ArduinoISP" program on to the programmer (the Arduino Micro on the left side of my picture) works without errors. I then unplug it from my computer and hook it up as shown in the second link. I select "Arduino/Genuino Micro" as the Board. I select the port that the programmer (Arduino Micro) is connected to. I select "ArduinoISP" as the programmer. I press "Burn Bootloader". I get the following: avrdude: Error: Could not find USBtiny device (0x2341/0x49) Error while burning bootaloader. – Max Jacob Oct 30 '16 at 0:09
  • 3
    Regardless if related to your present problem or not, you should put the crystal and its capacitors right at the relevant pins. The same goes for anything intended as a bypass capacitor. – Chris Stratton Oct 30 '16 at 2:48

I select "ArduinoISP" as the programmer. I press "Burn Bootloader". I get the following: avrdude: Error: Could not find USBtiny device (0x2341/0x49) Error while burning bootaloader.

You need to select Arduino as ISP from the Tools > Programmer menu. ArduinoISP is a dedicated in system programmer made by Arduino, confusing because the name of the sketch used with Arduino as ISP is ArduinoISP.

If you're using Windows you'll also likely encounter the issue that ATmega32U4 based boards can't be used for Arduino as ISP. The cause of this is explained at https://petervanhoyweghen.wordpress.com/2012/09/16/arduinoisp-on-the-leonardo as well as a solution. Unfortunately the solution described in that blog post no longer works as-is with recent versions of the Arduino IDE. I have updated the solution to work with recent Arduino IDE versions and added support for installation via Boards Manager here: https://github.com/per1234/ATmega32U4asISP

  • I got the following message when trying the steps on the github page: Arduino: 1.6.12 (Windows 7), Board: "Arduino/Genuino Micro" avrdude: Yikes! Invalid device signature. Double check connections and try again, or use -F to override this check. Error while burning bootloader. This report would have more information with "Show verbose output during compilation" option enabled in File -> Preferences. – Max Jacob Oct 30 '16 at 1:44
  • @MaxJacob, I'm imagining the Arduino Micro auto-resets when you start a download to it. If that is the case you need to disable the auto-reset after you download ArduinoISP to the Micro. The Micro should remain connected to your host computer (that runs Arduino IDE) when you click Tools, Burn Bootloader to copy the bootloader to your target system. The IDE will send the Bootloader to the Micro, and the Micro will send it on to your target system. Note, if you have other working Arduinos, use one to practice download/bootload process, in case your target system is just not working. – James Waldby - jwpat7 Oct 30 '16 at 2:11
  • @jwpat7 I disabled auto-reset (placed 120 Ohm resistor between 5V and Reset) after uploading the Sketch, but I still get the same error when try to burn the bootloader. Sadly, I do not have any extra Arduinos around. – Max Jacob Oct 30 '16 at 2:43
  • I want to zone in on why I'm having these issues. What is the simplest circuit necessary to burn the bootloader to the ATmega32U4 using an Arduino Micro (using "Arduino as ISP") as the programmer? – Max Jacob Oct 30 '16 at 21:38
  • If you have the correct board selected then usually the "invalid device signature" error indicates a wiring problem. If you have verbose output during upload enabled in File > Preferences you can see the actual signature that was read. What was it? It's probably helpful if you would edit your question to add the steps you used to do the Burn Bootloader and full verbose output from the console to your question so that all the information is located in one place instead of spread out over multiple comment threads. I agree with Chris Stratton about the crystal being too far away. – per1234 Oct 31 '16 at 0:20

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

Not the answer you're looking for? Browse other questions tagged or ask your own question.