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.

CC2531: Z-Stack - Zigbee join problem with basic security.

Part Number: CC2531
Other Parts Discussed in Thread: Z-STACK, Z-STACK-ARCHIVE

Hi!

I try to debug a connection problem we have sometimes.

A router looses the connection and do not come back for en hour/a day or more. I can see it keeps trying to join but it does not get the Transport key.

Router_P1 and Router_P2 have the coordinator as parent.

Router_C joined the net with Router_P1 as parent.

Everything is fine and working.

If Router_C has a short power fail it joins the network most of the time with Router_P1 as parent and everything works again. This is expected because Router_P1 is much closer to Router_C.

But sometimes Router_C gets no beacon from Router_P1 during joining but from Router_P2. Therefore it joins via Router_P2 instead.
I can see in TIs packet sniffer that:

  • Router_C gets an Association Response packet from Router_P2 and sends an ACK. Router_C is therefore en unauth child of Router_P2.
  • The Coordinator gets an Update Device packet from Router_P2 and sends an ACK.
  • The coordinator sends the Transport key to Router_P2 including a tunnel command with Router_C as end destination.
  • Router_P2 ACKs the Transport key packet.


So long is everything fine and works as expected.

Router_C is an unauth child of Router_P2 so I expect that Router_P2 sends the received Transport key directly to Router_C.

But this does not happen. Router_P2 sends the Transport key to Router_P1 instead. Router_P1 does not know what to do with the packet and discards it.
Router_C gets a timeout after 10 sec and restart the join procedure.

My questions:

  • The packet has right address information on the Zigbee-NWK layer (dest: 0xe9dd) but has wrong address information on the IEEE-MAC layer (dest: 0x7463). Why is this so?
  • Is this a known problem?
  • Why is Router_P2 sending the packet to Router_P1 instead?
  • Is the neighbor or routing table defect on Router_P2?
  • It seems the routing? decision is done in the OSAL. Is it possible to get debug from this layer?
  • How can I debug this further?


Coordinator 0x0000
Router_P1 0x7463
Router_P2 0x0ec2
Router_C 0xe9dd

Thanks in advance

Thomas