Arduino · AVR WesTek Lab Procedure April 2026

Burning Uno Bootloader
to Arduino Pro Mini 3.3V 8MHz

Why This Is Needed

The Arduino Pro Mini ships with an Optiboot bootloader that does not disable the watchdog timer (WDT) on startup. When firmware uses wdt_enable() to trigger a software reset, the watchdog persists through the reset cycle. The bootloader starts but does not disable the WDT, the watchdog fires again, and the board is trapped in a reset loop — indicated by the onboard LED flashing continuously.

The Arduino Uno version of Optiboot handles WDT correctly — it saves and restores the MCUSR register and disables the watchdog before handing off to the sketch. Burning the Uno bootloader onto the Pro Mini fixes this while preserving 3.3V 8MHz operation.

Note This is a known longstanding issue with the Pro Mini bootloader documented by SparkFun and others. The fix is burning the Uno's version of Optiboot which handles WDT correctly.

Hardware Required

Arduino Uno          (as ISP programmer)
Arduino Pro Mini     3.3V 8MHz (target board)
6x jumper wires

Wiring — Uno to Pro Mini

Arduino Uno Arduino Pro Mini Notes
5VVCCSafe at 5V during programming
GNDGNDCommon ground
Pin 10RSTReset control
Pin 11Pin 11 (MOSI)SPI data
Pin 12Pin 12 (MISO)SPI data
Pin 13Pin 13 (SCK)SPI clock
Safe Voltage 5V is safe for programming even though the Pro Mini is a 3.3V board. The ATmega328P runs fine at 5V. Do not have any other 3.3V peripherals connected to the Pro Mini during this procedure.

Step 1 — Load ArduinoISP onto Uno

Load the ArduinoISP sketch onto the Uno first. This turns the Uno into an in-system programmer.

File → Examples → 11.ArduinoISP → ArduinoISP

Select Uno as target board.
Upload to Uno.

Step 2 — Burn Bootloader

Critical Board must be set to Arduino Uno during the bootloader burn — not Pro Mini. This selection determines which bootloader binary gets written. Setting Pro Mini here burns the wrong bootloader and WDT will still fail.
Tools → Board     → Arduino Uno        ← MUST be Uno, not Pro Mini
Tools → Programmer → Arduino as ISP
Tools → Burn Bootloader

Wait approximately 30 seconds for completion.

Step 3 — Upload Sketch

After bootloader burn, disconnect the ISP wires from the Uno and connect the FTDI adapter to the Pro Mini programming header.

Tools → Board     → Arduino Pro or Pro Mini
Tools → Processor → ATmega328P (3.3V, 8MHz)  ← back to Pro Mini
Tools → Port      → FTDI port
Upload sketch normally.
DTR Connection Required The DTR pin must be connected between FTDI adapter and Pro Mini for auto-reset during sketch upload. Without DTR, manually press the reset button on the Pro Mini when the IDE shows "Uploading..."

Step 4 — Firmware WDT Pattern

With the Uno bootloader installed, the following WDT pattern works correctly in firmware:

#include <avr/wdt.h>

void setup() {
  wdt_disable();  // MUST be first line — disables WDT left from previous reset
  Serial.begin(57600);
  // rest of setup...
}

// Software reset via watchdog:
if (input == "z") {
    Serial.println("OK RESETTING");
    delay(100);              // flush serial buffer
    wdt_enable(WDTO_15MS);  // enable watchdog, 15ms timeout
    while(1) {}              // spin — watchdog fires, hardware reset
}

Expected Behavior

With the correct bootloader and firmware pattern, the reset command produces a clean single reset:

z
OK RESETTING
  → 15ms pause
  → hardware reset fires
  → bootloader disables WDT correctly
  → sketch starts
  → wdt_disable() called as first line
  → rest of setup...

No reset loop. No LED flashing. Clean single reset and restart.

Identifying Pro Mini Voltage Version

Pro Mini boards are not always clearly labeled. To identify 3.3V vs 5V:

Pro Mini Power in Final Installation

For permanent installation the Pro Mini VCC pin vs RAW pin distinction matters:

For the WesTek ProtIoT RF coprocessor board, 5V is fed to the RAW pin. The onboard LDO provides clean 3.3V to the ATmega. The 3.3V output from the LDO powers the crystal 433MHz receiver module, keeping its data output at 3.3V logic — directly compatible with the Pi GPIO without level shifting.

Upload Speed Upload speed is automatically set to 57600 baud by the Arduino IDE board definition for Pro Mini 3.3V 8MHz. No manual configuration needed.

WesTek Lab · Pensacola FL · April 2026
Procedure developed during ProtIoT RF Coprocessor build.