Resolving Shelly 1 Firmware Update Failures

I recently found out about Shelly and their Shelly 1 wifi relay. They happen to integrate well with the Hubitat home automation system I use. I purchased the four pack of UL-listed versions at Amazon.

So, first a word of warning. It took me three orders to actually receive the UL-listed version; whatever random hokey seller you may be attached to on Amazon may try to switch your purchase with the non-UL version.

Anyway, now that I have them, I ended up with four relays running 2019-era firmware. I attempted to update it via the web interface, that failed. I attempted to cloud-enable them, didn’t help. Added them to the iOS mobile app, still failed:

No matter how many times I tried to update, or which method, it would fail and still leave me on this unsupported firmware screen. The firmware is also missing some nice features that had been added since then.

I worked with support, tried the factory reset option, re-did the cloud vs no-cloud attempts, attempted a web request to the units using the OTA feature, still failed. The OTA request would result in a normal response, such as:

{"status":"updating","has_update":false,"new_version":"20220209-092750/v1.11.8-g8c7bb8d","old_version":"20191217-140757/1047-long-id-for-shelly-devices@a0661583"}

but give it a few minutes and nothing happens.

Ultimately I took the following steps and it worked:

  • Named my cellular-enbaled iPad something nice, simple, all lowercase; we’ll say “myipad”. You could of course use your phone for this too, but many phones have a name like “Alex’s iPhone” and I’m not sure if the Shelly firmware really likes symbols or spaces in the SSID, as I have such things in the home SSID I was joining these too, so who knows.
  • Enabled hotspot with a simple all lowercase pass phrase
  • Factory reset my Shelly 1’s again
  • Joined each Shelly 1’s wifi network, used web browser against its local IP http://192.168.33.1
  • Set each Shelly 1 to join my ipad’s now-visible and simple basic WEP hotspot name and password. I could see them join when I’d lose wifi and notice a connection to the hotspot.
  • Okay now the tricky part. Your Shelly is connected to your mobile device, but you don’t know what its new IP is to be able to web-connect to it and configure it, because it’s connected to you now, not you to it.

    I personally used the “HE.NET Network Tools” app I already had installed and loaded my iPad’s routing table. I was able to find the local network my iPad uses for hotspot assignment and then hit that IP in a web browser from the iPad.

    I noticed after the fact that if you start the Shelly app and you’d previously given it the ability to scan the local network for devices, it will show up as a discovered device on the main screen, and have its IP visible. So that is another way of getting it’s IP that is a bit less technical. Please note that this is NOT the same as the “Add device” menu choice, which will want a wifi network to scan, and you do not want to do that because the Shelly is connected to you via your hotspot wifi, not a client wifi network. Kill the app and restart if you don’t see a discovered device. You’ll have had to previously given the Shelly app “Local Network” permission.
  • Now that you have the Shelly’s IP, if you’re using a Shelly 1, hit the following URL in your browser, substituting the IP in:

    http://192.0.2.1/ota?url=http://shelly-api-eu.shelly.cloud/firmware/SHSW-1.zip
  • You should see it drop off your hotspot within a minute, and then probably re-join a minute or so later. It should now have updated firmware when you web connect back into its management interface.
  • At this point I was able to join the devices back to the intended wifi network, firmware is current, everyone is happy.

3 Replies to “Resolving Shelly 1 Firmware Update Failures”

  1. Mirko Mählisch

    I have a simpler solution (verified with a rgbw2 that also did not upgrade):
    – find the shelly firmware for HomeKit on GitHub: https://github.com/mongoose-os-apps/shelly-homekit
    – use the terminal script to update to the HomeKit firmware (this will ask to upgrade to latest stock firmware before and VOILA CAN INDEED UPDATE TO LATEST STOCK FIRMWARE)
    – in the UI of the HomeKit firmware you have the option to return to latest stock firmware
    – not network change or network reconfiguration necessary

    Reply
  2. US

    Thanks a lot!
    Works perfectly.
    btw: on Samsung devices you can see the connected Shelly devices with IP address in the Hotspot area.

    Reply

Leave a Reply

Your email address will not be published. Required fields are marked *