Zigbee Router device sometimes joins to 0x0000000000000000 network after factory reset

I am using NRF Connect SDK v2.5.2. Sometimes, after I factory reset my Zigbee router device, it will immediately join a network with PAN ID 000000000000. I get this with my project but also with the light_bulb sample. How can I prevent my device from doing this? Below you can view the logs. Just before the logs, the button was held to factory reset the device. The device had not joined a network before resetting. 

Many thanks,

Pieter-Jan

I: Network left (leave type: 0)
I: Joined network successfully (Extended PAN ID: 0000000000000000, PAN ID: 0xffff)
I: Network rejoin procedure stopped.

Parents
  • Hi

    Sometimes, after I factory reset my Zigbee router device, it will immediately join a network

    Could you clarify the following when you say "a network":

    Do you have multiple networks up, i.e is it a random network it joins? Is it establishing a new network that the router joins?

    Do you have a sniffer trace for the device throughout the procedure you describe? 

    The log also says I: Network rejoin procedure stopped. Indicating that the rejoin procedure stops

    Kind regards,
    Andreas

  • This happens with or without a coordinator in the proximity. When it is, It does not matter whether the coordinator is allowing new devices or not. The network the device joins is not one that should be existing.
    This is not applicable to the light bulb example, but for my own device's code, I am using install_codes. So, it should normally not be possible to join another network without having the correct install code added to the coordinator. 

  • Hi  

    Do you have any updates on this issue?

    I do have one more question, if I try to do a Zigbee FOTA on the light switch example, it is reasonably fast. It takes maybe 15 minutes. When I do the FOTA on my build, it takes about 3-4 times as long. On both instances I am transferring the same OTA image, so the same amount of data. What could be the cause of this? I have compared both prj.conf's and all settings concerning FOTA seems to be the same.

    Thanks!

    Kind regards,
    Pieter-Jan

  • Hi Pieter-Jan

    Apologies for the wait.

    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrfxlib/zboss/CHANGELOG.html has some items regarding attribute reporting in 2.6.0 and newer. This might affect your implementation. 

    pjbuntinx said:
    I do have one more question, if I try to do a Zigbee FOTA on the light switch example, it is reasonably fast. It takes maybe 15 minutes. When I do the FOTA on my build, it takes about 3-4 times as long. On both instances I am transferring the same OTA image, so the same amount of data. What could be the cause of this? I have compared both prj.conf's and all settings concerning FOTA seems to be the same.


    https://docs.nordicsemi.com/bundle/ncs-latest/page/nrf/releases_and_maturity/releases/release-notes-2.7.0.html#zigbee Seems to be related to the OTA, but I can't say what the root cause is, and a sniffer trace where you have a look at the traffic will be required to make any speculations and conclusions.

    Kind regards,
    Andreas

  • Hi Andreas,

    Regarding the OTA, it is not different between SDK versions only between projects. The example light switch receives an update much faster than my project. You can see that the packages are send out more quickly on the coordinator for light switch project. Could this have something to do with the amount of RAM memory that is left?

    For the reporting, do you have an example on how I can configure this? I have posted some code before on how I have tried enabling reporting but that does not work on any 2.6.x+ SDK version. 
    Currently, the behavior on SDK version 2.5.3 is as follows: from the moment I bind to the clusters of my NRF device, the device starts reporting with the configured intervals. 

    This is the code I am using to configure reporting on 2.5.3:

    zb_zcl_reporting_info_t rep_info = {0};
    
        rep_info.direction                    = ZB_ZCL_CONFIGURE_REPORTING_SEND_REPORT;
        rep_info.ep                           = endpoint;
        rep_info.cluster_id                   = ZB_ZCL_CLUSTER_ID_WILMS_VENT_MONITORING;
        rep_info.cluster_role                 = ZB_ZCL_CLUSTER_SERVER_ROLE;
        rep_info.dst.profile_id               = ZB_AF_HA_PROFILE_ID;
        rep_info.u.send_info.def_min_interval = DEFAULT_MIN_REPORTING;
        rep_info.u.send_info.def_max_interval = DEFAULT_MAX_REPORTING;
        rep_info.dst.short_addr               = REPORTING_SHORT_ADDR;
        rep_info.dst.endpoint                 = REPORTING_ENDPOINT;
    
        for (int i = 0; i <= ZB_ZCL_ATTR_WILMS_VENT_MONITORING_NETA_ID; i++) {
            rep_info.attr_id = i;
    
            switch (i) {
            case ZB_ZCL_ATTR_WILMS_VENT_MONITORING_TA_ID:
            case ZB_ZCL_ATTR_WILMS_VENT_MONITORING_TB_ID:
            case ZB_ZCL_ATTR_WILMS_VENT_MONITORING_TC1_ID:
            case ZB_ZCL_ATTR_WILMS_VENT_MONITORING_TC2_ID:
            case ZB_ZCL_ATTR_WILMS_VENT_MONITORING_TD_ID:
                rep_info.u.send_info.delta.s16 = 50;
                break;
            default:
                rep_info.u.send_info.delta.u16 = 10;
                break;
            }
            zb_zcl_put_reporting_info(&rep_info, ZB_TRUE);
        }


    Thanks, 

    Best Regards,
    PIeter-Jan

  • Hi Pieter-Jan,

    Unfortunately we don't have any examples that shows this out of the box within NCS, but here's a few pointers from a colleague of mine's unofficial samples

    Set up reporting in code

    Set up reporting over shell, you can follow this sample: 

    Kind regards,
    Andreas

  • Hi Andreas,

    Reporting is enabled by default with off-the-shelve sensors like temperature/humidity sensors. You don't need to configure reporting using the coordinator, the only necessary thing is doing the correct bindings for the relevant clusters. I want to replicate this same behaviour. This worked on SDK version <= 2.5.3 but I am just not able to get this working on later versions. I have tried the examples you have provided but sadly without any luck. 
    One thing I have to mention though is that I am using custom clusters. Can I perhaps send my project in a private message or in a new private ticket to see if you can get any luck with it? 

    Thanks,

    Best Regards,

    Pieter-Jan Buntinx

Reply
  • Hi Andreas,

    Reporting is enabled by default with off-the-shelve sensors like temperature/humidity sensors. You don't need to configure reporting using the coordinator, the only necessary thing is doing the correct bindings for the relevant clusters. I want to replicate this same behaviour. This worked on SDK version <= 2.5.3 but I am just not able to get this working on later versions. I have tried the examples you have provided but sadly without any luck. 
    One thing I have to mention though is that I am using custom clusters. Can I perhaps send my project in a private message or in a new private ticket to see if you can get any luck with it? 

    Thanks,

    Best Regards,

    Pieter-Jan Buntinx

Children
Related