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

  • Hello Marte,

    as I said we don't have the logs you are asking unfortunately but I'll try to collect them.

    To have a good setup for my test I need to better understand what is not implemented related to network manager.

    I tried to read network manager address from NIB table by using ZB_NIB() and I saw that it is 0xFFFF in our network. Because of this, I'm afraid that maybe a third party router device sends a request to change channel.

    If I set this address to 0 (coordinator address) when network is created, what happens? Are devices being notified about Nordic being the network manager when they join the network?

    thank you,

    Laura

  • Hi Laura,

    Laura M said:
    I tried to read network manager address from NIB table by using ZB_NIB() and I saw that it is 0xFFFF in our network. Because of this, I'm afraid that maybe a third party router device sends a request to change channel.

    0xFFFF is outside the supported address range (0x0000-0xFFF7), so it seems more likely that this value is incorrect. A sniffer log should show if a channel change request is sent on the network.

    Laura M said:
    If I set this address to 0 (coordinator address) when network is created, what happens? Are devices being notified about Nordic being the network manager when they join the network?

    This could lead to unexpected behavior.

    Devices should be informed of network manager support by the Network Manager server flag in the Node Descriptor, as in this picture:

    One of your colleagues provided some more context about the issue over mail, and I have some questions based on that context to better understand the issue.

    • Can you confirm whether all devices are left behind or if only some of them are?
    • Are the devices left behind routers or end devices?
    • If end devices, are they sleepy or non-sleepy end devices?

    Best regards,
    Marte

  • Hi Marte,

    were left behind some routers (not all) and sleepy end devices connected to those routers.

    Thank you for the screenshot, regarding NIB table, I see that, for instance, extended_pan_id contains the expected value, same for router_child_num and ed_child_num whose value is automatically updated when devices join the network.

    nwk_manager_addr instead is automatically set to 0xFFFF and I'd like to know if by changing it into deafult value (0x0000) has any effect. In particular, I'd like to set it before calling zboss_start_no_autostart() and I'd like to know if the bit in the screenshot you sent is automatically set.

    To give you some context, we call ZB_INIT() first, then we call functions to initialize nwk parameters like zb_set_network_coordinator_role and zb_set_extended_pan_id and functions to register device context (ZB_AF_REGISTER_DEVICE_CTX) and to register ep callbacks. In the end, we call zboss_start_no_autostart and we enter in while loop containing zboss_main_loop_iteration

    Thank you,

    Laura

  • Marte can you please tell us about the effect of changing nwk_manager_addr to 0x0000? Doing like that we will have network manager running in ZBOSS stack?

    Do we have any setting to enable disable network manager?

    Can you also reply to all the other Laura's questions?

    Best

    Giacomo

  • Hi

    GiacomoPaci said:
    can you please tell us about the effect of changing nwk_manager_addr to 0x0000?
    Laura M said:
    nwk_manager_addr instead is automatically set to 0xFFFF and I'd like to know if by changing it into deafult value (0x0000) has any effect. In particular,

    In theory, the Network Manager address should be set automatically and changing this manually without receiving Zigbee commands to change it might have unexpected consequences. However, since it does not seem like the address is set correctly in the first place you can try setting it to 0x0000 and see if it affects anything.

    GiacomoPaci said:
    Doing like that we will have network manager running in ZBOSS stack?

    No. Devices do not enable/disable network manager support based on the contents of the nwkManagerAddr field of NIB. This field is used for devices to know what the address of the network manager is.

    GiacomoPaci said:
    Do we have any setting to enable disable network manager?

    I am not aware of any API available in the application for disabling this, and I was not able to find it when looking. Is there a particular reason for why you want to disable it?

    Laura M said:
    I'd like to know if the bit in the screenshot you sent is automatically set.

    Yes. My screenshot was from me testing with the Zigbee Shell sample in nRF Connect SDK. I did not make any changes to the sample and configured it as a coordinator using shell commands, so the bit was set automatically.

    Have you been able to collect logs from your tests?

    Best regards,
    Marte

Related