homebridge/homebridge · warning
Accessory ${data.uuid} not found - no child bridge with Matt
Error message
Accessory ${data.uuid} not found - no child bridge with Matter claimed it What it means
When handling a Matter control request forwarded to a child bridge, the Server waits up to 2 seconds for a child bridge with Matter to claim the accessory UUID. If the timeout fires, no child bridge claimed it, and the server replies { success: false, error: 'Accessory not found' } to the IPC caller while logging this warning.
Source
Thrown at src/server.ts:1232
}
// Every Matter child is asked and only the owner answers - a child that
// does not have the accessory returns silently, by design. So when no
// child owns it nothing is sent back at all, and the UI sat through its
// own 10s timeout, retried the command, then reported a failure. Mirror
// the accessoryInfoData fallback: arm a short timer that the owner's
// response cancels (via ChildBridgeService.onAccessoryControlResponse).
//
// Only meaningful with a correlationId — the UI drops any response
// without one, so there would be nothing to rescue.
if (correlationId) {
const existing = this.pendingMatterControlRequests.get(correlationId)
if (existing) {
clearTimeout(existing)
}
const fallback = setTimeout(() => {
this.pendingMatterControlRequests.delete(correlationId)
matterLogger.warn(`Accessory ${data.uuid} not found - no child bridge with Matter claimed it`)
this.sendMatterControlResponse({ success: false, error: 'Accessory not found', uuid: data.uuid }, correlationId)
}, 2000)
fallback.unref()
this.pendingMatterControlRequests.set(correlationId, fallback)
}
} else {
matterLogger.warn(`Accessory ${data.uuid} not found - not on main bridge and no child bridges with Matter available`)
this.sendMatterControlResponse({ success: false, error: 'Accessory not found', uuid: data.uuid }, correlationId)
}
}
}
private printSetupInfo(pin: string): void {
/* eslint-disable no-console */
console.log('Setup Payload:')
console.log(this.bridgeService.bridge.setupURI())
if (!this.options.hideQRCode) {View on GitHub (pinned to edf5493034)
Solutions
- Verify the accessory still exists in config.json and is hosted by a child bridge with matter enabled
- Restart Homebridge so child bridges re-register their Matter accessories
- Re-pair the accessory if it was re-created (UUID changed)
- Check child bridge logs for startup failures
Example fix
// before
{ "accessories": [{ "accessory": "X", "name": "Light", "_bridge": { "username": ".." } }] }
// after
{ "accessories": [{ "accessory": "X", "name": "Light", "_bridge": { "username": "..", "matter": {} } }] } Defensive patterns
Strategy: retry
Validate before calling
const isMatterHosted = config.accessories?.some(a => a._bridge?.matter && a.uuid === requestedUuid)
if (!isMatterHosted) reject(new Error(`Accessory ${requestedUuid} has no Matter child bridge`)) Try / catch
const res = await sendMatterControlRequest(msg)
if (!res.success && res.error === 'Accessory not found') {
// fall back or surface to UI
} Prevention
- Ensure _bridge.matter is set on bridges hosting Matter accessories
- Re-check UUIDs after re-creating accessories (they change on re-pair)
- Monitor child bridge startup logs
When it happens
Trigger: A Matter control IPC message references an accessory UUID that no child bridge with Matter enabled has claimed within the 2s fallback timeout.
Common situations: Accessory was removed or moved to a bridge without Matter; child bridge crashed; config UUID typo; Matter not enabled on the child bridge hosting the accessory.
Related errors
- Parent process did not respond to Matter port allocation req
- Failed to allocate Matter port for child bridge. Please spec
- Matter manager not initialized
- Accessory ${data.uuid} not found - not on main bridge and no
- Matter is not supported on accessory child bridges. Ignoring
AI-assisted analysis of homebridge/homebridge@edf5493034 (2026-08-30).
Data as JSON: /api/errors/b53d8ef9990a250f.
Report an issue: GitHub.