This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

Coordinator would be remain old end device even though binding table is full

Hi All,

we actually thought that the original 32 end device made a handshake to the coordinator, which would occupy a zigbee slot each until the coordinator has been restarted. This would mean that we would be able to start up a end device, make the initial connection to a coordinator, occupying a zigbee slot, and thereafter power the end device down. If we then started up the end device again, then the handshake made by the coordinator and end device earlier, would be reused and the end  device would be able to connect, because it was one of the initial 32 end device connection to the coordinator. No new end device would be connect, but the initial 32 end device would be able to make as many power down changes as possible, and still being able to "reuse" the handshake.

This is not the case!!

Actually what is happening is that when a end device, let’s call it x1, connects to the coordinator, then it will occupy one zigbee slot. However this zigbee slot can ONLY be used while the end device is started up.

If 32 other end device connect to the same coordinator, and the x1 end device make a restart(power down and powerup) change, then it won’t be able to connect again. If x1 would remain on a end device, and the 32 other end device would connect filling up the coordinator, then x1 would still be able to remain the connection to the coordinator, being able to send data etc.

My zigbee Stack:

ZStack-CC2530-2.5.1a

NWK_MAX_DEVICE_LIST   31

The coordinator should be able to reuse the handshake for the same end device that it has previously created. So if a end device restarts, then it should be able to reuse the same zigbee slot again and again.

Best Regards

Siva J

  • Not quite understand your problem. Would you please explain more clearly about what your intention is?
  • Hi,

    Thank you for response,

    My test today consisted of the following:

    2 Coordinator, running zigbee channel 19 and 24.

    50 End device, running on autoscan zigbee code.

    I started the End device up one by one, and all of the first 32 End device connected to the 1'st Coordinator. Then the 1'st Coordinator was full, and the remaining 18 End device started to connect to the other Coordinator. So far so good.

    However when I tried to startup the first 32 End device again, then they would connect to the 2'nd Coordinator, instead of the 1'st one which they originally made connection to.

    After the 2'nd Coordinator had 32 zigbee connection, then it became full and wouldn’t receive any more connections.

    So now I had two Coordinator being completely full.

    Then I restart the Coordinator, and after it had restarted, End device were able to connect again.

    So we became wiser in a lot of points, but our hope of this solving the zigbee issue was shattered.

    In My Understanding:
    - The binding entry memory full after a 32 device connected to Coordinator
    - After a 32 End device connected It say memory full, after a while Coordinator does not allow connected device even if i restarted or rejoin any one of 32 end device

    Also if something was not completely clear, then let me know and I will try to explain it more thoroughly.


    Best regards
    Siva J
  • You are describing your observation about setting and testing on NWK_MAX_DEVICE_LIST and it is seems no problem in your observation. However, what is your point? Or what is your problem on this?
  • Hi,

    For an Example:

    I have an 33 end device and 1 Coordinator.

    i have found 2 scenario

    1'st Scenario:

    Make a initial connection to a coordinator. (Started-up initially)

    I started the End device up one by one, and all of the first 32 End device connected to the Coordinator. Then the Coordinator was full. So far so good. when i am trying to connect 33th end device to coordinator they are not responding to the end device it say binding table entry is full and sniffer log also say no more beacon response.

    after a 33th device trying to connect to coordinator in this below happening,

    In the meanwhile i am trying to any one of end device to restart (Reconnect to coordinator), the sniffer log and all should say no more beacon response to the device. The one which end device originally connection this coordinator. Then x1 (from out of 32 device) end device would still be able to remain the connection to the coordinator, being able to send transactions etc.,

    2'nd Scenario:

    Make a initial connection to a coordinator. (Started-up initially)
    No new End device would be able to connect, but the initial 32 End device would be able to make many reconnect changes as possible, and still being able to "reuse" the same binding address.


    It is not a NWK_MAX_DEVICE_LIST issue. It is something different in Binding table entry problem.

    NWK_MAX_DEVICE_LIST is 31


    Best regards,
    Siva J
  • Do you enable NV_RESTORE on all of ZC and ZEDs in your test?
  • Hi,

    Thanks for your response

    I yet not to be enabled NV_RESTORE,

    Even if i tried with NV_RESTORE still the problem are the same.


    Best regards,
    Siva J
  • Sorry, I still don't understand your problem.
  • Hi,

    Sorry for my explanations,

    I have some questions,

    1. How should i find the binding table is full after a 32 device going to be connect to coordinator ,
    2. How to remove the end device from the coordinator without changing the end device stack and how should i use them this functions "ZDP_MgmtLeaveReq" using the short address or IEEE address?


    Best regards,
    Siva J
  • 1. You can try to use API AssocCount() in AssocList.h to count the number of devices in association list.

    2. To use ZDP_MgmtLeaveReq, you will need both short and IEEE address of device. What do you mean to remove the end device from the coordinator without changing the end device stack?

  • Hi,

    why because in my end device i can not be open and update any more new zstack firmware.
    - When should i cal the ZDP_MgmtLeaveReq from the coordinator, if the End device is in sleep mode

    Best regards
    Siva J
  • You can call ZDP_MgmtLeaveReq any time when you have to. For sleeping device, leave request will be kept in its parent and wait sleeping device to polling for it.

  • Hi,
    Thank you for your response,

    The End Device doesn’t respond to this request ZDP_NwkAddrReq using by IEEE address.(I can able to see the request from coordinator no more response from correspond ieee end device)

    I tried with below options:

    In compiler options i enabled in
    ZDO_NWK_ADDR_REQUEST

    xxx_init functions
    ZDO_RegisterForZDOMsg( TaskID, NWK_addr_rsp );


    If i request for ZDP_IEEEAddrReq using by short address its work fine and i can able see in the sniffer req and response of the end device IEEE address.

    Please can you suggest me if settings are needed.

    Best regards,
    Siva J
  • Can you show me how you use ZDP_NwkAddrReq?
  • retValue = (uint8)ZDP_NwkAddrReq(extAddr_debug, ZDP_ADDR_REQTYPE_SINGLE, 0, 0);

    uint8 extAddr_debug[Z_EXTADDR_LEN] = {0x65,0xB6,0x0A,0x40,0x00,0x4B,0x12,0x00 }; ///IEEE_Address of end device 65B60A04004B1200


    Best regards,
    Siva J
  • I don't remember correct by order of IEEE address so I suggest you try to reverse the byte order of extAddr_debug.

  • Thank you,

    No more response if change by order.
    Is there any other way to remove the end device from the coordinator or else can i change end device code.

    Siva J
  • When end device joins Zigbee network, it will broadcast end node announcement which contains short and IEEE address of joined device. Maybe you can keep these address and use them to send leave request later when you need them.
  • Hi,

    when i am trying to send ZDP_MgmtLeaveReq device is still in network it does not leave from my network.

    My leave request:

    ------------------------      

    /* Destination Address */

    destAddr.addrMode = Addr16Bit;

    destAddr.addr.shortAddr = Endevice_shrt_address;

    retValue = (byte)ZDP_MgmtLeaveReq(&destAddr,pIEEEAddr, 1, 0, 0);

    My Compiler Options for coordinator:

    --------------------------------------------------

    ZDO_MGMT_LEAVE_REQUEST=1

    MT_ZDO_MGMT=1

    I can able to see in the sniffer send request and response from the my end device. But end device still in network

    Is there any settings,

    How do i confirm whether the end device leave from my network.

    Here my sniffer log file when sending req to device from coordinator.

    Can you please suggest to me if i have done anything wrong.

    Best regards,

    Siva J

  • Can you attach the psd file for me to check?
  • Hi,
    Thank you for your support
    I finally solve this issue using NLME_LEAVE_REQ

    Best regards
    Siva J
  • It is good to know you solve the issue.