Home Assistant / Troubleshooting

Home Assistant Cannot Add a Matter over Thread Device

Confirm the device is a Matter-over-Thread unit that was never commissioned, then separate the Companion commissioning entry, border-router visibility, Thread credentials, and the local network stage before changing anything.

The Matter integration runs its own Matter controller as a separate Matter Server app process connected over WebSocket; Matter is the control protocol while Thread is only the radio transport, and a Thread border router forwards packets without controlling devices. Commissioning uses the phone over Bluetooth with the device nearby, and Home Assistant OS with the managed app is currently the only officially supported option. Home Assistant Container users can run the Matter Server Docker image as documented, but non-HAOS installation types are without Home Assistant support and are at the user's own risk.[2][3]

The documented stage wording, including Matter is unavailable and Checking network connectivity, proves no single cause by itself. A device already added to another controller needs the documented sharing workflow, never an automatic factory reset. Thread discovery announces networks over mDNS without credentials, the preferred-network label does not establish which credentials the phone selected, and local IPv6 multicast must flow even though working IPv6 internet is not required.[2][3]

Applicability

Products
Home Assistant
Scope
For Home Assistant Core 2026.9.1 with the managed Matter Server app on Home Assistant OS, commissioning a Matter-over-Thread device through the Companion app where the device was never added to any fabric. Record the Core version separately from the OS, Matter Server, Companion app, and radio firmware versions. This page does not cover Matter-over-Wi-Fi, HomeKit-over-Thread, unsupported standalone Matter Server deployments, or a previously commissioned device that later becomes unavailable.[1][2]
Last verified

Symptoms

  • Adding a Matter-over-Thread device through the Companion app stalls or fails and the device never completes commissioning into Home Assistant. A device that paired successfully and later becomes unavailable is a different observation with its own future diagnosis.[2]

Quick diagnosis

Confirm a never-commissioned Matter-over-Thread device before reasoning about entry, routers, credentials, or network stages.

Read-only

Confirm Matter-over-Thread and no prior fabric membership

Read the device packaging and any device information: the Matter logo with Thread transport, and no existing membership in any controller's fabric. Other transports, later outages, or an already-commissioned device each exit this page to their own path.[2][3]

Read-only

Confirm the Companion commissioning entry and phone prerequisites

Confirm the Companion app offers the commissioning entry and the phone meets the documented prerequisites: supported OS version, current Companion app, Bluetooth enabled, phone near the device and the border router, and location permission where the documented Android flow requires it. A missing entry is itself a branch, not a reason to improvise another path.[2]

Read-only

Do not reset, reconfigure networks, or invent thresholds

Do not factory-reset the device, disable firewalls globally, reset platform services, invent a Thread channel, or invent a timeout threshold before the failing stage is isolated. An already-commissioned device elsewhere selects the sharing workflow, never a default reset.[2][3]

Interactive troubleshooter

Your answers stay in this browser tab. The tool does not connect to your systems or send diagnostic results.

Guided check / step 1

Safe diagnostic guidance

Is this a never-commissioned Matter-over-Thread device failing to pair?

Confirm Matter-over-Thread transport and a never-commissioned history. Other transports, later outages, and already-commissioned devices each exit to their own path.[2]

Read the complete diagnostic tree without using the controls
  1. Is this a never-commissioned Matter-over-Thread device failing to pair?

    Confirm Matter-over-Thread transport and a never-commissioned history. Other transports, later outages, and already-commissioned devices each exit to their own path.[2]

    • Yes, fresh Matter-over-Thread pairingDoes the device already belong to another controller's fabric?
    • No, a different observationInvestigate the actual smart-home observation
  2. Does the device already belong to another controller's fabric?

    Check every known controller for existing membership. An existing fabric selects the sharing workflow, never a reset; only a fabric-free device continues into commissioning reasoning.[2]

    • No, never added anywhereIs the Companion commissioning entry available with prerequisites met?
    • Yes, already in another fabricUse the sharing workflow from the existing fabric
    • Cannot confirm fabric historyCollect a commissioning evidence packet
  3. Is the Companion commissioning entry available with prerequisites met?

    Confirm the commissioning entry is offered in the Companion app with Bluetooth on, proximity to device and border router, and documented OS, app, and permission prerequisites met.[2]

    • Yes, entry offered and prerequisites metIs a border router visible with known, synchronized credentials?
    • No, entry or a prerequisite is missingSatisfy the missing entry prerequisite
    • Cannot confirm the entry stateCollect a commissioning evidence packet
  4. Is a border router visible with known, synchronized credentials?

    Confirm a Thread border router is visible for the device network and, separately, that the right credentials are known and synchronized to the phone. Discovery alone proves nothing about credentials, and the preferred label alone proves nothing about the phone's selection.[3]

    • Yes, router visible and credentials knownDoes commissioning stall at the network stage?
    • No border router visibleProvide a border router for the device network
    • Router visible but credentials unknownSynchronize the Thread credentials to the phone
    • Cannot confirm router or credentialsCollect a commissioning evidence packet
  5. Does commissioning stall at the network stage?

    With router and credentials in place, determine whether the failure sits at the network delivery stage: local IPv6, multicast, and border-router reachability. Any other stall shape exits to evidence preservation.[2][3]

    • Yes, stalls at the network stageInspect local IPv6 and multicast delivery layer by layer
    • No, a different stall shapeCollect a commissioning evidence packet
  6. Use the sharing workflow from the existing fabric

    Add the device through the documented sharing flow from its current controller into Home Assistant's fabric. Never factory-reset as the default path.[2]

  7. Satisfy the missing entry prerequisite

    Satisfy exactly the missing documented prerequisite: Companion app currency, OS version, Bluetooth state, proximity, or permission. Do not improvise an alternate commissioning path.[2]

  8. Provide a border router for the device network

    Set up a Thread border router covering the device: a Home Assistant radio with the border-router app or a documented third-party router nearby. Re-check visibility in the Thread integration afterwards.[3][4]

  9. Synchronize the Thread credentials to the phone

    Import or synchronize the target network credentials to the phone through the documented Companion flow and confirm the phone's selected credentials match the target network before retrying.[3]

  10. Inspect local IPv6 and multicast delivery layer by layer

    Inspect host IPv6, virtualization or container networking where applicable, access-point multicast and mDNS behavior, and available server and border-router logs. Working IPv6 internet is not required; environment redesign stays out of scope.[3]

  11. Investigate the actual smart-home observation

    Matter-over-Wi-Fi, HomeKit-over-Thread, standalone server deployments, and previously commissioned devices that later go unavailable each need their own diagnosis.[2]

  12. Collect a commissioning evidence packet

    Preserve the device model and firmware, phone OS and app versions, Core version, the reached stage, and the integration and device diagnostics with all secrets redacted. Send the sanitized evidence for upstream review.[2]

Detailed diagnosis

Read-only

1. Verify transport, history, and fabric state

Establish Matter-over-Thread transport, a never-commissioned history, and absence from every known fabric. Any other transport, a later outage, or existing membership elsewhere exits to the sharing branch or to a different diagnosis before any commissioning reasoning.[2]

Read-only

2. Check the Companion commissioning entry and prerequisites

Confirm the commissioning entry is offered and the phone prerequisites hold: supported OS and current app versions, Bluetooth on, proximity to device and border router, and the documented permission state. The entry exists only in the Companion app, never in the browser.[2]

Read-only

3. Check border-router visibility and known credentials separately

Confirm a Thread border router is visible for the device's network, then separately confirm which credentials are known and synchronized to the phone. Discovery announcements carry no credentials, and the preferred-network label alone never establishes the phone's selected credentials; resolve a documented mismatch before continuing.[3][4]

Read-only

4. If commissioning stalls at the network stage, inspect local IPv6 and multicast

When credentials are delivered but commissioning stalls, inspect local IPv6 and multicast reachability layer by layer: host IPv6 setting, virtualization or container networking where applicable, access-point multicast and mDNS filtering, and available server and border-router logs. Working IPv6 internet is not a prerequisite; an absent warning is not proof every layer works.[2][3]

Read-only

5. With no discriminating evidence, collect sanitized diagnostics

When prerequisites appear satisfied but nothing discriminates the failure, record the device model and firmware, phone OS and app versions, the reached stage, and the integration and device diagnostics with secrets redacted. Never convert a bare timeout into a proven interference or credentials diagnosis.[2]

Supported scenarios

These observations narrow the next investigation; they do not establish a unique cause.

The device, transport, or history does not match this page

Thread-only devices without Matter, Matter-over-Wi-Fi units, later outages of commissioned devices, or existing membership in another fabric each follow different documented paths. None of them is a commissioning failure of a fresh Matter-over-Thread device.[2][3]

How to check: Confirm transport logos, commissioning history, and fabric membership before any commissioning reasoning begins.[2]

The Companion commissioning entry or a phone prerequisite is missing

Without the offered commissioning entry or with an unmet phone prerequisite, the documented flow cannot start. The entry lives only in the Companion app and depends on OS version, app currency, Bluetooth, proximity, and documented permissions.[2]

How to check: Confirm whether the entry is offered and which documented prerequisite is unmet, without improvising an alternate commissioning path.[2]

No Thread border router is visible for the device network

A Thread border router connects the Thread mesh to other IP networks; for this Home Assistant Matter-over-Thread diagnosis it is required for the device to communicate with Home Assistant outside the Thread mesh. Visibility of a border router is checked in the Thread integration, not assumed from Matter support.[3][4]

How to check: Confirm border-router visibility for the device network in the Thread integration before any credentials reasoning.[3]

Thread credentials are unknown, unsynchronized, or mismatched

Discovery without known credentials cannot commission: the phone must hold the right Thread credentials, synchronized per the documented flow, and the preferred-network label alone never proves the phone selected them.[3]

How to check: Confirm which credentials are known, whether they reached the phone, and whether the phone's selected credentials match the target network.[3]

Commissioning stalls at the network stage on local IPv6 or multicast

With credentials delivered, a stall implicates local IPv6 or multicast delivery across host, virtualization, access-point, or border-router layers. Each layer is separately observable, and no single layer's silence proves another layer healthy.[2][3]

How to check: Confirm the stall stage, then inspect host IPv6, virtualization networking where applicable, access-point multicast behavior, and available server and border-router logs.[3]

Next actions and procedure boundaries

Safe / low risk

Already in another fabric: use the sharing workflow, never a default reset

When the device already belongs to another controller, add it through the documented sharing flow from that controller into Home Assistant's fabric, managing fabrics explicitly. Factory reset and removal from a fabric are destructive boundaries that can destroy existing control relationships, so they never serve as the default path here.[2]

Potentially disruptive

Resolve the documented credential or preferred-network mismatch

Synchronize the Thread credentials to the phone through the documented Companion flow, import or select the target network credentials per the Thread integration, and set the preferred network only where the credentials are known. Verify the phone's selected credentials match the target network before retrying commissioning.[3]

Before changing anything

Risk
Changing credentials, preferred networks, radio firmware, channels, or host network settings affects Thread behavior for every device on the network, not only the failing one.[3]
Safer check
Confirm the exact credential mismatch with known-versus-selected evidence, record the current Thread networks and preferred setting, and confirm a configuration backup exists.[3]
Expected result
After the correction, the phone holds the target network credentials and commissioning proceeds past credential delivery; other Thread devices keep working.[3]
Backup / recovery access
Preserve the recorded Thread network list, preferred setting, and a Home Assistant backup before changing credentials or radio settings.[3]
Rollback
Restore the recorded preferred network and credential state if commissioning does not proceed, then re-collect the credential evidence before further changes.[3]
Read-only

Network-stage stall: hand scoped environment evidence to the operator

Where the stall sits in local IPv6 or multicast delivery, hand the layer-by-layer evidence to the operator: host IPv6 setting, virtualization or container networking notes where applicable, access-point multicast and mDNS behavior, and the available server and border-router log excerpts. Environment network redesign stays outside this page.[2][3]

Read-only

If no branch is proven: preserve the evidence

Record the device model and firmware, phone OS and app versions, Core version, the reached commissioning stage, and the integration and device diagnostics with all setup codes, datasets, and fabric secrets redacted. Send the sanitized evidence for upstream review; a bare timeout never becomes a proven cause.[2]

Warnings and boundaries

Never publish Matter setup QR codes or numeric codes, Thread datasets, fabric credentials, or any other secret while diagnosing. Diagnostics files redact sensitive data; screenshots and pasted logs do not redact automatically.[2]
Never factory-reset a device or remove it from a fabric as a default troubleshooting step: both are destructive boundaries that can destroy existing control relationships and require recommissioning with model-specific recovery.[2]

Sources

Links were reviewed on 2026-09-08. Reachability and automated validation do not replace editorial verification of each claim.

  1. Home Assistant Core release records
    Home Assistant project · Tier B · accessed 2026-09-08
  2. Matter integration and commissioning
    Home Assistant project · Tier A · accessed 2026-09-08
  3. Thread integration and border routers
    Home Assistant project · Tier A · accessed 2026-09-08
  4. OpenThread Border Router integration
    Home Assistant project · Tier A · accessed 2026-09-08