Backup - Sichern der Original Firmware (Sonoff, Shelly & andere ESP8266-Geräte)

  • Dieser Abschnitt beschreibt, wie man die original Firmware von ESP8266/ESP8285-Geräten sichern kann,

    um sie gegebenenfalls wieder einzuspielen.

    I - Backup - Original Firmware sichern

    • bei WLAN-Schaltern, Steckdosen, Lampen... mit ESP8266 / ESP8285 Chip wie Sonoff, Shelly, usw.
    • falls man, z.B. nach einem Tasmota-Flash, wieder zur Original Software (evtl. mit Cloud) zurückkehren möchte.

    I.I - Vorbereitung

    Wie für das Flashen, wird auch hier ein FTDI-, CP2102-, CH340-,... Adapter benötigt.

    Genauso muss das Gerät für das Auslesen in den Flash-Modus versetzt werden,

    z.B. Taste während dem Anstecken gedrückt halten oder GPIO0 auf GND legen.

    I.II - Backup mit Python und esptool.py

    Quelle: https://github.com/espressif/esptool


    Installation z.B.:

    C:\Python27\Scripts>pip install esptool


    Bei den meisten Sonoff wird 1MB Flash verwendet, die Befehlszeile lautet dann:

    esptool.py --p COM5 --baud 115200 read_flash 0x00000 0x100000 Backup_1MB.bin


    Shelly 1 und Shelly 2 verwenden z.B. 2MB Flash:

    esptool.py --p COM5 --baud 115200 read_flash 0x00000 0x200000 Backup_2MB.bin


    Bei Sonoff POW v2.0 z.B. oder fürs Backup von WeMos D1 / NodeMCU mit 4MB Flash:

    esptool.py --p COM5 --baud 115200 read_flash 0x00000 0x400000 Backup_4MB.bin


    Der serielle COM-Port muss angepasst werden und die Baud-Rate kann bei Fehlern runtergesetzt werden (z.B. auf --baud 38400).


    I.III - Backup mit esp_tool.exe unter Windows

    esp_tool.exe und angepasste Batch-Files für 1MB, 2MB und 4MB befinden sich in der Zip-Datei im Anhang:

    esp_tool_ReadFlash.zip


    Die Befehlszeile für eine 2MB Flash Sicherung lautet dann z.B.:

    esp_tool.exe -pCOM5 -b115200 -a0x0000 -s0x200000 -or Backup_2MB.bin


    Der serielle COM-Port muss auch hier und in den .bat Files angepasst werden.

    Die Baud-Rate sollte bei Fehlern auf einen niedrigeren Wert eingestellt werden (z.B. auf -b38400).


    Der Auslesevorgang dauert je nach Flashspeicher und Baud-Rate eine ganze Weile,

    es erfolgt keine Rückmeldung über den Lesefortschritt.


    I.IV - Zurückspielen der gesicherten bin-Datei

    Erfolgt genauso wie das Flashen sonst auch.

    Dafür empfehle ich esptool.exe bzw. FlashESP8266.exe


    I.V - Weitere Funktionen von esptool.py

    esptool.py flash_id --> ID und Größe des Flash-Speichers feststellen


    esptool.py erase_flash --> vollständiges Löschen des Flash-Speichers


    I.VI - Kopier-Schutz

    Die original Firmware ist u.a. bei allen Sonoff mit der ESP ID / MAC-Adresse 'verheiratet' und geschützt.

    Das bedeutet, dass die ausgelesene Firmware nur auf dem gleichen Gerät nach dem Einspielen auch wieder funktioniert.


    Bei Shelly ist dies (noch) nicht der Fall.




    P.S.:

    Kommentare zu Korrekturen und Verbesserungsvorschlägen sind SEHR willkommen

    und werden von mir mit Sicherheit überdacht.


    Wenn dir der Beitrag geholfen hat, freut mich ein ':thumbup:' natürlich besonders :)

Teilen

Kommentare 3

  • Hallo allerseits,


    als Neuling in Sachen SmartHome lese ich mich gerade in das Thema ein.

    Hierzu habe ich 2 Fragen zu "Backup - Sichern der Original Firmware":


    Frage 1:

    In der ZIP-Datei "blank_1MB_2MB_4MB_mit_esptool" sind leere Dateien und das "esptool" selbst vorhanden.

    In der ZIP-Datei "esp_tool_ReadFlash" mit "esp_tool" sind die leeren Dateien nicht vorhanden.

    Werden diese also vom "esp_tool" selbst erzeugt oder müssen diese noch in das Verzeichnis kopiert werden?


    Frage 2:

    Das Gerät wird vor dem Auslesen in den Flashmodus gebracht. Bleibt es nach dem Auslesen im Flashmodus

    und kann direkt mit der neuen Firmware versorgt werden oder ist ein Neustart in den Flaschmodus erforderlich?


    Besten Dank


    Ecki#2

  • Welches Programm mit Mac OS benutzen?


    Danke!

    • Hi, kenne mich mit macOS nicht wirklich aus, sollte aber

      genauso mit esptool.py funktionieren (wie auch unter Linux).


      Python und pySerial, sowie Treiber für FTDI etc. müssen installiert sein.


      esptool installieren:

      git clone https://github.com/themadinventor/esptool.git

      cd esptool

      sudo python setup.py install


      FTDI... USB-Anschluss feststellen:

      /dev/tty.*


      dann lautet die Befehlszeile fürs Auslesen mit angepasstem Port z.B. so:

      sudo python esptool.py --p /dev/tty.usbserial-FTABC01D --baud 115200 read_flash 0x00000 0x100000 Backup_1MB.bin