Skip to content

Matter bridges: commissioning a bridge with no bridged children yields no Indigo devices, and the bridged-endpoint path is unverified end to end #105

Description

@simons-plugins

Found while commissioning a Homebridge Matter child bridge on jarvis (2026-08-02/03), after #103 made test-certificate devices commissionable.

What happened

The bridge commissioned successfully into the Indigo fabric as node @1:35Attestation accepted, no errors. But no Indigo devices were created, and get_devices_by_type shows none belonging to it.

The reason is visible in matter-server's log — the node exposes exactly one endpoint and it has no children:

20:54:56  server-1-fff1.@1:35.ep1 ready  endpoint#: 1  type: Aggregator (0x0e, rev 2)  behaviors: ✓descriptor
20:55:01  Sending endpoint_added event for Node @1:35 endpoint 1

An Aggregator carries no device clusters, so _spec_for_endpoint correctly returns None for it, and there are no bridged child endpoints to build devices from. The plugin behaved correctly; the bridge was publishing an empty aggregator (the Homebridge plugin apparently couldn't map its one accessory to a Matter device type).

Why this is worth an issue

  1. The bridged-endpoint path has never been exercised against a real bridge. The support exists — device_sync.py makes one device per endpoint, matter_model.py:139 _bridge_identity() reads BridgedDeviceBasicInformation (0x0039) for per-endpoint name/vendor/product, and protocol.py:89 handles dynamic endpoint_added/endpoint_removed. But it is unit-tested only. We should validate against a bridge that actually publishes children (a Hue bridge, or a Matterbridge instance with real accessories) before claiming bridge support.

  2. Commissioning an empty bridge is silently useless. It reports success and creates nothing. A device-bearing node with no usable endpoints already gets the matterUnknown placeholder treatment; an aggregator with an empty parts list gets nothing at all and no explanation. Suggest an INFO/WARNING when a commissioned node's only endpoint is an Aggregator with no children — "this bridge is not currently exposing any devices over Matter; check its own configuration" — so the user isn't left wondering.

  3. Housekeeping: node @1:35 is still in the fabric as a live pairing that can never produce devices. It should be decommissioned (Plugins ▸ Matter ▸ Decommission Matter device…). Related: matter-server's storage showed orphan session-resumption records for @1:30 and @1:33 — node IDs no longer in the node list — which is what accumulates when partial/abandoned commissioning isn't cleaned up.

Environment

matter-server 1.2.2, plugin 2026.7.10, Homebridge child bridges advertising on ports 5530 (HomeConnect) and 5531 (Homebridge iCloud).

🤖 Generated with Claude Code

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions