Impossible to start zigbee2mqtt in LXC container

Hi there, I’m migrating my HMA/Zigbee2MQTT configuration to a LXC container in proxmox.
I have migrated all files from the legacy setup onto my LXC container.
the /dev/ttyUSB0 exists. I have temporarily extended the rights to 777 to avoid access issue. The usb device is cc2652rb. I have configured the configuration.yaml this way:
version: 5

homeassistant:

enabled: false

frontend:

enabled: true

mqtt:

base_topic: zigbee2mqtt

server: ‘mqtt://mosquitto.familletaieb.fr:1883’

serial:

port: /dev/ttyUSB0

adapter: ember

advanced:

log_level: debug

network_key:

- 103

- 33

- 159

- 177

- 168

- 173

- 59

- 65

- 200

- 48

- 101

- 111

- 57

- 216

- 32

- 53

pan_id: 59915

ext_pan_id:

- 89

- 135

- 55

- 142

- 82

- 205

- 74

- 70

But zigbee2mqtt doesn’t start with the following error message.
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: Starting Zigbee2MQTT without watchdog.
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] debug: z2m: Removing old log directory ‘/opt/zigbee2mqtt/data/log/2025-06-12.19-03-27’
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] info: z2m: Logging to console, file (filename: log.log)
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] debug: z2m: Can’t load state from file /opt/zigbee2mqtt/data/state.json (doesn’t exist)
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] info: z2m: Starting Zigbee2MQTT version 2.4.0 (commit #unknown)
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] info: z2m: Starting zigbee-herdsman (4.1.0)
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] debug: z2m: Using zigbee-herdsman with settings: ‘“{"network":{"panID":59915,"extendedPanID":[89,135,55,142,82,205,74,70],"channelList":[11],"networkKey":"HIDDEN"},"databasePath":"/opt/zigbee2mqtt/data/database.db","databaseBackupPath":"/opt/zigbee2mqtt/data/database.db.backup","backupPath":"/opt/zigbee2mqtt/data/coordinator_backup.json","serialPort":{"path":"/dev/ttyUSB0"},"adapter":{"disableLED":false}}”’
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] debug: zh:adapter:discovery: Connected devices: [{“path”:“/dev/ttyS0”},{“path”:“/dev/ttyS1”},{“path”:“/dev/ttyS10”},{“path”:“/dev/ttyS11”},{“path”:“/dev/ttyS12”},{“path”:“/dev/ttyS13”},{“path”:“/dev/ttyS14”},{“path”:“/dev/ttyS15”},{“path”:“/dev/ttyS16”},{“path”:“/dev/ttyS17”},{“path”:“/dev/ttyS18”},{“path”:“/dev/ttyS19”},{“path”:“/dev/ttyS2”},{“path”:“/dev/ttyS20”},{“path”:“/dev/ttyS21”},{“path”:“/dev/ttyS22”},{“path”:“/dev/ttyS23”},{“path”:“/dev/ttyS24”},{“path”:“/dev/ttyS25”},{“path”:“/dev/ttyS26”},{“path”:“/dev/ttyS27”},{“path”:“/dev/ttyS28”},{“path”:“/dev/ttyS29”},{“path”:“/dev/ttyS3”},{“path”:“/dev/ttyS30”},{“path”:“/dev/ttyS31”},{“path”:“/dev/ttyS4”},{“path”:“/dev/ttyS5”},{“path”:“/dev/ttyS6”},{“path”:“/dev/ttyS7”},{“path”:“/dev/ttyS8”},{“path”:“/dev/ttyS9”},{“path”:“/dev/ttyUSB0”}]
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] error: z2m: Error while starting zigbee-herdsman
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] error: z2m: Failed to start zigbee-herdsman
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] error: z2m: Check Zigbee2MQTT fails to start/crashes runtime | Zigbee2MQTT for possible solutions
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] error: z2m: Exiting…
Jun 12 19:05:21 zigbee2mqtt pnpm[425]: [2025-06-12 19:05:21] error: z2m: Error: USB adapter discovery error (No valid USB adapter found). Specify valid ‘adapter’ and ‘port’ in your configuration.

I’l really stuck…
If someone could help.
Thanks
Laurent

Your YAML isn’t formatted for the forum so it is impossible to debug, but I suspect it is wrong

“Specify valid ‘adapter’ and ‘port’ in your configuration.”

Please format it correctly.

I would say, change /dev/ttyUSB0 with the correct /dev/serial/by-id/… but I have never setups an LXC.

The correct adapter for CC2652RB is zstack, not ember.

And as already suggested by @francisp, you should use /dev/serial/by-id instead of /dev/ttyUSB*, because the latter may change.

I have tried zstack. Same issue.
docker logs zigbee2mqtt
Using ‘/app/data’ as data directory
Starting Zigbee2MQTT without watchdog.
Onboarding page is available at http://0.0.0.0:8080/
[2025-06-14 00:01:57] debug: z2m: Removing old log directory ‘/app/data/log/2025-06-13.00-16-05’
[2025-06-14 00:01:57] info: z2m: Logging to console, file (filename: log.log)
[2025-06-14 00:01:57] debug: z2m: Can’t load state from file /app/data/state.json (doesn’t exist)
[2025-06-14 00:01:57] info: z2m: Starting Zigbee2MQTT version 2.4.0 (commit #bdb94da46e0461337f4a61b4f2a6bfa5172f608f
)
[2025-06-14 00:01:57] info: z2m: Starting zigbee-herdsman (4.1.0)
[2025-06-14 00:01:57] debug: z2m: Using zigbee-herdsman with settings: ‘“{"network":{"panID":38501,"extendedPanID":[128,236,172,52,141,109,0,227],"channelList":[11],"networkKey":"HIDDEN"},"databasePath":"/app/data/database.db","databaseBackupPath":"/app/data/database.db.backup","backupPath":"/app/data/coordinator_backup.json","serialPort":{"baudRate":115200,"rtscts":true,"path":"/dev/ttyUSB0","adapter":"zstack"},"adapter":{"disableLED":false}}”’
[2025-06-14 00:01:57] debug: zh:adapter:discovery: Connected devices: [{“path”:“/dev/ttyS0”},{“path”:“/dev/ttyS1”},{“path”:“/dev/ttyS10”},{“path”:“/dev/ttyS11”},{“path”:“/dev/ttyS12”},{“path”:“/dev/ttyS13”},{“path”:“/dev/ttyS14”},{“path”:“/dev/ttyS15”},{“path”:“/dev/ttyS16”},{“path”:“/dev/ttyS17”},{“path”:“/dev/ttyS18”},{“path”:“/dev/ttyS19”},{“path”:“/dev/ttyS2”},{“path”:“/dev/ttyS20”},{“path”:“/dev/ttyS21”},{“path”:“/dev/ttyS22”},{“path”:“/dev/ttyS23”},{“path”:“/dev/ttyS24”},{“path”:“/dev/ttyS25”},{“path”:“/dev/ttyS26”},{“path”:“/dev/ttyS27”},{“path”:“/dev/ttyS28”},{“path”:“/dev/ttyS29”},{“path”:“/dev/ttyS3”},{“path”:“/dev/ttyS30”},{“path”:“/dev/ttyS31”},{“path”:“/dev/ttyS4”},{“path”:“/dev/ttyS5”},{“path”:“/dev/ttyS6”},{“path”:“/dev/ttyS7”},{“path”:“/dev/ttyS8”},{“path”:“/dev/ttyS9”},{“path”:“/dev/ttyUSB0”,“manufacturer”:“Silicon Labs”,“serialNumber”:“00_12_4B_00_25_9B_88_8A”,“pnpId”:“usb-Silicon_Labs_slae.sh_cc2652rb_stick_-slaesh_s_iot_stuff_00_12_4B_00_25_9B_88_8A-if00-port0",“vendorId”:“10c4”,“productId”:“ea60”}]
[2025-06-14 00:01:57] info: zh:adapter:discovery: Matched adapter: {“path”:“/dev/ttyUSB0”,“manufacturer”:“Silicon Labs”,“serialNumber”:“00_12_4B_00_25_9B_88_8A”,“pnpId”:"usb-Silicon_Labs_slae.sh_cc2652rb_stick
-_slaesh_s_iot_stuff_00_12_4B_00_25_9B_88_8A-if00-port0”,“vendorId”:“10c4”,“productId”:“ea60”} => zstack: 4
[2025-06-14 00:01:57] debug: zh:controller: Starting with options ‘{“network”:{“networkKeyDistribute”:false,“networkKey”:“HIDDEN”,“panID”:38501,“extendedPanID”:[128,236,172,52,141,109,0,227],“channelList”:[11]},“serialPort”:{“baudRate”:115200,“rtscts”:true,“path”:“/dev/ttyUSB0”,“adapter”:“zstack”},“adapter”:{“disableLED”:false},“databasePath”:“/app/data/database.db”,“databaseBackupPath”:“/app/data/database.db.backup”,“backupPath”:“/app/data/coordinator_backup.json”}’
[2025-06-14 00:01:57] info: zh:zstack:znp: Opening SerialPort with {“path”:“/dev/ttyUSB0”,“baudRate”:115200,“rtscts”:true,“autoOpen”:false}
[2025-06-14 00:01:57] info: zh:zstack:znp: Serialport opened
[2025-06-14 00:01:57] debug: zh:zstack:znp: → SREQ: SYS - ping - {“capabilities”:1}
[2025-06-14 00:01:57] debug: zh:zstack:unpi:writer: → frame [254,0,33,1,32]
[2025-06-14 00:01:57] info: zh:zstack:znp: Writing CC2530/CC2531 skip bootloader payload
[2025-06-14 00:01:57] debug: zh:zstack:unpi:writer: → buffer [239]
[2025-06-14 00:01:58] debug: zh:zstack:znp: → SREQ: SYS - ping - {“capabilities”:1}
[2025-06-14 00:01:58] debug: zh:zstack:unpi:writer: → frame [254,0,33,1,32]
[2025-06-14 00:01:59] info: zh:zstack:znp: Skip bootloader for CC2652/CC1352
[2025-06-14 00:01:59] debug: zh:zstack:unpi:parser: ← [0]
[2025-06-14 00:01:59] debug: zh:zstack:unpi:parser: — parseNext [0]
[2025-06-14 00:01:59] debug: zh:zstack:unpi:parser: ← [0]
[2025-06-14 00:01:59] debug: zh:zstack:unpi:parser: — parseNext [0,0]
[2025-06-14 00:01:59] debug: zh:zstack:znp: → SREQ: SYS - ping - {“capabilities”:1}
[2025-06-14 00:01:59] debug: zh:zstack:unpi:writer: → frame [254,0,33,1,32]
[2025-06-14 00:02:01] debug: zh:zstack:unpi:parser: ← [254,6,65,128,0,2,1,2,7,1,192]
[2025-06-14 00:02:01] debug: zh:zstack:unpi:parser: — parseNext [0,0,254,6,65,128,0,2,1,2,7,1,192]
[2025-06-14 00:02:01] debug: zh:zstack:unpi:parser: → parsed 6 - 2 - 1 - 128 - [0,2,1,2,7,1] - 192
[2025-06-14 00:02:01] debug: zh:zstack:znp: ← AREQ: SYS - resetInd - {“reason”:0,“transportrev”:2,“productid”:1,“majorrel”:2,“minorrel”:7,“hwrev”:1}
[2025-06-14 00:02:01] debug: zh:zstack:unpi:parser: — parseNext
[2025-06-14 00:02:05] debug: zh:zstack:znp: → SREQ: SYS - ping - {“capabilities”:1}
[2025-06-14 00:02:05] debug: zh:zstack:unpi:writer: → frame [254,0,33,1,32]
[2025-06-14 00:02:11] debug: zh:zstack:znp: → SREQ: SYS - ping - {“capabilities”:1}
[2025-06-14 00:02:11] debug: zh:zstack:unpi:writer: → frame [254,0,33,1,32]
[2025-06-14 00:02:17] error: z2m: Error while starting zigbee-herdsman
[2025-06-14 00:02:17] error: z2m: Failed to start zigbee-herdsman
[2025-06-14 00:02:17] error: z2m: Check Zigbee2MQTT fails to start/crashes runtime | Zigbee2MQTT for possible solutions
[2025-06-14 00:02:17] error: z2m: Exiting…
[2025-06-14 00:02:17] error: z2m: Error: Failed to connect to the adapter (Error: SRSP - SYS - ping after 6000ms)
at ZStackAdapter.start (/app/node_modules/.pnpm/[email protected]/node_modules/zigbee-herdsman/src/adapter/z-stack/adapter/zStackAdapter.ts:114:27)
at Controller.start (/app/node_modules/.pnpm/[email protected]/node_modules/zigbee-herdsman/src/controller/controller.ts:133:29)
at Zigbee.start (/app/lib/zigbee.ts:71:27)
at Controller.start (/app/lib/controller.ts:102:13)
at start (/app/index.js:149:5)

type or paste code here

No, different issue :sweat_smile:

Is the USB dongle connected via an extension cable? If not: it should be.

Try the correct /dev/serial/by-id/…

1 Like

Chances are: either your device path changed (in which case follow @francisp’s advice), or the ZHA integration detected your “new” device via discovery and needs to be disabled.