Sonoff Zrzut pamięci flash

Instrukcja jak zgrać całą zawartość flash przełącznika Sonoff o rozmiarze flash 1MB

Uwaga: zgranie oryginalnego oprogramowania i wgranie go do innego urządzenia Sonoff nie zadziała. Jedynce co udało mi się z sukcesem zrobić to zgrać pamięć flash z jednego Sonoff i ponownie wgrać do tego samego Sonoff.

Potrzebne

  • Konwerter USB na TTL 3.3V oparty na układzie CP2102, ok 13pln
  • Oprogramowanie esptool: https://github.com/espressif/esptool
  • Jak zainstalować esptool za pomocą pip Python w Windows
  • Kable wtyczka USB – gniazdo USB – do podłączenia Konwertera USB-TTL z komputerem
  • 4 przewody, aby podłączyć konwerter USB-TTL z przełącznikiem – gniazdem szpilkowym

Instrukcja

Krok 1:  Rozbieramy obudowę, aby dostać się do środka. Widzimy tutaj 5 otworów pod przyciskiem. Te 5 otworów to złącza, które wykorzystamy do załadowania firmware

photo-2016-08-31-21-21-16_3504

Krok 2: Proponuję przylutować gniazdo szpilkowe w otworach. Ułatwi to przyczepienie kabli.

Krok 3: Podłączamy przewody konwertera USB-TTL z przełącznikiem. Należy zwrócić szczególną uwagę, który kabel podłączyć z którym otworem w przełączniku i konwerterze.

Krok 4: wprowadzamy przełącznik sonoff w tryb wgrywania/zgrywania firmware.

  • Kabel USB musi być odłączony od komputera
  • Wciskamy i trzymamy przycisk w przełączniku sonoff
  • Wkładamy do złącza USB w komputerze, kabel USB do którego podpięty jest konwerter USB-TTL (patrz Krok 3), a do którego podpięty jest już przełącznik sonoff.
  • Puszczamy przycisk w przełączniku sonoff

Teraz przełącznik sonoff powinien być w trybie wgrywania/zgrywania firmware.

Zgrywanie używając linii poleceń (cmd najlepiej odpalić jako administrator)

esptool.py --port [port COM] --baud 115200 read_flash 0x00000 0x100000 [ścieżka do pliku]

przykład:

esptool.py --port COM3 --baud 115200 read_flash 0x00000 0x100000 C:\ewelink1M.bin

Wgrywanie używając linii poleceń (cmd najlepiej odpalić jako administrator)

esptool.py --port [port COM] --baud 115200 write_flash --flash_mode qio 0x00000  [ścieżka do plik]

przykład:

esptool.py --port COM3 --baud 115200 write_flash --flash_mode qio 0x00000  C:\ewelink1M.bin

Podziękowania dla @skiba-26 za dodatkowe informacje do instrukcji

44 komentarze

  1. Dla próby chciałem sprawdzić co się będzie dziać jak podłączę się do Sonoff’a w wersji TOUCH (ten taki przełącznik ścienny) poprzez konwerter USB na układzie FTDI FT232RL. PUTTY normalnie wyświetla informacje z przełącznika jak go podłącz e do zasilania. Oczywiście prędkość ustawiłem tu na 78800 gdyż taką wyczytałem na forum supla (115200 wywalała same krzaki).

    Skoro putty normalnie ruszyło to poszedłem dalej. Zainstalowałem więc python 2.7.14 oraz esptool (instrukcje były na youtube).

    Wydaje mi się, że próba zgrania flasha na PC nie powinna niczego „uszkodzić" w pamięci, a co najwyżej by się nie powiodła w porównaniu do wgrywania niesprawdzonym konwerterem co mogłoby całkowicie uniemożliwić wgrywania/zgrywania flasha już nawet sprawdzonym konwerterem jeśli by coś poszło nie tak.

    Tak więc spróbowałem. Niestety wpisanie w wierszu polecenia (po uruchomieniu esptool) takiej oto składni:

    esptool.py –port COM6 –baud 78800 read_flash 0x00000 0x100000 C:\ewelink1Mtouch1.bin

    wyskakuje mi błąd „SyntaxError: invalid syntax"

    z tego co się orientuje oznacza to błąd składni a nie samej komunikacji z urządzeniem. Tak więc czy przypadkiem coś się nie zmieniło w składni jaką program rozpoznaje? Może mam jakąś nowszą wersję esptool, która coś ma inaczej?

    Stosowny konwerter jeszcze dzisiaj zamówię, ale ten błąd wydaje mi się będzie wyświetlać na każdym, konwerterze…

  2. adrian pisze:

    u mnie poszło :

    masz esptool zainstalowany? co dostajesz jak wpiszesz esptool.py version?

  3. adrian pisze:

    w windows nie potrzeba podawać exe, żeby uruchomić program. Ważne jest, żeby command line odnalazł gdzie jest esptool.py.exe

    to tak jak uruchamianie cmd możesz wpisać cmd lub cmd.exe i oba uruchomią command line.. 

    Można podać całą ścieżkę do katalogu gdzie jest esptool i wywoływać esptool całą ścieżką

    przykładowo u mnie: 

    C:UsersadrianAppDataLocalProgramsPythonPython36Scriptsesptool.py.exe

    lub 

    C:UsersadrianAppDataLocalProgramsPythonPython36Scriptsesptool.py

    lub dodać ścieżkę do zmiennej środowiskowej PATH do katalogu, gdzie zainstalowany jest esptool. Wtedy nie trzeba nawet podawać ścieżki do katalogu z esptool,  jak na załączonym screenshocie. Kilka sposobów uruchomienia esptool.py

    to co tutaj podesłałeś wygląda na uruchamianie esptool.py w pythonie. Nie bezpośrednio w command linie i może sypać błędami

    >>> esptool.py version
    File „", line 1
    esptool.py version
    ^
    SyntaxError: invalid syntax
    >>>

     

    Ale grunt, że działa,

    pozdrawiam, a.

     

  4. iragos pisze:

    Witam Szanownych kolegówNa forum jestem świeży ale od kilku dni śledzę tematy dotyczące chipa ESP seria 86…, itp.Udało mi się uruchomić odczytywanie z PSF-B01 za pomocą esptool-a. Mam wbudowany chip ESP 8285.Odczytuje w 100 % tylko nie wiem dlaczego nie zapisuje odczytanego „wsadu" w lokalizacji, którą stworzyłem:Poniżej screen z ekranu. odczyt-z-psf.jpg

  5. adrian pisze:

    dziwne 

    • spróbuj może inne lokalizacji (aczkolwiek nie powinno to mieć znaczenia, skoro zapisałeś)
    • może coś ten plik trzyma? jakiś inny proces? masz to samo jak zrestartujesz kompa?

     

    • iragos pisze:

      Witam Cię AdrianieJuż poradziłem sobie. Okazuje się, że po pierwsze musiałem odpalić cmd z uprawnieniami administratora, a po drugie nie potrzebnie chciałem zapisać odczytany wsad w folderze. Wystarczy bezpośrednio na dysk 🙂

      • adrian pisze:

        ok, dodam do instrukcję info, żeby odpalać cmd jako administrator

        • iragos pisze:

          no zawsze może się komuś przydać taka informacja. Tym bardziej, że kilka godzin szukałem info co jest nie tak :)Jak ktoś będzie potrzebował to wrzucam zdjęcie tego sterownika 🙂ESP-8285.JPGpin 5 RX, pin 6 TX . Zasilanie z USB.

          • miloszix pisze:

            Witam.Posiadam podobny układ oparty na ESP8285, próbowałem wgrać nowy firmware (Supla) lecz moduł po tej próbie zachowuje się dziwnie:Cały czas „klepie" przekaźnik, tak jak przy wejściu w tryb programowania, nie da się tego wyłączyć.Czym wgrywałeś? 29122265-fc2e6cbe-7d11-11e7-89d5-3e6db378b2fc.jpg (43.11 KiB) Przejrzano 24 razyProgramowanie przechodzi poprawnie przez ESP Flash Download Tool lecz muszę wybrać moduł ESP 8285Pierwsze czyszczę " ERASE"Następnie wgrywam, pisze „Finish „Czy procedura wgrywania dla ESP 8285 jest jakaś inna ? Bo w ESPDT nie mogę wybrać parametrów takich jak SPI modeUrządzenie nie wstaje poprawnie zachowuje się cały czas jak przy wejściu w tryb programowania. tak jak na filmiku poniżej od 18 sec.  https://www.youtube.com/watch?v=E0WBoFCcnYY

  6. adrian pisze:

     Procedura wgrywania jest taka sama. Te urządzenie z tego co pamięta mam takie funkcje jak Inching /Self-Locking i którymś z tych przycisków się je przełącza, jak wciskasz kilka razy to nie przełączy się do takiego normalnego trybu? 

    mniej więcej coś podobnego jest w tym urządzeniu, ok 2m40sek  https://www.youtube.com/watch?v=i0SZLAJKloc&t=4s – trzeba kilka razy przełączyć, aż zacznie działać w normalnym trybie. 

    A jak wgrasz inny firmware to też taki sam efekt?

  7. cholek3 pisze:

    Czy dobrze rozumiem, że zanim wgram np. Tasmota, mogę sobie „zrzucić" oryginalne oprogramowanie do pliku i w razie czego zastąpić Tasmota znowu oryginalnym firmware? 

  8. K2M7L pisze:

    próba zgrania oryginalnego softu kończy się na Stub running… nie ma potem żadnego komunikatu, update’u, Adrian, jakieś wsparcie, proszę?

  9. eZekiel pisze:

    Panowie, nic się nie zmieniło do tej pory i wciąż nie ma możliwości przywrócenia oryginalnego softu do Sonoffa? Przed wgraniem Supli na 3 szt. Basica nie zrobiłem backupu, myślałem, że w razie potrzeby zgram firmware z któregoś z pozostałych Basiców, których trochę już mam. No i niestety, ale nie udaje mi się uruchomić tych 3 modułów po wgraniu firmware zgranego z innego Basica. Pamięć oczywiście czyszczona plikiem blank 1mb.

  10. Maciek pisze:

    Nie nic się nie zminiło. Jedyne co mi przychodzi do głowy to wgraj AFE i puść na allegro. Za odzyskane pieniądze kup nowe sonoffy i postaw Adrianowi browara.

  11. Scorpionnl pisze:

    Witam. Z lenistwa nie zgrałem oryginalnego oprogramowania do sonoff RF. Ponieważ supla pomimo wielu prób nie działa chciałem wrócić do oryginalnego softu, więc wgrałem plik bin z drugiego sonoff RF.Poszło bez problemów jak w instrukcji, problem polega na tym że aplikacja Ewelink widzi jedno urządzenie.Pomimo że działają dwa na raz.Raz podłacza sie do jednego raz do drugiego. Cięzko sterować aplikacją jak są dwa podłączone.Pozostaje sterowanie radiowe pilotem :). Ma Ktoś może do podesłania jakieś bin od sonoff RF. Sądze że w pliku jest nr id dlatego apka sie gubi.Dodam że Tasmota działał lecz brakowało mi tam opcji pusch(chwilowe załaczanie)aby działał jak przycisk dzwonkowy.

  12. DLUGI321 pisze:

    WitamZakupiłem Sonoff-a RF (sonoff rf r2 power v1.0) z wgraną już Suplą jednak kiedy okazało się że nie działa pilot RF postanowiłem wgrać backup oryginalnego oprogramowania który otrzymałem od sprzedawcy. Wszystko niby idzie zgodnie z poradnikiem backup niby się wgrywa jednak Sonoff nie jest widoczny  w sieci WiFi a co za tym idzie nie można go skonfigurować pilot za to jakimś sposobem zaczyna działać nawet bez parowania. Czy aby przywrócić backup w najnowszych sonoff-ach procedura jest jakaś inna czy może coś trzeba jeszcze dodatkowo zrobić czego nie ma w instrukcji. Zmieniałem już programy do wgrywania czyściłem pamięć jednak nic to nie daje.

  13. darko pisze:

    Witam mam ten sam problem co @iragos W trbie administratora nic nie daje
    Jakieś inne sugestje jak zrobić backup ?

  14. cholek3 pisze:

    @darkoWysłałem. Ja daje plik bin wewnątrz folderu esptool-2.5.1 i nie muszę podawać ścieżki, tylko samą nazwę. 

  15. alvaro pisze:

    Witam!
    Jak sprawdzić ja jakim porcie COM jest podłączony obecnie konwerter USB na TTL 3.3V oparty na układzie CP2102?
    Po włożeniu kontrolera usb wyskakuje mi nieznane urządzenie CP2102…
    kontroler.jpg

  16. alvaro pisze:

    Dostałem Basica z ESP 8285, czy tego też idzie przeprogramować? Sonoff przy programowaniu (zrzucaniu firmware) musi być podłączony do 230V?

  17. adrian pisze:
    • Idzie
    • nie może być podłączony do 230v, adapter go zasili 
    • alvaro pisze:

      Ok, w końcu zgrałem, na kontrolerze albo sooffie chyba mam źle opisane RX i TX, zamieniłem miejscami i działa.
      Na Sonoffie mam taką kolejność: GND TX RX 3V3
      a na kontrolerze GND RX TX 3V3

      Procedura wgrywania alternatywnego firmware do 8285 jest jakaś inna, bo w komentarzach widzę że użytkownik @miloszix miał z tym problem…

  18. adrian pisze:

    Trzeba łączyć na przemian TX z RX i RX z TX

    • zip20 pisze:

      Microsoft Windows [Wersja 6.1.7601]
      Copyright (c) 2009 Microsoft Corporation. Wszelkie prawa zastrzeżone.

      C:\Windows\system32>esptool.py –port COM3 –baud 115200 read_flash 0x00000 0x10
      0000 C:\ewelink1M.bin
      esptool.py v2.6
      Serial port COM3
      Traceback (most recent call last):
      File „C:\Program Files (x86)\Python37-32\Scripts\esptool.py-script.py", line 1
      1, in
      load_entry_point(’esptool==2.6′, 'console_scripts’, 'esptool.py’)()
      File „c:\program files (x86)\python37-32\lib\site-packages\esptool.py", line 2
      952, in _main
      main()
      File „c:\program files (x86)\python37-32\lib\site-packages\esptool.py", line 2
      646, in main
      esp = ESPLoader.detect_chip(each_port, initial_baud, args.before, args.trace
      )
      File „c:\program files (x86)\python37-32\lib\site-packages\esptool.py", line 2
      58, in detect_chip
      detect_port = ESPLoader(port, baud, trace_enabled=trace_enabled)
      File „c:\program files (x86)\python37-32\lib\site-packages\esptool.py", line 2
      22, in __init__
      self._port = serial.serial_for_url(port)
      File „c:\program files (x86)\python37-32\lib\site-packages\serial\__init__.py"
      , line 88, in serial_for_url
      instance.open()
      File „c:\program files (x86)\python37-32\lib\site-packages\serial\serialwin32.
      py", line 62, in open
      raise SerialException(„could not open port {!r}: {!r}".format(self.portstr,
      ctypes.WinError()))
      serial.serialutil.SerialException: could not open port 'COM3′: FileNotFoundError
      (2, 'Nie można odnaleźć określonego pliku.’, None, 2)

      C:\Windows\system32>

      Co robię źle ?

  19. Witam. Jestem tu nowy. Zaczynam dopiero zabawę z zagadnieniami związanymi z SmartHome.
    Mam 3 pytania :

    1.Jak zgrać oryginalny firmware z ESP8285. Robiąc to według poradnika, mam komunikat o błędzie :

    A fatal error occurred: Corrupt data, expected 0x1000 bytes but received 0xfff bytes

    Jak rozwiązać ten problem?

    2.Mam ESP8266 z którego nie zgrałem wcześniej firmware i nie wstaje mi, na początku nie chciał mi się flashować, a teraz idzie ale nie uruchamia się po wgraniu firmware AFE. Co zrobić żeby „ożył" 🙂 ??

    3.Jest jakaś opcja integracji SonOff Basic z wgranym innym firmware z Cayenne ?

    Z góry dzięki za odpowiedzi.
    Pozdrawiam.
    Sławek

  20. hugo99 pisze:

    Cześć,Mam pytanie zgrałem sobie zawartość pamięci do pliku według powyższego poradnika -wszystko bez błędówNastępnie wgrałem sobie SUPLA FOR ITEAD SONOFF WiFi Smart Switch + DS18B20v2.0 boot_v1.5.bindo testów i teraz chciałem powrócić do oryginału więc wgrałem to co zgrałem również wszystko poszło bez błędów ale urządzenie się nie włącza czy przed powrotem do oryginalnego softu należy coś jeszcze zrobić ?

  21. isom pisze:

    jak wgrałeś tylko boot_v1.5.bin to supla też nie wystartowała , a zasada jest taka że przed każdą zmianą oprogramowania należy wyczyścić pamięć flash , czyli np wgrać plik blank .

    • hugo99 pisze:

      wgrałem oba pliki i supla wystartowała po prostu na ta chwilę testuje jak się to robiale faktycznie nie wgrywałem pliku blankchodzi o to że może jakieś pozostałości zostały i dlatego nie startuje oryginalny soft ?czy mogę prosić o ilnik do takiego pliku blank

  22. hugo99 pisze:

    bardzo dziękuje niestety nadal nie ożywa wgrałem blank a następnie oryginał zastanawia mnie komunikat na końcuLeaving…Hard resetting via RTS pin…jak ma to rozumieć ?

  23. isom pisze:

    Leaving…Hard resetting via RTS pin…Zrób twardy reset ESP zwierając pin RST do GND przy podłączonym zasilaniu 

  24. hugo99 pisze:

    walczyłem długo bo jestem laikiem w tych kwestiach ale podszedłem do tego logicznie jeżeli wgrywam soft supla na ustawieniach prędkość 74880 i flash mode dout to czemu oryginalny soft wgrywam z inną prędkością i flash modemwięc dostosowałem komendę na–baud 74880 write_flash –flash_mode dout 0x00000 i sonoff wstał za pierwszym razemz ciekawości o co chodzi z tym flash_mode qio a flash_mode dout ?

  25. Cześć, Ja z kolei mam inny problem. Mam Sonoff RF R2 Power. Kupiłem go z wgranym Gruppio (homekit) ale postanowiłem wrócić do oryginalnego softu (otrzymałem zrzut). Na początku miałem drobne problemy, ale w końcu udało się, chociaż po podłączeniu sonoffa do prądu ten nie działa. Nie jest w żaden sposób wykrywany. Przyciskając przycisk dioda się świeci raz, po 7 sekundach 2 razy i tyle. Załączam screen z CMD. Jakość taka a nie inna, ponieważ musiałem korzystać z pożyczonego komputera i nie miałem możliwości zrobienia normalnego screenshota 🙁   
    IMG_2267.jpeg

  26. darek34 pisze:

    Witam,jestem tu nowy. Próbowałem zgrać soft z sonoff basic, ale coś poszło nie tak. Czy przed zgrywaniem trzeba wygenerować plik do którego będzie zgrany oryginalny soft? Jeśli trzeba to jak to zrobić.Dziękuję za pomoc. 

  27. ziomek_kanzas pisze:

    Witam,
    Zgrałem z ooryginlne oprogramowanie sonoff sv ewelink
    Chciałem wgrać ponownie ale mam błąd a fatal error occurred: Timed out waiting for packet header
    CZy ktoś pomoże? Może inna składnia?

  28. vitia pisze:

    Pomóżcie proszę, bo siedzę z tym od wczoraj i gdzieś chyba coś poknociłem, bo nie działa. Robiłem to już jakiś rok temu i dało rady, ale coś widocznie zapomniałem.
    Miałem format systemu (Windows7) i musiałem od nowa wgrać Pythona i esptool. Wszystko niby ok, wgrane wg instrukcji. Python widoczny w cmd, esptool nie. Gdy próbuję zgrać kopię sonoffa th11, wyskakuje mi taki komunikat:
     esptool.PNG
     
     
    Sam sobie pomogłem. Gdyby ktoś miał taki sam problem – trzeba dokonać zmian środowiskowych w Windowsie.

Dodaj komentarz