{"record":{"id":"f9a2a1f311282017","repo":"home-assistant/core","slug":"bluetooth-adapter-adapter-with-address-address","errorCode":null,"errorMessage":"Bluetooth adapter {adapter} with address {address} not found","messagePattern":"Bluetooth adapter (.+?) with address (.+?) not found","errorType":"exception","errorClass":"ConfigEntryNotReady","httpStatus":null,"severity":"error","filePath":"homeassistant/components/bluetooth/__init__.py","lineNumber":399,"sourceCode":"        details = AdapterDetails(\n            address=address,\n            product=entry.data.get(CONF_SOURCE_MODEL),\n            manufacturer=manufacturer,\n        )\n        await async_update_device(\n            hass,\n            entry,\n            source_entry.title,\n            details,\n            entry.data.get(CONF_SOURCE_DEVICE_ID),\n        )\n        return True\n    manager = _get_manager(hass)\n    address = entry.unique_id\n    assert address is not None\n    adapter = await manager.async_get_adapter_from_address_or_recover(address)\n    if adapter is None:\n        raise ConfigEntryNotReady(\n            f\"Bluetooth adapter {adapter} with address {address} not found\"\n        )\n    adapters = await manager.async_get_bluetooth_adapters()\n    details = adapters[adapter]\n    mode = resolve_scanning_mode(entry.options)\n    # AUTO needs passive scanning support to flip on demand; without it\n    # the scanner would start passive on hardware that can't do passive.\n    if mode is BluetoothScanningMode.AUTO and not details.get(ADAPTER_PASSIVE_SCAN):\n        mode = BluetoothScanningMode.ACTIVE\n    scanner = HaScanner(mode, adapter, address)\n    scanner.async_setup()\n    if entry.title == address:\n        hass.config_entries.async_update_entry(\n            entry, title=adapter_title(adapter, details)\n        )\n    slots: int = details.get(ADAPTER_CONNECTION_SLOTS) or DEFAULT_CONNECTION_SLOTS\n    # Register the scanner before starting so\n    # any raw advertisement data can be processed","sourceCodeStart":381,"sourceCodeEnd":417,"githubUrl":"https://github.com/home-assistant/core/blob/58a3fdb3ea0538617f0a07efcfba6294de64fd59/homeassistant/components/bluetooth/__init__.py#L381-L417","documentation":"ConfigEntryNotReady raised in the bluetooth integration's setup when manager.async_get_adapter_from_recover(address) returns None: no local Bluetooth adapter with the entry's MAC address (its unique_id) was found. Note the message interpolates the adapter variable at that point, so it reads 'adapter None' — the address is the useful field. HA retries setup with backoff.","triggerScenarios":"The USB Bluetooth dongle was unplugged or failed at boot; the adapter's MAC changed (different dongle swapped in); the entry was migrated from another host (e.g. restored backup) whose adapter address differs; adapter not yet enumerated when HA started.","commonSituations":"SD card/container migrated to new hardware; dongle moved to another USB port and re-enumerated late; dongle dead; passive-scan USB stick not bound to btusb yet.","solutions":["Plug the adapter back in / verify it is visible: hciconfig -a or lsusb, then reload the Bluetooth config entry","If the hardware changed permanently, delete the old Bluetooth config entry and let HA rediscover the new adapter (new unique_id)","For late enumeration, just wait for the retry or restart HA after the dongle is up","In containers, ensure the adapter is passed through and privileged enough to access /dev/hci*"],"exampleFix":null,"handlingStrategy":"retry","validationCode":"from bluetooth_adapters import get_adapters  # or manager API\n\nasync def adapter_with_address_present(manager, address: str) -> bool:\n    return await manager.async_get_adapter_from_address_or_recover(address) is not None","typeGuard":null,"tryCatchPattern":"# Integration raises ConfigEntryNotReady itself; rely on HA's retry loop.\n# Guard wrappers by checking adapter presence first:\nadapter = await manager.async_get_adapter_from_address_or_recover(address)\nif adapter is None:\n    logger.info(\"Adapter for %s missing; waiting for retry\", address)\n    raise ConfigEntryNotReady(f\"Bluetooth adapter with address {address} not found\")","preventionTips":["Pin the adapter MAC by using the same physical dongle across restores/migrations","Delete stale bluetooth entries after migrating hardware so discovery recreates them"],"tags":["bluetooth","adapter","hardware","config-entry-not-ready"],"backgroundTag":null,"analyzedSha":"58a3fdb3ea0538617f0a07efcfba6294de64fd59","analyzedAt":"2026-08-14T20:54:38.818Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}