Raspberry Pi 5 hits "cp210x: failed set request 0x12 status: -110" while OTBR-Agent fails with "radio tx timeout"
Maintainer thường phản hồi trong vòng 1 ngày
Chưa có ai nhận issue này.
Đánh giá
- Độ khó
- 4/5
- Thời gian dự kiến
- 3-5 ngày
- Mức phù hợp với người mới
- 43/100
- Loại issue
- Lỗi
- Độ rõ ràng
- Khá rõ ràng
- Mức độ hoạt động
- Sôi nổi
- Công nghệ
- c, linux, raspberry-pi
- Lĩnh vực
- embedded-iot, operating-systems
Hướng nghiên cứu
The report identifies the cp210x driver and the failing CP210X_PURGE request, but names no kernel source file or test. Start by checking the Raspberry Pi kernel version and the cp210x driver path against the reported -110 control-transfer errors; the report includes uname -a, lsusb -t, and dmesg output. Done means identifying whether the driver or USB host path explains the timeouts and the resulting OTBR radio failure.
Do mô hình lập chỉ mục viết ra từ nội dung của issue.
Mô tả
Describe the bug
I am running a Raspberry Pi 5 with two separate CP2102N-based USB dongles (10c4:ea60):
- SONOFF Dongle Plus MG24 (
ttyUSB0on Bus 003) used for Thread networking via OpenThread Border Router (otbr-agent). - ITead Sonoff Zigbee 3.0 USB Dongle Plus (
ttyUSB1on Bus 001) used for Zigbee networking in Home Assistant (ZHA).
Both dongles are connected via USB extension cables to the physical black USB 2.0 ports and placed at an elevated position. Furthermore, both Docker containers run unprivileged and only have their respective /dev/serial/by-id/... device passed through.
The Problem:
The Thread dongle (ttyUSB0) crashes on a regular basis (often after ~1 hour of uptime, even while idle) with radio tx timeout in otbr-agent, causing delays with Thread devices (e.g., IKEA switches) and making OTA updates almost impossible.
At the same time, the kernel logs cp210x ttyUSB0: failed set request 0x12 status: -110 (CP210X_PURGE timeout). Notably, dmesg shows that the Zigbee dongle (ttyUSB1) on the other USB controller also hits cp210x ttyUSB1: failed set request 0x12 status: -110.
I already tested multiple RCP firmwares on the MG24 dongle (official Sonoff 2.4.4 @ 460800 baud and 2.5.3.0 / simplicity_sdk:2024.6.3 @ 460800 baud without flow control from darkxst/silabs-firmware-builder) as well as adding &uart-init-deassert&uart-exclusive to the Radio URL, without resolving the crashes.
Steps to reproduce the behaviour
- Setup Environment:
- Use a Raspberry Pi 5 running a recent Raspberry Pi OS / Debian kernel (e.g.,
6.18.60-rpt-rpi-2712). - Connect two CP2102N-based USB dongles (e.g., SONOFF Dongle Plus / Sonoff Zigbee 3.0 USB Dongle Plus) to the physical black USB 2.0 ports (separate RP1 xHCI root hubs,
Bus 001andBus 003). - Route both dongles via USB extension cables to ensure stable physical link conditions.
- Run Services:
- Run two independent Docker containers (or native background services) that continuously communicate with the serial ports over
cp210x(e.g.,otbr-agentfor OpenThread / Matter onttyUSB0and a ZHA/Zigbee2MQTT container onttyUSB1). - Configure the OpenThread container to use an explicit baudrate (e.g.,
460800) and initialize parameters (&uart-init-deassert&uart-exclusive).
- Trigger / Observe:
- Let the system run idle or under normal smart home load (processing Thread/Zigbee packets).
- After a variable period of uptime (typically ranging from several minutes to ~1 hour), observe the kernel ring buffer (
dmesg). - The kernel will throw recurrent
-110timeouts (-ETIMEDOUT) during control transfers (failed set request 0x12 status: -110, corresponding toCP210X_PURGE), eventually causing the OpenThread stack to crash with aradio tx timeout.
Device (s)
Raspberry Pi 5
System
Logs
OTBR Container Logs (docker logs ha_otbr):
s6-rc: info: service otbr-web: starting
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service otbr-web successfully started
Starting otbr-web...
[INFO]-WEB-----: Running 0.3.0-76fb21d
[INFO]-WEB-----: Border router web started on wpan0
[ERR ]-WEB-----: OpenThread daemon is not running.
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service otbr-agent: starting
Configuring OpenThread firewall...
Configuring OpenThread NAT64...
Starting otbr-agent...
00:00:00.000 [C] P-RadioSpinel-: RCP => [C] Platform------: Reset info: 0x4 (PWR)
00:00:00.000 [C] P-RadioSpinel-: RCP => [C] Platform------: Extended Reset info: 0x401 (HV )
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/network_diag_handler.cpp:1322 lacking some attributes for deviceId 7e529ac01c58368e
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/network_diag_handler.cpp:1266 cannot get LeaderData while detached
[WARN]-UTILS---: /usr/src/ot-br-posix/src/rest/rest_devices_coll.cpp:232 - AddItem - 7e529ac01c58368e
00:00:00.223 [W] Mle-----------: Failed to process Link Accept - Security
s6-rc: info: service otbr-agent successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
00:00:00.488 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.553 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.683 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.705 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.782 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.874 [W] Mle-----------: Failed to process Link Accept - Security
00:00:00.914 [W] Mle-----------: Failed to process Link Accept - Security
00:00:01.056 [W] Mle-----------: Failed to process Link Accept - Security
01:06:15.018 [W] P-RadioSpinel-: radio tx timeout
01:06:15.022 [C] P-RadioSpinel-: Failed to communicate with RCP - no response from RCP during initialization
01:06:15.022 [C] P-RadioSpinel-: This is not a bug and typically due a config error (wrong URL parameters) or bad RCP image:
01:06:15.022 [C] P-RadioSpinel-: - Make sure RCP is running the correct firmware
01:06:15.022 [C] P-RadioSpinel-: - Double check the config parameters passed as `RadioURL` input
01:06:15.022 [C] Platform------: HandleRcpTimeout() at radio_spinel.cpp:2102: RadioSpinelNoResponse
otbr-agent exited with code 6 (by signal 0).
otbr-ingress-deny-src
otbr-ingress-deny-src-swap
otbr-ingress-allow-dst
otbr-ingress-allow-dst-swap
OpenThread firewall rules removed.
s6-rc: info: service legacy-services: stopping
s6-rc: info: service legacy-services successfully stopped
s6-rc: info: service otbr-web: stopping
s6-rc: info: service otbr-agent: stopping
[CRIT]-WEB-----: Stopping web server
otbr-web ended with exit code 0 (signal 0).
s6-rc: info: service otbr-agent successfully stopped
s6-rc: info: service legacy-cont-init: stopping
s6-rc: info: service otbr-web successfully stopped
s6-rc: info: service legacy-cont-init successfully stopped
s6-rc: info: service fix-attrs: stopping
s6-rc: info: service fix-attrs successfully stopped
s6-rc: info: service s6rc-oneshot-runner: stopping
s6-rc: info: service s6rc-oneshot-runner successfully stopped
Kernel Logs (dmesg -T | grep -i cp210x):
[Fri Nov 6 12:17:25 2026] usbcore: registered new interface driver cp210x
[Fri Nov 6 12:17:25 2026] usbserial: USB Serial support registered for cp210x
[Fri Nov 6 12:17:25 2026] cp210x 3-2:1.0: cp210x converter detected
[Fri Nov 6 12:17:25 2026] usb 3-2: cp210x converter now attached to ttyUSB0
[Fri Nov 6 12:17:25 2026] cp210x 1-2:1.0: cp210x converter detected
[Fri Nov 6 12:17:25 2026] usb 1-2: cp210x converter now attached to ttyUSB1
[Fri Nov 6 12:18:21 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 12:27:05 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 12:27:23 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 12:35:56 2026] cp210x ttyUSB1: failed set request 0x12 status: -110
[Fri Nov 6 12:44:05 2026] cp210x ttyUSB1: failed set request 0x12 status: -110
[Fri Nov 6 12:44:52 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 13:17:22 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 14:17:33 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 14:17:48 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 14:34:29 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
[Fri Nov 6 15:40:53 2026] cp210x ttyUSB0: failed set request 0x12 status: -110
Additional context
Configuration (docker-compose.yml)
services:
ha:
image: "homeassistant/home-assistant:2026.11.0"
container_name: "ha"
restart: "unless-stopped"
stop_grace_period: 60s
network_mode: host
cap_add:
- NET_ADMIN
- NET_RAW
environment:
TZ: "Europe/Vienna"
volumes:
- /opt/docker/ha/config:/config
- /opt/docker/ha/data/media:/media
- /etc/localtime:/etc/localtime:ro
- /run/dbus:/run/dbus:ro
devices:
- /dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c617ad1d049eef11b37ad9a661ce3355-if00-port0:/dev/serial/by-id/usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c617ad1d049eef11b37ad9a661ce3355-if00-port0
ha_otbr:
image: "openthread/border-router:v2026.11.0"
container_name: "ha_otbr"
restart: "unless-stopped"
network_mode: host
cap_add:
- NET_ADMIN
environment:
TZ: "Europe/Vienna"
OT_RCP_DEVICE: "spinel+hdlc+uart:///dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_502346d7e4a2ef1195398e6661ce3355-if00-port0?uart-baudrate=460800&uart-init-deassert&uart-exclusive"
OT_INFRA_IF: "eth0"
OT_THREAD_IF: "wpan0"
OT_LOG_LEVEL: "4"
OT_REST_LISTEN_PORT: "8081"
volumes:
- /opt/docker/ha/data/otbr:/data
devices:
- /dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_502346d7e4a2ef1195398e6661ce3355-if00-port0:/dev/serial/by-id/usb-SONOFF_SONOFF_Dongle_Plus_MG24_502346d7e4a2ef1195398e6661ce3355-if00-port0
- /dev/net/tun:/dev/net/tun
ha_matter:
image: "ghcr.io/matter-js/matterjs-server:1.5.5"
container_name: "ha_matter"
restart: "unless-stopped"
network_mode: host
environment:
TZ: "Europe/Vienna"
volumes:
- /opt/docker/ha/data/matter:/data
- /run/dbus:/run/dbus:ro
ha_esphome:
image: "ghcr.io/esphome/esphome:2026.10.2"
container_name: "ha_esphome"
restart: "unless-stopped"
network_mode: host
environment:
ESPHOME_USERNAME: "admin"
ESPHOME_PASSWORD: "<REDACTED>"
volumes:
- /opt/docker/ha/data/esphome:/config
System & USB Information
$ ls -l /dev/serial/by-id/
total 0
lrwxrwxrwx 1 root root 13 Nov 6 12:17 usb-ITead_Sonoff_Zigbee_3.0_USB_Dongle_Plus_c617ad1d049eef11b37ad9a661ce3355-if00-port0 -> ../../ttyUSB1
lrwxrwxrwx 1 root root 13 Nov 6 12:17 usb-SONOFF_SONOFF_Dongle_Plus_MG24_502346d7e4a2ef1195398e6661ce3355-if00-port0 -> ../../ttyUSB0
$ uname -a
Linux raspberrypi 6.18.60+rpt-rpi-2712 #1 SMP PREEMPT Debian 1:6.18.60-1+rpt1 (2026-11-03) aarch64 GNU/Linux
$ lsusb -t
/: Bus 001.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/2p, 480M
|__ Port 002: Dev 002, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
/: Bus 002.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
/: Bus 003.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/2p, 480M
|__ Port 002: Dev 002, If 0, Class=Vendor Specific Class, Driver=cp210x, 12M
/: Bus 004.Port 001: Dev 001, Class=root_hub, Driver=xhci-hcd/1p, 5000M
|__ Port 001: Dev 002, If 0, Class=Mass Storage, Driver=uas, 5000M
$ vcgencmd bootloader_version
2026/10/30 20:55:54
version 42d1b6a942a00e0814415cee30d97b90a1ae394b (release)
timestamp 1793393754
update-time 1793955317
capabilities 0x0000007f
$ vcgencmd get_throttled
throttled=0x0
Bus 001 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x10c4 Silicon Labs
idProduct 0xea60 CP210x UART Bridge
bcdDevice 1.00
iManufacturer 1 ITead
iProduct 2 Sonoff Zigbee 3.0 USB Dongle Plus
iSerial 3 c617ad1d049eef11b37ad9a661ce3355
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0020
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Bus 003 Device 002: ID 10c4:ea60 Silicon Labs CP210x UART Bridge
Negotiated speed: Full Speed (12Mbps)
Device Descriptor:
bLength 18
bDescriptorType 1
bcdUSB 2.00
bDeviceClass 0 [unknown]
bDeviceSubClass 0 [unknown]
bDeviceProtocol 0
bMaxPacketSize0 64
idVendor 0x10c4 Silicon Labs
idProduct 0xea60 CP210x UART Bridge
bcdDevice 1.00
iManufacturer 1 SONOFF
iProduct 2 SONOFF Dongle Plus MG24
iSerial 3 502346d7e4a2ef1195398e6661ce3355
bNumConfigurations 1
Configuration Descriptor:
bLength 9
bDescriptorType 2
wTotalLength 0x0020
bNumInterfaces 1
bConfigurationValue 1
iConfiguration 0
bmAttributes 0x80
(Bus Powered)
MaxPower 100mA
Interface Descriptor:
bLength 9
bDescriptorType 4
bInterfaceNumber 0
bAlternateSetting 0
bNumEndpoints 2
bInterfaceClass 255 Vendor Specific Class
bInterfaceSubClass 0 [unknown]
bInterfaceProtocol 0
iInterface 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x02 EP 2 OUT
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
Endpoint Descriptor:
bLength 7
bDescriptorType 5
bEndpointAddress 0x82 EP 2 IN
bmAttributes 2
Transfer Type Bulk
Synch Type None
Usage Type Data
wMaxPacketSize 0x0040 1x 64 bytes
bInterval 0
- Ngôn ngữ chính
- C
- Star
- 13.3k
- Fork
- 5.5k
- Merge trung bình
- 3 ngày 20 giờ
- Pull request đã merge (30 ngày)
- 27
Chuẩn bị môi trường
Dự án này không cung cấp dev container, Dockerfile hay hướng dẫn đóng góp, nên bạn cần tự thiết lập môi trường: hãy bắt đầu từ README và xem hướng dẫn đóng góp lần đầu của chúng tôi để biết các bước chung.
Bắt đầu từ đâu
- Đọc hết issue, rồi đọc hướng dẫn đóng góp của dự án.
- Bình luận trên issue rằng bạn sẽ nhận — tránh hai người làm cùng một việc.
- Fork repository và làm thay đổi trên một nhánh.
- Mở pull request có tham chiếu số hiệu của issue.
Issue khác của raspberrypi/linux
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 63/100
raspberrypi/linux#7718 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
raspberrypi/linux#7415 · 2 bình luận · 1 reaction ·
Maintainer thường phản hồi trong vòng 1 ngày
-
rp1-cfe doesn't forward V4L2_EVENT_SOURCE_CHANGE event from csi-2 sensor driver to userspace appĐang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
raspberrypi/linux#7399 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Documentation update requiredĐang mở
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 82/100
raspberrypi/linux#7357 · 1 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 68/100
raspberrypi/linux#7054 · 2 bình luận ·
Maintainer thường phản hồi trong vòng 1 ngày
Tất cả issue của raspberrypi/linux
Issue tương tự
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 85/100
Maintainer thường phản hồi trong vòng 1 ngày
-
SPIDevice selects an active-high device as soon as it is createdCó thể đã có người làm @mikeysklar đã nhận hôm nay. Đang mở
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 73/100
adafruit/circuitpython#11869 ·
Maintainer thường phản hồi trong vòng 1 ngày
-
Độ khó 1/5 Dưới một giờ Mức phù hợp với người mới 78/100
gnif/LookingGlass#1352 ·
-
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 75/100
Maintainer thường phản hồi trong vòng 1 ngày
-
bug
Độ khó 2/5 1-3 giờ Mức phù hợp với người mới 72/100
kovidgoyal/kitty#10862 ·
Maintainer thường phản hồi trong vòng 1 ngày