Issue with End Device Timeout Configuration on nRF52840 Sleepy End Device

We are developing a sleepy end device using the nRF52840, based on the light switch sample. We have set zb_set_ed_timeout to 16384 minutes, which is approximately 11 days. I have attached a Wireshark log where you can observe the End Device Timeout Request occurring every 16 minutes for device 0x2003.

End Device Configuration:

zb_set_ed_timeout(ED_AGING_TIMEOUT_16384MIN);
zb_set_keepalive_timeout(ZB_MILLISECONDS_TO_BEACON_INTERVAL(((16384 * 60 * 1000) / 4)));


According to the above configuration, I should expect the End Device Timeout Request every 16384 minutes. Is this correct? What is the maximum value for zb_set_ed_timeout?

Please find the below WiresharkLog:

EndDeviceTimeoutRequest_Wiresharklog.pcapng

Hardware: Custom hardware with nrf52840
SDK: nrf Connect SDK version 2.0.0

Thanks, and regards,
Kavitha

Parents
  • Hi Kavitha,

    I apologize for the delay.

    According to the above configuration, I should expect the End Device Timeout Request every 16384 minutes. Is this correct?

    The frequency at which the end device polls its parents, i.e., sends an End Device Timeout Reque, is set with zb_set_keepalive_timeout. In your configuration, you are setting it to poll every 4096 minutes.

    What is the maximum value for zb_set_ed_timeout?

    The maximum value is 16384 minutes, set by the Zigbee specification. The specification does not specify how often the end device should poll its parent, but it is recommended that it poll its parent three times during the end device timeout.

    I do not know why the end device polls every 11 minutes when you set the polling period to 4096 minutes, but I will investigate this and get back to you in a couple of days.

    Have you tested with other coordinators or parent devices, particularly from other manufacturers? Do you see the same behavior regardless of the parent device?

    Best regards,
    Marte

Reply
  • Hi Kavitha,

    I apologize for the delay.

    According to the above configuration, I should expect the End Device Timeout Request every 16384 minutes. Is this correct?

    The frequency at which the end device polls its parents, i.e., sends an End Device Timeout Reque, is set with zb_set_keepalive_timeout. In your configuration, you are setting it to poll every 4096 minutes.

    What is the maximum value for zb_set_ed_timeout?

    The maximum value is 16384 minutes, set by the Zigbee specification. The specification does not specify how often the end device should poll its parent, but it is recommended that it poll its parent three times during the end device timeout.

    I do not know why the end device polls every 11 minutes when you set the polling period to 4096 minutes, but I will investigate this and get back to you in a couple of days.

    Have you tested with other coordinators or parent devices, particularly from other manufacturers? Do you see the same behavior regardless of the parent device?

    Best regards,
    Marte

Children
  • Hi  

    I have done some testing with two different coordinators. One gateway is programmed with the Zigbee coordinator sample, and the other is a Deconz(ConBee ||) gateway. I have observed different behaviors between them.

    Testing 1:
    The end device is programmed with the Zigbee light switch sample, SDK version 2.0.0, and the gateway is programmed with the Zigbee network coordinator sample, SDK 2.1.0.
    The light switch sample program has the following settings:

    zb_set_ed_timeout(ED_AGING_TIMEOUT_64MIN);
    zb_set_keepalive_timeout(ZB_MILLISECONDS_TO_BEACON_INTERVAL(((64 * 60 * 1000) / 4)));


    Based on your response, I believe that for these settings, the end device should send three End Device Timeout requests within 64 minutes. Am I correct? However, I don't see any End Device Timeout requests after packet no. 17. I waited more than 2 hours and still did not see any End Device Timeout requests. Please have a look at the attached sniffer log ("lightSwitch_Networkcoordinator_Sample"). The device address is 0xdb22.
    lightSwitch_Networkcoordinator_Sample.pcapng

    Testing 2:
    When I connected the same end device, programmed with the same light switch sample and with the same end device timeout and keepalive timeout configuration, to the Deconz(ConBee ||) gateway, the end device sent an End Device Timeout request every 16 minutes. Please have a look at the attached sniffer log ("DeconzGatewaywithLightswitchsample"). The device address is 0x40cb.
    DeconzGatewaywithLightswitchsample.pcapng

    For the Deconz(ConBee ||) gateway, it seems to be working correctly, but with the Zigbee network coordinator sample, it is not. Can you please clarify this?

  • Hi,

    Kavitha said:
    Based on your response, I believe that for these settings, the end device should send three End Device Timeout requests within 64 minutes. Am I correct? However, I don't see any End Device Timeout requests after packet no. 17. I waited more than 2 hours and still did not see any End Device Timeout requests. Please have a look at the attached sniffer log ("lightSwitch_Networkcoordinator_Sample"). The device address is 0xdb22.

    End devices can use MAC Data Poll and End Device Timeout Request as keepalive mechanisms. What is used depends on what the parent device supports, which the parent informs the end device about in the first End Device Timeout Response. Looking at the sniffer log, the parent only supports MAC Data Poll keepalive, so the end device will poll its parent using Data Request packets.

    If you look at the first End Device Response from the Deconz gateway, you can see that it supports both MAC Data Poll and End Device Timeout Request:

    Best regards,
    Marte

Related