Sleepy Zigbee + BLE End Device gets locked in zboss thread

Running an nRF52840DK on the zigbee light switch multiprotocol ble sample as a sleepy end device seems to get stuck in the zboss thread. In this state the devkit seems to be stuck in the zboss thread while consuming about +9mA current when compared to idle. I cannot talk to the device with my coordinator sample and i can only recover via reset.

This is on the latest 2.6.0 version of the nRF Connect SDK

Setup:

- Added the following Kconfig debug options to the prj.conf:


CONFIG_SHELL=y
CONFIG_THREAD_NAME=y
CONFIG_THREAD_ANALYZER=y
CONFIG_THREAD_ANALYZER_AUTO=y
CONFIG_THREAD_ANALYZER_USE_PRINTK=y
 
- I also edited main.c to always enable sleepy end device behavior:
changed:
#if defined BUTTON_SLEEPY
if (dk_get_buttons() & BUTTON_SLEEPY) {
zigbee_configure_sleepy_behavior(true);
}
#endif
to:
zigbee_configure_sleepy_behavior(true);

- Built the zigbee light switch multiprotocol ble sample according to the readme:

west build samples/zigbee/light_switch -b nrf52840dk_nrf52840 -- -DOVERLAY_CONFIG='overlay-multiprotocol_ble.conf'

- Booted the sample and let it connect to my zigbee coordinator:

I: Joined network successfully on reboot signal (Extended PAN ID: 6e2edb8264bccd36, PAN ID: 0x33e7)

Then after waiting 10-30 minutes the thread analyzer would stop printing and I would lose shell. Stack trace from the debugger indicated the zboss thread was stuck waiting for a mutex:

This issue seems to be 100% reproducible.

Related