nrf54l10 zigbee R23 sleepy end device behavior

Dear all 

I am developing a product using the nRF54L10 with the Zigbee add-on v1.2.0.
I have a question regarding sleep behavior.

The current measurements below show the power consumption of the actual device
when start_network_rejoin() is not started at the time of ZB_BDB_SIGNAL_DEVICE_FIRST_START after boot.
The average current consumption is about 7 µA.

However, when the device is booted and start_network_rejoin() is initiated at ZB_BDB_SIGNAL_DEVICE_FIRST_START,
and there is no network available, stop_network_rejoin() is called after 200 seconds.
What I am wondering is whether the device does not enter sleep mode after this point, because the current consumption does not drop.
My code is below 

void ws_zigbee_init(void)
{
	ws_zigbee_print_information();

	test_aes();

	set_tx_power();
	zigbee_erase_persistent_storage(false);

	zb_set_ed_timeout(ED_AGING_TIMEOUT_8MIN);
	zb_set_keepalive_timeout(ZB_MILLISECONDS_TO_BEACON_INTERVAL(120*1000));

	zigbee_configure_sleepy_behavior(true);

	app_clusters_attr_init();
	ias_zigbee_fota_init(ota_evt_handler);

	ZB_AF_REGISTER_DEVICE_CTX(&ias_zone_ctx);

	ZB_ZCL_REGISTER_DEVICE_CB(zcl_device_cb);
	ZB_AF_SET_IDENTIFY_NOTIFICATION_HANDLER(ZB_HA_IAS_ZONE_ENDPOINT, identify_cb);
	zb_zcl_ias_zone_register_cb(ZB_HA_IAS_ZONE_ENDPOINT, NULL, ias_zone_general_cb);

	LOG_INF("IAS Zone windows sensor Start");

	/* Power off unused sections of RAM to lower device power consumption. */
	if (IS_ENABLED(CONFIG_RAM_POWER_DOWN_LIBRARY)) {
		power_down_unused_ram();
	}

	zigbee_enable();
}


I have no experience with Zigbee. I am not sure whether this behavior is normal or not.
If it is not, I would like some guidance on how to reduce the current consumption.

Parents Reply Children
  • That is odd. Are you seeing the same thing with a DK? If you have one on hand?

    Are you connected to a Zigbee network with it? Besides that I think the only thing you'd need with the sample is to hold Button 2 while it is booting.

    Regards,

    Elfving

  • Is my question incorrect?
    I clearly mentioned that the device is not connected to a network.
    I am asking why the current consumption remains high after a commissioning failure, and
    how to reduce the current in that situation.

    The same issue occurs with the nRF54L10 DK board using the sample code.
    In other words, after a network join failure, the current does not drop,
    and I am asking how to reduce it.

  • Ah sorry about the misunderstanding there. I figured the focus of the question was demonstrating the device infact going to sleep, or simply make the current measurements low enough. I am familiar with the device going to sleep after finding a network, and that it would typically need a network to do so. So to first demonstrate that something default worked on your side first, I figured we could try a DK and get it to find a network. To me, getting a commissioning failure first wouldn't be the easiest way to show that. Though if doing it with a commissioning failure is what you need that changes things.

    I'll ask the relevant R&D team, and get back to you.

    Regards,

    Elfving

  • Hi, and I am so sorry about the wait, 

    The R&D team was finally able to reproduce this. And have gotten a workaround:

    at the end of ZB_BDB_SIGNAL_STEERING case on the signal handler, add:

    ZB_TRANSCEIVER_SET_RX_ON_OFF(zb_get_rx_on_when_idle());

    Could you try this?

    Regards,

    Elfving

  • Hi Elfving 

    As you suggested, I added the code, but the issue remains the same

    The image below shows the behavior for the R22 version, not the add-on.
    As you can see, when the channel is not found, the current drops close to sleep mode levels.

    This is the behavior I want.
    Currently, the R23 add-on does not operate this way.

Related