Hilfe beim Flash-en eines ESP-12F

Mar 24, 2026 Last reply: 2 months ago 31 Replies

Mooi'n,



Ich habe mir bei Ali eine "MUltifunktionsuhr mit Kalenderanzeige und elektronischem Wetterdisplay" gekauft

formatting link
Ein Ex-Kollege hatte es mir gezeigt und ich fand's ganz niedlich. 10€ hatte ich gerade übrig.



Leider habe ich gedacht, daß man ja erst mal die aktuellste FW 'drauflädt, aber die firmware-V3.1.4.bin, die ich genommen habe, wurde zwar von der laufenden FW akzeptiert, hat aber das Käschtle geschrottet ... tot.



Jetzt wollte ich versuchen, die firmware_V3.0.33.bin zu flash-en, aber das Teil ist ja tot ... Linux zeigt auch keinerlei Erregung im udev-Bereich (udevadm monitor) und es wird auch kein Knoten in /dev für den USB-Port angelegt, wenn ich das Teil anschließe. Dann habe ich gedacht, daß ich das Teil sozusagen nativ flash-e, aber jeder Versuch mit GPIO0 auf Masse und Spannung anlegen oder RESET auf Masse ziehen läßt die LED auf dem Board kurz aufblitzen, dann nix mehr.



Hat jemand Erfahrung mit dem ESP-12F? Reicht es, wenn man GPIO0 (das liegt praktischerweise auf PIN13 an einem 16-er Pad auf der Unterseite des Prints) auf Gnd zieht und dann RESET kurz auf Gnd oder muß da mehr passieren, damit das Teil in den Flash-Modus geht?



NB Einen separaten USB-Seriell-Umsetzer hat das Teil nicht, denkbar wäre also, daß der USB-Anschluß auch tot ist, weil der Anschluß auch von der FW gesteuert würde und eben die 3.1.4-er FW überhaupt nicht zu meinem Teil paßt.



Ggf muß ich dann irgendwie TxD und RxD isolieren und mit einem externen USB-Seriell-Adapter 'ran gehen.



Danke im Voraus,



Josef


Mein Adapter hat den Pin dauerhaft fest auf null. Dann Spannung anlegen und es geht los. Als Grundlage dient mir ein Programmer für den Esp-01S und ein Adapter.

Nur zur Sicherheit: ESP-12F = ESP8266-Modul?

Wo kommt da in der Schaltung der USB her? Der ESP8266 hat kein integriertes USB. Normalerweise klemmt man da einen USB-TTL-Wandler (CP2102, FT232R, CH340 o.ä.) an RXD und TXD.

Für den UART-Download-Modus braucht Du GPIO15 = 0 GPIO0 = 0 GPIO2 = 1 plus Reset.

cu Michael

Ja, steht sogar auf dem Gehäuse 'drauf: "MODEL ESP8266MOD"

Könnte der ESP das USB nicht auch selber in Software machen?

Auf dem Board ist auf jeden Fall kein USB-TTL-Wandler 'drauf! Auf der Oberseite nur der ESP-12F und ein 3V3-Regler (vermutlich ein LT1117-3,3 im SOT223), die USB-Buchse, der Anschluß für das Display und ein paar diskrete Bauteile. Auf der Unterseite drei leere Pads (16-polig DIL,

3-polig und 4-polig), alle unbestückt.

Das werde ich auch mal probieren. Bedauerlicherweise hat das ESP-12F-Board ein 2mm-Rastermaß und ich habe zwar Pogo-Pins en masse, aber leider noch keine Lochraster-Platine im 2mm-Raster (und der lokale Händler meines Vertrauens liegt gerade im Krankenhaus :-( ).

Danke im Voraus,

Josef

Theoretisch machbar:

formatting link
Die Einschränkungen (u.a. nur kompatibel mit einem sehr alten SDK) sind aber erheblich. Wenn die wirklich sowas machen, würde das erklären, warum mit kaputter Firmware USB ncht mehr reagiert.

Meldet sich das Teil denn im funktionierenden Zustand als USB device am PC, und nutzt die Buchse nicht nur zur Stromversorgung?

cu Michael

Jetzt wo Du's fragst ... Zugriff wimre nur über WLAN: Wenn man das Teil zu allererst anschließt, macht der einen AP auf und man muß sich mit dem Verbinden, bekommt dann eine IP-Adresse, dann den Browser darauf ansetzen und dann kann man ihn konfigurieren (WLAN SSID, Paßwort, Ort (wegen Wetter)). Danach PowerCycle und ... voila, das Teil ist im Netz und holt sich Uhrzeit und Wetterdaten über's WLAN und man kann ab da "normal" über WLAN 'ran, z.B. um den Ort zu ändern. Ich habe mir das Teil nie von der USB-Seite angesehen ("lsusb").

Denkbar ist natürlich, daß das Teil jetzt wieder auf Werkseinstellungen steht und erneut konfiguriert werden möchte, aber ... nein, es taucht kein WLAN-Netz "Smart Weather Clock" oder sowas ähnliches auf, nur unser WLAN und die bekannten WLANs der Nachbarschaft.

Aber ... Danke trotzdem für die Frage, denn ich bin die ganze Zeit dem Phantom "USB-Seriell" hinterhergejagt. Ich bin mir jetzt ganz sicher, daß ich das Teil über den üblichen Weg flash-en muß. Ich hoffe nur, daß das Image auch mit "esptool" flashbar ist und nicht ausschließlich für den Weg über die bereits aktive FW.

Nochmals "Danke!" und ein schönes Wochenende,

Josef

OK, dann brauchst Du einen externen USB-TTL-Wandler.

Wenn Du den Chip per GPIO0/GPIO2 in den Download mode bringst, wird nichts aus dem Flash gebraucht - das geht auch mit komplett leerem Flash, der Bootlader ist im internen ROM. Sprich: das sollte auf jeden Fall funktionieren.

Wenn möglich: erstmal das komplette Flash mit esptool sichern, nicht, daß die neben der Firmware noch irgendwelche Daten liegen haben, die nicht im firmware-File vorhanden sind.

cu Michael

Ist vorhanden. Praktischerweise hat der schon 3V3 am Ausgang :-)

Das hatte ich gehofft.

Die Lochraster-PLatinen mit 2mm RM sind heute gekommen und die Pogo-Pins passen da exakt in die Bohrungen! Mal sehen, wann ich Zeit dafür habe.

Danke für den Tip mit dem Sichern des Flash,

Josef

So, Frau ist zur Gymnastik und Mann hat den Lötkolben geschwungen und ein PLatinchen gemacht mit 2x8 Pogo-Pins und Buchsenleisten zum Anschluß.

  1. GPIO15 UND GPIO0 müssen beide auf GND, dann tut esptool etwas
  2. read_mac funktioniert, auch chip_id, flash_id, read_flash_status
  3. read_flash, erase_flash tun nicht, esptool sagt "ESP8266 ROM does not support function ..."
  4. dump_mem tut, zB lassen sich 64K ab Adresse 0x40000000 dump-en.
  5. write_flash scheint zu tun, jedefalls "Took 0.72s to erase flash block" und dann "Wrote 515072 bytes at 0x00010000 in 50.0 seconds", jedoch ist das Teil immer noch tot.

Fraglich ist: A) Ist die Datei firmware_V3.0.33.bin überhaupt eine Image-Datei? Linux "file" sagt: "DOS executable (COM)". Vielleicht muß man die Datei ja noch auf nicht-Linux laufen lassen, nur ... ich habe nur Linux ;-) B) Wo muß das Image hin? Weder mit Offset 0 noch 0x40000000 zeigt die Uhr irgendwas an.

Vielen Dank im Voraus,

Josef

Ich habe jetzt mal versucht, die Datei "firmware_V3.0.33.bin" unter Dosbox laufen zu lassen, hat (natürlich) nix gemacht, außer daß die Dosbox eingefroren ist.

Aber die beiden Fragen oben sind noch relevant.

Josef

Wenn ich das richtig verstehe, muß das Image mit "write_flash" in ein, für den ESP8266 externes und per SPI angebundenes, Flash-ROM geladen werden. Beim RESET lädt der ESP dann den Inhalt des ROMs in seinen internen Speicher (RAM?) und läßt es von dort laufen.

Ich werde das mal als Basis für weitere Versuche nehmen.

Josef

GPIO 15 hat (auf der Trägerplatine oder sonst extern) einen Pulldown und und 0 und 2 jeweils einen Pullup. Die dürfen beim Einschalten und Boot auf keinen anderen Pegel gezogen sein.

Wenn Du ohnehin flashst, dann zuerst eine Testdatei. Klassisch ist das Blinken der Built-in LED. Bevor Du am Ziel arbeitest mußt Du zuerst Deine Werkzeuge verifizieren. Und dann, wenn möglich, schrittweise und nicht alles auf einmal.

Ich gehe jetzt davon aus, daß der Bootloader beim Reset den Inhalt des Flash-ROMs in den internen RAM lädt und dann daraus arbeitet. Ggf ist der Inhalt des Flash-ROMs strukturiert, so daß der Bootloader erkennen kann, wo welche Teile hin kommen.

Tut leider nicht: "ESP8266 ROM does not support function read_flash".

Weiter in meinem nächste F'Up ...

Josef

Dochdoch, wenn man nämlich flash-en will muß auf jeden Fall GPIO0 auf GND und, wie ich aus praktischer Erfahrung weiß, auch GPIO15.

Ich bin inzwischen so weit, daß die Toolchain und auch der ESP8266 und das Display OK sind: Ich habe mir mal das aktuelle Image vom Projekt

formatting link
und ge-flash-t und, siehe da, auf dem Display erscheinen (für das Image) sinnvolle Ausgaben, wenn auch spiegelverkehrt, aber das steht sogar im README. Auch der AP wird aktiviert und ich konnte mich verbinden. Die Hardware scheint meine Experimente unbeschadet überstanden zu haben. Ge-flash-t habe ich natürlich mit esptool und da ich das geschafft habe, ist auch die "Toolchain" OK.

Antworten auf meine eigenen Fragen: A) Ja, sie ist eine Image-Datei ("esptool image_info firmware_V3.0.33.bin" spuckt was sinnvolles aus und der Versuch, eine Textdatei zu flash-en bringt esptool zum meckern. B) Sie muß mit "esptool write_flash" in's Flash-ROM, von wo aus sie vom Bootloader in den "Hauptspeicher" geladen und dann ausgeführt wird.

Jetzt kämpfe ich halt damit, welches Image ich flash-en muß, damit das Teil wieder ein(e) "Smart Weather Clock" wird. Da ich aber inzwischen sicher bin, daß das Flash-en funktioniert, kann ich ja mal alles flash-en, was mir unter die Finger kommt, bis daß es geht.

Vielen Dank für die Diskussionen bis hierhin,

Josef

Hm. Ich bin der Meinung, bei meinen Shellys hätte das funktioniert - aber egal: Du hast ja eine Firmware die startet, dann ist das egal, was vorher 'drin war.

cu Michael

Asche auf mein Haupt: Ich habe mit einer alten Version von esptool gearbeitet. Die neue ist Version 5.2.0 und ein Binary statt wie die alte

2.8 ein Python-Skript. Der Vorteil der neuen Version ist u.a. daß die Unzulänglichkeiten des ESP8266-ROMS (u.a. daß read_flash nicht geht) über einen "Stub flasher" ausgebügelt werden. Der kann dann das Flash-ROM auch auslesen!

All zu viel hat mich das jetzt aber nicht weiter gebracht, weil die Firmware-Images, die ich probiert habe, auch mit dem neuen esptool nicht besser geworden sind ;-)

"Thus said" ... ein Ex-Kollege hatte mich ja auf das Teil aufmerksam gemacht, also werde ich ihn mal fragen, ob ich mir sein Exemplar einmal ausleihen und das Flash-ROM auslesen darf. Parallel habe ich bei GeekMagic mal nachgefragt, ob man bei denen ein Image herunterladen kann.

Schau'n 'mer mal, wie der Kaiser zu sagen pflegte!

Josef

Kurze Erfolgsmeldung:

Nachdem alles nix geholfen hatte, habe ich letzte Woche ein neues Exemplar bestellt. Das wurde heute geliefert. Das habe ich zerlegt, das Flash-ROM ausgelesen (die vollen 4MB) und in mein zer-flash-tes geschrieben und ... voila ... es lebt wieder!

Da ich da verschiedenste Images 'reingeschrieben hatte, war der Inhalt des EEPROM wohl nicht mehr brauchbar und das reparierte Teil kommt jetzt wieder ohne Verbindung zum WLAN hoch und spannt einen AP auf.

Auf jeden Fall: Jetzt gates wieder.

Vielen Dank für die Diskussion und eine schöne Restwoche,

Josef

Korrektur: Der ESP8266 hat gar kein EEPROM sondern emuliert es über die oberen Kilobytes im Flash-ROM.

Inzwischen habe ich festgestellt, daß dort der Ort (für den Wetterbericht), die WLAN SSID, das WLAN Paßwort und diverse andere Daten (ggf aber nur Müll) abgelegt werden.

Gilt immer noch,

Josef

Und das sollte man nicht zu oft beschreiben, da kann schon nach einigen tausend Zyklen Sense sein...

ACK!

In dieser Anwendung aber halb so wild, so oft ändert man den Ort oder das WLAN auch nicht.

Josef

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required