I want to update the boot loader of my pro mini(s). From what I've read I can update the bootloader by programming an UNO with a special sketch downloaded to the UNO.
Is it possible to use a 2nd Pro Mini with the special sketch to burn the bootloader to other Pro Mini's.
Hi @JohnRob. Yes, you can do that. The Pro Mini is functionally equivalent to the UNO for this purpose.
If the target Pro Mini is an ATmega328P 16 MHz model, you can consider the simple approach to getting the superior Optiboot bootloader and 1.5 kB extra program memory for use by your sketches that I mentioned previously:
Hi @ptillisch,
Quick question.
I have Arduino 2.3.7 nightly. If I follow the "burn boot loader" will this version of the IDE install the updated bootloader into the Pro Mini?
I ask because some of the older instructions suggest I would have to modify one of the boards.txt configuration files to point to the UNO bootloader.
Yes, it will work with any version of Arduino IDE.
My guess is that it was not necessary and the author of the instructions simply didn't have a good understanding of the subject matter. If you provide a link to those instructions, we can take a look and provide a more definitive explanation.
UPDATE: Reading back I see you already know of this link - John
HI,
Here is the link, its quite old.
John
The only significant reason to take that approach is that it allows you to use the Tools > Board > Arduino AVR Boards > Arduino Pro or Pro Mini selection in Arduino IDE when using the board instead of having to remember to instead select Tools > Board > Arduino AVR Boards > Arduino Uno.
There is a very serious missed opportunity in that tutorial: the "ATmegaBOOT" bootloader requires a 2 kB boot section, so when using this bootloader we have 30 or the total 32 kB of flash memory to use for our sketch program. The far more optimized Optiboot bootloader fits in a 0.5 kB boot section, leaving 31.5 kB flash for the sketch program. However, the author of the tutorial did not update the fuse configuration and upload.maximum_size properties in the "Arduino Pro or Pro Mini" board definition along with changing it to use the Optiboot binary. So the board definition pointlessly wastes 1.5 kB of previous flash memory.
Now maybe I missed something.
I was thinking if I just ran burn bootloader from the IDE dropdown menu, with a Pro Mini as a target and another Pro Mini as a programmer (having downloaded the ArduinoISP).
The resulting reprogrammed Pro Mini would act as a simple Pro Mini. Is this not the case?
also since the UNO has no 3.3v version would I loose the 3v function on the reprogrammed Pro Mini?
Thank you for your continued help.
John
That is correct. It will act as a simple Pro Mini.
However, although that "simple Pro Mini" will be perfectly suitable for most projects, it is not ideal. The reason for this is the "ATmegaBOOT" bootloader:
- requires a 2 kB boot section
- has a bug that causes the board to go into an endless reset loop if there is a watchdog timer reset.
For someone with a completely functional Pro Mini, it probably isn't worth worrying about these things unless they are actually limiting a project. However, if you have to go to the trouble of burning a bootloader on a Pro Mini, then it seems to me it is worth taking the opportunity to make this wonderful little board perfect by switching to Optiboot.
The suggestion to use the Tools > Board > Arduino AVR Boards > Arduino Uno board definition when burning the bootloader was specific to the ATmega328P 16 MHz variant of the Pro Mini. You must not do that with the 8 MHz variant.
If you want to install Optiboot on the 8 MHz variant, you can do that using the 3rd party MiniCore boards platform. However, MiniCore actually switched from Optiboot to a new bootloader urboot recently, so you would actually get urboot if you install the latest version of MiniCore. I don't have any experience with urboot, so I can't personally vouch for it, but the maintainer of MiniCore holds their platform to the highest quality standards so I'm confident that it has been well vetted and is at least equivalent to Optiboot. If you do want Optiboot though, you can use Arduino IDE's Boards Manager to install version 2.2.2 of MiniCore, which was the last version before the switch to urboot.
Back in 2015, I compiled Optiboot for the 8 MHz Pro Mini... maybe you can give it a try ... ![]()
optiboot_atmega328_pro_8MHz.hex.zip (840 Bytes)
Guglielmo
... and, probably, you should also reduce the upload speed.
If I remember correctly, to 57600 bps. ![]()
Guglielmo
ended up using mimicore to install the more recent Urboot. Once the urbootloader is installed the device cad use the basic arduino put select the metino