Software install of Espurna on Sonoff Mini

It’s possible to flash Espurna on the Sonoff Mini using Diy mode via software.

What you need

  • A Sonoff Mini
  • A mobile device capable of creating an Access Point and which can install eWelink app
  • A PC:
    • with Wi-Fi
    • running GNU/Linux (I used Ubuntu 19.10)
    • with a running web server
    • with git installed

Procedure

Here’s the steps I took to do it:

  1. Download and compile Espurna

    $ mkdir ~/project
    $ cd ~/project
    $ git clone https://github.com/xoseperez/expurna
    $ cd espurna/code
    $ pio run -e itead-sonoff-mini
    
  2. Install and configure eWelink app

  3. Update Sonoff Mini firmware (currently the latest version is 3.3.0, I’ve read you need 3.1.0 at least)
  4. Shutdown the device (detach it from mains current)
  5. Enable OTA OTA port
  6. Create an Access Point with your phone. These must be the parameters:
    • SSID: snonffDiy
    • pre shared key (password): 20170618sn
    • band: 2.4 GHz
  7. Boot the device (attach it to mains current)
  8. Wait until it connects to the AP (the blue led double pulses)
  9. Connect the PC to the same Wi-Fi
  10. Search for the Sonoff Mini device on the Wi-Fi network

    $ avahi-browse -t -r _ewelink._tcp
    + wlp1s0 IPv4 eWeLink_10009b8ed6                            _ewelink._tcp        local
    = wlp1s0 IPv4 eWeLink_10009b8ed6                            _ewelink._tcp        local
       hostname = [eWeLink_10009b8ed6.local]
       address = [192.168.43.200]
       port = [8081]
       txt = ["data1={"switch":"off","startup":"off","pulse":"off","pulseWidth":500,"rssi":-29}" "seq=1" "apivers=1" "type=diy_plug" "id=10009b8ed6" "txtvers=1"]
    

    Keep track of the deviceid which is, in my case, 1009b8ed6.

  11. Test if everything works as expected

    $ curl -XPOST --data '{ "deviceid": "10009b8ed6", "data": {} }' http://192.168.43.200:8081/zeroconf/info; echo
    {"seq":2,"error":0,"data":"{\"switch\":\"off\",\"startup\":\"off\",\"pulse\":\"off\",\"pulseWidth\":500,\"ssid\":\"sonoffDiy\",\"otaUnlock\":false}"}
    
  12. Unlock OTA updates

    $ curl -XPOST --data '{ "deviceid": "10009b8ed6", "data": {} }' http://192.168.43.200:8081/zeroconf/ota_unlock; echo
    {"seq":2,"error":0}
    
  13. Put file in a web server

    $ cd ~/public_html
    $ cp ~/project/espurna/code/.pio/build/itead-sonoff-mini/firmware.bin .
    $ chmod a+r firmware.bin
    
  14. Test url

    $ curl -s http://192.168.43.53/~max/firmware.bin --output - | sha256sum
    e9e7d72d2c2a8b25678cab7ded20645c5e37c60459cbe6ba1448ed3a62f72b72
    $ sha256sum ~/public_html/max/firmware.bin
    e9e7d72d2c2a8b25678cab7ded20645c5e37c60459cbe6ba1448ed3a62f72b72  firmware.bin
    

    You will need the sha256sum value in a minute.

  15. Do the OTA, keep attention to use the right deviceid, sha256sum and ip values

    $ curl -XPOST --data '{ "deviceid": "10009b8ed6", "data": { "downloadUrl": "http://192.168.43.53/~max/firmware.bin", "sha256sum": "e9e7d72d2c2a8b25678cab7ded20645c5e37c60459cbe6ba1448ed3a62f72b72" } }' http://192.168.43.200:8081/zeroconf/ota_flash; echo
    {"seq":3,"error":0}
    

Done.

References

Override DNS v5.5.1 released

Changelog from v5.4.1 to v5.5.1.

  • User facing improvements:

    • bugfix: null pointer exception on predefinedDNS singleton
    • toast a message when modifying SSID you’re connected to
    • bugfix start service/enable app Android N
    • added fine location request on O+ to get SSID
    • MainActivity improved
    • bugfix automatic DNS change in Android N
    • Removed Cisco predefined DNS, does not work
    • Added log message when updating SSID list
    • Adaptive icon
    • Added test button when possible
    • Added a dedicated service for Oreo+ versions and a persistent notification (can be switched off)
    • Added “always use iptables” option for N+ Android versions
    • Improved logging: added autoscroll, timestamp, failure reasons, live messages, persistance
    • Fixed rotation problems, ProgressBar, layout for small screens, buttons layout
    • Improved: notifications, app load time, root detection
    • removed Showcaseview library
  • Internal improvements:

    • Better LiveMessage dispatching
    • enable NetworkMonitorService for N+
    • use my setools-android fork as submodule
    • Makefile: use full path for adb
    • Cleanup iptables rules switching to unsupported network
    • Preparing for my DNS tester service
    • Fixed: SELinux detection, Magisk detection, restore button, network disconnections detection
    • Improved: Wi-Fi SSID detection, code style
    • Reduced preferences size, source code, compilation time
    • Simplified mantainability with command templates
    • Disabled StrictMode in release versions
    • Introduced: Gson, ButterKnife

Override DNS v5.5.0 released

Changelog for v5.4.1 and v5.5.0.

  • User facing improvements:

    • bugfix start service/enable app Android N
    • added fine location request on O+ to get SSID
    • MainActivity improved
    • bugfix automatic DNS change in Android N
    • Removed Cisco predefined DNS, does not work
    • Added log message when updating SSID list
    • Adaptive icon
    • Added test button when possible
    • Added a dedicated service for Oreo+ versions and a persistent notification (can be switched off)
    • Added “always use iptables” option for N+ Android versions
    • Improved logging: added autoscroll, timestamp, failure reasons, live messages, persistance
    • Fixed rotation problems, ProgressBar, layout for small screens, buttons layout
    • Improved: notifications, app load time, root detection
    • removed Showcaseview library
  • Internal improvements:

    • Better LiveMessage dispatching
    • enable NetworkMonitorService for N+
    • use my setools-android fork as submodule
    • Makefile: use full path for adb
    • Cleanup iptables rules switching to unsupported network
    • Preparing for my DNS tester service
    • Fixed: SELinux detection, Magisk detection, restore button, network disconnections detection
    • Improved: Wi-Fi SSID detection, code style
    • Reduced preferences size, source code, compilation time
    • Simplified mantainability with command templates
    • Disabled StrictMode in release versions
    • Introduced: Gson, ButterKnife