{"record":{"id":"5dc4c29089fa8f88","repo":"home-assistant/core","slug":"outdated-version","errorCode":"outdated_version","errorMessage":"This device is using outdated firmware. Please update it to at least v1.2.0 and try again.","messagePattern":"This device is using outdated firmware\\. Please update it to at least v1\\.2\\.0 and try again\\.","errorType":"error_code","errorClass":"AbortFlow","httpStatus":null,"severity":"error","filePath":"homeassistant/components/aranet/config_flow.py","lineNumber":43,"sourceCode":"    )\n\n\nclass AranetConfigFlow(ConfigFlow, domain=DOMAIN):\n    \"\"\"Handle a config flow for Aranet.\"\"\"\n\n    VERSION = 1\n\n    def __init__(self) -> None:\n        \"\"\"Set up a new config flow for Aranet.\"\"\"\n        self._discovery_info: BluetoothServiceInfoBleak | None = None\n        self._discovered_device: Aranet4Advertisement | None = None\n        self._discovered_devices: dict[str, tuple[str, Aranet4Advertisement]] = {}\n\n    def _raise_for_advertisement_errors(self, adv: Aranet4Advertisement) -> None:\n        \"\"\"Raise any configuration errors that apply to an advertisement.\"\"\"\n        # Old versions of firmware don't expose sensor data in advertisements.\n        if not adv.manufacturer_data or adv.manufacturer_data.version < MIN_VERSION:\n            raise AbortFlow(\"outdated_version\")\n\n        # If integrations are disabled, we get no sensor data.\n        if not adv.manufacturer_data.integrations:\n            raise AbortFlow(\"integrations_disabled\")\n\n    @override\n    async def async_step_bluetooth(\n        self, discovery_info: BluetoothServiceInfoBleak\n    ) -> ConfigFlowResult:\n        \"\"\"Handle the Bluetooth discovery step.\"\"\"\n        await self.async_set_unique_id(discovery_info.address)\n        self._abort_if_unique_id_configured()\n        adv = Aranet4Advertisement(discovery_info.device, discovery_info.advertisement)\n        self._raise_for_advertisement_errors(adv)\n\n        self._discovery_info = discovery_info\n        self._discovered_device = adv\n        return await self.async_step_bluetooth_confirm()","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/aranet/config_flow.py#L25-L61","documentation":"AbortFlow with reason 'outdated_version' in the Aranet config flow. It fires during Bluetooth discovery when the advertised manufacturer data is missing or reports a firmware version below MIN_VERSION (v1.2.0), because old Aranet4 firmware does not expose sensor data in advertisements and cannot be set up passively.","triggerScenarios":"async_step_bluetooth (or the manual user step) processes an Aranet4Advertisement where adv.manufacturer_data is None or adv.manufacturer_data.version < MIN_VERSION; _raise_for_advertisement_errors raises AbortFlow('outdated_version') and the flow aborts with the localized message.","commonSituations":"A newly bought or long-unused Aranet4 running factory firmware; a device that was reset to an old firmware; orphan devices discovered via BLE that never received OTA updates.","solutions":["Update the Aranet4 firmware to at least v1.2.0 using the official Aranet app.","Re-pair/re-discover the device in Home Assistant after the update (force a Bluetooth re-scan or restart discovery).","If the device is already updated, move it closer to the Bluetooth adapter so complete manufacturer data is received."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"from aranet4 import Aranet4Advertisement\n\ndef is_setup_capable(adv: Aranet4Advertisement, min_version: int) -> bool:\n    md = adv.manufacturer_data\n    return md is not None and md.version >= min_version","typeGuard":null,"tryCatchPattern":"Wrap flow steps in try/except AbortFlow and inspect flow.reason == 'outdated_version' to show a firmware-update hint to the user.","preventionTips":["Update Aranet firmware via the app before adding to Home Assistant.","Check adv.manufacturer_data.version against MIN_VERSION before starting the config flow.","Keep devices on current firmware via periodic app checks."],"tags":["home-assistant","aranet","bluetooth","firmware","config-flow"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T17:31:12.345Z"}