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?
Solved! Go to Solution.
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
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
Hi JC
Thank you for your response. We will go for the coap factoryreset.
Regards
Kim
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.
Please refer to <SDK path>\docs\wireless\Thread\Kinetis Thread Stack Shell Interface User's Guide.pdf for Shell documentation.
Regards,
JC
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