Child Supervision

View source on GitHub

To provide an energy-efficient mechanism for a sleepy end device (SED) to verify that it is still connected to its parent router (listed in the parent router's child table), enable the Child Supervision feature.

The Thread Specification requires an SED to periodically perform an MLE Child Update Request and Response exchange with its parent router to verify connectivity. Child Supervision is an alternate solution for verification of SED-router connectivity that places the burden of message transmission on the parent router instead of on the energy-constrained SED.

How it works

This feature works in two ways, depending on the node type and which parameters are configured:

On the parent

If a parent router does not transmit to its child SED within the OPENTHREAD_CONFIG_CHILD_SUPERVISION_INTERVAL, the parent router enqueues and sends a Child Supervision message to the child SED. The Child Supervision message is a MAC frame containing the following information:

  • The RLOC16 of the SED as the destination in the MAC header.
  • An empty payload.

By default, a MAC header contains an 802.15.4 ACK request. To disable this request in the Child Supervision message, set the OPENTHREAD_CONFIG_CHILD_SUPERVISION_MSG_NO_ACK_REQUEST parameter to 1.

On the child

If an SED does not hear from its parent router within the OPENTHREAD_CONFIG_CHILD_SUPERVISION_CHECK_TIMEOUT, it assumes that it has lost its connection to the parent router and initiates the MLE Attach process to reattach to the parent router.

How to enable

This feature is disabled by default.

By define

To enable Child Supervision, define OPENTHREAD_CONFIG_CHILD_SUPERVISION_ENABLE as 1 in the openthread/src/core/config/child_supervision.h file, prior to building OpenThread:


By option

Alternatively, use the -DOT_CHILD_SUPERVISION=ON build option when building OpenThread:



Use the following parameters in openthread/src/core/config/child_supervision.h to customize this feature:

Default value
129 seconds
Specifies the supervision interval in seconds used by parent. Set to 0 to disable the supervision process on the parent.
Default value
190 seconds
Specifies the supervision check timeout interval in seconds used by a device in child state. Set to 0 to disable the supervision check process on the child.
Default value
0 (ACK request enabled)
Set to 1 to clear/disable the 802.15.4 ACK request in the MAC header of a supervision message.


Use the Child Supervision API to manage the supervision and check timeout intervals directly in your OpenThread application.


There are no CLI commands related to this feature.