{"record":{"id":"b0ff3ee41c324358","repo":"home-assistant/core","slug":"old-firmware","errorCode":"old_firmware","errorMessage":"old_firmware","messagePattern":"old_firmware","errorType":"validation","errorClass":"InputValidationError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bond/config_flow.py","lineNumber":71,"sourceCode":"        session=async_get_clientsession(hass),\n        requestor_uuid=RequestorUUID.HOME_ASSISTANT,\n    )\n    try:\n        hub = BondHub(bond, data[CONF_HOST])\n        await hub.setup(max_devices=1)\n    except ClientConnectionError as error:\n        raise InputValidationError(\"cannot_connect\") from error\n    except ClientResponseError as error:\n        if error.status == HTTPStatus.UNAUTHORIZED:\n            raise InputValidationError(\"invalid_auth\") from error\n        raise InputValidationError(\"unknown\") from error\n    except Exception as error:\n        _LOGGER.exception(\"Unexpected exception\")\n        raise InputValidationError(\"unknown\") from error\n\n    # Return unique ID from the hub to be stored in the config entry.\n    if not hub.bond_id:\n        raise InputValidationError(\"old_firmware\")\n\n    return hub.bond_id, hub.name\n\n\nclass BondConfigFlow(ConfigFlow, domain=DOMAIN):\n    \"\"\"Handle a config flow for Bond.\"\"\"\n\n    VERSION = 1\n\n    def __init__(self) -> None:\n        \"\"\"Initialize config flow.\"\"\"\n        self._discovered: dict[str, str] = {}\n\n    async def _async_try_automatic_configure(self) -> None:\n        \"\"\"Try to auto configure the device.\n\n        Failure is acceptable here since the device may have been\n        online longer then the allowed setup period, and we will","sourceCodeStart":53,"sourceCodeEnd":89,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bond/config_flow.py#L53-L89","documentation":"Raised in the Bond config flow after a successful connection: BondHub.setup() completed, but hub.bond_id is empty/falsy. The connection worked, yet the hub never reported an identifier, which on Bond hubs indicates firmware too old to expose the required v2 API identifier. Home Assistant cannot build a unique config entry ID from it.","triggerScenarios":"Connecting to a Bond hub running early/old firmware that predates the v2 device-info endpoint fields; some non-Bond HTTP devices that answer with empty JSON 200 can also reach this path.","commonSituations":"First-generation Bond hub never updated, hub kept offline from the Bond cloud so firmware never auto-updated.","solutions":["Open the Bond app and update the hub to the latest firmware (Settings > Hub > Firmware).","Reboot the hub after the update and rerun the Home Assistant config flow.","If firmware is current and the error persists, capture http://<host>:30001/v2/devices and report to the bond-homeassistant issue tracker."],"exampleFix":null,"handlingStrategy":"validation","validationCode":"async def hub_reports_id(host: str, token: str, session) -> str | None:\n    resp = await session.get(\n        f\"http://{host}:30001/v2/devices\", headers={\"BOND-Token\": token}\n    )\n    data = await resp.json()\n    return data.get(\"_id\") or None  # falsy id => old firmware","typeGuard":null,"tryCatchPattern":"hub = BondHub(bond, host)\nawait hub.setup(max_devices=1)\nif not hub.bond_id:\n    # instruct user to update firmware instead of retrying connection","preventionTips":["Update Bond hub firmware during initial install, before adding it to Home Assistant.","Leave the hub connected to the Bond cloud so firmware stays current."],"tags":["bond","config-flow","firmware","home-assistant"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}