Periodic Parent Search

View source on GitHub

To allow end devices (EDs) in a Thread network to switch to a better parent router than their current one—while still attached to the network—enable the Periodic Parent Search feature.

To determine whether a router is a better parent for the ED, this feature checks a variety of router attributes, including:

  • RSSI (received signal strength indicator)
  • Link Quality
  • Connectedness of the router to other routers
  • Number of existing children for the router

This ensures that EDs connect to the best possible router rather than remaining attached to a router with poor link quality or connectedness. This feature is particularly useful when a new router is added to an existing Thread network.

How it works

  1. The ED checks the average RSSI value for its current parent router, according to the configured check interval (OPENTHREAD_CONFIG_PARENT_SEARCH_CHECK_INTERVAL).
  2. If the average RSSI value for the ED's current parent router is below the configured threshold (OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD), a parent search is initiated:
    1. If the parent search discovers a better parent router, the ED dissolves its current Child-Parent link and initiates the MLE Attach process with the new router.
    2. If the parent search does not discover a better parent router, the existing Child-Parent link remains.
  3. After the parent search attempt, the ED waits to check the average RSSI value for its current parent router according to the configured backoff interval (OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL). This backoff occurs regardless of the outcome of the parent search.

We recommend enabling the Inform Previous Parent on Reattach feature in conjunction with this feature.

How to enable

This feature is disabled by default.

To enable Periodic Parent Search, define OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE as 1 in the /src/core/config/parent_search.h file, prior to building OpenThread:



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

Default value
540 seconds (9 minutes)
Specifies the interval in seconds for a child to check the trigger condition to perform a parent search.
Default value
36000 seconds (10 hours)
Specifies the backoff interval in seconds for a child to not perform a parent search after triggering one.
Default value
Specifies the RSSI threshold used to trigger a parent search.


There is no public API for this feature.


There are no CLI commands related to this feature.