@StefanL38
Before i start messing with a new gadget, i usually first try to backup its stock firmware. It comes very handy when trying to unbrick something ![]()
@anon10390401
For ESP32 and ESP2866 you can use this guide.
About Arduino, you didn't specify which board, so i'll assume it's about Uno.
The Uno R3 has two chips with firmware - the main MCU ATmega328P, and the ATmega16U2 which is used as a USB>Serial adapter. You'll need to backup both.
There is a guide here.
I use USBasp (clone) programmer and avrdude for this purpose.
Here is one of my backup batch scripts for the 328P as example:
ECHO OFF
CLS
set bakdir="S:\Embedded\_Backup\ATmega328P"
ECHO.
ECHO BATCH COPY ATMEGA328P-PU VIA USBasp
CD "S:\Embedded\USBasp\AVRDUDESS-2.13-portable"
ECHO ENSURE MASTER CHIP IS IN THE READER
ECHO CTRL+C to abort OR PRESS Any key to begin copy...
ECHO.
pause >nul
ECHO Creating hexadecimal binary files of ATmel328P contents...
>stdout.log 2>&1 (
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U flash:r:%bakdir%\backup_flash.hex:i
ECHO flash has been sAVED to backup_flash.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U eeprom:r:%bakdir%\backup_eeprom.hex:i
ECHO eeprom has been SAVED to backup_eerpom.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U hfuse:r:%bakdir%\backup_hfuse.hex:i
ECHO hfuse has been SAVED to backup_hfuse.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U lfuse:r:%bakdir%\backup_lfuse.hex:i
ECHO lfuse has been SAVED to backup_lfuse.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U efuse:r:%bakdir%\backup_efuse.hex:i
ECHO efuse has been SAVED to backup_efuse.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U lock:r:%bakdir%\backup_lock.hex:i
ECHO lock has been SAVED to backup_lock.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U calibration:r:%bakdir%\backup_calibration.hex:i
ECHO calibration has been SAVED to backup_calibration.hex
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U signature:r:%bakdir%\backup_signature.hex:i
ECHO signature has been SAVED to backup_signature.hex
)
ECHO Hexadecimal files created.
ECHO.
ECHO Starting Notepad editor to display log file.
start notepad "S:\Embedded\USBasp\AVRDUDESS-2.13-portable\stdout.log"
ECHO.
ECHO Press Any key to close this window...
pause >nul
And here is my restore batch script:
ECHO OFF
CLS
set bakdir="\Embedded\_Backup\ATmega328P"
CD "S:\Embedded\USBasp\AVRDUDESS-2.13-portable"
ECHO INSERT THE NEW CHIP INTO ARDUINO ISP PROGRAMMER
ECHO PRESS Any key to write new chip (CTRL+C to abort)
ECHO ...
PAUSE >nul
REM Paste 328: Note that the path cannot contain the drive letter "C:" so you cannot use %temp% as previously
REM Reference:http://savannah.nongnu.org/bugs/index.php Bug report #39230
REM.
>stdout.log 2>&1 (
DIR %bakdir%\*.hex
ECHO ATmel328P-PU duplication is beginning now...
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U flash:w:%bakdir%\backup_flash.hex
ECHO flash WRITTEN
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U eeprom:w:%bakdir%\backup_eeprom.hex
ECHO eeprom WRITTEN
REM high_fuses=0xDA
REM REM avrdude -c arduino -P com9 -p ATMEGA328P -b 19200 -U hfuse:w:0xDA:m
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U hfuse:w:%bakdir%\backup_hfuse.hex
ECHO hfuse WRITTEN
REM low_fuses=0xE2
REM avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U lfuse:w:0xE2:m
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U lfuse:w:%bakdir%\backup_lfuse.hex
ECHO lfuse WRITTEN
REM extended_fuses=0x05
REM avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U efuse:w:0x05:m
avrdude -c usbasp-clone -p ATMEGA328P -b 19200 -U efuse:w:%bakdir%\backup_efuse.hex
ECHO efuse WRITTEN
)
REM.
REM Chip duplication is complete... starting display of log file.
start notepad S:\Embedded\USBasp\AVRDUDESS-2.13-portable\stdout.log
ECHO.
ECHO Press Any key to close this window...
PAUSE >nul