Forum: Mikrocontroller und Digitale Elektronik ESP8266: ESP-12E: NodeMCU Firmware Update unklar, scheitert


von Roman K. (rk_aus_s)


Lesenswert?

Hallo zusammen

Nachdem ich mich bisher eher mit den Atmel AVRs beschäftigt habe dachte 
ich, es wäre an der Zeit mich mal dem ESP8266 zu widmen.

Ich will ein kleines Bastel-Projekt basierend auf nodeMCU nachbauen, 
also habe ich mir diese nodeMCU Boards bestellt.

https://www.amazon.de/gp/product/B0754N794H/ref=oh_aui_detailpage_o08_s00?ie=UTF8&psc=1

Aber schon beim Einrichten habe ich Probleme. In der Anleitung des 
Bastel-Projekt steht, man solle nodeMCU auf die neuste Version updaten, 
da die Boards oft noch älter Versionen drauf haben.

Und da beginnt schon mein Problem:

Ich kriege es im ESPlorer nicht hin, dass mir dieser irgendwas 
sinnvolles über die Boards anzeigt, egal welche Baudrate ich einstelle.

Also habe ich mal "blind" ein Board mit der "internen" Version des 
nodeMCU Flasher geflasht, unwissend ob ich danach eine neuere nodeMCU 
Version drauf habe, oder sogar eine ältere.

Allerdings konnte ich dann im ESPlorer wenigstens anzeigen lassen, dass 
das Board nun Version 0.9.5 drauf hat. D.h. nach dem flashen mit einer 
ziemlich alten Version klappte die Verbindung mit dem ESPlorer.

Also holte ich mir auf der nodeMCU custom builds Webseite die neuste 
Version 2.1.0 und flashte diese mit dem Flasher.

Nun aber kann ich wiederum keine Verbidung im ESPlorer herstellen; die 
Onboard LED des nodeMCU flakert permanent und der ESPlorer schreibt nur 
endloss wirre Zeichen auf dem Serial-Monitor. Ich habe ALLE Baudraten 
durchprobiert, immer und immer wieder.

Ich bin echt verwirrt. Ich weiss, dass die nodeMCU Flasher Software 
etwas veraltet ist. Auch habe ich gehört, dass ESPlorer öfters die 
Firmware nicht anzeigen kann ("...Can't autodetect firmware, because 
proper answer not received.").

Aber ich hänge jetzt total durch. Das einzige was ich möchte ist nur die 
neuste Version auf dem Board um mit meinem Bastel-Projekt loszulegen.

Bin ich denn so bescheuert und krieg das nicht hin? Hoffentlich kann mir 
jemand von euch weiterhelfen.

Viele Grüsse
Roman

: Bearbeitet durch User
von Joachim S. (oyo)


Lesenswert?

Die Standard-Baudrate aller neueren NodeMCU-Firmwares ist 115200, das 
ist die richtige Baudraten-Einstellung.
Direkt nach dem Booten kommen allerdings immer einige hunderte Zeichen 
mit der etwas ungewöhnlichen Baudrate 74880 - mit der korrekten 
Einstellung 115200 Baud kann man die zwar nicht lesen, aber die kann man 
normalerweise auch einfach ignorieren. In Deinem Fall wäre es aber 
vielleicht sinnvoll, trotzdem mal diese Baudrate einzustellen, weil Dein 
Board aus irgendeinem Grund immer wieder zu resetten scheint.

Die Firmware-Erkennung des ESPlorer kannst Du getrost schlicht vergessen 
bzw. abschalten - die hat (zumindest bei mir) wirklich noch nie 
funktioniert.

Meiner Meinung nach kann Dein Problem aber eigentlich fast nur daran 
liegen, dass beim Flashen der Firmware irgendwas schiefgelaufen ist. Ich 
würde daher mal irgendeine andere Firmware-Flasher-Software benutzen, 
z.B. das kommandozeilen-basierte, mittlerweile vom ESP8266-Hersteller 
selbst weiterentwickelte und somit quasi offizielle "esptool.py".
Ich z.B. benutze immer den folgenden Befehl zum Firmware-Flashen:
1
python3 esptool.py --port <Serieller Port> --baud 115200 write_flash --flash_mode qio --flash_freq 40m 0x00000 <Firmware-Datei>

von Pizza Hawaii oridschinale (Gast)


Lesenswert?

Bei manchen boards muss man dio, 40MHz statt qio,80MHz setzen.

von Roman K. (rk_aus_s)


Lesenswert?

Ok, ich habe jetzt mit esptool.py einmal nodeMCU 2.1.0 und einmal 
nodeMCU 1.5.4.1 geflasht. Das Flashen lief durch (genauso wie mit der 
"nodeMCU Flasher" Software), aber auch jetzt blinkt die blaue LED 
nachdem das Flashen vorüber ist wie wild und der ESPlorer schreibt 
endlos wirre Zeichenketten. Wenn ich im ESPlorer den Button "RTS" 
aktiviere hört das flakern der LED auf und die Ausgabe der wirren 
Zeichenketten stoppt.

Habe ich beim "builden" der nodeMCU Version was falsch gemacht?



C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 write_flash --flash_mode qio --flash_freq 40m 0x00000 
c:\Temp\nodemcu-master-7-modules-2018-03-17-13-38-58-integer.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 401328 bytes to 258738...
Wrote 401328 bytes (258738 compressed) at 0x00000000 in 22.8 seconds 
(effective 140.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 write_flash --flash_mode qio --flash_freq 40m 0x00000 
c:\Temp\nodemcu-1.5.4.1-final-7-modules-2018-03-17-14-33-29-integer.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 390852 bytes to 250104...
Wrote 390852 bytes (250104 compressed) at 0x00000000 in 22.0 seconds 
(effective 141.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

von Pizza Hawaii oridschinale (Gast)


Lesenswert?

> --flash_mode qio --flash_freq 40m
Was habe ich oben geschrieben?

von bingo (Gast)


Lesenswert?

Oft hilf es auch, erst mal ein erase_flash zu machen

von Roman K. (rk_aus_s)


Lesenswert?

Habe ich versucht; bringt aber auch nix.
Ganz generell, dass die On-board LED nach dem Flashen wie verrückt 
blinkt ist schon nicht normal, oder? (Nicht, dass das so sein muss...)


C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 write_flash --flash_mode dio --flash_freq 40m 0x00000 
c:\Temp\nodemcu-master-7-modules-2018-03-17-13-38-58-integer.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 401328 bytes to 258738...
Wrote 401328 bytes (258738 compressed) at 0x00000000 in 22.8 seconds 
(effective 140.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

von Roman K. (rk_aus_s)


Lesenswert?

>>Oft hilf es auch, erst mal ein erase_flash zu machen

Ok, probiere ich aus...

von Roman K. (rk_aus_s)


Lesenswert?

>>Oft hilf es auch, erst mal ein erase_flash zu machen

Yes! Habe den Flash gelöscht...

C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 erase_flash
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Erasing flash (this may take a while)...
Chip erase completed successfully in 9.0s
Hard resetting via RTS pin...

... und danch neu geflasht (mit "dio")

C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 write_flash --flash_mode dio --flash_freq 40m 0x00000 
c:\Temp\nodemcu-master-7-modules-2018-03-17-13-38-58-integer.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0240
Compressed 401328 bytes to 258738...
Wrote 401328 bytes (258738 compressed) at 0x00000000 in 22.8 seconds 
(effective 140.9 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...


Jetzt erkennt ESPlorer mein nodeMCU Board! Super. :-))


PORT OPEN 115200

Communication with MCU..Got answer! Communication with MCU established.
AutoDetect firmware...

Can't autodetect firmware, because proper answer not received (may be 
unknown firmware).
Please, reset module or continue.
„cŒónoŸl'nœâäbpŒ‡l;lsdxónàƒlbgã|„Œ‡àcŒónoî

NodeMCU custom build by frightanic.com
  branch: master
  commit: 5073c199c01d4d7bbbcd0ae1f761ecc4687f7217
  SSL: false
  modules: file,gpio,net,node,tmr,uart,wifi
 build   built on: 2018-03-17 13:37
 powered by Lua 5.1.4 on SDK 2.1.0(116b762)
lua: cannot open init.lua


Was bedeutet "lua: cannot open init.lua" ? Muss ich da noch was 
anpassen?

von Stefan F. (Gast)


Lesenswert?

Das bedeutet, dass du kein initiales Script im Flash hast, dass er sonst 
starten würden.

von Joachim S. (oyo)


Lesenswert?

Das klingt in der Tat gerade so, als ob Dein Board nicht das schnelle 
QIO unterstützt, sondern nur DIO.

Merkwürdig, ich habe bislang noch kein NodeMCU-Board gesehen, das QIO 
nicht unterstützt. Nur von den Wemos D1-Boards hatte ich mal 
gerüchteweise gehört, dass die kein QIO unterstützen.

von Stefan F. (Gast)


Lesenswert?

Hast du irgendetwas an den entsprechenden Pins hängen? Selbst die 
Kontakte von Steckbrettern können stören. Löte die Stifte mal aus.

In meiner Zeichnung habe ich die betroffenen Pins als "Reserviert" 
beschriftet: http://stefanfrings.de/esp8266/index.html#nodemcu

Noch eine Sache die in letzter Zeit öfters ein Knackpunkt war: Versorge 
das Board über ein dickes USB Kabel mit Strom oder löte Drähte an. Die 
Kontakte von Steckbrettern eignen sich oft nicht zur Stromversorgung.

von Roman K. (rk_aus_s)


Lesenswert?

>>Das klingt in der Tat gerade so, als ob Dein Board nicht das schnelle
>>QIO unterstützt, sondern nur DIO.

Sorry, mangels besserem Wissen bin/war ich mir nicht bewusst, was "DIO" 
und "QIO" bedeuten. Darum habe ich gar nicht (mehr) probiert, ob es mit 
"QIO" auch funkitoniert, aber das tut es.

Nach dem erase_flash funktioniert es mit beiden Modi - QIO und DIO:


C:\Users\Roman>python 
c:\Temp\Python\Python27\Lib\site-packages\esptool.py --port COM8 --baud 
115200 write_flash --flash_mode qio --flash_freq 40m 0x00000 
c:\Temp\nodemcu-master-7-modules-2018-03-17-13-38-58-integer.bin
esptool.py v2.3.1
Connecting....
Detecting chip type... ESP8266
Chip is ESP8266EX
Features: WiFi
Uploading stub...
Running stub...
Stub running...
Configuring flash size...
Auto-detected Flash size: 4MB
Flash params set to 0x0040
Compressed 401328 bytes to 258738...
Wrote 401328 bytes (258738 compressed) at 0x00000000 in 22.8 seconds 
(effective 141.0 kbit/s)...
Hash of data verified.

Leaving...
Hard resetting via RTS pin...

Finde diese Forum echt super; eigentlich war ich schon zufrieden, dass 
es nun überhaupt klappt, und dennoch kriege ich noch Tipps zur 
Optimierung.
Vielen Dank euch allen! :-)

Wenn ich jetzt noch rausfinde, warum ich in der Command-Line immer den 
kompletten Pfad zum Script esptool.py mitgeben muss, obwohl ich diesen 
im System in der PATH-Variablen hinterlegt habe, dann wär's perfekt.

Grüsse

: Bearbeitet durch User
von Stefan F. (Gast)


Lesenswert?

Unter Linux gilt eine geänderte PATH Variable normalerweise erst nach 
dem nächsten Login.
Unter Windows gilt sie für das nächste CMD Fenster dass du auf machst.
Klappt das nicht, hast du dich vermutlich vertippt.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.