Forum: Haus & Smart Home Sonoff flashen funktioniert nicht


von Walta S. (walta)


Lesenswert?

Hallo

Ich versuche derzeit eine neue Firmware auf ein Sonoff Basic Schalter zu 
brennen damit ich ihn direkt in Apple HomeKit einbinden kann. Leider 
bekomme ich immer folgende Fehlermeldung:

Walters-iMac:~ walter$ 
/Users/walter/Desktop/Sonoff-Homekit-master/flash.sh ; exit;
/Users/walter/Desktop/Sonoff-Homekit-master/flash.sh: line 8: 
esptool.py: command not found
logout

Geöffnet habe ich das Programm mit Terminal. Ich hab auch gelesen, dass 
man Python installieren muss - hab ich gemacht. Als Serial Adapter 
verwende ich einen Arduino (mit ausgebauten Prozessor) - Egal ob er 
angesteckt ist oder nicht - es funktioniert nicht.

Konkret geht es um dieses Projekt:
https://github.com/Gruppio/Sonoff-Homekit

Hardware: Apple OSX
Softwarekenntnisse: Ein bisschen was mit Arduino. Also nicht wirklich.
Strom: Grobmotoriker - Kabel haben in der Regel 1,5mm2 und Spannungen 
unter 1 Volt sind Messfehler. Und ich weiss wo der Lötkolben sein 
heisses Ende hat.

Welche Infos braucht ihr noch?

Danke
Walta

: Bearbeitet durch User
von Alex (Gast)


Lesenswert?


von Walta S. (walta)


Lesenswert?

Und wie geht das? Ich hab in Terminal folgendes eingetippt:

Walters-iMac:~ walter$ sudo pip install esptool
Password:
sudo: pip: command not found

Ich bin Apple User - ich arbeite mit drag and drop. Direkte 
Befehlseingabe an einem Terminal ist bei mir schon Jahrzehnte vorbei.

:-(
Walta

von Rosetta (Gast)


Lesenswert?

Linux ist kaka

von Walta S. (walta)


Lesenswert?

Rosetta schrieb:
> Linux ist kaka

Dankeschön
walta

von Timm R. (Firma: privatfrickler.de) (treinisch)


Lesenswert?

Hallo Walta,

Python ist schon da. Check mit
1
python --version

Dann pip Installer runterladen
1
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py

und ausführen
1
python get-pip.py

kann sein, dass du sudo brauchst, dann eben
1
sudo python get-pip.py

viel Erfolg
 Timm

von Oliver H. (oliver_h911)


Lesenswert?

Hallo,

versuch mal:
1
curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py
1
python get-pip.py

Danach sollte das
1
sudo pip install esptool

klappen. Wenn das nicht hilft geht es hier weiter:

1. Welche Version von macOS benutz Du?

Apfel Menu > Über diesen Mac

2. Was kommt wenn Du die folgenden Kommandos auf der Konsole ausführst:
1
python -V

Gibt die Version des default Interpreters aus sollte:
1
/usr/local/bin/python

sein.
1
which python

Gibt aus welcher Interpreter als default genutzt wird sollte
1
Python 2.7.16

sein.

von Walta S. (walta)


Lesenswert?

Nach der Anleitung von Timm und Oliver hat sich einiges getan. Dinge 
wurden heruntergeladen und installiert, geendet hat es mit:

Successfully built esptool pyaes
Installing collected packages: pyserial, pyaes, ecdsa, esptool
Successfully installed ecdsa-0.14.1 esptool-2.8 pyaes-1.6.1 pyserial-3.4

Sehr schön.

Dann hab ich flash.sh nochmal gestartet und es kam:

WARNING: Flash size arguments in megabits like '8m' are deprecated.
Please use the equivalent size '1MB'.

Wenn ich die Datei flash.sh in Text Edit öffne dann steht dort:

#!/bin/bash

POWERON_STATE="ON" # Change this to "OFF" if you want that your Sonoff 
will be OFF when powered

SONOFF_PORT="/dev/cu.wchusbserial14310"

esptool.py \
            -p $SONOFF_PORT \
            --baud 115200 \
            write_flash \
            -fs 8m \
            -fm dout \
            -ff 40m \
            0x0 ./firmware/rboot.bin \
            0x1000 ./firmware/blank_config.bin \
            0x2000 ./firmware/Sonoff_$POWERON_STATE.bin

Ich werd mal versuchen -fs 8m auf -fs 1MB zu ändern und schau mal was 
passiert. Hab zwar keine Ahnung was ich da mache aber es läuft unter dem 
Titel "Jugend forscht"

walta

von Walta S. (walta)


Lesenswert?

Das ist passiert:

esptool write_flash: error: argument <address> <filename>: [Errno 2] No 
such file or directory: './firmware/rboot.bin'

Die Datei boot.bin und der Ordner firmware ist aber vorhanden.

Grrrrr...

Walta

Gehe jetzt Fernsehen - muss nachdenken

: Bearbeitet durch User
von Walta S. (walta)


Lesenswert?

Ich hab jetzt die Files und die Ordner direkt in das Programm 
geschrieben:

#!/bin/bash

POWERON_STATE="ON" # Change this to "OFF" if you want that your Sonoff 
will be OFF when powered

SONOFF_PORT="/dev/cu.wchusbserial14310"

esptool.py \
            -p $SONOFF_PORT \
            --baud 115200 \
            write_flash \
            -fs 1MB \
            -fm dout \
            -ff 40m \
            0x0 desktop/sonoff/firmware/rboot.bin \
            0x1000 desktop/sonoff/firmware/blank_config.bin \
            0x2000 desktop/sonoff/firmware/Sonoff_$POWERON_STATE.bin

Jetzt hab ich die nächste Fehlermeldung - er findet das 
/dev/cu.wchusbserial14310 nicht:

serial.serialutil.SerialException: [Errno 2] could not open port 
/dev/cu.wchusbserial14310: [Errno 2] No such file or directory: 
'/dev/cu.wchusbserial14310'
logout

Was ist das schon wieder?

danke
walta

von K. J. (Gast)


Lesenswert?

SONOFF_PORT="/dev/cu.wchusbserial14310"

Da muss dein Serialport rein meist ist es /dev/ttyUSB0 oder ähnliches.

von Walta S. (walta)


Lesenswert?

Als serialport verwende ich den Arduino. Werde mal schauen, wie der 
bezeichnet wird. Melde mich am Nachmittag wieder.

danke
walta

von David (Gast)


Lesenswert?

Hi Walta

ich hänge an dem gleichen Problem. Absoluter Anfänger, es geht aber mit 
trial und error voran :)

was deinen Port angeht:
Ich musste bei mir vorher noch Treiber installieren, dass dieser 
gefunden wird: https://www.ftdichip.com/Drivers/VCP.htm

Wenn installiert, dann wirst du bei Arduino unter Werkzeuge->Port 
fündig. Diesen musst du dann in der flash.sh abändern.


Trotz alledem kommt bei mir nun folgende Fehlermeldung:
"A fatal error occurred: Failed to connect to Espressif device: Timed 
out waiting for packet header"

Hat jemand ne Idee woran das liegt?

von David (Gast)


Lesenswert?

Edit:
funktioniert nun.
Falls es was hilft, das habe ich gemacht:

1. den Knopf auf dem Sonoff gedrückt halten, während ich des USB 
einstecke

2. Den Flash-Speicher auf dem Sonoff löschen mit "esptool.py 
erase_flash" im Terminal

3. USB-Stecker ziehen, Knopf drücken und wieder einstecken

4. die Datei Flash.sh geöffnet und folgendermassen geändert:

a) "-fs 8m" durch "-fs 1MB" ersetzt
b) "-p $SONOFF_PORT \" durch "-p /dev/cu.usbserial-A50285BI \" ersetzt 
(hier natürlich deinen eigenen einsetzen
c) "0x2000 ./firmware/Sonoff_$POWERON_STATE.bin" durch "0x2000 
desktop/sonoff/firmware/Sonoff_ON.bin" ersetzt (oder durch die 
Off-Datei, je nachdem was du oben gewählt hast).

5. den Text ab esptool.py kopieren und in Terminal einfügen

ab dann lief es.

von Walta S. (walta)


Lesenswert?

Auch von mir ein kurzer Zwischenbericht.

Inzwischen konnte ich den Schalter umprogrammieren.

Wenn ich ihn anschliesse kann ich mich in sein WLAN einloggen.
In der Home app hab ich manuell den Code eingegeben (11111111) so wie 
auf der Homepage beschrieben. Nur das Gerät erscheint dann nicht. Die 
HomeApp such ein neues Gerät - aber findet es nicht.
HomeApp gelöscht und neu Installiert - geht auch nicht.

Keine Ahnung was jetzt schon wieder spinnt.

Danach hab ich versucht ihn nochmal zu flashen - nur ohne Erfolg: der 
Schalter wird vom ISP Arduino nicht gefunden.

Hier mein Code:

#!/bin/bash

POWERON_STATE="ON" # Change this to "OFF" if you want that your Sonoff 
will be OFF when powered

SONOFF_PORT="/dev/cu.usbmodem621"

esptool.py \
            -p $SONOFF_PORT \
            --baud 115200 \
            write_flash \
            -fs 1MB \
            -fm dout \
            -ff 40m \
            0x0 desktop/sonoff/firmware/rboot.bin \
            0x1000 desktop/sonoff/firmware/blank_config.bin \
            0x2000 desktop/sonoff/firmware/Sonoff_$POWERON_STATE.bin


Walta

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.