Shelly firmware update fails or is stuck at 99% (Gen3/Gen4): what helps and what doesn't
Firmware as of: As of 26 Oct 2026 per the official Gen2+ changelog: stable 2.1.1, 2.0.3 or 1.7.6 depending on the device, 2.2.0 only as beta. Not every device gets every version.
Generations: Gen2/Plus, Gen3, Gen4
What you see: In the Shelly app or web interface the firmware update aborts, shows an error, never starts (the automatic midnight update never completes) or the progress stays at 99% or "in progress". In the forums this was reported after versions 1.7 and 2.0 for, among others, Plug S Gen3, Plug M Gen3, Pro 3EM, Pro 1 and 2PM Gen4.
What it means: There is no single cause. Official and semi-official sources mainly name a weak Wi-Fi signal, too many simultaneous updates, and memory and download problems. For the hang at 99% on Pro 3EM and Plug S Gen3 there is a report in the Shelly Community but no confirmed fix (as of this page).
Cost: €0 / CHF 0. Everything here is settings and reboots.
Step 1: Reboot the device and start the update again 5 min
- Wait until it's clear the update is no longer running. Never cut power during a running update.
- Reboot the device from the app or web interface (Settings › Reboot), not by unplugging it.
- Start the update again.
Rebooting and retrying is the first step named by both shelly.guide and an administrator of the Shelly Community.
Step 2: Update from the local web interface instead of the app 5 min
- Look up the device's IP address in the app (device information) or in your router.
- Open
http://<IP address>in a browser on the same network as the device. - Start the update under Settings › Firmware and keep the page open until the device has restarted.
According to shelly.guide, updating via the web interface fixes most cases. Plug M Gen3 owners in the German-language Shelly forum also report that the update only worked for them via the browser.
Step 3: Check the Wi-Fi signal and briefly turn off Eco mode 10 min
- Read the signal strength in the web interface (Wi-Fi status). shelly.guide names a signal weaker than −70 dBm as a likely cause. Remedies: move the router or access point closer, reposition the device, or retry once the network is improved (see Shelly offline and Wi-Fi problems).
- Turn Eco mode (Settings) off for the update. A Shelly Community administrator names disabling Eco mode, alongside rebooting, as a remedy for failing updates. You can turn it back on afterwards.
Step 4: Update devices one at a time depends on how many
Don't start all devices at once ("Update all"); update them one after another. shelly.guide explicitly recommends this.
Step 5: Don't run the automatic update at midnight 2 min
If the automatic update never completes but a manual one works:
- In an owner's blog post, the automatic midnight update did not complete; after moving the update time to after 04:00 it worked. The German-language Shelly forum also advises moving the update time away from midnight.
- Background per the official changelog: from 2.0.0, schedule-triggered downloads are randomly delayed ("Jitter schedule-triggered downloads").
This is an owner report, not official guidance, but it's risk-free to try.
Step 6: Home Assistant: check the Bluetooth proxy script 5 min
If you use the device as a Bluetooth proxy for Home Assistant, the blog post mentioned above says the installed script (aioshelly_ble_integration) can use so much memory that the update stalls at a few percent. The post describes the update completing after the script was stopped. Restart the script afterwards.
Step 7: Write down the error message 2 min
Note the exact message from the web interface or diagnostic log. The sources mention, among others:
- "Checksum does not match after writing partition-table.bin" (Pro 1, update from 1.3.3 to 2.0.0, Shelly Community)
- "DATA_LOSS: ZIP flush error : premature end of data" (blog post)
- "Bad HTTP response: 404" during download (Plug M Gen3 with factory firmware, Shelly Community)
The sources give no official explanation for these messages, but they are useful for support.
Note for older devices: according to the official changelog, 1.3.3 was a mandatory update before 1.4.0; devices on older versions were not offered 1.4.0 directly.
What doesn't help
- Factory reset: according to shelly.guide, not a fix for update problems.
- Third-party firmware files via URL: according to shelly.guide,
/ota?url=is meant for Gen1. For Gen2 and newer, contact support; a wrong file can brick the device. - Plug M Gen3 owners with factory firmware report in the Shelly Community that they could update the device with a beta firmware via "Update from URL" (run twice); afterwards AP and range extender were off. This is an owner report with risk and not a recommendation of this page.
When to contact support
- The update still fails after steps 1–5 via the web interface and with a good signal.
- Progress stays at 99% and rebooting changes nothing.
- The device no longer boots or is unreachable after an update.
Give device type, device ID, current firmware version and the exact error message: Shelly support (official).
Sources
- Shelly Gen2+ API documentation: changelog – current versions, gradual rollout of 2.0.0, jitter for scheduled downloads, 1.3.3 mandatory before 1.4.0, "not all devices receive the same updates"
- shelly.guide: Update problems – reboot, update via web interface, −70 dBm, never cut power, update one at a time, factory reset doesn't help, /ota only for Gen1 (guide project by Shelly staff)
- Shelly Community: Failing firmware updates since 1.7.0 through most recent 2.0.1 – administrator reply: reboot or disable Eco mode and retry
- Shelly Community: OTA update to 2.0.0 (and 2.0.1-beta2) hangs forever at 99% on two different Gen2+ devices – "in_progress 99%", device stays reachable, reboot doesn't help, no fix
- Shelly Community: Firmware update 1.3.3 to 2.0.0 fails with a Shelly Pro 1 – "Checksum does not match after writing partition-table.bin"
- Shelly Community: Firmware update setting – gradual rollout explained
- Shelly Community: Update M Plug to v 2.0.0 fails and Shelly Plug M Gen3 cannot update from the factory firmware – 404 during download, risky beta workaround
- Shelly Forum (German): Update- und Funktionsprobleme – Plug M Gen3 only updatable via browser
- Shelly Forum (German): Automatisches Firmware-Update geht nicht – move update time away from midnight
- Blog post (German): Shelly 2.0.0 auto-update and web GUI don't reach 2.0.1 – update after 04:00, "DATA_LOSS: ZIP flush error", Home Assistant BLE script uses memory
- Reddit r/ShellyUSA: 2.0.0 update failed for 2PM Gen4 – update aborts at about 75%
FAQ
Can I unplug the device if the update hangs at 99%?
Not while the update is still running. shelly.guide, a guide project by Shelly staff, explicitly says never to cut power during an update. If the progress stays put for a long time, first check whether the device still responds in its web interface; owners report the device stays reachable at 99%.
Does a factory reset help after a failed update?
According to shelly.guide, no. A factory reset deletes your settings but doesn't change the cause (connection, memory, download).
Why doesn't my device get an update that others already have?
According to the official changelog, firmware 2.0.0 was rolled out gradually, and Shelly's documentation says not all devices receive the same firmware updates. An update not showing up yet is not automatically a fault.
Can I flash a firmware file myself?
According to shelly.guide, manual flashing via /ota?url= is meant for Gen1; for Gen2 and newer you should contact support. A wrong file can brick the device.