{"record":{"id":"b157cb778f419ec4","repo":"home-assistant/core","slug":"connection-failed-during-update-for-zone-self-sta","errorCode":null,"errorMessage":"Connection failed during update for zone {self.state.zn}","messagePattern":"Connection failed during update for zone (.+?)","errorType":"exception","errorClass":"UpdateFailed","httpStatus":null,"severity":"error","filePath":"homeassistant/components/arcam_fmj/coordinator.py","lineNumber":80,"sourceCode":"            device_name += f\" Zone {zone}\"\n\n        self.device_name = device_name\n        self.device_info = DeviceInfo(\n            identifiers={(DOMAIN, unique_id_device)},\n            manufacturer=\"Arcam\",\n            model=\"Arcam FMJ AVR\",\n            name=device_name,\n        )\n        self.zone_unique_id = f\"{unique_id}-{zone}\"\n\n    @override\n    async def _async_update_data(self) -> None:\n        \"\"\"Fetch data for manual refresh.\"\"\"\n        try:\n            self.update_in_progress = True\n            await self.state.update()\n        except ConnectionFailed as err:\n            raise UpdateFailed(\n                f\"Connection failed during update for zone {self.state.zn}\"\n            ) from err\n        finally:\n            self.update_in_progress = False\n\n    @callback\n    def _async_notify_packet(self, packet: ResponsePacket | AmxDuetResponse) -> None:\n        \"\"\"Packet callback to detect changes to state.\"\"\"\n        if (\n            not isinstance(packet, ResponsePacket)\n            or packet.zn != self.state.zn\n            or self.update_in_progress\n        ):\n            return\n\n        self.async_update_listeners()\n\n    @asynccontextmanager","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/arcam_fmj/coordinator.py#L62-L98","documentation":"UpdateFailed raised by the Arcam FMJ coordinator when state.update() raises ConnectionFailed while doing a manual refresh of a zone. It tells DataUpdateCoordinator that the AVR connection (telnet-style socket to the amplifier) dropped, marking entities unavailable and scheduling retries.","triggerScenarios":"Coordinator _async_update_data calls await self.state.update() and the underlying arcam-fmj client cannot reach the AVR: powered off, IP changed, port closed, or socket closed after idle. The f-string embeds self.state.zn to identify which zone failed.","commonSituations":"AVR in standby/off (socket refused), DHCP lease renewed giving the receiver a new IP, network drop, or multiple clients connected when the AVR only accepts one control connection.","solutions":["Verify the AVR is powered on and its IP is reachable (ping / check router for DHCP changes); reserve its IP.","If the IP changed, reconfigure the integration host setting or rely on the configured hostname.","Ensure no other control app holds the AVR's single TCP control session.","Wait for the coordinator's next retry once connectivity is restored."],"exampleFix":null,"handlingStrategy":"try-catch","validationCode":null,"typeGuard":null,"tryCatchPattern":"Catch ConnectionFailed around state.update() and raise UpdateFailed(...) from err so DataUpdateCoordinator handles backoff; do not swallow it, or entities will show stale data.","preventionTips":["Reserve a static IP for the AVR.","Keep the AVR's network standby enabled so the control port stays reachable.","Avoid multiple simultaneous control clients."],"tags":["home-assistant","arcam-fmj","av-receiver","connection","coordinator"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}