zigbee low power, different power consumption SDK for Thread and Zigbee 4.1.0/4.2.0

Hello,

SDK_1:  nRF5 SDK for Thread and Zigbee v4.1.0

SDK_2:  nRF5 SDK for Thread and Zigbee v4.2.0

Example: examples\multiprotocol\ble_zigbee\ble_zigbee_dynamic_light_switch_nus

Device: nRF52840-DK

IDE: SEGGER Embedded Studio for ARM, Release 5.68  Build 2021112600.48528, Windows x64

GCC/BINUTILS: built using the GNU ARM Embedded Toolchain version 10.3-2021.10 source distribution

When running above mentioned examples, there are significat power consumption differences.
When running example from SDK v4.1.0 average consumption is around 120 uA. When running same example with SDK v4.2.0, the power consumption is idling at 11 mA.

I was measuring consumption with the 

zb_set_rx_on_when_idle(ZB_FALSE)
 for both of the cases.

with SDK v4.1.0with SDK v4.2.0

Is there any example in SDK v4.2.0 that would match power consumption as in v4.1.0?

I would appreciate any advice how to correctly implement lower power consumption, I would be glad if someone can provide an example, so I could then include that into my existing application.

Thank you in advance.

Best regards,

Miha

  • Hello Miha,

    I am not sure what those samples include already, but have you had a look at this case? It looked too similar to yours for me not to start off by mentioning it.

    Regards,

    Elfving

  • Hello Elfving,

    Thank you for replying.

    I already looked into ticket that you mentioned, but unfortunately I was not able to lower the consumption. I'm not sure how exactly it should be implemented. My guess would be that that nrf_pwr_mgmt_run(); should be called in main loop (in main thread), when ZB_COMMON_SIGNAL_CAN_SLEEP signal is generated in zboss_signal_handler function (zigbee thread). But I'm not quite sure why would this handling be any different that it is in example in sdk v4.1.0.

    I already did some experimeting regarding mentioned ticket and example provided in sdk, but I did not acheive any progress.

    If you have any recommendation on how to resolve this, please let me know.

    Best regards,

    Miha

  • Hello again,

    We are not seeing this difference in power consumption between the two different versions of the SDK. Though the power consumption you are getting in version 4.2.0 looks surprisingly similar to the power consumption we are seeing with zb_set_rx_on_when_idle(ZB_TRUE);

    Could it be that you have mistakenly set it to TRUE in your application? If you are disabling it or enabling with button presses, try hard coding it in the sample instead, just to make sure.

    Regards,

    Elfving

  • Hello,

    I downloaded new SDK and started from scratch, changing IEEE_CHANNEL_MASK from single channel to ZB_TRANSCEIVER_ALL_CHANNELS_MASK and back to signle channel again, hardcoding zb_set_rx_on_when_idle(ZB_FALSE) as you have mentioned, and then I have managed to lower the power consumption.

    I also noticed that switch nRF ONLY | DEFAULT on nrf52840 DK was set to nRF ONLY which explains why buttons did not work. Also, when measuring consumption I noticed that correct sequence of buttons needs to be switched (ON OFF, nRF ONLY | DEFAULT, enable power from PPK2) in order to measure correct results.

    For know, consumption is under 100uA, which is good.

    Elfving thank you for support.

    Best regards,

    Miha

  • Great! Glad to hear it worked out!

    Regards,

    Elfving

Related