It has been awhile since I write anything about Arduino. Today I want to show how to flash the Arduino UNO boot-loader in order to fix:
1) PWM timer initialization fixed (this was also fixed in the core.)
2) 30k upload limit fixed.
3) zero register initialization (Sketch amnesia) fixed.
This post is structured as a tutorial. To program an ATMEL you need an In System Programmer ( ISP ). You might find cheap ISP on ebay or walking through Fry’s. Since my research group has almost 10 Arduino boards we are going to configure an Arduino to act as a ISP.

Our configuration are the following:
1) Arduino Duemilanove. It will behave as ISP.
2) A brand new Arduino UNO. It is going to be flashed.
3) Some wires.

Step 1
Download the westfw’s sketch from here.
This sketch allows an Arduino to program a new version of the optiboot bootloader onto another Arduino Uno. Since Arduino UNO comes by default with optiboot, you do not need to firstly install optiboot on your UNO.

Step 2

Open the downloaded sketch (optifix.pde). Select the Arduino Duemilanove board in TOOLS > BOARDS

Now upload the optifix on your Arduino 2009 by clicking on the “upload” icon.

Step 3

Disconnect your Arduino Duemilanove from USB cable and connect your Arduino Duemilanove to your brand new Arduino UNO as reported in the following schematics.

Step 4
Now plug your Arduino Duemilanove to your PC through the USB cable. Lets open the Serial Monitor by clicking on the “Serial Monitor” icon on Arduino IDE. Set the connection baud rate to 19200. The sketch automatically detects the Arduino UNO boards and starts to patch the bootloader. At the end it asks if you wan to patch another Arduino UNO or if you want to finish.

Once the logs on the Serial Monitor say that your Arduino UNO has been patched you are free to unplug the USB cable and the Arduino UNO from Arduino Duemilanove.

You have a fully working Arduino UNO with a patched Optiboot !! It really works like a charm 😉

4 thoughts on “ Arduino UNO bootloader fix. Aka 30k upload limit fixed ”

  1. Will this work if BOTH boards are Arduino UNOs? I see that in your example the Arduino that attaches to the Mac is noted as being a Duemilanove. I have two UNOs and am hoping I can upload the patched bootloader from one UNO to the other.


    – Scott

  2. Thanks, this was very useful. Now I'll have to try this out on my Uno and hope that nothing gets fried!

    As a side note, I want to make a Arduino from scratch, to learn everything from start to finish. Do you know where to find instructions to burn the software for both the 8U2 and 328P as blank chips?

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.