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.

CC2340R5: The error "ZB_ZDO_DEVICE_UNAVAILABLE" occurred during the communication process.

Part Number: CC2340R5
Other Parts Discussed in Thread: , SYSCONFIG

Currently, during the communication process between the terminal and the coordinator, the terminal device will send the "ZB_ZDO_DEVICE_UNAVAILABLE" signal. After that, communication between the terminal and the coordinator will be impossible. How should this situation be handled? I am using the latest SimpleLink low power F3 core SDK. I am using the onoff example. Currently, the terminal sends data every 5 seconds. Another situation is that as soon as the coordinator connects to the terminal, it immediately shows that the terminal has disconnected from the network. How should this be handled? What is the cause? Is it an antenna problem or did the software application layer fail to handle it properly?

132c88bf4cc0fe0c0f120230300d6d60.png

  • Hi shan,

    Here is ZB_ZDO_DEVICE_UNAVAILABLE in the ZBOSS User's Guide for your reference.

    Which node is the CC2340R5: the coordinator or terminal, or both?  Is the terminal a Zigbee Router or End Device?  Are you using the onoff switch or light example, and have any changes been made to the project?  Have you installed all of the correct Dependencies for the SimpleLink F3 SDK?  Are you using a LP-EM-CC2340R5 LaunchPad, third-party EVM, or custom hardware?  Can you supply a sniffer log which demonstrates the over-the-air network behavior?  Do you have other debugging screenshots which can be provided?  How often does the behavior occur, and within what time frame after commissioning?  Does the behavior correct after time, or when the CC2340R5 is reset or power cycled?

    "NO_APS_ACK"  and "unavailable_short_addr = 00" imply that the Zigbee Coordinator is not responding to packets from the "terminal", which would be an "orphan" end device or lost neighbor depending on the terminal's Zigbee role.  It is possible that the antenna performance is poor on one or both devices, depending on factors like physical distance and TX output power settings (on the CC2340R5 this can be increased in SysConfig radio settings).  It's difficult to know any more without further information.

    Regards,
    Ryan

  • The coordinator and the terminal are both LP-EM-CC2340R5 development boards. The distance between the two boards is less than 2 meters, and the signal strength is around -50. The time when this ZB_ZDO_DEVICE_UNAVAILABLE signal appears is unpredictable. Sometimes it occurs within less than 10 seconds after starting, and sometimes it doesn't appear until 20 minutes later (the distance remains unchanged). The terminal device sends data to the coordinator at a 5-second interval. In the onoff example, I did not modify its content. I only added APS sending and receiving on its basis. After this ZB_ZDO_DEVICE_UNAVAILABLE signal appears, how should we handle it to restore communication? I tried using zb_bdb_initiate_tc_rejoin to reconnect the coordinator to ensure a successful connection, and the terminal device also showed "Finding & binding done", but still couldn't communicate normally. Why is that? Only when I turned on the device will communication be restored.

  • Hi bin,

    The RSSI you've stated is not excellent for a distance of 2 meters, nor is it poor enough to cause missed packets between the devices.  Also a time from of between 10 seconds and 20 minutes is much shorter than expected for the CC2340R5 LaunchPads with demo examples loaded.  What version of the SimpleLink F3 SDK are you referencing?  Can you change the Zigbee channel in your SysConfig file (in both projects) to determine whether the previous channel was too noisy for communication?  Are you supplying the LPs with 3V3 from the XDS110 or using an external power supply (and at what voltage)?  Do you have multiple LP-EM-CC2340R5 devices to test with, to confirm that one or both are not damaged?

    You can attempt bdb_start_top_level_commissioning(ZB_BDB_NETWORK_STEERING); to rejoin the network.  "Finding & binding done" is a return of ZB_BDB_SIGNAL_FINDING_AND_BINDING_INITIATOR_FINISHED and I am not sure as to the particular reason you are observing it in this instance unless the F&B timeout expired or cancelled.

    Please look into capturing sniffer logs if possible, as this will be helpful for debugging and assist with your further development efforts.  Also let me know whether the terminal is a ZR or ZED node.

    Regards,
    Ryan

  • Is there any tool available to capture the logs of the cc2340R5? I noticed that the tools provided by the official are all for other chips. I have tried changing the Zigbee channel in SysConfig to 15-2425 MHz and supplying power using the 3V3 of XDS110 for the LP power supply. I have one coordinator and one terminal ZED device. The signal status "ZB_ZDO_DEVICE_UNAVAILABLE" appeared. Is it possible that there is something wrong with the logic of my application layer that has affected the MAC layer and APS?

  • This is the sending function I use. I have created a new thread apart from the main_task_function of Zigbee, and I execute the desired logic on this thread.

  • Is there any tool available to capture the logs of the cc2340R5? I noticed that the tools provided by the official are all for other chips

    Have you referred to the Logging SLA and Log TI Driver API?

    Is it possible that there is something wrong with the logic of my application layer that has affected the MAC layer and APS?

    Yes, does the issue happen when there are no changes to the default project?  You may need to make iterative changes to discover the issue.

    This is the sending function I use. I have created a new thread apart from the main_task_function of Zigbee, and I execute the desired logic on this thread.

    You can use the Insert -> Code tool to place code segments into your E2E response.  It appears that the send_aps_payload function is sampled from the Zigbee Fundamental Project Development which is fine, and making sure zb_buf_get_out returns valid before scheduling the send_aps_payload callback is a good practice. Be aware that there are Zigbee memory APIs (ZB_MEMCPY->zb_memcpy, etc) in the zb_hal_utils.h->ti_f3_main.c files. 

    I assume the send_aps_payload_cb is where you are getting the Transmission status, and it would appear that they have been successful before the missing APS ACK.  You could disable the APS ACK requirement by setting the third-to-last parameter in zb_aps_send_user_payload to ZB_FALSE, but I'm not sure whether that is directly related to ZB_ZDO_DEVICE_UNAVAILABLE.  Your aps callback will need to free the param in any instance.

    I don't have the context behind the new thread, but you could disable this thread and test only the Zigbee task to determine whether the issue persists to isolate the problematic area.

    If you want to create a temperature sensor device which reports to its parent through binding, you can further consider the following

    ZCL HA Temperature Sensor
    ZCL attributes reporting
    Configure reporting command sending and parsing

    Regards,
    Ryan

  • Thank you. I have already solved this problem.