ZigBee radio channel change

Hello,

We developed with nRF5240 using nRF5 SDK as zigbee coordinator and I have some questions about channel change mechanism:

  1. By choosing 'coordinator' as network role at startup, is this automatically also the network channel manager as explained in Annex E of Zigbee specification https://zigbeealliance.org/wp-content/uploads/2019/11/docs-05-3474-21-0csg-zigbee-specification.pdf ?
  2. When a high value of transmit failures is detected, is channel scan done? Is channel changed?
  3. Do you manage the reception of Mgmt_NWK_Update_notify? Which actions are performed?
  4. In Zigbee spec about transmit failures, there is written: "the network manager would report to the local application using Mgmt_NWK_Update_notify and the application can force a channel change using the Mgmt_NWK_Update_req.". Do you ever notify application about this through Zigbee signal handler or any callback? Do you implemented a function that I can use to send Mgmt_NWK_Update_req to force channel change?

I've read another question about the same topic:  https://devzone.nordicsemi.com/f/nordic-q-a/94366/zigbee-radio-channel-selection-and-change-during-run-time/398143 
But I couldn't find the answers.

Best regards.

Laura

  • Hi Giacomo and Tim,

    GiacomoPaci said:
    However we experienced network channel change. Could be flash storage issue in the old nrf5 4.1.0? 

    I have asked about this internally to verify.

    tcruse said:
    The above recommendations would allow us to control the channel switching but not prevent it, correct ?

    That is my understanding as well, and DSR are aware of the issue. However, if they were to fix this in the ZBOSS stack this would not be available in the nRF5 SDK for Thread and Zigbee, since it is deprecated and will not be upgraded.

    I have forwarded your concern about this.

    I will receive the hot fix for the other issue today, so hopefully I will be able to test it and share it with you later today. Although this is not the only issue you are seeing, it will provide a way to force the device to change channel, which might help with investigating a workaround for the issue you are raising here as well, but I cannot guarantee anything.

    In the meantime, do you see any trend when this automatic channel change happens? Does it only occur under certain conditions or at random? Do you see anything in the application log or a sniffer log that might be relevant?

    Best regards,
    Marte

  • Hello Marte,

    we saw the issue after power cycling Nordic but it also happened at runtime (I don't know if a reboot occurred in these cases).

    It isn't easy to reproduce and I don't have any logs. We are aware about channel change because our application is checking current channel every 10 minutes and it's reporting it to upper layer.

    Thank you

    Laura

  • Hi,

    Here is the fix that allows you to change channel on the local device. Call zb_set_channel_locally() to change the channel. This should be called from the callback function of zb_zdo_mgmt_nwk_update_req().

    zb_set_channel_locally.h

    Best regards,
    Marte

  • Hello Marte,

    thank you!

    I tested the code you provided and I cloud see coordinator moving to new channel. Also, new channel is retained if coordinator is rebooted. 

    Best,

    Laura

  • Hi Laura,

    Great to hear that it works on your side as well!

    Regarding the underlying issue of the device automatically changing channel we have not been able to reproduce this behavior on our side. Getting logs from when this issue occurs, both application logs from the device and sniffer logs, would be helpful in figuring out what might be causing the issue.

    Best regards,
    Marte

Related