Arduino UNO bootloader fix. Aka 30k upload limit fixed

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 ;)