# It's possible Update atmega328p (old bootloader)

**URL:** <https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669>\
**Category:** General Discussion\
**Created:** [September 24, 2018, 1:10pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669 "2018-09-24T13:10:30Z")\
**Posts on this page:** 15\
**Page:** 1

<div class="post-metadata">

**Author:** ![ricagome](https://avatars.discourse-cdn.com/v4/letter/r/6f9a4e/32.png) [@ricagome](https://forum.arduino.cc/u/ricagome)\
**Post date:** [September 24, 2018, 1:10pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/1 "2018-09-24T13:10:30Z")

</div>

Hi

It´s posible update the old atmega328p (old bootloader) to the new one bootloader

Thanks

Ricardo

---

<div class="post-metadata">

**Author:** ![Robin2](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/robin2/32/216045_2.png) [@Robin2](https://forum.arduino.cc/u/Robin2)\
**Post date:** [September 24, 2018, 2:06pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/2 "2018-09-24T14:06:20Z")

</div>

You can certainly upload a new bootloader. But you need to have a programmer board - which could be a separate working Uno.

Have a look at [this tutorial](http://arduino.cc/en/Tutorial/ArduinoToBreadboard)

...R

---

<div class="post-metadata">

**Author:** ![ricagome](https://avatars.discourse-cdn.com/v4/letter/r/6f9a4e/32.png) [@ricagome](https://forum.arduino.cc/u/ricagome)\
**Post date:** [September 25, 2018, 2:03am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/3 "2018-09-25T02:03:34Z")

</div>

thanks, I read the link, I have a nano with this old bootloader, if I understood correctly I should buy the programming card and update the bootloader

Ricardo

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [September 25, 2018, 3:43am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/4 "2018-09-25T03:43:37Z")

</div>

The only significant benefit of switching from the old Nano bootloader to the new Nano bootloader is to fix the bug where the board goes into an endless reset loop after a watchdog reset.

If you're going to burn the bootloader to your Nano you should select **Tools \> Board \> Arduino/Genuino Uno** , and then always use the board as an Uno after that. This will free up 1.5 kB of flash memory on your Nano in addition to fixing the watchdog reset bug.

---

<div class="post-metadata">

**Author:** ![flagtrax](https://avatars.discourse-cdn.com/v4/letter/f/54ee81/32.png) [@flagtrax](https://forum.arduino.cc/u/flagtrax)\
**Post date:** [March 23, 2019, 4:20pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/5 "2019-03-23T16:20:35Z")

</div>

I have 2 Nano (clones) that originally had the old bootloader installed. I was having issues when trying to upload an example sketch for a 2.4" spi display. The compiler kept throwing errors. With my limited knowledge on the subject I thought perhaps it might help to update to the new bootloader. That's where my trouble began. I used an Uno as the programmer, and following instructions here [https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/](https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/)

The upload began then seemed to hang with the (what I call) "traffic" led flashing at a consistently high rate. At a ridiculously long period after I halted the operation. Needless to say the Nano would no longer respond. Nor would it accept a new bootloader. Can anyone help me "restore" this Nano to operation? Thanks for any suggestions.

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [March 23, 2019, 6:42pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/6 "2019-03-23T18:42:29Z")

</div>

> flagtrax:  
> The compiler kept throwing errors. With my limited knowledge on the subject I thought perhaps it might help to update to the new bootloader.

The bootloader has absolutely nothing to do with compilation. Updating the bootloader will never help with a compilation error. The only error that can be solved by updating the bootloader is an upload error.

> flagtrax:  
> , and following instructions here [https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/](https://www.instructables.com/id/How-To-Burn-a-Bootloader-to-Clone-Arduino-Nano-30/)

From the Instructables:

> Now connect the two arduinos together, to do this without female-male jumper cables was time consuming, you have to be VERY CAREFUL and take your time bending the wires, other wise you may short your circuits. ask me first ! In the second picture you can see that first I put the ICSP pins through a piece of paper and then carefully wrapped around them the corresponding wires. Make sure they grab on very tightly, use a small flat head screw driver to bend them.

Wow! Classic Instructables there.

> Nor would it accept a new bootloader.

First of all, make sure your wiring is not a huge mess like in that Instructables.

After that, please do this:

1. Select **File \> Preferences** from the Arduino IDE's menus.
2. Check the checkbox next to "[] **Show verbose output during: upload**"
3. Click the OK button.
4. Select **Tools \> Burn Bootloader** from the Arduino IDE's menus.
5. After the Burn Bootloader process fails, you'll see a button on the right side of the orange bar Copy error messages. Click that button.
6. In a forum reply here, click on the reply field.
7. Click the **\</\>** button on the forum toolbar. This will add the forum's code tags markup to your reply.
8. Press Ctrl +V. This will [paste](https://lifehacker.com/how-to-copy-cut-and-paste-for-beginners-5801525) the Burn Bootloader output between the code tags.
9. Move the cursor outside of the code tags before you add any additional text to your reply.

---

<div class="post-metadata">

**Author:** ![flagtrax](https://avatars.discourse-cdn.com/v4/letter/f/54ee81/32.png) [@flagtrax](https://forum.arduino.cc/u/flagtrax)\
**Post date:** [March 23, 2019, 8:12pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/7 "2019-03-23T20:12:36Z")

</div>

Hi Pert, and thanks for the reply. That instructable says to set the board selection to the target board before burning the bootloader, you didn't mention it, but that's what I did. Let me know if that's incorrect. Thanks again.

```cpp
Arduino: 1.8.7 (Windows 10), Board: "Arduino Nano, ATmega328P (Old Bootloader)"

C:\Program Files (x86)\Arduino\hardware\tools\avr/bin/avrdude -CC:\Program Files (x86)\Arduino\hardware\tools\avr/etc/avrdude.conf -v -patmega328p -carduino -PCOM4 -b19200 -e -Ulock:w:0x3F:m -Uefuse:w:0xFD:m -Uhfuse:w:0xDA:m -Ulfuse:w:0xFF:m 

avrdude: Version 6.3-20171130
        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                    : COM4
        Using Programmer              : arduino
        Overriding Baud Rate          : 19200
        AVR Part                      : ATmega328P
        Chip Erase delay              : 9000 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        65    20    4    0 no      1024    4      0  3600  3600 0xff 0xff
          flash        65    6  128    0 yes    32768  128    256  4500  4500 0xff 0xff
          lfuse          0    0    0    0 no          1    0      0  4500  4500 0x00 0x00
          hfuse          0    0    0    0 no          1    0      0  4500  4500 0x00 0x00
          efuse          0    0    0    0 no          1    0      0  4500  4500 0x00 0x00
          lock          0    0    0    0 no          1    0      0  4500  4500 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.01s

avrdude: Device signature = 0x000000 (retrying)

Reading | ################################################## | 100% 0.01s

avrdude: Device signature = 0x000000 (retrying)

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

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

avrdude done.  Thank you.

This report would have more information with
"Show verbose output during compilation"
option enabled in File -> Preferences.

```

I hope I did that right. 😛

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [March 24, 2019, 1:56am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/8 "2019-03-24T01:56:26Z")

</div>

> flagtrax:  
> That instructable says to set the board selection to the target board before burning the bootloader, you didn't mention it, but that's what I did. Let me know if that's incorrect.

That is correct.

> flagtrax:
> 
> ```arduino
> avrdude: Device signature = 0x000000 (retrying)
> 
> ```

This error, and your rapidly blinking LED, could be caused by incorrect wiring. Please double check all your wires to make sure they're correct.

> flagtrax:  
> I hope I did that right. 😛

Perfect, thanks!

---

<div class="post-metadata">

**Author:** ![flagtrax](https://avatars.discourse-cdn.com/v4/letter/f/54ee81/32.png) [@flagtrax](https://forum.arduino.cc/u/flagtrax)\
**Post date:** [March 24, 2019, 2:14am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/9 "2019-03-24T02:14:29Z")

</div>

this is the wiring pattern I used:

Nano Uno  
SPI  
Header  
V V

pin 1 on clone to D12 on working arduino

pin 2 on clone to 5V on working arduino

pin 3 on clone to D13 on working arduino

pin 4 on clone to D11 on working arduino

pin 5 on clone to D10 on working arduino

pin 6 on clone to GND on working arduino

I need to point out at this point there is no led activity at all. That lasted only until I terminated the attempt to burn the bootloader.

---

<div class="post-metadata">

**Author:** ![arijitkrhaldar](https://avatars.discourse-cdn.com/v4/letter/a/e47774/32.png) [@arijitkrhaldar](https://forum.arduino.cc/u/arijitkrhaldar)\
**Post date:** [May 8, 2019, 2:33pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/10 "2019-05-08T14:33:34Z")

</div>

Hello, would like to shed some light on bootloading. Its not always cool to copy things from Instructables, without understanding. If you understood...cool...if not..please refer below.

If you hold an Arduino UNO, the top side facing you, with the USB and DC jack pointed towards your left, and the ICSP headers to your right...then the ICSP pinout is like this :

MISO VCC  
SCK MOSI  
SS GND

And if it is an Arduino NANO, then the pinout for the ICSPs towards your right, and USB mini B towards your left is:

GND SS  
MOSI SCK  
VCC MISO

Now, most Arduino boards have wiring such that D10 or the 10 marked Digital pin is SS. So connect similar pins of your programmer Arduino to your programmed Arduino accordingly, and connect the SS ICSP pin of the board you are programming to D10 of the board you are using to program it. Please note, the SS ICSP pin of the board you are using as a programmer will be left open, only all 6 ICSP pins will be wired on the board you are uploading the bootloader on.

If using any board other than NANO, UNO, etc as programmer, search for its SS pin on the internet, and connect on that pin instead of D10.

Enjoy.

---

<div class="post-metadata">

**Author:** ![Aiki-bot51](https://avatars.discourse-cdn.com/v4/letter/a/ba9def/32.png) [@Aiki-bot51](https://forum.arduino.cc/u/Aiki-bot51)\
**Post date:** [May 26, 2019, 4:05am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/11 "2019-05-26T04:05:53Z")

</div>

soooo.... i burned the new bootloader to my nano, after that when im uploading a code at the end it says this

{  
writing flash (23326 bytes):

Writing | ################################################## | 100% 3.67s

avrdude: 23326 bytes of flash written  
avrdude: verifying flash memory against C:\Users####~1\AppData\Local\Temp\arduino\_build\_630200/WriteInstinct.ino.hex:  
avrdude: load data flash data from input file C:\Users####~1\AppData\Local\Temp\arduino\_build\_630200/WriteInstinct.ino.hex:  
avrdude: input file C:\Users\BADARS~1\AppData\Local\Temp\arduino\_build\_630200/WriteInstinct.ino.hex contains 23326 bytes  
avrdude: reading on-chip flash data:

Reading | ################################################## | 100% 2.86s

avrdude: verifying ...  
avrdude: 23326 bytes of flash verified

avrdude done. Thank you.  
}

it uploaded the code but why does it does that???

and i burned the new nano bootloader, but should i burn an uno bootloader?  
i have a pro micro, and it uses arduino leonardo's bootloader, can i burn a pro mini's bootloader to it?

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [May 26, 2019, 7:55am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/12 "2019-05-26T07:55:12Z")

</div>

> Aiki-bot51:  
> why does it does that???

It's a verification process. It checks that the data in the microcontroller's flash memory matches that in the .hex file you uploaded. You can disable this in **File \> Preferences \> Verify code after upload**. That will make the upload process slightly faster but I think it's worth the couple extra seconds to make sure there was no problem. Imagine how much confusion that could cause if your program wasn't working correctly because it was corrupted during the upload, but you assumed the problem was caused by a bug in your code!

> Aiki-bot51:  
> should i burn an uno bootloader?

They're both the same bootloaders. The difference is that the new Nano bootloader configuration unnecessarily still reserves 2 kB of flash memory for the bootloader, even though the bootloader only requires 0.5 kB boot section. So by burning the Uno bootloader you free up 1.5 kB of precious flash memory with no drawbacks!. If you do that, remember to select **Tools \> Board \> Arduino/Genuino Uno** when you use your Nano from then on.

> Aiki-bot51:  
> i have a pro micro, and it uses arduino leonardo's bootloader, can i burn a pro mini's bootloader to it?

If you truly meant to say "a pro mini's bootloader", then the answer is no. The Pro Mini uses a different microcontroller (ATmega328P) from the Pro Micro (ATmega32U4) and you can't use the Pro Mini bootloader on a Pro Micro. If you actually intended to say "a pro micro's bootloader", then yes you can do that, but there's no benefit to it.

---

<div class="post-metadata">

**Author:** ![phaseform](https://avatars.discourse-cdn.com/v4/letter/p/cdc98d/32.png) [@phaseform](https://forum.arduino.cc/u/phaseform)\
**Post date:** [September 13, 2020, 3:11am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/13 "2020-09-13T03:11:47Z")

</div>

The [ISP by Nick Gammon](http://www.gammon.com.au/forum/?id=11635) is by far the simplest and best

---

<div class="post-metadata">

**Author:** ![pert](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/pert/32/217111_2.png) [@pert](https://forum.arduino.cc/u/pert)\
**Post date:** [September 13, 2020, 6:52am UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/14 "2020-09-13T06:52:43Z")

</div>

> phaseform:  
> by far the simplest and best

I'm interested in your specific reasons for each of those claims. In addition, you need to state what you're comparing it to in order for the statement to have meaning.

---

<div class="post-metadata">

**Author:** ![system](https://dub1.discourse-cdn.com/arduino/user_avatar/forum.arduino.cc/system/32/1140315_2.png) [@system](https://forum.arduino.cc/u/system)\
**Post date:** [May 5, 2021, 3:48pm UTC](https://forum.arduino.cc/t/its-possible-update-atmega328p-old-bootloader/547669/15 "2021-05-05T15:48:01Z")

</div>


