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.

CC2538: Z-Stack routing report from APS_ACK_REQUEST

Part Number: CC2538
Other Parts Discussed in Thread: Z-STACK

Hello,

I have some questions related to messaging routing between devices in a Zigbee mesh network. But before expose my doubts I will report my zigbee network cenário.

I'm using the Z-Stack Home 1.2.1. All my devices is programed with zcl_sampleswitch. I have One coordinator with CONCENTRATOR_ENABLE active and I have 4 routers that are distributed for can comunicate with coordinator must have hops between them.

To send mesages from coordinator to router, I use the function AF_DataRequest with parameter option at AF_ACK_REQUEST.

0x0000 -------------------- 0xAAAA-----------------0xBBBB -------------------0xCCCC-------------------0xDDDD

Coordinator                   Router 1                    Router 2                        Router 3                       Router 4

For comunicate to Router 3 (0xCCCC) the message must repeated for router 1 and router 2, respectivelly.

After comunication and routing tables stabelized, I turn off Router 2, and I try to send message to router 3 and the Ack received is 0xb7. It that means that the message can't be delivered to destination router (router3) because router 1 can't delivered the message for router 2 and return to coordinator the MACNoAck.

My question is if it is possible the router 2 report a Ack response indicating that the routing is fail, rather than reports 0xB7 (is is a intermediate router) or 0xE9 (neighbor router)

Best regards,

Nalves

  • If routing fails, coordinator should do route request automatically. Do you use Ubiqua Protocol Analyzer to check what happens over the air?

  • Hello YiKai Chen.

    To check what it happens, I'm using the Texas instruments Packet sniffer. In the Packet Logs that I acquired, I check the message was send by coordinator (0x0000) to Router 1 (0xAAAA), sended with success at the first transmission. After then, the router 1 send the message to router 2 without any problems, delivered at the first transmission. In the router 2 transmission, all the messages wasn't delivered to router 3.
    The next parameters of routers and coordinator are configured with values:

    Coordinator:

    # NWK_ROUTE_AGE_LIMIT = 3
    # LINK_DOWN_TRIGGER = 12
    # BCAST_DELIVERY_TIME = 100
    # ROUTE_DISCOVERY_TIME = 13
    # DAPSC_MAX_FRAME_RETRIES = 3
    # DZDNWKMGR_MIN_TRANSMISSIONS = 0

    # APSC_ACK_WAIT_DURATION_POLLED = 300
    # SRC_RTG_EXPIRY_TIME = 255

    # MAX_NEIGHBOR_ENTRIES = 20

    # NWK_MAX_DATA_RETRIES = 4

    # CONCENTRATOR_ENABLE = true

    Routers:

    # NWK_ROUTE_AGE_LIMIT = 3
    # BCAST_DELIVERY_TIME = 100;
    # ZDNWKMGR_MIN_TRANSMISSIONS = 0

    # APSC_ACK_WAIT_DURATION_POLLED = 500

    # ROUTE_EXPIRY_TIME = 255
    # NWK_MAX_DATA_RETRIES = 4

    My question is what are the parameter(s) that I must change to garantee that when the first transmisstion fails a Routing request is executed, for next message transmited to Router 3 can be do it with success?

    Best regards,

    Nalves

  • When you send messages, you can enable APS ack to know if the messages is delivered or not.
  • Hello YiKai Chen,

    Yes, the APS_ACK_REQUEST is enable on the parameter "options" of function AF_DataRequest().
    When the message can't be delivered, the ack Status become at 0xE9 if the destiny device is neighbord or 0xB7 if device needs routing until coordinator. This ack status is not enought for me, because coordinator must understand if destiny device doesn't receive the message because routing was lost or if destiny device is turned off. Do you have any idea for coordinator understand if the message wasn't receive by destiny device becouse routing fails or device is turned off?

    Best reagrds

    Nalves
  • If AF_DataRequest returns 0xCD, it means no route.
  • Hello YiKai Chen,

    In my tests The Ack return status only have value 0xCD if the destiny device doesn't exists. If desteny device exist and is register in the zigbee netowrk, the Ack return have the value 0xB7 if routing fails.

    I'm using Z-Stack home 1.2.1.Exists some changes of this procedure for the newest Z-Stack version?

    Best regards,

    Nalves
  • Do you use Ubiqua Protocol Analyzer to confirm coordinator sends route request to find routing when you receive 0xB7?

  • No, I use the packet sniffer.I already have some experience with this software and I can differenciate the routing request packages. But It is the point, The router 2 fails all tranmition retries and the router 2 doesn't call the routing request process.
  • Can you attach your sniffer log?
  • Hello Yikai Chen,

    I create the network again and it have the next topology:

    Coordinator------ Router 1 ---------- Router 2 ------- Router 3 ------------ Router 4

         0000                 53BF                  8826                2359                        9817

    All devices have purposeful scope restrictions to generate message hops between them.

    After the network stabilizes, I read the associated device list, neighbord tables, routing tables and routing source table of all devices and I send to you in attached file.

    I try to communicate with router 4 and the message isn't received by it. I send to you the sniffer log for you can check that any RREQ is provided, I send more message to them but without success.

    Best regards,

    NAlves

    Plug Fail communication.psd

    Device tables.zip

  • There are only beacon frames in your sniffer log and it means nothing to me. How can you judge anything from it?
  • I made another test. I try to communicate with device 0x2359 (Router 3) after reduce the range of router 1. PSD file attached presente the first comunication with Router 3. The log only shows the first try to comunicate with it. The Ack return status was 0xB7.

    Device comunication Failure.psd

    In this file you can check  the retries of communication?

  • Please include the device join process otherwise I don't have network key to decrypt the sniffer log.
  • Joining device.psdHi YiKai,

    Of course, Were it is, in attached file.

    Regards

    Nalves

  • I see device 0x2359 keeps sending messages in very short period which is about 3-4 ms and I think this is too much for Zigbee network.
  • Hi YiKai,

    Even I use the zigbee the retreis Was every 3-4 ms! Exists any parameter that change that period?

    Regards
  • When there is no MAC ack from receiver, device would try sending messages in very short period and you cannot change it. You should check why your coordinator doesn’t do MAC ack in time.