Help Needed: Zigbee2MQTT Startup Error with Sonoff Zigbee Dongle P and E (HOST_FATAL_ERROR)

Hello everyone,

I’m at my wit’s end and urgently need your help with a problem concerning Zigbee2MQTT (Z2M) and my Sonoff Zigbee USB Dongles.

My Problem:
I own both a Sonoff Zigbee 3.0 USB Dongle Plus (P) and a Sonoff Zigbee USB Dongle Plus (E) (V2). I want to use one of them for Zigbee2MQTT in Home Assistant, but both produce the exact same error that I just can’t resolve.

When I start Z2M and fill out the onboarding window (adapter path and baud rate), then click “Submit”, I consistently get the following messages in the log:

Starting Zigbee2MQTT without watchdog.
Onboarding page is available at http://0.0.0.0:8099/
[2025-07-14 22:20:59] info: 	z2m: Logging to console, file (filename: log.log)
[2025-07-14 22:21:00] info: 	z2m: Starting Zigbee2MQTT version 2.5.1 (commit #unknown)
[2025-07-14 22:21:00] info: 	z2m: Starting zigbee-herdsman (4.3.1)
[2025-07-14 22:21:00] info: 	zh:adapter:discovery: Matched adapter: {"path":"/dev/ttyUSB0","manufacturer":"Itead","serialNumber":"8c93c99c0015ef1198746fb8bf9df066","pnpId":"usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_8c93c99c0015ef1198746fb8bf9df066-if00-port0","vendorId":"10c4","productId":"ea60"} => ember: 4
[2025-07-14 22:21:01] info: 	zh:ember: Using default stack config.
[2025-07-14 22:21:01] info: 	zh:ember: ======== Ember Adapter Starting ========
[2025-07-14 22:21:01] info: 	zh:ember:ezsp: ======== EZSP starting ========
[2025-07-14 22:21:01] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2025-07-14 22:21:01] info: 	zh:ember:uart:ash: Serial port opened
[2025-07-14 22:21:01] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2025-07-14 22:21:06] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2025-07-14 22:21:06] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2025-07-14 22:21:11] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2025-07-14 22:21:11] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2025-07-14 22:21:16] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2025-07-14 22:21:16] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2025-07-14 22:21:21] info: 	zh:ember:uart:ash: ======== ASH Adapter reset ========
[2025-07-14 22:21:21] info: 	zh:ember:uart:ash: ======== ASH starting ========
[2025-07-14 22:21:26] error: 	z2m: Error while starting zigbee-herdsman
[2025-07-14 22:21:26] error: 	z2m: Failed to start zigbee-herdsman
[2025-07-14 22:21:26] error: 	z2m: Check https://www.zigbee2mqtt.io/guide/installation/20_zigbee2mqtt-fails-to-start_crashes-runtime.html for possible solutions
[2025-07-14 22:21:26] error: 	z2m: Exiting...
[2025-07-14 22:21:26] error: 	z2m: Error: Failed to start EZSP layer with status=HOST_FATAL_ERROR.
at EmberAdapter.initEzsp (/app/node_modules/.pnpm/[email protected]/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:665:19)
at EmberAdapter.start (/app/node_modules/.pnpm/[email protected]/node_modules/zigbee-herdsman/src/adapter/ember/adapter/emberAdapter.ts:1547:24)
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:68:27)
at Controller.start (/app/lib/controller.ts:101:13)
at start (/app/index.js:149:5)

The critical error appears to be Error: Failed to start EZSP layer with status=HOST_FATAL_ERROR..

My Hardware:

image

What I have tried so far:

  • ZHA is not enabled
  • I have tried all USB ports on the Raspberry Pi 3 Model B.
  • I have always used a USB extension cable that should be suitable for data transfer.
  • I have re-flashed both adapters.
    • The Dongle-E is currently running with the firmware: https://github.com/darkxst/silabs-firmware-builder/blob/51dd288932592aa526875d94e8d7bd165153a06f/firmware_builds/zbdonglee/ncp-uart-hw-v7.2.2.0-zbdonglee-115200.gbl
    • I flashed the firmware using the online tool https://darkxst.github.io/silabs-firmware-builder/.

At this point, I have no idea what else to do or what I’m doing wrong. It’s frustrating that I keep getting the same error regardless of which dongle I use.

Does anyone have an idea what could be causing this HOST_FATAL_ERROR or what further steps I could take to resolve the issue?

Thank you in advance for your help!

If you’re using the adapter: ember configuration, you’ll need to upgrade your ZBDongle-E firmware to v7.4.3 or later . We recommend using SONOFF Dongle Flasher for the update.

I Have tried ember because multiple posts to the problem stated this.
If i start it with ezsp i get the following error.

Onboarding page is available at http://0.0.0.0:8099/
[2025-07-15 08:35:27] info: 	z2m: Logging to console, file (filename: log.log)
[2025-07-15 08:35:28] info: 	z2m: Starting Zigbee2MQTT version 2.5.1 (commit #unknown)
[2025-07-15 08:35:28] info: 	z2m: Starting zigbee-herdsman (4.3.1)
[2025-07-15 08:35:28] info: 	zh:adapter:discovery: Matched adapter: {"path":"/dev/ttyUSB0","manufacturer":"Itead","serialNumber":"8c93c99c0015ef1198746fb8bf9df066","pnpId":"usb-Itead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_V2_8c93c99c0015ef1198746fb8bf9df066-if00-port0","vendorId":"10c4","productId":"ea60"} => ezsp: 4
[2025-07-15 08:35:29] warning: 	zh:ezsp: 'ezsp' driver is deprecated and will only remain to provide support for older firmware (pre 7.4.x). Migration to 'ember' is recommended. If using Zigbee2MQTT see https://github.com/Koenkk/zigbee2mqtt/discussions/21462
[2025-07-15 08:35:39] error: 	zh:ezsp:uart: --> Error: Error: {"sequence":-1} after 10000ms
[2025-07-15 08:35:39] error: 	zh:ezsp:ezsp: Connection attempt 1 error: Error: Failure to connect
[2025-07-15 08:36:19] error: 	zh:ezsp:uart: --> Error: Error: {"sequence":-1} after 10000ms
[2025-07-15 08:36:19] error: 	zh:ezsp:ezsp: Connection attempt 2 error: Error: Failure to connect

Update v7.4.4 firmware via SONOFF Dongle Flasher and try again.

I was almost in the same boat except i was using a raspberry 3+ and i wanted to run zifbee2mqtt and zwave2mqtt both in a seperate docker.
This is the proces i folowed to get a working system

Working environment:
Raspberry Pi 3 Model B Plus Rev 1.3 IP: 10.0.0.218
Sysinfo: Linux USBGW04 6.1.77-v8+ #1730 SMP PREEMPT Thu Feb 8 15:26:11 GMT 2024 aarch64 GNU/Linux
OS version: Raspberry Pi OS Lite 6.12 downgraded to 6.1.77-v8+ for compatibility issues
PRETTY_NAME: “Debian GNU/Linux 12 (bookworm)”
NAME: “Debian GNU/Linux”
VERSION_ID: “12”
VERSION: “12 (bookworm)”
VERSION_CODENAME: bookworm
ID: debian
32/64: aarch64

Home assistant: http://10.0.0.218:8123/
Installatiemethode: Home Assistant OS
Core: 2025.6.1
Supervisor: 2025.06.2
Operating System: 15.2
Frontend: 20250531.3

Zwave controller: http://10.0.0.218:8091/#/control-panel
zwave-js-ui: 10.7.0.766b673
zwave-js: 15.7.0
home id: 3791343079
home hex: 0xe1fb4de7

Z-Wave.Me ZMEEUZBB
fw: v5.39
SDK: v6.82.1

Zigbee controller: http://10.0.0.218:8080/#/
Zigbee2MQTT versie: 2.4.0 commit: bdb94da46e0461337f4a61b4f2a6bfa5172f608f
Coördinator type: EmberZNet
Coordinator revisie: 7.4.4 [GA]
Coordinator IEEE adres: 0xe8e07efffeef1a52
Versie frontend: 0.9.13
zigbee_herdsman_converters_version: 23.53.0
zigbee_herdsman_version: 4.1.0

Sonoff ZBDongle-E / EFR32MG21 / ember / Sn. 30621039F9
fw 7.4.4.0 (coming from fw 6.10.3.0b297)
fw upgrade via Chrome: Silabs Firmware Flasher | Web based flasher for ZB-GW04 and ZBDongle-E. MultiPAN RCP firmware enables these devices to be used with Silabs Multiprotocol Addon in Home Assistant. Allow Zigbee and Thread to co-exist on the same dongle. Get ahead of the tech an experiment with Matter!

Access Web Interfaces:
Z-Wave JS UI: http://<raspberrypi_ip>:8091
Zigbee2MQTT: http://<raspberrypi_ip>:8080
Mosquitto (MQTT broker) is running on port 1883

Preparation:
Download Pi OS 64b Lite and Raspberry Pi Imager from https://www.raspberrypi.com/software
Create SD card with Raspberry Pi Imager with own settings like user, hostname, ssh etc
Set in your router /DHCP server a fixed IP adress on MAC of pi
Put SD card in pi en boot
Use putty to get SSH access

Update pi:
Log in via ssh
change password via passwd indien nodig
sudo apt update
sudo apt upgrade
sudo apt dist-upgrade
Check root: id -u (0=root en 1000 = user dan gebruik sudo)
check config: sudo raspi-config en update tool als eerste, daarna check hostname en timezone
reboot: sudo reboot

Downgrade kernel because of compatibily issues with z-wave:
This is because kernel 6.12 crashes Zwave
source: Raspberry Pi 3B+ Upgrades breaks ZwaveJS-UI Container · Issue #3639 · zwave-js/zwave-js-ui · GitHub
source: Raspberry Pi 3B+ Upgrades breaks ZwaveJS-UI Container · zwave-js/zwave-js-ui · Discussion #3880 · GitHub
How to set up ZWavejs2MQTT on a Raspberry Pi and integrate it with Home-Assistant - #27 by edwin-2023
check OS version: cat /etc/os-release
check kernel version: uname -a
Downgrade to kernel 6.1.77-v8+ #1730 SMP PREEMPT Thu Feb 8 15:26:11: sudo rpi-update af3ab905d42
Sudo reboot now

Install Docker en Docker Compose:
curl -sSL https://get.docker.com | sh
sudo usermod -aG docker $USER
sudo apt-get install docker-compose-plugin -y
sudo reboot
check docker version: docker version
@June28, 2025 Version: 28.2.2

Identify Your USB Devices:
ls /dev/serial/by-id/
usb-0658_0200-if00 (Z-Wave-Plus)
usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20240217160818-if00 (Zigbee)

Create folder structure:
cd ~
mkdir -p ~/docker
mkdir -p ~/docker/zwave-plus2mqtt
mkdir -p ~/docker/zwave-plus2mqtt/store
mkdir -p ~/docker/zigbee2mqtt
mkdir -p ~/docker/zigbee2mqtt/data

Create Your docker-compose.yml:
first create the SESSION_SECRET with openssl rand -base64 32
note the answer: xxxxYYYxxxxx
cd ~/docker
nano docker-compose.yml

-------- start---------

version: “3.8” # Obsolete attribute but was used to point “Use Docker Compose file format version 3.8”

services:
zwave2mqtt:
image: zwavejs/zwave-js-ui:latest # Official Docker image for Z-Wave JS UI (formerly zwave2mqtt) = 2.4.0 on june 28, 2025
container_name: zwave-plus2mqtt # identical to folder name but ongelijk aan standaard, maar logisch en duidelijk
ports:
- “8091:8091” # Z-Wave JS UI web interface
- “3000:3000” # WebSocket interface (used by Home Assistant integration)
devices:
- “/dev/serial/by-id/usb-0658_0200-if00:/dev/zwave” # Adjust to your actual Z-Wave stick path = ZMEEUZBB www.z-wave.me Sn. 29.21.01
environment:
- SESSION_SECRET=xxxxYYYxxxxx # Random secret for session cookies (generate securely)
volumes:
- ./zwave-plus2mqtt/store:/usr/src/app/store # Persist Z-Wave configuration data
restart: unless-stopped # Auto-restart unless you manually stop it

zigbee2mqtt:
image: koenkk/zigbee2mqtt:latest # Official Zigbee2MQTT Docker image = 2.4.0 on june 28, 2025
container_name: zigbee2mqtt # Friendly container name identical to folder name.
ports:
- “8080:8080” # Zigbee2MQTT frontend web UI
devices:
- “/dev/serial/by-id/usb-ITEAD_SONOFF_Zigbee_3.0_USB_Dongle_Plus_V2_20240217160818-if00:/dev/ttyZigbee” # Replace with your Zigbee stick’s ID
volumes:
- ./zigbee2mqtt/data:/app/data # Persist Zigbee2MQTT configuration and data
- /run/udev:/run/udev:ro # Required for device access inside the container
environment:
- TZ=Europe/Amsterdam # Timezone setting (adjust for your location)
restart: unless-stopped # Same restart policy as above
-------- end ---------------

exit nano met CNTRL-X and press Y

Start Docker:
cd ~/docker
docker compose up -d

Docker containers info:
check docker status: sudo systemctl status docker
list dockers: docker ps -a
Stop alle docker’s met: docker stop $(docker ps -q)
docker start/stop/restart zwave-plus2mqtt
docker start/stop/restart zigbee2mqtt

HomeAssistant preparation:
ga naar instellingen\personen en maak een mqtt user aan, bv mqttuser met wachtwoord en inloggen toestaan
ga naar instellingen\apparaten en diensten en installeer integratie MQTT en vul credentials van mqtt user in
Go to Supervisor\Add-ons
Select Mosquitto broker under Official add-ons
Click INSTALL
Click START
Go to Configuration → Integrations.
MQTT will show as “Discovered” (If not add a new integration and search for “MQTT”).
Select CONFIGURE
restart HAOS
Done.

After First Launch:
Stop dockers: docker stop $(docker ps -q)

edit zigbee config file sudo nano ./zigbee2mqtt/data/configuration.yaml -----start------- version: 4 mqtt: base_topic: zigbee2mqtt server: mqtt://10.0.0.227:1883 user: user password: xxxxx serial: port: /dev/ttyZigbee adapter: ember baudrate: 115200 rtscts: false advanced: log_level: info channel: 20 network_key: - 53 - 132 - 206 - 109 - 87 - 67 - 58 - 48 - 132 - 49 - 53 - 22 - 163 - 244 - 19 - 86 pan_id: 15728 ext_pan_id: - 22 - 242 - 156 - 228 - 209 - 176 - 66 - 12 frontend: enabled: true port: 8080 homeassistant: enabled: true ----einde---- open Z-Wave JS UI: http://10.0.0.218:8091 >> Goto Settings\Z-Wave and fill out: Disable "soft reset" at Startup and recovery behavior section. Serial Port /dev/zwave Network Key If you are migrating from another controller with secure nodes insert your network key her, if not generate a new key with the refresh-symbol. Migrating non-secure nodes does not require a Network Key. Optional Expand Zwave\Driver logs and (to reduce I/O on SD-Card); disable "Enable driver logs" disable "Log to file" Expand Zwave\Misc settings and check if "Enclusion/Exclusion timeout" is set to 30 seconds >> Go To Control Panel to see the Z-Wave Network Nodes (If you have nodes yet, else you will just see the controller). It can take some time for the information to be visible. Here you can select Start inclusion under Actions, and then > to include new nodes. If you select a node you can scroll down to the bottom and view/control it, you can also change Node Name and Location. I recommend giving them a meaningful name. In my system I rename all my nodes to zwave_.and document what is what in a separate spreadsheet. You should rename all your nodes before going to the next step. If you want to give them a location you can, but “Location” will be inserted before “Name” in the Home-Assistant entities later, so I prefer leaving “Location” empty here. Make sure settings\MQTT Gateway is disabled >> Goto Settings\HomeAssistant Enable "WS Server” on "Server Port" 3000 "Server Host" 0.0.0.0 Disable "DNS Discover" Restart container (upper right)

Test open ports:
Open ssh en test of poort 3000 open staat met sudo netstat -tulpna | grep 3000 als het goed is krijg je dan zoiets;
tcp 0 0 0.0.0.0:3000 0.0.0.0:* LISTEN 935/docker-proxy
tcp6 0 0 :::3000 :::* LISTEN 941/docker-proxy

zwave configuration in Home Assistant:
Goto Settings\Devices&Services en klick on + (add)
Search for Z-Wave en select manual config
fill in ws://<IP-ADRESS_OF_RASPBERRYPI):3000
Now it will find the Z-wave stick and nodes (if present). Fill in rooms etc
Of nodes are present, entities wil be found.
New nodes via the “Z-Wave JS UI”: http://<raspberrypi_ip>:8091
Yes, z-wave is working

Zigbee configuration
Zigbee2MQTT: http://10.0.0.218:8080
Run onboarding proces.
Enable “Frontend enabled?”
Enable “Home Assistant enabled?”
Klik op submit
Yes gateway werkt.
Zigbee configuration in HomeAssistant:

Go to Settings\Add-ons
Select Mosquitto broker under Official add-ons
Click INSTALL
Click START
Go to Settings\Configuration → Integrations.
MQTT will show as “Discovered” (If not add a new integration and search for “MQTT”).
Select CONFIGURE
Done

Optional:
Remove interfering programs (unsure if this is still needed):
sudo apt-get purge modemmanager
sudo systemctl disable hciuart

Manuals:
zwave2mqtt: Z-Wave JS UI
forum: forum - Z-Wave.Me forum
zigbee2mqtt: Getting started | Zigbee2MQTT
supported devices: Zigbee2MQTT

Check logs:
docker logs zigbee2mqtt
docker logs zwavejs2mqtt