Projekt: ESP-Firmware klonen
Nachdem mich immer mal wieder Zuschauer und Leser gefragt haben, wie man denn auf die originale Firmware zurückkommt: Hier das Video dazu. Und zwar gibt es dazu immer prinzipiell zwei Möglichkeiten. Entweder man hat ein identisches Produkt vom Hersteller, von welchem man dann die Firmware auf ein anderes Gerät bringen möchte, oder man möchte ein Backup von der origialen Firmware machen, bevor man das Gerät mit neuer Software versorgt. Beides geht im Prinzip auf die gleiche Art und Weise. Sollte man beide Möglichkeiten nicht mehr haben (weil man nur ein Gerät hat und dieses bereits geflasht hat), kann man natürlich auch jemand anderes fragen oder eben eine bin-Datei vom Hersteller flashen (falls diese zur Verfügung gestellt wird).
Was Du brauchst?
- Einen ESP8266 (Wemos D1, Shelly, NodeMCU, Sonoff, …)
- Einen FTDI oder CP2102
Video
Befehle
Als erstes brauchst Du ein System auf welchem Python installiert ist. Schau am besten direkt nach, wie Du das für dein Betriebssystem nachholen kannst. Dafür gibt es super Anleitungen im Netz. Dann lädst Du (wie im Video zu sehen) den aktuellen Release vom esptool herunter. Diesen findest Du unter dem folgenden Link:
https://github.com/espressif/esptool
Die Zip-Datei wird entpackt und danach kann schon getestet werden, ob alles funktioniert. Dafür wechseln wir mit dem Terminal in das entpackte Verzeichnis vom esptool und rufen die Hilfe auf:
esptool.py -h
Jetzt solltest Du viel Text sehen mit allen möglichen Parametern. Falls nicht, stimmt etwas mit der Python-Installation nicht.
Okay. Dann kann auch schon der ESP angeschlossen werden und in den Programming-Mode gebracht werden. Dafür muss GPIO0 (Null) mit Ground (GND) verbunden werden, während der ESP mit Strom versorgt wird. Bei einem Sonoff wird in der Regel dazu einfach der Button auf dem Gerät gedrückt gehalten, beim Shelly muss man das per Hand mit Jumper-Kabeln durchführen.
Als nächstes wird der Port des angeschlossenen ESP ermittelt und als Parameter im folgenden Befehl angegeben. Unter Windows steht dort wahrscheinlich COM1 oder COM5.
esptool.py --port /dev/cu.SLAB_USBtoUART read_flash 0x00000 0x100000 ~/shelly-backup.bin
Nach einem Druck auf Enter braucht es nun etwas Zeit und dann sollte im Home-Verzeichnis eine Datei namens shelly-backup.bin liegen. Diese ist nun die Basis um das Image auf andere ESPs zu flashen. Natürlich funktioniert das mit jedem ESP, aber es macht natürlich nur Sinn, vom gleichen Gerätetyp auf einen anderen zu übertragen. Also von einem Shelly die Firmware auf einen Sonoff zu spielen würden zwar technisch funktionieren, aber macht nicht unbedingt viel Sinn.
Haben wir also den zu flashenden ESP (im Programming-Mode) angeschlossen, wird der folgende Befehl ausgeführt:
esptool.py --port /dev/cu.SLAB_USBtoUART write_flash 0x00000 ~/shelly-backup.bin
Nach ein paar Sekunden Wartezeit sollte nun die neue Firmware auf dem zweiten ESP geflasht sein.
Im Falle von Shelly musste ich einmal einen Reset auf die Werkseinstellungen durchführen, da ich sonst zwei Shellies mit der gleichen Seriennummer hatte. Danach hat alles wieder gepasst. Also eins zu eins austauschen ist nicht immer ohne Komplikationen möglich oder sinnvoll. Da muss man je nach Gerätetyp einfach ausprobieren was bei rauskommt.