OTA Updates

Hallo zusammen,

ich wollte eben eine neue Firmware flashen und habe micht gefragt ob das auch über OTA funktioniert.
Im Code habe ich nichts dergleichen gefunden, aber das muss ja nichts heissen. :slight_smile:
Gibt allerdings auch kein Environment dafür.

Hat das einen technischen Grund, dass das nicht funktioniert oder hat noch niemand danach gefragt?

Danke euch für eine kurze Antwort!

der Code ist im Normalfall zur Zeit größer als 2MB und passt daher nicht doppelt in den $MB Speicher. Ota war deshalb rausgefallen.
Mit einem Wrover und 16MB wäre da eine Partitionierung mit 2 großen Partitionen und OTA möglich, aber das hat bisher noch niemand getestet.

Wir hatten das Thema kürzlich hier:

Wie @gmbo schon sagte: Aktuell würde das nur mit einem Wrover gehen. Hat aber noch niemand (soweit ich weiß) getestet.

Ich würde das gerne testen, und auch in der Zukunft nutzen zumal ich ausschließlich Wrover benutze , aber ich habe keine Ahnung wie ich das aufsetzen muss . Meine künftige Hardware wird auch keinen USB Anschluss haben .

Ich habe mir das jetzt mal angesehen, mit allen Optionen ist das Bin-File 2,1MB gross. Deaktiviert man Bluetooth, beträgt die Grösse nur noch 1,6 MB. Das müsste ja dann reichen oder?

@gmbo: Was bedeutet „ist rausgefallen“? Meinst du OTA wurde aufgrund der Grösse des Image nicht weiter verfolgt, oder war es im Code drin und ist entfernt worden?

Als ich das Projekt 10/2019 gestartet habe, war meine Idee auch, OTA zu unterstützen. Damaliger Grund war für mich, dass man bei den NodeMCU-Boards, die ich damals ausschließlich verwendet habe, zum Flashen immer eine Taste drücken muss.
Es war dann aber so, dass ich bei verschiedenen Sachen, u.a. auch OTA, Probleme hatte, sie zum Laufen zu kriegen. Es hat ein bisschen gedauert, bis mir klar wurde, dass der Mangel an statischem RAM des ESP32 dies auslöste. In der Folge habe ich ein paar Dinge angepasst und das Speicherproblem war passé. Zwischenzeitlich habe ich jedoch angefangen, mit Boards zu arbeiten, bei denen man keine Taste drücken muss (Lolin32 zB). Von da an hatte OTA keine wirkliche Bewandtnis mehr für mich und daher habe ich mich nicht mehr darum gekümmert.

Stand jetzt kommt man irgendwo bei 2 bis 2.2 MB für das Image raus. Soweit mir bekannt ist, braucht man zwei OTA-Images (Es können keine neuen Karten mehr zugewiesen werden / nvs voll - #20 von tuniii). Zudem benötigt man natürlich auch noch den normalen Programmspeicher (den ich gerne auf 3 MB lassen würde). Und bissl Speicher für NVS braucht’s auch.
Also benötigt man selbst bei 2MB Flashgröße insgesamt 6 MB zzgl. NVS. Und damit ist halt klar, dass es nur mit WROVER geht. Weil die WROOM32 bieten so viel Speicher nicht.

Bevor man das kann, muss man jedoch zuerst eine Custom-Partitionstabelle definieren (steht auch noch auf meiner ToDo-List).

@compactflash
Wenn ich das richtig verstanden habe benötigst du auf jeden Fall die otadata Partition zu den beiden App Partitionen.
https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html
Die können 4M groß sein und anstelle von SPIFFS kann ja auch eine große data nvs Partition stehen.

In der platformio.ini des Boards sollte dann

board_upload.maximum_size = 16777216
board_upload.flash_size = 16MB

eingesetzt werden.
platformio/platform-espressif32#482 (comment)

damit die 16M benutzt werden.

Habe das aber bisher nur mal in der Arduino ide mit riesen SPIFFS ohne OTA getestet.

Ich hab leider meinen ersten Protoyp ein wenig verhauen, das Board klebt mit Epoxy im Gehäuse fest weil ich dachte es gäbe OTA.

Um trotzdem die Funktionalität zu haben, habe ich unter dem Mikroskop an ein paar testpunkte und vias 0,3mm CUL Kupferlackdraht gelötet.
Das sollte die selbe Funktionalität bieten wie diese breakout boards hier: Vertikale USB MiCroUSB Micro USB 2,0 Weibliche Kopf EINE Stecker 2,54mm PCB Konverter Adapter Breakout Board 180 Grad Vertikale|Integrated Circuits| - AliExpress

Würde es gerne aber etwas einfacher zum dranlöten haben. Hat jemand mal versucht die Dinger über ftda / serial zu flashen?
Ich frage mich nur ob man 3,3V selbst versorgt oder ob man das weg lässt und sich selbst über Batterie oder USB versorgen lässt?

ich habe nur den serielen monitor über einen FTDI-Adapter probiert. Ich habe nur TX und RX angeschlossen und den ESP32 währenddessen an einem USB-Ladegerät betrieben.
Theoretisch sollte das Flashen so auch klappen.

Um den ESP32 über UART zu flashen, muss dieser zuerst in den Flash Mode versetzt werden. Dabei muss GPIO0 LOW bei einem Reset sein. Daher gibt es bei vielen Dev Boards ein Reset- und Boot-Taster. Der Boot-Taster hängt an GPIO0 und GND. Beim seriellen Flashen über einen USB-UART-Wandler erfolgt der Reset und Flash Mode über die DTR und RTS Leitungen.

Ja gut das ding sollte schon noch gemeinsamen ground bekommen. Krame heute Abend mal meinen Buspirate raus.
An die Pins komme ich leider in dem Prototypen nicht mehr ran. Vielleicht Dremel ich dann noch ein Loch unten rein, mal sehen.

Sehr interessant. Das habe ich beim V4 bemerkt, der Lolin32 hat allerdings nur einen reset pin. Weißt du zufällig ob der das auch braucht?

Ja, das wird bei jedem ESP32 benötigt: Home · espressif/esptool Wiki · GitHub
Beim Lolin32 kommt man dann nur über DTR und RTS in den Flash Mode: Home · espressif/esptool Wiki · GitHub

Also pin 23 https://www.mischianti.org/wp-content/uploads/2020/09/ESP32-WeMos-LOLIN32-pinout-mischianti.jpg auf gnd richtig? Ist das auch der Reset Knopf auf der Platine? Ich meine mich zu erinnern das ich zumindest beim flashen über usb keinen reset knopf gebraucht habe, nur beim V4.

Ja Pin 23 auf GND und dann Reset. Beim Flashen über USB wird kein Reset-Pin benötigt. Der Reset und GPIO0 auf GND erfolgt dabei über DTR und RTS.

Sorry das ich da nochmal dumm Frage. Laut deinem Link ist EN auf GND = RTS und befindet links oben unter 3,3V
GPIO0 ist DTR.

if both RTS and DTR are both asserted together, this doesn’t reset the chip. Consult Espressif development board schematics for the specific details.

Heißt ich soll sie nicht beide gleichzeitig auf gnd schalten. Was unterscheidet RTS und DTR?
EDIT: Sorry die gehören natürlich zur FTDI Connection.

Klingt kompliziert, ich benutze einfach weiter den USB Stecker. :slight_smile:

Ich auch, schau mir in 99% der Fälle danach die Konsolenausgabe an, um zu sehen ob alles läuft und korrekt arbeitet. Oldschool - ich weiß…