|

How to Diagnose Shelly Firmware Update Stuck: A Practical Guide

If your Shelly device shows “Updating…” in the app for more than 10–15 minutes, a weak or unstable 2.4 GHz Wi‑Fi connection is the most likely suspect. Shelly relays and sensors do not support 5 GHz networks, and a poor signal or crowded channel will stall the OTA process. Before assuming the device is bricked, run through the checkpoints below—most stuck updates resolve in under five minutes with the right network tweak.

Quick Checkpoints Before You Dig In

These five checks take two minutes and catch the majority of stalled updates:

  • Check the LED pattern

Blinking blue = update in progress. Solid blue = update complete. Fast blinking blue (twice per second) = error or no network. On a Shelly 1PM, if the LED stays blinking for more than 10 minutes, the update is stuck.

  • Confirm your phone is on the same 2.4 GHz SSID

Many dual‑band routers split the network name; connect your phone to the 2.4 GHz variant before opening the Shelly app.

  • Reboot both the router and the Shelly device

Power‑cycle the mains to the Shelly (unplug for 15 seconds) and restart your router. After reconnection, wait 90 seconds for the device to rejoin the network.

  • Check Shelly Cloud status

Open status.shelly.cloud in a browser. If the server shows “Degraded Performance,” updates will sit indefinitely regardless of your local network.

  • For battery‑powered Shelly sensors (Door/Window, H&T)

Ensure the battery is above 30%. A low battery often causes the update to abort mid‑download without any error message.

Ordered Quick Fixes That Solve 8 Out of 10 Stuck Updates

If the checkpoints didn’t clear the hang, try these steps in order:

1. Force‑close the Shelly app and reopen

On iOS double‑tap the Home button and swipe up on the Shelly Smart Control app. On Android go to Settings > Apps > Shelly Smart Control > Force Stop. Reopen, navigate to Settings > Device Update, and tap “Retry.”

2. Power‑cycle the Shelly device again, but disconnect from the app first

In the device’s settings tap “Disconnect” (or “Remove Device”) before cutting power. Wait 30 seconds, reconnect mains, then re‑pair using the app’s “Add Device” flow. This clears partial update files that block a fresh attempt.

3. Switch to a less congested Wi‑Fi channel

Use a Wi‑Fi analyzer app (e.g., Wi‑Fi Analyzer on Android) to find a channel with fewer networks. In your router’s admin panel, set the 2.4 GHz band to channel 1, 6, or 11—avoid “Auto” if it keeps picking crowded channels.

4. Update via the local web interface instead of the cloud app

Find the device’s IP address (in your router’s DHCP client list or using the Shelly app’s “Device Info”). Open a browser to `http://[shelly‑ip]/`. Go to the “Update” tab, upload the latest firmware `.zip` file from shelly.cloud/downloads, and click “Update.” The device will reboot locally and report success even if cloud connectivity is spotty.

5. Temporarily disable MQTT or Home Assistant polling

If you use Home Assistant with the Shelly integration or MQTT, the constant polling can interfere with the OTA connection. In the Shelly web UI, go to “Internet & Security” > “Advanced” and set “MQTT” to “Disabled.” After the update, you can re‑enable it.

When to Switch from OTA to Manual Update – A Decision Criterion

The default OTA update method (through the Shelly app or cloud) is convenient but fails when the device has weak signal or the cloud server is slow. The alternative is a manual HTTP firmware push, which is more reliable because it only requires a stable local connection between your browser and the Shelly IP address.

Use manual update if:

  • The device is more than 30 feet from your router, or separated by two or more walls.
  • Your network uses a mesh system where the device might hop between nodes during the OTA download.
  • The app repeatedly shows “Update failed” with no error code.

Stick with OTA if:

  • The device is within line‑of‑sight of the router.
  • You have a single access point on a non‑crowded channel.
  • The update progress bar moves (even slowly) and the LED blinks steadily.

Deeper Troubleshooting – When Quick Fixes Fail

If the update is still stuck after trying manual upload, the firmware image may be corrupted or the device’s flash memory may have a bad block.

Safe Boot Mode (Gen1 and Gen2 devices)

  • Shelly 1, Shelly 1PM, Shelly 2.5 – Press and hold the button while applying power. Hold for 5 seconds until the LED flashes red three times, then release. The device boots into a minimal recovery mode that ignores any stored update files. Connect to the web interface again and re‑upload the firmware.
  • Shelly Pro series (Pro 1, Pro 2, Pro 4PM) – The safe boot procedure is the same, but the button is behind the front cover. Use a paperclip to press it while plugging in the PoE or mains cable.

Factory Reset and Re‑pair

A factory reset clears all settings, including partial update files. Press and hold the button for 10 seconds (LED turns solid red, then blinks red quickly). Release. The device reboots as “Shelly-XXXX.” Re‑add it in the app and attempt the update again. This works on all current Shelly models.

Serial Flash – Last Resort for Bricked Devices

If the LED does not light at all after a failed update, the bootloader may be damaged. You’ll need a USB‑to‑UART adapter (FTDI or CP2102) and the esptool.py utility.

  • Pinout: On a Shelly 1, the UART pins are labeled TX, RX, GND (and VCC on some revisions). Connect GND to ground, TX to RX on the adapter, RX to TX, and VCC to 3.3 V (only if the device is not powered via mains).
  • Command: `esptool.py –port COMx eraseflash` then `esptool.py –port COMx writeflash 0x0 shelly_firmware.bin`
  • Known working firmware: Download the specific `.bin` file for your model from the Shelly GitHub releases page (not the zip file used for OTA).

This procedure is advanced and voids the warranty, but it has revived many Shelly devices that appear dead after a failed OTA.

How to Confirm the Update Succeeded

After the update completes (LED goes solid blue, or the web UI shows “Update successful”):

1. In the Shelly app, tap the device > Settings > Device Info. The firmware version should match the latest release number (e.g., a version string in the format `YYYYMMDD-hhmmss/vX.Y.Z-gXXXXXXX`). Verify the exact number on the official Shelly release page for your model.

2. Toggle the relay or check sensor data. If the device responds normally, the update fully applied.

3. For Home Assistant users: go to Settings > Devices & Services > Shelly integration. The firmware version listed should update within one minute.

If the device still reports the old firmware after a reboot, the update file did not write correctly. Re‑run the manual update process from the web interface, ensuring the file is the correct one for your exact model.

FAQ

Q: Why does my Shelly keep showing “Update failed” without any error code?

A: Usually a weak Wi‑Fi signal during the OTA download. Move the device within 15 feet of the router for the update, or switch to a manual HTTP upload from a laptop wired to the same router.

Q: Can I update Shelly firmware without the cloud app?

A: Yes. Use the local web interface at `http://[shelly‑ip]/` and the “Update” tab. Home Assistant users can also trigger updates via Services > Shelly > Update firmware, which pushes the file directly to the device without going through the cloud.

Q: What if my Shelly is completely unresponsive after a failed update (no LED, no Wi‑Fi)?

A: Try safe boot mode first. If that doesn’t work, you’ll need to flash the bootloader via a serial adapter (described above). For non‑technical users, contacting Shelly support or purchasing a replacement may be faster.

Q: How long should a Shelly firmware update normally take?

A: 2–5 minutes for most models (Shelly 1, 1PM, Dimmer 2). Larger devices like the Shelly Pro 4PM may take up to 8 minutes. If it exceeds 15 minutes, the update is stuck.

Stalled firmware updates on Shelly devices are almost always network-related. By systematically checking your Wi‑Fi environment, power cycling, and choosing the right update method (manual HTTP upload when the app fails), you can resolve the issue without replacing hardware or waiting on support.

Explore This Topic

Related guides in this cluster:

Similar Posts