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.