Home Assistant Core (Docker) on Raspberry Pi 5 – Sonoff ZBDongle-P fails during boot but works after startup

I recently migrated my Home Assistant installation from a Raspberry Pi 3B running Home Assistant OS to a Raspberry Pi 5 running Raspberry Pi OS with Home Assistant Core in Docker.

Hardware

  • Raspberry Pi 5 8GB
  • Official Raspberry Pi 27W USB-C power supply
  • USB 3 SSD (system storage)
  • WM1308 LoRaWAN concentrator
  • Sonoff ZBDongle-P (Silicon Labs CP2102N)

The Zigbee dongle was connected to a USB 2.0 port (also tested with a USB extension cable and ferrite choke).

Symptoms

The Zigbee dongle was always detected correctly during boot:

cp210x converter detected
usb 3-2: cp210x converter now attached to ttyUSB0

However, about 30–140 seconds after boot, the kernel repeatedly logged:

cp210x ttyUSB0: failed set request 0x12 status: -110

As a result, ZHA failed to initialize the coordinator correctly.

Interestingly, unplugging and reconnecting the USB dongle immediately fixed the problem without requiring a reboot.

What was not the cause

I ruled out the following:

  • Power supply (official 27W PSU)
  • Faulty Sonoff ZBDongle-P
  • USB port issues
  • Docker USB passthrough (the container could access /dev/ttyUSB0)
  • ModemManager (removed)
  • brltty (not installed)
  • USB extension cable / ferrite
  • USB 2 vs USB 3 port

Root cause

The issue turned out to be a boot-time race condition.

Docker was configured with:

RestartPolicy: unless-stopped

This caused Home Assistant to start immediately after the Docker daemon became available.

Apparently, ZHA attempted to initialize the CP2102 interface while it was still not fully ready, resulting in repeated CP210x timeout errors (status -110).

Solution

I disabled Docker’s automatic restart for the Home Assistant container and created a systemd service to start it instead.

Before starting the container, the service waits until the Zigbee device exists and then adds a short delay:

ExecStartPre=/bin/sh -c 'until [ -e /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_... ]; do sleep 1; done'
ExecStartPre=/bin/sleep 45
ExecStart=/usr/bin/docker start -a homeassistant

After adding the startup delay:

  • No more cp210x ... failed set request 0x12 status: -110
  • ZHA initializes correctly on every boot
  • Zigbee network restores normally
  • No need to unplug/replug the dongle

Additional migration note

When restoring a Home Assistant OS backup to Home Assistant Core (Docker), remember that the Home Assistant data inside the backup is stored under the data/ directory. Copy the contents of data/ into the Docker /config directory rather than extracting the archive directly into /config.

Also, when restoring ZHA, I received the message:

“Your old adapter was not found…”

Since I was using the same physical Sonoff ZBDongle-P on the new Raspberry Pi, selecting “Skip resetting the old adapter” successfully restored the existing Zigbee network. All devices and the network topology came back correctly.

Hopefully this helps anyone seeing CP210x timeout errors on a Raspberry Pi 5 with Home Assistant Core running in Docker.

Version information

HA Core 2026.7.2 (Container)
UI 20260624.5
Debian GNU/Linux 13 (trixie)
6.18.34+rpt-rpi-2712
Docker version 29.6.1, build 8900f1d

You have that power supply that is sized to properly run the PI itself, then you have an SSD and several other USB devices powering from it.
It might be OK, but I suggest a properly (separately) powered USB Hub to take some of that power load.

You may wish to document this in a GitHub report as the developers may be able to tweak the code to work with these scenarios for the proactive benefit of others.