[![](https://openthread.io/static/images/icon-github.svg)View source on GitHub](https://github.com/openthread/ot-docs/tree/main/site/en/guides/build/features/periodic-parent-search.md)

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

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

- RSSI (received signal strength indicator)
- Link Quality
- Connectedness of the candidate parent to other Mesh Extenders
- Number of existing children for the candidate parent

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

## How it works

1. The ED checks the average RSSI value for its current parent, according to the configured check interval ([`OPENTHREAD_CONFIG_PARENT_SEARCH_CHECK_INTERVAL`](https://openthread.io/guides/build/features/periodic-parent-search#check_interval)).
2. If the average RSSI value for the ED's current parent is below the configured threshold ([`OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD`](https://openthread.io/guides/build/features/periodic-parent-search#rss_threshold)), a parent search is initiated:
   1. If the parent search discovers a better parent, the ED dissolves its current Child-Parent link and initiates the [MLE
      Attach](https://openthread.io/guides/thread-primer/network-discovery.md#join_an_existing_network) process with the new parent.
   2. If the parent search does not discover a better parent, 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 according to the configured backoff interval ([`OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL`](https://openthread.io/guides/build/features/periodic-parent-search#backoff_interval)). This backoff occurs regardless of the outcome of the parent search.

> [!NOTE]
> **Note:** The parent search process may be power consuming, as the child must remain in RX mode to receive parent responses. Use the backoff interval to limit the impact of periodic parent searches on battery-powered devices.

We recommend enabling the [Inform Previous Parent on
Reattach](https://openthread.io/guides/build/features/inform-previous-parent-on-reattach.md) 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`](https://github.com/openthread/openthread/tree/main//src/core/config/parent_search.h)
file, prior to [building OpenThread](https://openthread.io/guides/build/index.md):

    #ifndef OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE
    #define OPENTHREAD_CONFIG_PARENT_SEARCH_ENABLE 1
    #endif

## Parameters

Use the following parameters in
[`/src/core/config/parent_search.h`](https://github.com/openthread/openthread/tree/main//src/core/config/parent_search.h)
to customize this feature:
Parameters OPENTHREAD_CONFIG_PARENT_SEARCH_CHECK_INTERVAL **Default value** 540 seconds (9 minutes) **Description** Specifies the interval in seconds for a child to check the trigger condition to perform a parent search. OPENTHREAD_CONFIG_PARENT_SEARCH_BACKOFF_INTERVAL **Default value** 36000 seconds (10 hours) **Description** Specifies the backoff interval in seconds for a child to not perform a parent search after triggering one. OPENTHREAD_CONFIG_PARENT_SEARCH_RSS_THRESHOLD **Default value** -65 **Description** Specifies the RSSI threshold used to trigger a parent search.

## API

There is no public API for this feature.

## CLI

There are no CLI commands related to this feature.