|

Smart Switch Firmware Update Stuck Home Assistant Problems? What to Check First

If your smart switch’s firmware update is stuck in Home Assistant, the most common cause is a broken OTA (over‑the‑air) communication path between your coordinator and the device. The update may freeze at a certain percentage, or the device may disappear from the network entirely. Before tearing down your Zigbee or Wi‑Fi setup, run through the checks below—most stuck updates are fixed by addressing a simple connection or file issue.

Quick Triage: 5 Checks Before Digging Deeper

Go through these five checks in order. After each, note the pass/fail result—it will tell you whether to keep following this path or jump to the ordered fixes.

  • Check if the switch is still responding to basic commands. Try toggling the light via Home Assistant or the physical button.

Pass — proceed to the next check.
Fail (device is unresponsive) — skip ahead to Ordered Quick Fixes and start with power‑cycling the switch.

  • Check whether another OTA update is already running. Zigbee2MQTT and ZHA both queue updates; starting a second one while the first is stuck can block all further OTA traffic.

Pass (no other update in progress) — continue.
Fail (another update is active) — let it finish or cancel it, then retry the stuck update.

  • Check that the OTA image was correctly downloaded. In Zigbee2MQTT go to Settings → OTA → look at the “Pending” list. If the file is corrupted or the wrong model, the update will never complete.

Pass (a valid image is present) — continue.
Fail (image missing or partial) — delete it and let the system re‑download.

  • Check the signal strength between the switch and its nearest router. If the route is poor—through a metal box or far from a mains‑powered device—the update can stall.

Pass (RSSI better than -80 dBm or link quality > 50) — continue.
Fail — re‑pair the device or move a mains‑powered router closer.

  • Check if the coordinator has been restarted since the update was started. A simple coordinator‑level reset (not a full Home Assistant restart) can clear a hung OTA session.

Pass (coordinator was restarted recently) — continue to the next section.
Fail — restart the coordinator now (disconnect USB power, wait 10 seconds, reconnect).

Check Your Coordinator’s Connection First

A stuck firmware update is rarely a device problem. It’s almost always a coordinator or network issue. Here’s how to confirm it for the two most common Home Assistant Zigbee stacks.

Zigbee2MQTT users

Open the frontend and navigate to the Devices tab for the stuck switch. Look for a status like “Updating (45%)” or “OTA progress: 45%”. If the percentage has not changed for more than 10 minutes, the update has stalled. Check the coordinator’s serial‑connection logs—repeated “No route to device” messages mean the switch lost its path and the OTA payload can’t be delivered in fragments.

ZHA (Home Assistant Zigbee Home Automation) users

Check the ZHA Events log for `OTADEVICEANNOUNCE` or `OTA_UPDATE` errors. ZHA does not show a live progress bar on most pages; install the ZHA Toolkit integration or inspect Home Assistant’s system log for entries like `[zigpy.ota] Update error on `. That error usually points to a timeout waiting for page requests.

If you see these errors, the next step is to re‑pair the device or force a fresh OTA image—covered in the ordered fixes below.

Branch point: If the coordinator logs show repeated “No route to device” or “timeout” errors, jump to the Ordered Quick Fixes and start with re‑pairing the switch. If the logs are clean but the update is still stuck, the problem is likely a corrupted OTA image—delete and re‑download.

The Difference Your Protocol Makes

This single decision criterion changes your troubleshooting path: determine whether the switch uses Zigbee OTA (via ZHA or Zigbee2MQTT) or a manufacturer‑specific protocol like Matter, Z‑Wave, or proprietary Wi‑Fi.

To find out, go to Settings → Devices & Services → Entities in Home Assistant, filter by the device’s integration icon. If it shows “ZHA” or “Zigbee2MQTT”, it’s Zigbee. If it shows “Matter”, “HomeKit Controller”, or a vendor‑specific integration (e.g., “TP‑Link Kasa”), treat accordingly.

Protocol Typical Behavior Stuck Update Fix
Zigbee (ZHA or Zigbee2MQTT) OTA delivered through coordinator; progress visible in frontend or logs. Re‑pair device or delete/re‑download OTA image.
Matter Updates pushed through the Matter fabric; not managed by Home Assistant’s OTA pipeline. Remove device from fabric, re‑commission, then apply update from platform app (e.g., Google Home, Apple Home, SmartThings).
Z‑Wave Rarely hangs; if it does, Node Information Frame (NIF) may be corrupt. Perform a “Network Refresh” or “Secure Inclusion” re‑pair.
Proprietary Wi‑Fi (e.g., older Kasa switches) Updates happen through the vendor’s app, not Home Assistant. Check phone’s Wi‑Fi connection; use the vendor app (Kasa or Tapo).

For example, a Kasa Smart Light Switch HS200P3 is Wi‑Fi only. If you see an OTA entry for it in Zigbee2MQTT, you’re looking at the wrong integration—remove that entry and use the TP‑Link Kasa integration instead.

Ordered Quick Fixes (Start Here)

Try these steps in sequence. Most stuck updates are resolved by step 2.

1. Force a coordinator device‑refresh. In Zigbee2MQTT: click the “Update” icon next to the device, then clear the OTA pending list and retry. In ZHA: use the “Force Update” option in the ZHA Network Card (if using a custom dashboard) or restart the ZHA integration. Wait at least 5 minutes before moving to step 2—OTA timeouts can take several minutes to clear.

2. Delete the stuck OTA image and re‑download. In Zigbee2MQTT, go to Settings → OTA → “Delete” the pending update for that device. The next OTA attempt will fetch a fresh image from the repository.

Corner case: If the device is a Kasa switch, it does not use Zigbee OTA—remove the erroneous entry and use the Kasa integration.

3. Power‑cycle the switch physically. Flip the circuit breaker for that switch off, wait 10 seconds, and turn it back on. This forces the device to rejoin the network with a clear OTA state.

4. Re‑pair the device. Trigger a factory reset (consult your switch’s manual for the exact button‑hold sequence) and then re‑include it into Home Assistant. After re‑inclusion, try the firmware update again.

When to Stop Troubleshooting

If you’ve done all of the above and the update still hangs, the problem is deeper than a routine stuck OTA.

Concrete stop threshold: If the update fails at the exact same percentage three times in a row (e.g., always stops at 42%), the device’s flash memory is likely corrupted. Stop attempting updates and contact the manufacturer for a recovery procedure or warranty replacement.

Other signs that professional help or hardware replacement is needed:

  • The coordinator itself may need updating. A buggy coordinator firmware (e.g., early Sonoff ZBDongle‑P releases) can drop OTA packets. Check whether a newer coordinator firmware is available.
  • The OTA image may not be compatible. If you recently switched from Zigbee2MQTT to ZHA or vice versa, the stored OTA image might be for the wrong coordinator stack. Delete all cached OTA files and let the system download fresh ones.
  • If the device is operational (turns on/off) and the update remains stuck but does not block other updates, you can safely ignore it until the next firmware release. Many switches run fine on older firmware.

Frequently Asked Questions

Why does my smart switch firmware update keep getting stuck at 50%?

A 50% stall often indicates a lost page request. The coordinator has sent half the image, but the device stops acknowledging further page requests, usually because the route became unstable. Re‑pairing the switch or adding a mains‑powered router nearby usually resolves it.

Do I need to update firmware through Home Assistant at all?

No. If the switch is working reliably, you can skip updates entirely. Only update if the changelog mentions a fix for a bug you’re encountering (e.g., zombie device behavior, poor responsiveness). Unnecessary firmware updates add risk of bricking the device.

Can I use the vendor’s own app instead of Home Assistant for OTA?

For Zigbee devices, typically no—the OTA image is delivered by the coordinator. For Wi‑Fi devices like the Kasa HS200P3, yes, use the Kasa or Tapo app. For Matter switches, use the platform app that controls the fabric (e.g., Google Home, Apple Home, SmartThings).

Explore This Topic

Related guides in this cluster:

Similar Posts