🛠 Resusciter une Duemilanove sans bootloader : ICSP, fusibles et ATmegaBOOT

Arduino Duemilanove — Board Fiche · avance · Schéma : IMG-duemilanove-avance-3-resusciter-bootloader-icsp-fuses.svg — Arduino Duemilanove avec la puce ATmega en plan éclaté, connecteur ICSP 2×3 relié à un programmateur USBtinyISP, terminal affichant des commandes avrdude de lecture des fusibles (low=0xFF, high=0xDA, extended=0xFD) et de réécriture du fichier ATmegaBOOT_168_atmega328.hex.

Objectives

The ATmegaBOOT bootloader (original STK500 protocol, 57600 bauds on 328 / 19200 on 168) can disappear: modified fuses, accidental erasure, failed flashing. The board then no longer responds to the IDE but is NOT dead: the 2×3 ICSP connector provides direct access to the chip. This tutorial is the complete resurrection procedure documented in the official "Programmer" tutorial: reading fuses, rewriting the correct bootloader HEX, verification.

Equipment

Complete code

# 1) Brancher le programmateur sur l'ICSP de la Duemilanove (respecter
#    le sens du nappe : pin 1 = marque rouge, vers le RESET).

# 2) Lire les fusibles (USBtinyISP via avrisp ; 19200 est le debit ISP)
#    Attendu pour ATmega328 : low=0xFF high=0xDA extended=0xFD
avrdude -c usbtiny -p m328p -U lfuse:r:-:h -U hfuse:r:-:h -U efuse:r:-:h

# 3) Si les fusibles sont hors spec (ex. high=0xC9 : RESET coupe !),
#    les reprogrammer :
avrdude -c usbtiny -p m328p -U lfuse:w:0xFF:m -U hfuse:w:0xDA:m -U efuse:w:0xFD:m

# 4) Recrire le bootloader officiel (HEX du core, 2 Ko en fin de flash)
avrdude -c usbtiny -p m328p -U flash:w:ATmegaBOOT_168_atmega328.hex:i

# 5) Verifier la signature puis tester par le bootloader :
avrdude -c usbtiny -p m328p -n        # "Reading | ####... signature 0x1E950F"
# IDE : carte "Duemilanove or Diecimila / ATmega328" + Blink -> doit repasser

# Variante 168 : -p m168, fusibles high=0xDD extended=0xF8,
# HEX ATmegaBOOT_168.hex, upload a 19200 bauds.

Expected verification

Reading the fuses returns low=0xFF, high=0xDA, extended=0xFD (328) — high=0xDD/extended=0xF8 for a 168. The signature read is 0x1E950F (328) or 0x1E940B (168). After rewriting the HEX, the test Blink sketch uploads normally via USB at 57600 bauds: the bootloader is alive. The TX LED blinks when the port opens.

Common errors

Other tutorials for this board

Code examples for this board

← Back to the board 🛠 All tutorials