{"record":{"id":"0b3827d441c32276","repo":"home-assistant/core","slug":"key-data-not-returned-from-device","errorCode":null,"errorMessage":"Key data not returned from device","messagePattern":"Key data not returned from device","errorType":"exception","errorClass":"ConfigEntryError","httpStatus":null,"severity":"error","filePath":"homeassistant/components/airos/__init__.py","lineNumber":109,"sourceCode":"        device_data: DetectDeviceData = await async_get_firmware_data(**conn_data)\n\n    except (\n        AirOSConnectionSetupError,\n        AirOSDeviceConnectionError,\n        AirOSTLSCompatibilityError,\n        TimeoutError,\n    ) as err:\n        await close_session()\n        raise ConfigEntryNotReady from err\n    except (\n        AirOSConnectionAuthenticationError,\n        AirOSDataMissingError,\n    ) as err:\n        await close_session()\n        raise ConfigEntryAuthFailed from err\n    except AirOSKeyDataMissingError as err:\n        await close_session()\n        raise ConfigEntryError(\n            translation_domain=DOMAIN, translation_key=\"key_data_missing\"\n        ) from err\n    except Exception as err:\n        await close_session()\n        raise ConfigEntryError(\n            translation_domain=DOMAIN, translation_key=\"unknown\"\n        ) from err\n\n    airos_class: type[AirOS8 | AirOS6] = (\n        AirOS8 if device_data[\"fw_major\"] == 8 else AirOS6\n    )\n\n    airos_device = airos_class(**conn_data)\n\n    data_coordinator = AirOSDataUpdateCoordinator(\n        hass, entry, device_data, airos_device\n    )\n","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/airos/__init__.py#L91-L127","documentation":"Raised during AirOS (Ubiquiti airOS) config entry setup when device_data fetch raises AirOSKeyDataMissingError — the library connected and authenticated but the device response lacked key data needed to build the device model. ConfigEntryError with translation key key_data_missing marks the entry as failed (not retried) until the user intervenes.","triggerScenarios":"Device responds to login/status calls but the parsed payload is missing expected fields (e.g. fw_major or device identification data) — typically unsupported/very old firmware or an unexpected airOS response shape.","commonSituations":"Pointing the integration at a non-airOS device or EdgePoint/other Ubiquiti gear with a different API, ancient airOS versions (<6), or a firmware version the airos library cannot parse.","solutions":["Confirm the target is a genuine airOS 6/8 device (check the device web UI)","Upgrade the device firmware to a supported airOS release and retry setup","Capture the device's /status JSON and compare against what the pyairos library expects; report a library issue if fields are missing","Remove the failed entry and re-add it after firmware correction"],"exampleFix":null,"handlingStrategy":"validation","validationCode":"# Before adding the entry, confirm the device is airOS and its status payload parses:\n# curl -k -u user:pass https://<host>/status  -> JSON containing fw_major and key fields.","typeGuard":null,"tryCatchPattern":null,"preventionTips":["Only point the integration at airOS 6/8 devices","Upgrade firmware before setup if it is very old","If the payload lacks expected fields, report to pyairos maintainers with the JSON"],"tags":["airos","home-assistant","firmware","setup"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}