How to force a thread node to leave the network

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

How to force a thread node to leave the network

Jump to solution
1,587 Views
kimnyholm
Contributor II

We have a simple setup using two FRDMKW41Z evaluation boards. One runs the frdmkw41z_wireless_examples_thread_end_device_freertos reference project, the other the frdmkw41z_wireless_examples_thread_router_eligible_device_freertos project.

Using the shell on the boards we create the network on the router and joins the network on the end device.

Now we want to exclude the end device from the network.

Using the shell we have tried different things on the router, e.g. below sequence:
- factoryreset
- thr create
- thr joiner removeall

However the end device is still in the network, e.g. when pressing SW3 the LED on the router changes.

What measures can the router do in order to get the node of the network?

0 Kudos
Reply
1 Solution
1,375 Views
jc_pacheco
NXP Employee
NXP Employee

Hi Kim,

Unfortunately, you can't remove an end device from the network without asking him to detach (Thread 1.1), this is because the end device will already have the network key and will try to rejoin the network through another parent when it detects it's not connected to the last known parent.

You could remotely ask the end device to "factory reset" or "detach" using a CoAP command similar to how it's done when "#define LARGE_NETWORK 1" is defined. See "gAPP_RESET_URI_PATH" URI but modify it as Unicast. This would require the end device to do a data request to get this packet.

Another (not recommended) option could be to use mac filtering... but you'd need to add a rule to reject that specific device on all routers. And the device would never rejoin the network until that rule is removed.

-JC

View solution in original post

0 Kudos
Reply
4 Replies
1,376 Views
jc_pacheco
NXP Employee
NXP Employee

Hi Kim,

Unfortunately, you can't remove an end device from the network without asking him to detach (Thread 1.1), this is because the end device will already have the network key and will try to rejoin the network through another parent when it detects it's not connected to the last known parent.

You could remotely ask the end device to "factory reset" or "detach" using a CoAP command similar to how it's done when "#define LARGE_NETWORK 1" is defined. See "gAPP_RESET_URI_PATH" URI but modify it as Unicast. This would require the end device to do a data request to get this packet.

Another (not recommended) option could be to use mac filtering... but you'd need to add a rule to reject that specific device on all routers. And the device would never rejoin the network until that rule is removed.

-JC

0 Kudos
Reply
1,375 Views
kimnyholm
Contributor II

Hi JC

Thank you for your response. We will go for the coap factoryreset.

Regards

Kim

0 Kudos
Reply
1,375 Views
jc_pacheco
NXP Employee
NXP Employee

Hi Kim,

In shell, use "thr detach" (THR_NwkDetach(threadInstanceID)) to remove the node from the network.

By default, the Thread demos start a commissioner to allow all devices to join to the network, you need to remove this rule, add the joiner's PSKD + EUI and send the "sync steering" command.

pastedImage_3.png

Please refer to <SDK path>\docs\wireless\Thread\Kinetis Thread Stack Shell Interface User's Guide.pdf for Shell documentation.

Regards,

JC

0 Kudos
Reply
1,375 Views
kimnyholm
Contributor II

Hi JC

We are aware the detach command and the catch all joiner rule.

My question was, assuming your setup above, how do we remove the node with EUI ending with "...DEF" from the network, after is has successfully joined.

We have to do it using shell/api on the router only and the method should also handle the situation where the node to be removed is not currently online.

Regards

Kim

0 Kudos
Reply