Zigbee2MQTT / Troubleshooting

Zigbee2MQTT Cannot Open the Adapter Serial Port

Separate a missing USB device from an incorrect serial path, runtime mapping, access denial or a competing coordinator owner.

First locate the failure stage. The documented discovery message includes No valid USB adapter found; Cannot lock port is a different access problem. Neither makes every coordinator startup failure a missing-device case.[1]

Applicability

Products
Zigbee2MQTT
Scope
For a local USB coordinator on Linux when current Zigbee2MQTT logs show discovery or serial-open failure. Covers native Linux and documented Docker runtime checks. Home Assistant is environment/ownership context only. Excludes network coordinators, MQTT, pairing, RF issues, unavailable end devices and errors after successful serial opening. Add-on-specific corrections are a packaging-owner handoff.[1][2]
Last verified

Symptoms

  • The current startup or reconnect log points to USB discovery, a nonexistent configured device, denied access or a locked port before normal coordinator operation.[1]

Quick diagnosis

Gather current evidence before choosing a branch. Unknown observations do not establish a failed component.

Read-only

Read the current failure, not an old notification

Record the time and error stage from existing logs. If serial opening succeeded and a protocol handshake failed later, leave this intent. Keep identifiers and complete logs private.[1]

Read-only

Inspect existing stable device paths

On the Linux host, list existing by-id entries and identify the actual adapter, including the correct interface if there is more than one. A missing directory does not alone prove the USB device is absent; consult OS hardware evidence.[2]

ls -l /dev/serial/by-id
Read-only

Identify the runtime before comparing paths

Record native Linux, Docker or Home Assistant add-on packaging. In Docker, host and container device paths may differ. Do not paste Docker configuration flags into an add-on UI.[3][5]

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 local USB discovery or open failure?

Use current logs on Linux. Successful serial opening followed by a later error is outside this intent.[1]

Read the complete diagnostic tree without using the controls
  1. Is this a local USB discovery or open failure?

    Use current logs on Linux. Successful serial opening followed by a later error is outside this intent.[1]

    • Yes, USB discovery/open stageIs the expected adapter visible to the host OS?
    • No, another stage or environmentUse the actual failure stage's documentation
  2. Is the expected adapter visible to the host OS?

    Use actual hardware identity, not only a guessed serial filename.[2][4]

    • Yes, the expected device is visibleWhich path comparison applies?
    • No, the expected device is absentInvestigate OS-level device visibility
    • Host visibility is unknownPreserve an adapter-access evidence packet
  3. Which path comparison applies?

    Compare actual and configured port; in Docker compare both sides of the device mapping.[2][3]

    • Existing path and runtime mapping matchIs there actual runtime permission-denied evidence?
    • Configured serial path is wrongReview the configured serial path
    • Runtime device mapping is missing or wrongReview the runtime device mapping
    • Packaging or path is uncertainPreserve an adapter-access evidence packet
  4. Is there actual runtime permission-denied evidence?

    Distinguish an existing inaccessible device from a missing device path.[1][3]

    • Yes, runtime access is deniedReview least-privilege device access
    • No denial is establishedIs a competing coordinator owner established?
    • Access evidence is unknownPreserve an adapter-access evidence packet
  5. Is a competing coordinator owner established?

    Identify the process/integration actually using this adapter before planning interruption.[4][1]

    • Yes, another owner is confirmedPlan exclusive coordinator ownership
    • No competing owner is establishedDoes exact hardware documentation show a configuration mismatch?
    • Ownership is unknownPreserve an adapter-access evidence packet
  6. Does exact hardware documentation show a configuration mismatch?

    Compare the adapter family; do not treat a later handshake failure as proof of a missing port.[2]

    • Yes, an adapter-family mismatch is evidencedRequest exact adapter configuration review
    • The port opened and the failure is laterUse the actual failure stage's documentation
    • No supported mismatch or still uncertainPreserve an adapter-access evidence packet
  7. Use the actual failure stage's documentation

    Record the stage, runtime and error. MQTT, pairing, RF and post-open protocol failures need separate diagnosis; no reset is warranted by this tree.[1]

  8. Investigate OS-level device visibility

    Send expected identity and host observations to the hardware/host owner; preserve the current coordinator configuration.[2][4]

  9. Review the configured serial path

    Provide the observed path and configured value. Request a bounded correction to an existing appropriate path, not a guessed tty number.[2]

  10. Review the runtime device mapping

    Give the deployment owner both device paths and packaging details. Host access does not establish container access.[3][5]

  11. Review least-privilege device access

    Send current denial evidence and runtime identity to the owner. Do not make the device world-writable.[3]

  12. Plan exclusive coordinator ownership

    Name the established competing owner. Any service stop or ownership switch requires the disruptive-change prerequisites below.[4]

  13. Request exact adapter configuration review

    Use the identified hardware's official instructions. No guessed adapter setting or firmware action is provided.[2]

  14. Preserve an adapter-access evidence packet

    Keep current error stage, device identity, paths, mapping and access observations. Ask the packaging/adapter owner for the missing evidence.[2][3]

Detailed diagnosis

Read-only

1. Establish host visibility

Compare the expected coordinator identity with current OS hardware evidence. Do not interpret the absence of a guessed ttyUSB/ttyACM number as physical failure.[2][4]

Read-only

2. Compare actual and configured paths

Read the configured serial port and compare it with the existing adapter path. A stable by-id entry is useful only when it exists and refers to this adapter; do not invent a replacement path.[2]

Read-only

3. Compare host and runtime access

For Docker, inspect the deployment's source device and container destination. The application must use the runtime destination; host visibility alone is insufficient. The documented container setup also describes read-only udev data for autodetection.[3]

Read-only

4. Separate denial from absence

Inspect the device ownership and the actual runtime identity with the deployment owner. Require a current access-denied observation; a missing path is not proven permission denial.[3][1]

Read-only

5. Identify any competing coordinator owner

A locked-port error warrants checking which process owns the adapter. Home Assistant documents that one coordinator cannot be shared with another controlling application. Do not stop ZHA merely because it is installed.[4][1]

Read-only

6. Check the exact adapter family

Compare the configured adapter selection with the official documentation for the exact hardware. Do not guess a value or flash firmware. Successful opening followed by another failure requires a different investigation.[2]

Supported scenarios

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

Path or runtime mapping differs

An OS-visible device and the path available to the process are separate observations.[3]

How to check: Compare the host entry, mapping destination and configured serial port.[2][3]

Access is denied or the coordinator is occupied

Permission evidence and an existing owner distinguish two different access boundaries.[1][4]

How to check: Inspect the current runtime identity and actual ownership, without broadening access.[3]

Configuration needs hardware-specific review

The adapter family is not determined by an arbitrary example configuration.[2]

How to check: Identify the exact hardware and its official adapter instructions.[2]

Next actions and procedure boundaries

Read-only

Missing device: host-owner investigation

Provide expected identity and current hardware evidence. Ask the host owner to establish visibility; do not reset the coordinator or unplug devices as a generic remote test.[2][4]

Read-only

Path or mapping mismatch: deployment review

Record the actual versus configured path and, for Docker, both mapping sides. The deployment owner should plan only the evidenced correction using the applicable packaging instructions.[2][3][5]

Read-only

Permission or ownership mismatch: bounded review

Provide the runtime identity, exact denial or established competing process. Request least-privilege access or an explicit choice of coordinator owner, not blanket permission changes.[3][4]

Potentially disruptive

Before a coordinator configuration or owner change

Planning boundary only: a restart or ownership switch can interrupt automations. An authorized Home Assistant/Zigbee operator must agree on the intended owner and affected services before any separate action.[4]

Before changing anything

Risk
Restarting or stopping the controlling application can interrupt Zigbee automations.[4]
Safer check
First establish a real path, access or ownership mismatch from current evidence.[3][4]
Expected result
A proposed change should allow the intended runtime to open the intended adapter without a competing owner; subsequent protocol errors are a separate diagnosis.[2][4]
Backup / recovery access
Before work, preserve the existing deployment configuration and available coordinator backups using that stack's supported process. Identify the responsible operator and affected automations.[4]
Rollback
Do not promise a universal coordinator rollback. The owner must verify restoration of the previous runtime/configuration before changing it; no reset, migration or firmware procedure is supplied here.[4]
Read-only

Adapter mismatch or unresolved evidence

Give the operator the exact adapter, runtime, current error stage and sanitized comparisons. Consult model-specific documentation; do not invent an adapter value. After-open failures leave this serial-access page.[2][1]

Warnings and boundaries

Do not use chmod 777, privileged-container access or blanket group widening as a shortcut. Establish the actual device and runtime access requirement first.[3]
Do not reset, flash, re-pair devices or disable ZHA blindly. This page stops at serial access; it does not repair a Zigbee network.[4][1]

Sources

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

  1. Zigbee2MQTT fails to start/crashes runtime
    Zigbee2MQTT · Tier A · accessed 2026-09-05
  2. Adapter settings
    Zigbee2MQTT · Tier A · accessed 2026-09-05
  3. Docker
    Zigbee2MQTT · Tier A · accessed 2026-09-05
  4. Zigbee Home Automation
    Home Assistant · Tier A · accessed 2026-09-05
  5. Home Assistant addon
    Zigbee2MQTT · Tier A · accessed 2026-09-05