Sonoff S20 ESP8266 flashen

  • Hallo zusammen,


    ich weiß, ein paar haben auch Sonoff Wlan-Steckdosen im Betrieb. Ich habe mir zwei S20 bestellt und möchte als erste Aktion die Stock-Firmware loswerden.

    Allerdings bekomme ich es beim besten Willen nicht hin, das Teil zu flashen :wallbash:


    Sicher, die Sufu bringt 1-2 ähnliche Threads hervor und GitHub ist voll von Leuten, die es ebenfalls nicht hinbekommen. Was ich probiert habe:


    Arduino IDE:

    - Board: Generic ESP8266 Module

    - Flash Mode: DOUT

    - Flash Size: 1M (no SPIFFS) und 1M (64K SPIFFS)

    - Port: /dev/ttyUSB0 / /dev/ttyACM0 (Board von Neueinsteiger / Arduino UNO)


    Das ganze mit einem Arduino UNO (siehe hier, ein YT Video ist bei mir eine Verzweiflungstat) und diesem tollen Board von Neueinsteiger. (Womit ich schon so einige "rohe" ESPs geflasht habe! - also keine NodeMCU). Laut diesem Beitrag auf GitHub kann es schon helfen, TX mit TX und RX mit RX zu verbinden. Weder so, noch gekreuzt hat es geklappt.


    Immer 3.3V an den 3.3V Pin vom Sonoff gegeben, auch wenn das Video etwas anderes sagt. Auch ohne geht es nicht. Den Button auf dem Sonoff S20 PCB habe ich vor dem anlegen der Spannung gedrückt und danach losgelassen, die grüne LED geht dabei nicht an. Lasse ich den Button ungedrückt, geht die LED an (normaler Betrieb), ich gehe also davon aus, dass der ESP sich im Flashing Modus befindet.


    Einen 0815 FTDI Adapter habe ich bestellt, kommt morgen an. Sollte das der Fehler sein, entschuldigt bitte. Nur habe ich bisher immer nie einen solchen gebraucht, es war immer ein passendes Modul auf den Boards (myAVR/NodeMCU/Arduino/Board von Neueinsteiger).


    Ich habe versucht, die MicroPython Firmware und einen "leeren" Arduino Sketch zu flashen.


    esptool:

    Code
    esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=detect -fm dout 0 /home/linus/Downloads/esp8266-20171101-v1.9.3.bin

    und

    Code
    esptool.py --port /dev/ttyUSB0 --baud 460800 write_flash --flash_size=1MB -fm dout 0 /home/linus/Downloads/esp8266-20171101-v1.9.3.bin


    Das Resultat ist immer das gleiche:

    Code
    warning: espcomm_sync failed
    error: espcomm_open failed
    error: espcomm_upload_mem failed
    error: espcomm_upload_mem failed

    bzw:

    Code
    esptool.py v2.1
    Connecting........_____....._____....._____....._____....._____....._____....._____....._____....._____....._____
    
    A fatal error occurred: Failed to connect to Espressif device: Timed out waiting for packet header

    Wäre für jede Hilfe dankbar. :danke_ATDE:

  • fred0815 wär' toll, demnächst von deinen Erfahrungen zu hören...


    premo danke, viel konnte ich dort zum S20 und speziell fruchtlosen Flashing-Versuchen nicht finden. Der hier: http://forum.creationx.de/foru…-v1-3-funktioniert-nicht/ hat zumindest die selbe PCB Version, aber einen anderen Fehler.


    Edit: na toll. Und einen 12-Seiten-Thread dazu. http://forum.creationx.de/foru…-fehler-beim-flashen-etc/

  • Meine S20 sollten eigentlich schon da sein....die brauchen irgendwie besonders lange...mein Lego ist schon da. :denker:

    Der Unterschied zwischen Genie und Wahnsinn definiert sich im Erfolg.

  • dbv: Laut Aussage der Post-Hotline ist der Zoll Anfang Dezember arbeitstechnisch "abgesoffen". Daher kommt es aktuell noch zu Verzögerungen.


    Linus: Wenn es mit dem Progger nicht klappt, wird es auch mit dem FTDI nicht klappen. Hast Du die 3V3 vom Progger bezogen? Wenn nicht, muss die Masse der Spannungsquelle mit der Masse des Progger verbunden werden.


    Ich habe übrigens auch einen S20, der sich nicht flashen lässt. Beim ersten funktionierte es einwandfrei, beim zweiten nicht. Bei der groben Sicht über die Platine fiel mir auf, dass am externen Quarz nur ein KerKo verbaut ist. Der zweite ist zwar vorgesehen, aber nicht bestückt. Leider habe ich den Wert, der im Schaltplan des S20 angegeben ist, nicht vorrätig. Daher habe ich ihn geordert und warte auf die Lieferung. Ob das aber der Grund ist, kann ich nicht sagen. Aktuell fehlt mir die Zeit der Ursache auf den Grund zu gehen. Um in den Flashmodus zu gelangen, könntest Du versuchen, diesen unabhängig vom Taster "manuell" zu aktivieren, indem Du die Kontakte vor dem Anlegen der Spannung überbrückst.

  • Wenn es mit dem Progger nicht klappt, wird es auch mit dem FTDI nicht klappen.

    Einen Versuch wäre es wert... und dann hab ich wenigstens einen FTDI.

    Hast Du die 3V3 vom Progger bezogen?

    Ja. Vom "5V/3V3" Pin der Leiste neben dem Schalter. Der steht natürlich auf 3V3.

    ...


    Um in den Flashmodus zu gelangen, könntest Du versuchen, diesen unabhängig vom Taster "manuell" zu aktivieren, indem Du die Kontakte vor dem Anlegen der Spannung überbrückst.

    Ok, danke. Einen hab ich ja noch, dann versuche ich da wohl mal mein Glück. Wobei ich davon ausgehe, dass der Flashmodus aktiviert ist, da ja das normale Verhalten (der LED )ausbleibt.

  • Hi dreamshader,


    danke :)


    Ich hab das hier > https://www.amazon.de/gp/product/B074QM54HY (Affiliate-Link) <. Edit: ich weiß, 50% nur ein Stern ist mies. Ist aber alles auf die Software/App/China-Server bezogen, die mehr Down- als Uptime haben. Genau davon will ich ja weg.


    Schaltplan:



    Bezüglich Flash-Modus habe ich überall nur DOUT gelesen, aber auch, dass man nicht viel kaputt machen kann. Hast du mehr Infos?


    Edit 2: Ich habe mal die Baudrate auf 115200 herunter gestellt und alle möglichen Modi (keep, qio, qout, dio, dout) mit esptool durchprobiert, nach wie vor ohne Erfolg. Auch Tx-Tx und Rx-Rx geht nicht (zweites, hinzugefügtes Bild).

  • Ok, also das sieht ja erstmal nicht schlecht aus.

    Du hast den Progger und greifst da Rx/Tx/Gnd/Vcc ab. Soweit ok ...

    Erster Stolperstein: Rx/Tx kreuzen ... das ist aber imho beim Progger von Neueinsteiger nicht nötig, weil da ja normalerweise ein ESP draufsteckt und nach meinem Verständnis Rx für Rx und Tx für Tx des ESP gedacht ist.

    Wäre mal zu verifizieren ...


    Dann: versuch am besten mal die Arduino-IDE zu nehmen. Einfach mal, wie Du schon richtig schriebst, Generic ESP8266, DOUT, 1M ... einstellen.

    Den richtigen Port auswähleen und Upload Speed mal auf 115200.

    Erst mal ohne Vcc ... Rx auf Rx, Tx auf Tx, GND verbinden.

    Die serielle Konsole der IDE aufmachen, dann den ESP befeuern ... kommen Ausgaben?

    Wenn nicht, Vcc weg, Rx und Tx auf einer Seite tauschen, nochmal einschalten. Sind jetzt Ausgaben zu sehen?


    Ja ... und dann sehen wir mal weiter ;)


    //EDIT: ups ... vergessen: welchen Programmer-Typen hast Du in der IDE eingestellt?

    ciao,

    -ds-

  • Genau ... nicht im Flash Modus ...

    Dass der jetzt gar nix ausgibt ist ein bisschen blöd ... aber gut ...


    Strom weg ... jetzt mal den Taster drücken und halten und wieder Vcc anlegen.

    Kommt eine Ausgabe?

    Wenn nicht, das Spiel noch mal mit Rx/Tx getauscht.


    Es sollte sich der ESP melden, wenn er in den Flash-Modus bootet.

  • Es sollte sich der ESP melden, wenn er in den Flash-Modus bootet.

    Aha :)

    Das erklärt ja mal einiges, und ich kann die ganzen Tests nachvollziehen.


    Good news: ein paar mal kam im Seriellen Monitor eine wirre Zeichefolge beim Einschalten. (115200 Baud) :)

    Bad news: ich kann das ganze gerade nicht reproduzieren, auch nach mehrmaligem tauschen von Rx und Tx. Ob ich es jetzt überkreuz hatte, weiß ich nicht.


    Miese Kabelverbindung? Ich weiß es nicht... aber zumindest ein Lebenszeichen :angel:

  • Wirre Zeichen sind perfekt ... das gibt der ESP (zumindest bei mir) aus, wenn er in den Flash-Modus bootet.

    Wenn Du diesen Zustand reproduzierbar hinbekommst, sollte der sich auch flashen lassen. Geht's nicht, dann mal mit DOUT, DIO, QOUT ... rumprobieren. Sollte nix passieren.

    Den Taster während des Flashens mal festhalten.


    Kann an den Kabeln liegen ... warum nicht? Der Teufel ist ein Eichhörnchen ;)


    cu,

    -ds-

  • Hah! Ich halte fest:

    Tx an Tx, Rx an Rx, VCC dran und es erscheint:



    (Text nicht kopierbar)


    Das ganze reproduzierbar, auch nach aus- und wieder einstecken des USB-Kabels. Ob der Programmer nun im Flash- oder Normal-Modus ist, scheint egal zu sein.


    Soo, dann mal schauen...

    Nachdem die "wirre Ausgabe" erscheint, mal den Finger drauf lassen. Dann auf Upload drücken. Es tut sich was!


    Wir halten fest: dreamshader du bist spitze. Danke für die Hilfe beim Debuggen. Nächster Wegpunkt:



    Problem: Mein Daumen tut jetzt weh und ich habe einen sinnfreien Sketch auf dem ESP ;)


    C
    void setup() {
      // put your setup code here, to run once:
    
    }
    
    void loop() {
      // put your main code here, to run repeatedly:
    
    }


    Ich denke, hier komme ich weiter. Mal schauen, ob ich mir das heute noch antue.


    ---


    Ja, tue ich. Das mit dem gedrückt halten ist ein klasse Tipp, ohne geht's nicht. Jetzt läuft schon mal die MicroPython FW.


    :danke_ATDE::danke_ATDE::danke_ATDE:

  • ..

    Kann an den Kabeln liegen ... warum nicht? Der Teufel ist ein Eichhörnchen ;)

    Bei mir waren es die Kabel;-) SONOFF POW -> kurze Steckbrett-Kabel FTDI Adapter, kein Problem.

    Dann ein SONOFF 20. Selber Aufbau. Entweder lief gar gar nichts bis irgendwann mal ..Timed out waiting for packet header kam.

    Dann hab ich es sogar geschafft das Teil scheinbar komplett mit der Tasmota zu flaschen. Allerdings hat er danach nicht gebootet.

    Ich was schon am eintüten, dann hab ich mal das Modul direkt gesteckt und was soll ich sagen, läuft problemlos;-) Habs dann gleich 3 mal hintereinander geflachst, weil ich wissen wollte, ob es Zufall war.

    Also mit Kabel können die wohl etwas allergisch..

  • reraspi tja, so kann sich's ändern! Du hattest aber davor schon Stunden Zeit, wo ich nur rumprobiert habe ;)

    Was es jetzt genau war, lässt sich denke ich nicht 100% sagen. Irgendwas zwischen Wackelkontakt, zu wenig Strom (ich habe den USB-Port zwischenzeitlich auch gewechselt) und den Kopf zu kurz gedrückt.

    ich denke das wird aber jetzt in C programmiert, der (ziemlich alpha) uPyLoader verbindet sich zwar, mag aber keine Dateien auflisten und schmiert relativ bald mit einem Speicherzugriffsfehler ab.


    Edit: Ziel erreicht (vorerst), ich setze auf "erledigt".