<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/75387/zigbee-routing-feature-problem</link><description>Hi guys, 
 So i have some Nordic DK board including some dongles, NRF52840 DK, NRF52833 DK running with Zigbee and thread SKD 4.1.0 and make a mesh out of them. But I have this problem with mesh topology in Zigbee relating to route discovery. I did 2</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Mon, 21 Jun 2021 08:29:16 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/75387/zigbee-routing-feature-problem" /><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/316182?ContentTypeID=1</link><pubDate>Mon, 21 Jun 2021 08:29:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:b03ed6bc-2db7-4994-8a47-abd38509988b</guid><dc:creator>Marjeris Romero</dc:creator><description>&lt;p&gt;Hi Mateus,&lt;/p&gt;
&lt;p&gt;I am very sorry for the lack of reply here. First thing, I will need a network key for reading the data from the packets in the sniffer trace you sent to me. If you start the sniffer trace before the network is formed this network key will be stored by wireshark automatically, but if the sniffer trace is started later on you should have a network key available to decode the sniffer traces. Right now the packets on the sniffer trace is undecoded:&lt;br /&gt;&lt;img src="https://devzone.nordicsemi.com/resized-image/__size/320x240/__key/communityserver-discussions-components-files/4/pastedimage1624262441563v1.png" alt=" " /&gt;&lt;/p&gt;
&lt;p&gt;And can we have a summary of the latest questions you have asked for this ticket? And what scenario (1 or 2 on the figures above) are we talking about? I need to try to summarize the inquiries in this ticket to past them to our developers.&lt;/p&gt;
[quote user="Mateus Vesuvious"]I have some other things to update to you. So when I printed out the neigbor table and then check the link status, I can see that they are not really the same. [/quote]
&lt;p&gt;Here I wouldn&amp;#39;t expect it to be the same.&lt;/p&gt;
&lt;p&gt;Link Status commands are use to keep track of route symmetry. A router will send out a radio 1 broadcast to indicated link status. All the neighboring routers keep track of these messages to determine which routers can hear them and which routers they can hear. So you can have more addresses in the neighbor table withot having them listed in the Link Status command.&lt;/p&gt;
&lt;p&gt;While the neighbor table contains information on every device within transmission range, you can have entries in the neighbor table with value of 0 for outgoing cost field if no link status command listing from this device has been received. &lt;br /&gt;&lt;br /&gt;The age field indicates the number of nwkLinkStatusPeriod intervals that have passed since the last link status command frame was received, up to a maximum value of nwkRouterAgeLimit.&lt;/p&gt;
&lt;p&gt;More information about the neighbor table can be found in the Zigbee specification:&lt;br /&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/docs_2D00_05_2D00_3474_2D00_21_2D00_0csg_2D00_zigbee_2D00_specification.pdf"&gt;devzone.nordicsemi.com/.../docs_2D00_05_2D00_3474_2D00_21_2D00_0csg_2D00_zigbee_2D00_specification.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Marjeris&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/314871?ContentTypeID=1</link><pubDate>Fri, 11 Jun 2021 09:54:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:3a34a520-9925-4f58-8f3d-9ce21b0ff9e7</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Majeris,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Is there any update on the problem I had?&lt;/p&gt;
&lt;p&gt;I have some other things to update to you. So when I printed out the neigbor table and then check the link status, I can see that they are not really the same. Usually, the link status will lack some addresses from the neighbor table. And because i also print out the aging parameter of the node to log, I am pretty sure that all of the missed addresses are still exist (since their aging keeps changing with every 15s) I want to know if this is a normal behavior of the node or is it an uncommon things to see.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you very much, please let me know if there are some new update.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best regards,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mateus&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/314115?ContentTypeID=1</link><pubDate>Tue, 08 Jun 2021 08:31:18 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:71193b8f-0fa6-4c98-9647-0bd3b0c5648c</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Marjeris,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Do you have any explanation about why the connection is broken after just being formed? I have something to ask you&lt;/p&gt;
&lt;p&gt;I use the api that you gave me to log the neighbor table and the routing table to debug the problem, And it is look like router can still receive the link status message one in a long while. So i have logged the tables out, i can see 0x0000 is still in side the neighbor table even when the router can not send anything to the coordinator. The entry is always their even with a very low LQI (like under 15) so i guess the router still see the coordinator as its neighbor and keep sending directly. But it is just my theory and since i can not find any thing on the zigbee spec for that. I want to ask you.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;1.If an entry is available in neighbor table,&lt;strong&gt; is it true that the node will send the message directly to the address of that entry without looking at the routing table.&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;2. When a new path is formed,&lt;b&gt; what is the behavior of the node if it receive a link status, will it prioritize&amp;nbsp;the neighbor&amp;nbsp;table and not use the corresponding entry in routing table&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;3. If it is the case, can you point out some ways for me to avoid this?&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;Thank you and please reply soon,&lt;/p&gt;
&lt;p&gt;Best regards,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Mateus&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/313246?ContentTypeID=1</link><pubDate>Thu, 03 Jun 2021 04:38:11 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:90647b26-ac44-4e89-b138-52869d349373</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Majeris,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you for your reply, i have managed to make a route request happen. But I have some questions to ask,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;So if the router 1 create a new route to coordinator but after that it receive a link status from the coordinator. Does it going to send the next packet by the new route through another router or going directly to the cordinator. In my experiment, I have this problem that after a few time making a new route, the node keep sending data to the coordinator directly. So I will a packet sniffer to you so you can take a look at it.&lt;/p&gt;
&lt;p&gt;And I also have an other similar question with many to one request, as far as i know, It will tell the routers to reserve an entry for sending the data to the collector (which is in my case is the coordinator, right?) and the router when it send somethinng will send a route record to it to send. But when I try it, routers did not send anything, instead, after a while of sending data through the new route, when MTORR hit, the router go back to use the direct path. Can you guess why it happen?&lt;/p&gt;
&lt;p&gt;Thank you very much, hope to hear from you soon and have a nice day,&lt;/p&gt;
&lt;p&gt;Here is the capture&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/3704.Problem-with-link-status.pcapng"&gt;devzone.nordicsemi.com/.../3704.Problem-with-link-status.pcapng&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Mateus&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/313242?ContentTypeID=1</link><pubDate>Thu, 03 Jun 2021 04:11:19 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:4e2c43f4-f28d-4d64-9a6d-1c86e3549079</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Tomchy,&lt;/p&gt;
&lt;p&gt;Thank you very much for your support, I will definitely look in to that and try to create a cli cmd for routing table, but i have some question for you about zigbee.&lt;/p&gt;
&lt;p&gt;So tell me if i am wrong but after receiving route reply, the node will add the new route to the coordinaotr into the routing table and the status for that entry is going to be VALIDATION_UNDERWAY and then being used as the new path. And I just want to know what will happen if it receive a link status directly from the coordinator, Will it update the neighbor table and started to send directly to the coordinator. So in order for the route resquest to be initiate, the router should be completly out of range with the coodinator in both direction right?&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And Some time when i Turn on the many to one request, after the router can establish a new path, there is also a problem that the node go back to send directly to the coordinator withou using the new path it create. It looks like it reset the routing table somehow. Can you guess why it is happen.&lt;/p&gt;
&lt;p&gt;Thank you and have a good day, I have attach a sniffer with it so you can look for any problem&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devzone.nordicsemi.com/cfs-file/__key/communityserver-discussions-components-files/4/Problem-with-link-status.pcapng"&gt;devzone.nordicsemi.com/.../Problem-with-link-status.pcapng&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Mateus&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/313229?ContentTypeID=1</link><pubDate>Thu, 03 Jun 2021 00:28:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:56520660-9e49-4cab-89fa-2fd8e2e6f9ad</guid><dc:creator>tomchy</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
&lt;p&gt;Similarly to the neighbor table, you can use the memory config feature to sneak into the routing table. There is another counter there for each entry and once the entry for a route in question times out, you shall see a Route Request packet.&lt;/p&gt;
&lt;p&gt;Essentially - it works, but it is not as fast as you may expect it to be. The thing is that for the &amp;quot;development&amp;quot; installations you would like to see a very quick route discovery, but in real installations, where routers are not that mobile, very intense and quick route recalculation may put a significant load on the network (if one router dies, it is likely that the whole section of a building runs out of mains power).&lt;/p&gt;
&lt;p&gt;Unfortunately I cannot provide you a code snippet for that as I am quite busy right now, but I hope that with those directions you can figure that out.&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Tomchy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/313058?ContentTypeID=1</link><pubDate>Wed, 02 Jun 2021 10:16:41 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:13c63da2-b0ee-4eb4-b018-311fb4b72ecd</guid><dc:creator>Marjeris Romero</dc:creator><description>&lt;p&gt;Hi,&lt;/p&gt;
[quote user="Mateus Vesuvious"]&lt;strong&gt;Yes i did check all of the link status of Router 1, 2, and Coordinator. Since i only place them in the vincinity of each other (about 3 meter) each of them already contain links to others and the link cost are ranging from 2-4 for both incoming and outgoing path cost&lt;/strong&gt;.[/quote]
&lt;p&gt;Perhaos you can supply some sniffer logs from your experiments? I have run your example but I am only able to test with 2 routers and 1 coordinator at the moment.&lt;/p&gt;
[quote user="Mateus Vesuvious"]With each link status periodically send at 15s and routing table aging is 3, the entry of routing table in both of them should be erased by then and then from what i understand, router 1 should init a route request. [/quote]
&lt;p&gt;Can you point to the section on the specification that backs your assumptions?&lt;/p&gt;
&lt;p&gt;What I have found is that if a device fails to receive nwkRouterAgeLimit link status messages from a router neighbor in a row, the old outgoing cost information is discarded and the neighbor entry is considered stale and may be reused if necessary to make room for a new neighbor.&lt;/p&gt;
&lt;p&gt;Here you have a simple snippet, that you may plug into the &lt;tt&gt;zigbee_cli_cmd_zdo.c&lt;/tt&gt; file. Afterwards - you can read the internal neighbor table through &lt;tt&gt;zdo neighbors&lt;/tt&gt; command to check if the neigbour entry for router 1 is considered stale or not by the coordinator:&lt;br /&gt;&lt;pre class="ui-code" data-mode="text"&gt;/**

 * @brief Prints all entries of the neighbor table.

 *

 * @code

 * zdo neighbors

 * @endcode

 *

 * Example:

 * @code

 * zdo neighbors

 * @endcode

 */

static void cmd_zb_neighbors(nrf_cli_t const * p_cli, size_t argc, char **argv)

{

    uint32_t i;

    zb_ieee_addr_t ieee_addr;

    zb_uint16_t addr;

 

    if ((argc &amp;gt; 1) || (nrf_cli_help_requested(p_cli)))

    {

        print_usage(p_cli, argv[0], &amp;quot;&amp;quot;);

        return;

    }

 

    nrf_cli_fprintf(p_cli,

                    NRF_CLI_NORMAL,

                    &amp;quot;\r\n[idx] &amp;quot;

                    &amp;quot;ext_addr         &amp;quot;

                    &amp;quot;short_addr &amp;quot;

                    &amp;quot;type &amp;quot;

                    &amp;quot;sleepy &amp;quot;

                    &amp;quot;lqi &amp;quot;

                    &amp;quot;age &amp;quot;

                    &amp;quot;timeout &amp;quot;

                    &amp;quot;relationship\r\n&amp;quot;);

 

    for (i = 0; i &amp;lt; gc_neighbor_table_size; i++)

    {

        if ((gc_neighbor[i].used == 0) ||

            (gc_neighbor[i].ext_neighbor != 0))

        {

            continue;

        }

 

        nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot;[%3u] &amp;quot;, i);

 

        zb_address_ieee_by_ref(ieee_addr, gc_neighbor[i].u.base.addr_ref);

        print_eui64(p_cli, ieee_addr);

 

        zb_address_short_by_ref(&amp;amp;addr, gc_neighbor[i].u.base.addr_ref);

        nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; 0x%04x    &amp;quot;, addr);

 

        switch (gc_neighbor[i].device_type) {

            case ZB_NWK_DEVICE_TYPE_COORDINATOR:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; ZC  &amp;quot;);

                break;

 

            case ZB_NWK_DEVICE_TYPE_ROUTER:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; ZR  &amp;quot;);

                break;

 

            case ZB_NWK_DEVICE_TYPE_ED:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; ZED &amp;quot;);

                break;

 

            default:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; ??? &amp;quot;);

                break;

        }

 

        if (gc_neighbor[i].rx_on_when_idle)

        {

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; false &amp;quot;);

        }

        else

        {

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; true  &amp;quot;);

        }

 

        nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; %03u&amp;quot;, gc_neighbor[i].lqi);

 

        if (gc_neighbor[i].device_type != ZB_NWK_DEVICE_TYPE_ED)

        {

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; %03u  ---   &amp;quot;, gc_neighbor[i].u.base.age);

        }

        else

        {

            zb_time_t exp_time = ZB_TIME_SUBTRACT(gc_neighbor[i].u.base.time_to_expire, ZB_TIMER_GET());

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; --- %07u&amp;quot;, ZB_TIME_BEACON_INTERVAL_TO_MSEC(exp_time) / 1000);

        }

 

        switch (gc_neighbor[i].relationship) {

            case 0x00:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; parent&amp;quot;);

                break;

 

            case 0x01:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; child&amp;quot;);

                break;

 

            case 0x02:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; sibling&amp;quot;);

                break;

 

            case 0x03:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; none&amp;quot;);

                break;

 

            case 0x04:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; previous child&amp;quot;);

                break;

 

            case 0x05:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; unauthenticated child&amp;quot;);

                break;

 

            default:

                nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; unknown&amp;quot;);

                break;

        }

 

        if ((gc_neighbor[i].device_type != ZB_NWK_DEVICE_TYPE_ED) &amp;amp;&amp;amp;

            (gc_neighbor[i].u.base.outgoing_cost == 0))

        {

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot; [STALE]\r\n&amp;quot;);

        }

        else

        {

            nrf_cli_fprintf(p_cli, NRF_CLI_NORMAL, &amp;quot;\r\n&amp;quot;);

        }

    }

 

    print_done(p_cli, ZB_TRUE);

}

...

    NRF_CLI_CMD(neighbors, NULL, &amp;quot;lists all entries from the neighbor table&amp;quot;, cmd_zb_neighbors),

    NRF_CLI_SUBCMD_SET_END

};
&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;Example output for an aged-out router (ZC in this case):&lt;/p&gt;
&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;&amp;gt; zdo neighbors
[idx] ext_addr         short_addr type sleepy lqi age timeout relationship
[  0] f4ce36aaaaaaaaaa 0x0000     ZC   false  255 003  ---    parent [STALE]&lt;/pre&gt;&lt;br /&gt;&lt;br /&gt;You can for example check if if the entry for router 1 in the coordinator is really really out of range from the coordinator by checking if the entry is stale. &lt;/p&gt;
[quote user="Mateus Vesuvious"]So please advise me how to get router 1 to do a route discovery when it is out of range. On which kind of condition that it has to meet before being able to do route discovery since it is pretty confusing to me until this point. [/quote]
&lt;p&gt;If you have a route from Router 1 &amp;lt;-&amp;gt; Router 2 &amp;lt;-&amp;gt; Coordinator where Router 1 and you turn OFF router 2 and coordinator is out of reach you will then see a route request from Router 1 after a couple of retries when sending a ZCL command with required ack.&lt;/p&gt;
[quote user="Mateus Vesuvious"]Also from the log, it pop up a no parent link failure message when i turn off router 2. That is the reason why I expect to see a route request to 0x0000. But i did not.[/quote]
&lt;p&gt;Did you see any retries from router 1 trying to send a message to the coordinator? Just one ZCL command that doesn&amp;#39;t reach the destination is not enough to trigger searching a new path in the stack. It can be observed in frames through the sequence number field in Zigbee Network Layer Data. The sequence number should increment while the lower layers perform the retries. After about 10-12 ZCL commands you should see a route discovery request.&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Marjeris&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/312504?ContentTypeID=1</link><pubDate>Sun, 30 May 2021 05:19:45 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2234add0-35fe-435a-bb4c-f754879933ef</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Majeris,&lt;/p&gt;
&lt;p&gt;Thank you for your answer. I am very happy to received it and give you back some more information so that i can crack this as soon as possible.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;em&gt;Did you look into the Link Status of Router 2 before removing Router 1 out of reach of the coordinator?&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;- Yes i did check all of the link status of Router 1, 2, and Coordinator. Since i only place them in the vincinity of each other (about 3 meter) each of them already contain links to others and the link cost are ranging from 2-4 for both incoming and outgoing path cost&lt;/strong&gt;. In addition, from what i saw in your answer,&amp;nbsp;when the router 2 had an entry in its routing table to the destination which router 1 trying to send, then router 1 will not initiate any request to re route. I do not think that this is really the case. Correct me if I am wrong, after 3 -4 minutes of router 1 get out of range, both router 1 and coordinator will not receive any link status update. With each link status periodically send at 15s and routing table aging is 3, the entry of routing table in both of them should be erased by then and then from what i understand, router 1 should init a route request. So, I do not see any how and why router 2 having a entry in routing table which router 1 trying to send to have anything to do with router 1 realising its link is broken and trying to repair itself. So please advise me how to get router 1 to do a route discovery when it is out of range. On which kind of condition that it has to meet before being able to do route discovery since it is pretty confusing to me until this point. If it is possible, can you point out the part where the condition in my test violate the zigbee specs.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;&lt;strong&gt;What was the Link Status in Router 1 before turning Router 2 off? Did Router 1 had Router 2 in his Link list? Why do you spect Router 1 to sent out a Route request message? Is Router 1 receiving a NLME-ROUTE-DISCOVERY.request from a higher layer? Please be more specific as what do you mean with &amp;quot;In theory....&amp;quot;?&amp;nbsp;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;When i said in theory, I means that with what i read from the zigbee specs. &lt;/strong&gt;Well, like in the exp#1, i also check for the link status, and read the log coming out of router 1 to see that it did have router 2 and 3 in its link status. Also from the log, it pop up a no parent link failure message when i turn off router 2. That is the reason why I expect to see a route request to 0x0000. But i did not. So in this case, can you implicit when will the router will initiate a route request. Does the process of forming a mesh just slow or need to acquire any specific condition before it start. If it is slow, how can i speed this up, If there is something i could do to make this faster, please enlighten me. I am very happy to receive your detail advices.&lt;/p&gt;
&lt;p&gt;Have a good day,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Best,&lt;/p&gt;
&lt;p&gt;Tu&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/312475?ContentTypeID=1</link><pubDate>Fri, 28 May 2021 20:44:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c1b565b1-e4de-453c-a4f5-5e747c54f75c</guid><dc:creator>Marjeris Romero</dc:creator><description>&lt;p&gt;Hi Mateus,&lt;/p&gt;
&lt;p&gt;Interesting experiments. Let&amp;#39;s try to analyze the specification section 3.6.3.5.1 Initiation of Route Discovery&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The unicast route discovery procedure for a device shall be initiated on a ZigBee router or ZigBee coordinator by the NWK layer up on receipt of an NLME-ROUTE-DISCOVERY.request primitive from the next higher layer where the DstAddrMode parameter has a value of 0x02. Or, up on receipt of an NLDE-DATA.request primitive from a higher layer with the DstAddrMode set to 0x02 and the discover route sub-field set to 0x01, for which there is no routing table entry corresponding to the routing address of the destination device (the 16-bit network address indicated by the DstAddr parameter). &lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;Or, on receipt of a frame from the MAC sub-layer for which the value of the destination address field in the NWK header is not the address of the current device, the address of an end device child of the current device, or a broadcast address and:&lt;/em&gt;&lt;br /&gt;&lt;em&gt;• The discover route sub-field of the frame control field has a value of 0x01, and&lt;/em&gt;&lt;br /&gt;&lt;em&gt;• there is no routing table entry corresponding to the routing destination of the frame, and&lt;/em&gt;&lt;br /&gt;&lt;em&gt;• either the value of the source address field of the NWK header of the received frame is the same as the 16-bit network address of one of the end device children of the current device, or&lt;/em&gt;&lt;br /&gt;&lt;em&gt;• the nwkUseTreeRouting attribute of the NIB has a value of TRUE.&lt;/em&gt;&lt;br /&gt;&lt;br /&gt;&lt;em&gt;The route discovery procedure for a multicast address shall be initiated by the NWK layer either in response to the receipt of an NLME-ROUTE-DISCOVERY.request primitive from the next higher layer where the DstAddrMode parameter has a value of 0x01, or as specified in section 3.6.6.2.2.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Based on this my thoughts on the results of your experiments are the following:&lt;/p&gt;
&lt;p&gt;Experiment nr 1:&lt;/p&gt;
[quote user=""]From what i learn in the zigbee spec, the router will try to fix and create a new route if the destination is unreachable. I use a sniffer to monitor the network but i did not see any route request sent even after 3-4 minutes.[/quote]
&lt;p&gt;Did you look into the Link Status of Router 2 before removing Router 1 out of reach of the coordinator? If Router 2 had a link to the coordinator before Router 1 was remove away from the coordinator then I don&amp;#39;t know if you will necessary get a Route request when Router 1 gets out of the coordinator reach, since there was a routing table entry corresponding to the routing destination of the frame in Router 2.&lt;/p&gt;
&lt;p&gt;Experiment nr 2:&lt;/p&gt;
[quote user=""]In theory Router 1 should re route to path (2). But it did not, when it sent out the message, it kept sending to the addr 0x0000 and not start to send any route request. This time i also waited for 4 minutes and reset every device in the network. But still nothing happened.&amp;nbsp;[/quote]
&lt;p&gt;What was the Link Status in Router 1 before turning Router 2 off? Did Router 1 had Router 2 in his Link list? Why do you spect Router 1 to sent out a Route request message? Is Router 1 receiving a NLME-ROUTE-DISCOVERY.request from a higher layer? Please be more specific as what do you mean with &amp;quot;In theory....&amp;quot;?&lt;/p&gt;
&lt;p&gt;Best regards,&lt;/p&gt;
&lt;p&gt;Marjeris&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/311946?ContentTypeID=1</link><pubDate>Thu, 27 May 2021 04:41:42 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cba0d1e7-d678-4805-b2a2-973e36464ae7</guid><dc:creator>Mateus Vesuvious</dc:creator><description>&lt;p&gt;Hi Tomchy,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you for your answer.&lt;/p&gt;
&lt;p&gt;For the first question, may be you misunderstand the figure i do not intend to say that the router should be keeping an active route. But the dash lines just mean that each router is in within the range of each other and it is possible for the router to route pathways along different dash lines . But as i have in the attached code. I only send the data to the coordinator so the&amp;nbsp; &amp;nbsp;router should find the way to relay the message to the coordinator (a) if the coordinator is not the routing table and (b) if the packet sending not receive an ACK. as in section 3.6.3.5.1&amp;nbsp;&lt;span dir="ltr"&gt;Initiation of Route Discovery&lt;/span&gt;&amp;nbsp;of the Zigbee spec line 8981 - 8983. But i do not see that behavior in the test above.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;For the second question, i also tested the configure report a few days ago. I use a the coordinator to bind and then configure the report for every 10 sec, but the result is still the same. Do I have to lower the time to even more to see the route discovery faster?&amp;nbsp;&lt;/p&gt;
&lt;p&gt;And for the last question, can you show me what kind of packets to expect to know if the router figure out the route. For me i only know the about route request and route reply but i did not see any of them in either of the test case above.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;Thank you very much, please reply soon.&lt;/p&gt;
&lt;p&gt;Best regards,&amp;nbsp;&lt;/p&gt;
&lt;p&gt;PS: I include the spec that i read with this post so you can check if i misunderstand anything.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://zigbeealliance.org/wp-content/uploads/2019/11/docs-05-3474-21-0csg-zigbee-specification.pdf"&gt;zigbeealliance.org/.../docs-05-3474-21-0csg-zigbee-specification.pdf&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Tu&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: Zigbee routing feature problem</title><link>https://devzone.nordicsemi.com/thread/311600?ContentTypeID=1</link><pubDate>Tue, 25 May 2021 21:43:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9fc0b180-aff7-4213-bd6b-1adeec73f098</guid><dc:creator>tomchy</dc:creator><description>&lt;p&gt;Hello Mateus!&lt;/p&gt;
&lt;p&gt;Could you point out the section inside the spec that obliges the router to keep an active route to the coordinator?&lt;/p&gt;
&lt;p&gt;I was just thinking - could you configure a periodic reporting on the mobile router and rerun your tests? The CLI sample already has all required commands, no recompilation is needed.&lt;/p&gt;
&lt;p&gt;The idea here is that sending reports to the coordinator at constant interval will push the router to refresh the route. Additionally - you will see if the router figures out the route, based on other packets.&lt;/p&gt;
&lt;p&gt;BR,&lt;/p&gt;
&lt;p&gt;Tomchy&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>