home-assistant/core · warning · ConfigEntryNotReady
Protocol(s) {missing_protocols_str} not yet found for {name}
Error message
Protocol(s) {missing_protocols_str} not yet found for {name}, waiting for discovery. What it means
ConfigEntryNotReady raised when the config entry stores credentials for protocols (e.g. Companion, AirPlay) that were not yet found on the device at the time of connection setup. Credentials in the entry are keyed by protocol; if the device's discovered services (conf.get_service(protocol)) do not include one of them and raise_missing_credentials is set, setup aborts as not-ready so discovery can run again later.
Source
Thrown at homeassistant/components/apple_tv/__init__.py:327
return None
async def _connect(self, conf: AppleTV, raise_missing_credentials: bool) -> None:
"""Connect to device."""
config_entry = self.config_entry
credentials: dict[int, str | None] = config_entry.data[CONF_CREDENTIALS]
name: str = config_entry.data[CONF_NAME]
missing_protocols = []
for protocol_int, creds in credentials.items():
protocol = Protocol(int(protocol_int))
if conf.get_service(protocol) is not None:
conf.set_credentials(protocol, creds) # type: ignore[arg-type]
else:
missing_protocols.append(protocol.name)
if missing_protocols:
missing_protocols_str = ", ".join(missing_protocols)
if raise_missing_credentials:
raise ConfigEntryNotReady(
f"Protocol(s) {missing_protocols_str} not yet found for {name},"
" waiting for discovery."
)
_LOGGER.debug(
"Protocol(s) %s not yet found for %s, trying later",
missing_protocols_str,
name,
)
return
_LOGGER.debug("Connecting to device %s", self.config_entry.data[CONF_NAME])
session = async_get_clientsession(self.hass)
self.atv = await connect(conf, self.hass.loop, session=session)
self.atv.listener = self
self._dispatch_send(SIGNAL_CONNECTED, self.atv)
self._address_updated(str(conf.address))
View on GitHub (pinned to 58a3fdb3ea)
Solutions
- Wake the Apple TV so it advertises all services, then reload the integration (discovery will retry and complete)
- Verify 'atvremote --scan' shows all expected services (MAP, Companion, AirPlay/RAOP) from the HA host; fix mDNS reflection/repeat across VLANs if some are missing
- Reconfigure the integration to re-discover the device and refresh the set of protocols
Defensive patterns
Strategy: retry
Prevention
- Wake the device before reload so all Bonjour services are advertised
- Fix mDNS reflector/repeater config across VLANs
- Re-run discovery after network changes instead of forcing setup
When it happens
Trigger: async_first_connect -> connect path where entry.data credentials include a protocol whose service is missing from the pyatv conf: device discovered via one interface but credentials captured on another, mDNS records incomplete, or the Apple TV exposes the protocol only intermittently (sleep/Bonjour sleep proxy).
Common situations: Mixed wired/wireless Apple TV presence in mDNS; sleep proxy advertising stale records; entry migrated from an older apple_tv integration version that stored credentials for protocols the device no longer exposes; VLANs where only some service types are forwarded.
Related errors
- {address}: {ex}
- already_in_progress
- Could not find Airthings device with address {address}: {rea
- Failed connecting to the websocket.
- {address}: Authentication failed, try reconfiguring device:
AI-assisted analysis of home-assistant/core@58a3fdb3ea (2026-08-14).
Data as JSON: /api/errors/f13ccd9b5a27e6c6.
Report an issue: GitHub.