{"record":{"id":"27bc49ffad13fddc","repo":"home-assistant/core","slug":"install-failed","errorCode":"install_failed","errorMessage":"Failed to install firmware update on the BleBox device: {error}","messagePattern":"Failed to install firmware update on the BleBox device: (.+?)","errorType":"exception","errorClass":"HomeAssistantError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/blebox/update.py","lineNumber":135,"sourceCode":"    def _reset_progress(self) -> None:\n        self._in_progress_old_version = None\n        self._poll_attempts = 0\n        self.async_write_ha_state()\n\n    @override\n    async def async_install(\n        self, version: str | None, backup: bool, **kwargs: Any\n    ) -> None:\n        \"\"\"Install an update.\"\"\"\n        self._cancel_poll()\n        self._in_progress_old_version = self._feature.installed_version\n        self._poll_attempts = 0\n        self.async_write_ha_state()\n        try:\n            await self._feature.async_install()\n        except Error as ex:\n            self._reset_progress()\n            raise HomeAssistantError(\n                translation_domain=DOMAIN,\n                translation_key=\"install_failed\",\n                translation_placeholders={\"error\": str(ex)},\n            ) from ex\n        self._poll_cancel = async_call_later(\n            self.hass, _POLL_INTERVAL_SECONDS, self._poll_until_updated\n        )\n\n    @override\n    async def async_will_remove_from_hass(self) -> None:\n        \"\"\"Cancel any pending poll timer when the entity is removed.\"\"\"\n        self._cancel_poll()\n\n    async def _poll_until_updated(self, _now: Any) -> None:\n        \"\"\"Poll device until the installed version changes after OTA reboot.\"\"\"\n        self._poll_cancel = None\n        self._poll_attempts += 1\n        try:","sourceCodeStart":117,"sourceCodeEnd":153,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/blebox/update.py#L117-L153","documentation":"The blebox update entity's async_install resets progress state and wraps any python-blebox Error raised by feature.async_install() into HomeAssistantError with key 'install_failed' ('Failed to install firmware update on the BleBox device: {error}'). The firmware installation did not start or failed midway; the entity resets its in-progress bookkeeping before raising.","triggerScenarios":"Triggering 'Install' on the blebox update entity while the device cannot complete the firmware download/upload: device unreachable mid-command, gateway API error, insufficient memory on device, or the vendor firmware URL being unavailable.","commonSituations":"Unstable Wi-Fi during the long firmware transfer; device rebooting during install; power-cycling the device mid-update; rate-limited vendor firmware servers.","solutions":["Ensure the device has a stable network connection and adequate power before retrying the install.","Retry the install after the device is confirmed reachable (check the coordinator/entity state is not unavailable).","If it keeps failing, fetch the exact error via debug logging and try updating through the vendor's BleBox app to isolate integration vs device issues."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":"if update_coordinator.last_update_success is False:\n    raise RuntimeError(\"Device unreachable; firmware install would fail\")","typeGuard":null,"tryCatchPattern":"from homeassistant.exceptions import HomeAssistantError\n\ntry:\n    await update_entity.async_install(version=None, backup=False)\nexcept HomeAssistantError as err:\n    if err.translation_key == \"install_failed\":\n        # verify connectivity before retrying; interrupted installs can brick devices\n        _LOGGER.error(\"Firmware install failed: %s\", err)","preventionTips":["Confirm the device is online and responsive before starting a firmware install.","Never power-cycle a BleBox device mid-install; retry only after confirming device state."],"tags":["home-assistant","blebox","firmware","install","update-entity"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}