Zigbee router leaves network autonomously after few seconds

Hi,

I'm trying to use a nRF52840DK as a zigbee router implementing a temperature sensor. The setup is composed of

Software

  • Application: Home Assistant
  • SDK:           nRF5 SDK for Thread and Zigbee v4.1.0

Network

  • Coordinator:  Dresden-Elektronik Conbee II
  • Router:          nRF52840DK - Simulated temperature sensor
  • End Device:  Sonoff SNZB-02 - Temperature sensor

The nRF52840DK can join the network, but exactly after 20 seconds, it autonomously sends a leave message. The sonoff sensor instead works perfectly fine. To understand the problem, I compared the packets sent in the two scenarios, to find some differences. In both cases, the join procedure is successful. Both sensors are initially recognized by Home Assistant. The only difference is that nRF52840DK requests the node descriptor to the coordinator, which never responds to the request. Instead, the sonoff sensor doesn't request any descriptor from the coordinator. It can also be seen from the log of Home Assistant and the traces captured with Wireshark. The node descriptor request is sent from endpoint 0, denoting a behavior not directly dependent on what I've implemented.

Sonoff-HomeAssistantJoin.pcapngnRF52840DK-HomeAssistantJoin.pcapng

I've tried to use deCONZ/Phoscon to manage the network to see if it makes any difference. In this case, the coordinator responds to the node descriptor request, and nRF52840DK remains connected to the network after the join phase.
So it seems like the failure to receive a reply message may result in the board sending a leave message. I've tried to search the default behavior in case a request is not satisfied, but I hadn't had any luck finding any documentation regarding this.


Is this a normal behavior?
Is there any way to see what's triggering the leave mechanism and avoid it?

Thank you in advance,

Valerio

  • Hi Valerio,

    The nRF52840DK is not able to complete the Trust Center link key exchange procedure. It fails at step 4 after not receiving a Node Descriptor Response from the coordinator:

    The TC link key exchange procedure is a feature of revision R21 and later of the Zigbee stack (so Zigbee 3.0). However, the coordinator is a legacy device (stack revision of R20 or earlier), and does not support TC link key exchange. The same is true for the Sonoff SNZB-02, which is why it is able to join the network successfully.

    One possible solution is to use zb_bdb_set_legacy_device_support(1) to enable legacy support on the nRF52840. Be aware that we do not recommend setting this on router devices, as it will disable TC link key exchange and will make it so the device is not compliant with Zigbee R21 or later. This is a workaround, and the cleanest solution would be to have a coordinator that is a certified R21 or R22 Zigbee device with support for TC link key exchange.

    Best regards,

    Marte

Related