Neues Feature: OTA-Update via WebGUI

Es wurde hier schon öfter mal angesprochen und gewünscht - daher habe ich es nun final hinzugefügt (nachdem es @tuniii bereits vor längerer Zeit implementiert hatte): OTA-Update. Hiermit ist es möglich, einen ESPuino zu flashen, ohne ihn direkt am Rechner anzuschließen.

Welche Voraussetzungen sind notwendig?

Grundsätzlich wird OTA von allen ESP32-Chips unterstützt. Das Problem ist jedoch, dass das Firmware-Image zwischengespeichert werden muss. Insbesondere, wenn Bluetooth aktiviert ist, ist das Firmware-Image des ESPuino deutlich größer als 2 MB und passt damit nicht mehr doppelt in den 4MB großen Speicher. Deswegen habe ich hinsichtlich des offiziellen Supports festgelegt, dass dies nur mit ESP32-WROVER möglich ist, die 16 MB Flashspeicher besitzen. Ein passendes Partitions-Layout wird in platformio.ini festgelegt und lautet: custom_16mb_ota.csv. Damit ESPuino OTA-Update für ein Profil akzeptiert, muss in build_flags zusätzlich -DBOARD_HAS_16MB_FLASH_AND_OTA_SUPPORT gesetzt sein. Für den Lolin D32 pro ist das z.B. der Fall. Ist dies nicht der Fall, so wird der Flashvorgang abgelehnt.

Wie schnell ist das Ganze?

Ich hatte einen Durchsatz von etwa 100 kB/s. Bei einer Firmware-Größe von 2,3 MB etwa kann man sich das dann leicht ausrechnen.

Welche Datei wird benötigt und woher kriege ich diese?

Zuerst wähle unter Project Tasks in Platformio das passende Profil aus (beispielsweise lolin_d32_pro). Klicke dann auf build, so dass die Firmware erstellt wird. Im Anschluss existiert im Projektverzeichnis ein Unterordner .pio/build. In build steckt nun ein weiterer Unterordner, der je nach Project Task unterschiedlich benannt ist - also beispielsweise lolin_d32_pro. In diesem Verzeichnis befindet sich eine Datei namens firmware.bin. Genau diese wird benötigt. Wir reden also z.B. von .pio/build/lolin_d32_pro/firmware.bin.

Wie kommt die Firmware auf den ESPuino?

Rufe die WebGUI deines ESPuino auf und klicke auf den Tab „Tools“. Dort gibt es unten den Punkt „Firmware-Update“. Wähle hier das passende Firmware-Image (die o.g. .bin-Datei) aus und lade sie hoch. Hinweis: Ggf. zeigt dein Browser das o.g. Build-Verzeichnis nicht an, da es durch den vorangestellten „.“ versteckt ist. In diesem Falle kopiere die .bin-Datei an eine andere Stelle und lade sie von dort hoch.

Gibt es etwas zu beachten?

Man sollte darauf achten, dass man bei der Konfiguration der SD-Karte (benutzte GPIOs, SD_MMC ja/nein) keine Fehler macht. Tut man das, so wird der ESPuino nicht mehr normal starten und man hat keine Möglichkeit mehr, ihn erneut über OTA zu flashen.

3 „Gefällt mir“

Würde mich freuen, wenn der ein oder andere, der bereits den aktuellen Master-Branch benutzt, und zudem beispielsweise einen Lolin D32 pro verwendet, das Ganze mal testen würde.

Vielleicht gibt es ja auch einfachere Wege, an die .bin-Dateie zu kommen. Ich bin ganz Ohr :slight_smile:

1 „Gefällt mir“

Dafür muss ich das Flashen via Commandline aber auch noch hinzufügen. Aber ist kein Problem @tuniii hat das ja alles schon gemacht :+1:

@biologist
Habe 2 Espuinos mit Wrover und meiner neuen Hardware über OTA geflasht , alles bestens . Jetzt kann ich es final in meine Boxen einbauen . Good job !

Kannst du noch die Akkuspannung ins Info einfügen . Log ist jetzt schön groß und man sieht es ja auch da …aber dann wäre das Info-Fenster noch kompletter .

VG und Danke

OK, danke für dein Feedback.
Die Anzeige kann man ja einfach hinzufügen. Kann ich mal machen.

Erledigt. Viel Spaß damit :slight_smile:

Hi,
bei so vielen neuen Features, musste ich meinen Espuino einfach mal auf den neuen refactoring master bringen :slight_smile:
@biologist echt toll was du da gemacht hast! Die neuen Features sind alle sinnvoll, funktionieren einwandfrei und der Umzug ins neue NVS war kinderleicht! Danke für deine Arbeit.

Bzgl. des Firmware-Update Eintrages auf der HTML Seite habe ich einen Kommentar. Dieser muss einen Container weiter nach innen damit dieser Eintrag auch nur unter Tools sichtbar ist. Der fix ist hier. Zum Einspielen des Fix auf meinen Espuino habe ich dann das OTA Feature getestet :smiley:

@Harry
Oh, vielen Dank. Das ist mir gar nicht aufgefallen :woman_shrugging:
Schön, dass alles soweit funktioniert. Lustig, dass du gerade schreibst, denn ich habe mir gerade deinen Webtransfer nochmal angeschaut. Habe eine kleine Statistik eingebaut und ein WDT-Reset durch ein delay ersetzt. Ich würde sagen, dass sich der Transfer jetzt schneller einpendelt.

Bin jetzt gerade noch dabei ein Feature zu implementieren, das sich ganz viele Leute ja schon ganz lange wünschen: Musik aus, wenn die Karte entfernt wird :slight_smile: Für den PN5180 habe ich es auch schon, für den RC522 muss ich noch.

Dann werde ich so langsam aber mal wieder etwas auf die Bremse treten und den Leuten Zeit geben, den ganzen neuen Kram auch zu testen :joy:

1 „Gefällt mir“

@biologist
Ich bin total begeistert. Meine neuen Boards sind im Dauertest , habe mehrmals mit OTA geflasht , alles funktioniert richtig gut . Klappt sogar in knapp 40 Sek. wenn Webradio läuft . Nochmals , tolle Arbeit und natürlich auch von deinen Zuspielern . Die letzten Änderungen haben es richtig rund gemacht . Mir fällt fast nichts mehr ein ( stimmt nicht , aber das per PN )
VG

1 „Gefällt mir“

Ich habe es heute auch erfolgreich getestet.

1 „Gefällt mir“

Ist es beabsichtigt, dass „Firmware Update“ auf jeder Seite im WebGUI angezeigt wird?

Nein. Das war das, was @Harry ein paar Posts weiter oben bereits angesprochen hatte. Das wurde hier bereits gefixt.

Ah, ok - nur für DE. Das erklärt, warum das bei EN nicht funktioniert :wink:

Kacke, wieder nicht aufgepasst :joy:

Habe den Punkt eben gefixt: Bufix: don't show OTA-form globally for language EN · biologist79/ESPuino@613a698 · GitHub

Hi,
mir ist aufgefallen, dass wenn man OTA nutzt und man doch mal über USB flashed, es zu einem Nebeneffekt kommt:
Soweit ich es verstanden habe nutzt OTA ja zwei app Partitionen und man switched beim flashen zwischen diesen beiden.
Beim Flashen über USB wird aber immer nur eine Partition beschrieben.
D.h. es gibt eine 50% Chance, dass wenn man das Image über USB flashed auch dieses beim booten genommen wird.

Eigentlich logisch. Man hat es aber nicht immer auf dem Schirm. Ich habe jetzt mal den RC522 durch den PN5180 getauscht und mich erst gewundert, warum dieser nicht tut. Ich hatte erst die Hardware in Verdacht, aber nope es war das Flashen :smiley:

Ist interessant, dass du das ausgerechnet heute schreibst, weil ich hatte dazu just heute Morgen mit @compactflash schon geschrieben.
Ich bin in dieses Problem auch schon gelaufen und habe es nur dadurch wieder in den Griff bekommen, dass ich das ganze Flash wieder gelöscht habe und anschließend neu geflasht.

Die Frage ist, ob man das grundsätzlich in den Griff kriegen kann, wenn man beide Flash-Varianten zulässt.

Hi @Harry und @biologist
Ich war gerade joggen und dabei fallen mir oft Lösungen oder Erklärungen zu Problemen ein . Ich habe mich unterwegs an mein Berufsleben erinnert und da speziell an das Verhalten der Bootproms bei den Boards in unseren Telefonanlagen . Da wurde auch immer der Prom gewechselt und man konnte das auch per Konsolenbefehl auswählen . Und genauso muss es sich auch hier verhalten . Nur weiß ich nicht ob man hier auch den Bereich zum Flashen manuell auswählen kann . Ich flashe ständig im Wechsel mal OTA mal USB und bisher hat es immer richtig funktioniert , das kann kein Zufall sein.
Das Problem trat folgendermaßen auf : Board lief mit aktueller Version . Dann Flashen einer alten Software per OTA , die kein OTA unterstützt . Ich glaube dass es daran gelegen hat .
Ich hatte vor einiger Zeit als @biologist noch kein OTA im Code hatte @tuniii OTA-Version aufgespielt . Anschließendes Flashen mit USB hat dann zufällig funktioniert , halt 50:50 .
Ich habe diesmal mit PlatformIO den Chip nicht wieder hinbekommen . Habe gestern mehrmals die Partitionen verändert und Erase benutzt . Es hat sich nichts geändert . Eben habe ich nach dieser Anleitung den Chip gelöscht und … die Sonne ging auf .

VG

Ich bin da wohl auch schon mal reingelaufen, habe aber mir nichts dabei gedacht.

Ich Flash meinen Prototyp meistens mit usb und die andere Box mit OTA.
Vor einiger Zeit als ich die zweite Box aufgebaut habe und Stück für Stück die einzelnen Komponenten getestet habe, hab ich wohl auch die ESP getauscht.
Wenn ich per USB geflasht have wurde trotzdem noch Die ursprüngliche Software Revision angezeigt.
Habe dann den ESP mit dem Tool gelöscht und komplett neu beschrieben.