End Device Joining as New Device When Steering Mode Stopped

We are working on a Zigbee-based network coordinator using the nRF52840. Our end device is connected to the coordinator, but when the end device leaves the network, it sometimes automatically joins the same coordinator, even though the coordinator is not in steering mode. This issue is inconsistent, occurring only at certain times.

In the coordinator, we stop the steering mode using the following function:

void stop_steering() 
{ 
   ZB_SCHEDULE_APP_ALARM_CANCEL(steering_finished, ZB_ALARM_ANY_PARAM); 
   LOG_INF("Network stopped"); 
   zb_bdb_close_network(buffer);
 } 


We have analyzed the Wireshark logs (attached DeviceJoined_NotInSteering).
DeviceJoined_NotInSteering.pcapng
In packet 750, the device leaves the network, but it joins, even though steering mode was not active. From our analysis, we suspect that in packet 712, the association permit was false, but it became true in packet 725, which may have caused the device to join. 

Please find my following questions:
1.Why is the association permit true when the coordinator is not in steering mode?
2.If we stop steering before 3 minutes using the stop_steering function, does it permanently stop steering, or could steering continue in the background?

Please Note: The end device is not rejoining. it is joining again as a new device.

Hardware: Custom hardware with nRF52840
SDK: nRF Connect SDK version 2.1.0

Thanks, and regards,
Kavitha

  • Hi,

    We had a look at the sniffer logs: 0x2a19 sends a permit join request right before the ZC opens the network, so the ZC behaves according to the specification.

    Zigbee R22 spec section 2.4.3.3.7 Mgmt_Permit_Joining_req:

    In addition the team spotted that based on the sniffer log, your device is a ZR, not a ZED. It’s possible the youæve called it an end device by mistake but knowing the correct role might be important if we need to investigate why it sends a permit join request

    Kind regards,
    Andreas

Related