Zigbee end device "randomly" factory resets; seems due to handling of ESP_ZB_ZDO_SIGNAL_LEAVE #11381
Open
1 task done
Labels
Milestone
Board
dfrobot_beetle_esp32c6
Device Description
Small esp32c6 board powered via USB-C
Hardware Configuration
I2C pins are wired up to DF Robot O2 sensor; powered via USB-C port
Version
v3.2.0
IDE Name
arduino-cli
Operating System
Linux
Flash frequency
40MHz
PSRAM enabled
no
Upload speed
460800
Description
The device is on a fairly busy Zigbee network with tens of bulbs from different vendors including Ikea, Cree, Sylvania/OSRAM. Using Homeassistant 2025.4 with ZHA on a SkyConnect / ZBT-1 dongle (silabs stack).
Somewhat randomly, it seems another device on the network (Ikea bulbs, I believe - I actually had a capture of them doing the same to some Lutron remotes) won't like something the ESP32C6 does and tells it to "leave" the network - generating a ESP_ZB_ZDO_SIGNAL_LEAVE signal. It seems it happens when the device sends a reading; some other device didn't like it. Last set of logs attached below shows it was in the middle of updating the clusters.
The result due to the default handler of this in ZigbeeCore.cpp is that the device will factory reset itself and need to be manually rejoined to the network.
Relevant code:
arduino-esp32/libraries/Zigbee/src/ZigbeeCore.cpp
Lines 373 to 379 in 13cd0d3
Per docs, there is an enum that can be checked to determine which type of reset this is. I have a feeling that the proper handling of these messages coming from other nodes on the network (i.e. not the coordinator) should just be to reset the zigbee stack or reset the device, without fully wiping the stored config and requiring it to be manually re-joined to the network.
Sketch
Debug Message
Other Steps to Reproduce
No response
I have checked existing issues, online documentation and the Troubleshooting Guide
The text was updated successfully, but these errors were encountered: