blob: 02a997028db40291a80894623100b9f24d8daf66 [file] [log] [blame]
# Copyright (c) 2022 Nordic Semiconductor ASA
# Copyright 2025 NXP
# SPDX-License-Identifier: Apache-2.0
config OPENTHREAD
bool "OpenThread Support"
imply FLASH
imply FLASH_MAP
imply MPU_ALLOW_FLASH_WRITE
select SETTINGS if FLASH
select OPENTHREAD_SETTINGS_RAM if !FLASH
select CPP
select REBOOT
select ENTROPY_GENERATOR
help
This option enables the OpenThread library
if OPENTHREAD
config OPENTHREAD_SYS_INIT
bool "Initialize OpenThread stack during system initialization"
default y
depends on !NET_L2_OPENTHREAD
help
This option initializes the OpenThread automatically by calling the openthread_init()
function during system initialization.
config OPENTHREAD_SYS_INIT_PRIORITY
int "OpenThread system initialization priority"
default 40
depends on OPENTHREAD_SYS_INIT
help
This option sets the priority of the OpenThread system initialization.
choice OPENTHREAD_IMPLEMENTATION
prompt "OpenThread origin selection"
help
Select OpenThread stack to use for build. Custom OpenThread implementations
can be added to the application Kconfig.
config OPENTHREAD_SOURCES
bool "OpenThread from sources"
help
Build Zephyr's OpenThread port from sources.
endchoice
config OPENTHREAD_MANUAL_START
bool "Start OpenThread stack manually"
help
If enabled, OpenThread stack will have to be configured and
started manually, with respective API calls or CLI/NCP commands.
Otherwise, OpenThread will configure the network parameters and try to
join the Thread network automatically during initialization (using
credentials stored in persistent storage, obtained during
commissioning or pre-commissioned with other Kconfig options,
depending on configuration used).
menu "Logging"
menuconfig OPENTHREAD_DEBUG
bool "OpenThread stack logging support"
help
This option enables logging support for OpenThread.
choice OPENTHREAD_LOG_LEVEL_CHOICE
prompt "OpenThread stack log level"
depends on OPENTHREAD_DEBUG
help
This option selects log level for OpenThread stack.
config OPENTHREAD_LOG_LEVEL_CRIT
bool "Critical"
config OPENTHREAD_LOG_LEVEL_WARN
bool "Warning"
config OPENTHREAD_LOG_LEVEL_NOTE
bool "Notice"
config OPENTHREAD_LOG_LEVEL_INFO
bool "Informational"
config OPENTHREAD_LOG_LEVEL_DEBG
bool "Debug"
endchoice # OPENTHREAD_LOG_LEVEL_CHOICE
config OPENTHREAD_LOG_LEVEL
int
default 1 if OPENTHREAD_LOG_LEVEL_CRIT
default 2 if OPENTHREAD_LOG_LEVEL_WARN
default 3 if OPENTHREAD_LOG_LEVEL_NOTE
default 4 if OPENTHREAD_LOG_LEVEL_INFO
default 5 if OPENTHREAD_LOG_LEVEL_DEBG
default 0
help
Log level for OpenThread stack.
config OPENTHREAD_PLATFORM_LOG_LEVEL
int
default 1 if OPENTHREAD_LOG_LEVEL_CRIT
default 2 if OPENTHREAD_LOG_LEVEL_WARN
default 3 if OPENTHREAD_LOG_LEVEL_NOTE || OPENTHREAD_LOG_LEVEL_INFO
default 4 if OPENTHREAD_LOG_LEVEL_DEBG
default 0
help
Log level for OpenThread Zephyr platform.
endmenu # "Logging"
menu "Zephyr optimizations"
config OPENTHREAD_THREAD_PREEMPTIVE
bool "Set Openthread thread to be preemptive"
config OPENTHREAD_THREAD_PRIORITY
int "OpenThread thread priority"
default 0 if OPENTHREAD_THREAD_PREEMPTIVE
default 8
config OPENTHREAD_THREAD_STACK_SIZE
int "OpenThread thread stack size"
default 6144 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
default 6240 if (OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER) && MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M
default 3168 if MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M
default 3072
config OPENTHREAD_PKT_LIST_SIZE
int "List size for IPv6 packet buffering"
default 10
config OPENTHREAD_RADIO_WORKQUEUE_STACK_SIZE
int "OpenThread radio transmit workqueue stack size"
default 608 if MPU_STACK_GUARD && FPU_SHARING && CPU_CORTEX_M
default 512
config OPENTHREAD_RADIO_WORKQUEUE_PRIORITY
int "OpenThread radio transmit workqueue priority"
default 0 if OPENTHREAD_THREAD_PREEMPTIVE
default 7
endmenu # "Zephyr optimizations"
config OPENTHREAD_SHELL
bool "OpenThread shell"
depends on SHELL
config MBEDTLS_PROMPTLESS
default y if !CUSTOM_OPENTHREAD_SECURITY
choice OPENTHREAD_SECURITY
prompt "OpenThread security"
default OPENTHREAD_MBEDTLS_CHOICE
config CUSTOM_OPENTHREAD_SECURITY
bool "Custom"
help
Security settings will be controlled directly by the user.
Enabling this setting will give access to full control of mbed TLS
configuration.
config OPENTHREAD_MBEDTLS_CHOICE
bool "mbed TLS built-in"
select OPENTHREAD_MBEDTLS
help
Use the OpenThread mbed TLS configuration pre-defined security scheme.
endchoice
config OPENTHREAD_MBEDTLS
bool
select MBEDTLS
select MBEDTLS_ENABLE_HEAP
select MBEDTLS_CIPHER_AES_ENABLED
select MBEDTLS_CIPHER_CCM_ENABLED
select MBEDTLS_SHA256
select MBEDTLS_ENTROPY_C
select MBEDTLS_CMAC
select MBEDTLS_CIPHER
select MBEDTLS_MD
select MBEDTLS_TLS_VERSION_1_2 if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_DTLS if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_KEY_EXCHANGE_ECJPAKE_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_ECJPAKE_C if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_ECP_DP_SECP256R1_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || \
OPENTHREAD_SRP_CLIENT || OPENTHREAD_SRP_SERVER
select MBEDTLS_ECP_NIST_OPTIM if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_CTR_DRBG_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER
select MBEDTLS_HMAC_DRBG_ENABLED if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || \
OPENTHREAD_SRP_CLIENT || OPENTHREAD_SRP_SERVER
select MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED if OPENTHREAD_ECDSA
select MBEDTLS_ECDH_C if OPENTHREAD_ECDSA
select MBEDTLS_ECDSA_C if OPENTHREAD_ECDSA
select MBEDTLS_ECDSA_DETERMINISTIC if OPENTHREAD_ECDSA
select MBEDTLS_PK_WRITE_C if OPENTHREAD_ECDSA
select MBEDTLS_ECP_C if OPENTHREAD_COMMISSIONER || OPENTHREAD_JOINER || OPENTHREAD_ECDSA
config OPENTHREAD_MBEDTLS_LIB_NAME
string "mbedtls lib name"
default "mbedTLS"
help
This option allows to specify one or more mbedtls library files to be
linked with OpenThread. Separate multiple values with space " ".
config OPENTHREAD_COPROCESSOR
bool "OpenThread Co-Processor"
select OPENTHREAD_MANUAL_START
select RING_BUFFER
select UART_INTERRUPT_DRIVEN
help
Enable Co-Processor in OpenThread stack.
if OPENTHREAD_COPROCESSOR
choice OPENTHREAD_COPROCESSOR_CHOICE
prompt "OpenThread Co-Processor type"
help
This option selects Thread network co-processor type
config OPENTHREAD_COPROCESSOR_NCP
bool "NCP - Network Co-Processor"
config OPENTHREAD_COPROCESSOR_RCP
bool "RCP - Radio Co-Processor"
endchoice # OPENTHREAD_COPROCESSOR_CHOICE
config OPENTHREAD_COPROCESSOR_UART_RING_BUFFER_SIZE
int "Set Co-Processor UART ring buffer size"
default 4096
help
TX buffer size for the OpenThread Co-Processor UART.
config OPENTHREAD_COPROCESSOR_VENDOR_HOOK_SOURCE
string "Path to vendor hook source file"
help
Provides path to compile vendor hook file.
endif # OPENTHREAD_COPROCESSOR
config OPENTHREAD_PLATFORM_INFO
string "Platform information for OpenThread"
default "ZEPHYR"
help
Platform information for OpenThread
config OPENTHREAD_CUSTOM_PARAMETERS
string "Custom Parameters to pass to OpenThread build system"
default ""
help
This option is intended for advanced users only.
Pass additional parameters that do not have corresponding Kconfig
options to the OpenThread build system. Separate multiple values with
space " ", for example:
"OPENTHREAD_CONFIG_JOINER_ENABLE=1 OPENTHREAD_CONFIG_JOINER_MAX_CANDIDATES=3"
config OPENTHREAD_NUM_MESSAGE_BUFFERS
int "The number of message buffers in the buffer pool"
default 128
help
"The number of message buffers in the buffer pool."
config OPENTHREAD_MESSAGE_BUFFER_SIZE
int "The size of a message buffer in bytes"
default 128
help
"The size of a message buffer in bytes"
config OPENTHREAD_PLATFORM_MESSAGE_MANAGEMENT
bool "Use platform message management"
help
The message pool is managed by platform defined logic.
config OPENTHREAD_MAX_STATECHANGE_HANDLERS
int "The maximum number of state-changed callback handlers"
default 2
help
The maximum number of state-changed callback handlers
set using otSetStateChangedCallback.
config OPENTHREAD_TMF_ADDRESS_CACHE_ENTRIES
int "The number of EID-to-RLOC cache entries"
default 20
help
The number of EID-to-RLOC cache entries.
config OPENTHREAD_TMF_ADDRESS_CACHE_MAX_SNOOP_ENTRIES
int "The maximum number of EID-to-RLOC cache entries"
default 2
help
The maximum number of EID-to-RLOC cache entries that can be used for
"snoop optimization" where an entry is created by inspecting a received
message.
config OPENTHREAD_LOG_PREPEND_LEVEL_ENABLE
bool "Prepending the log level to all OpenThread log messages"
help
When enabled the OpenThread logs will be prepended with the appropriate
log level prefix i.e. [CRIT], [WARN], [NOTE], [INFO], [DEBG].
config OPENTHREAD_MAC_SOFTWARE_ACK_TIMEOUT_ENABLE
bool "Software ACK timeout logic"
default y
help
Set y if the radio supports AckTime event
config OPENTHREAD_MAC_SOFTWARE_RETRANSMIT_ENABLE
bool "Software retransmission logic"
default y
help
Set y if the radio supports tx retry logic with collision avoidance (CSMA)
config OPENTHREAD_MAC_SOFTWARE_CSMA_BACKOFF_ENABLE
bool "Software CSMA backoff logic"
default y
help
Set y to enable software CSMA backoff. The option can be disabled if
the radio has hardware support for this feature (IEEE802154_HW_CSMA).
config OPENTHREAD_CRYPTO_PSA
bool "ARM PSA crypto API"
depends on MBEDTLS_PSA_CRYPTO_CLIENT
select OPENTHREAD_PLATFORM_KEY_REF if !OPENTHREAD_COPROCESSOR_RCP
imply OPENTHREAD_PLATFORM_KEYS_EXPORTABLE_ENABLE
help
Enable crypto backend library implementation based on ARM PSA crypto
API instead of the default, using mbedTLS.
config OPENTHREAD_PLATFORM_KEYS_EXPORTABLE_ENABLE
bool "Make MAC keys exportable"
depends on OPENTHREAD_PLATFORM_KEY_REF
help
Enable the creation of exportable MAC keys in the OpenThread Key Manager.
config OPENTHREAD_INTERFACE_EARLY_UP
bool "Make OpenThread interface ready as soon as Thread is enabled"
help
When enabled, OpenThread interface will be marked ready (operational
UP) as soon as Thread has been enabled. This means the interface will
be ready to transmit application packets during the Mesh Link
Establishment phase.
Otherwise, OpenThread interface will be marked operational UP only
after the device joins a Thread network.
config OPENTHREAD_PLATFORM_PKT_TXTIME
bool
default y if NET_PKT_TXTIME
help
Enable packet TX time support. This is needed for when the application
wants to set the exact time when the packet should be sent.
config OPENTHREAD_PLATFORM_CARRIER_FUNCTIONS
bool
default y if OPENTHREAD_DIAG && IEEE802154_CARRIER_FUNCTIONS
help
Enable support for functions such as modulated carrier and continuous carrier.
config OPENTHREAD_PLATFORM_USEC_TIMER
bool
default y if (OPENTHREAD_CSL_RECEIVER && !OPENTHREAD_THREAD_VERSION_1_1) || OPENTHREAD_WAKEUP_END_DEVICE
help
Enable microsecond backoff timer implemented in platform.
menu "OpenThread Border Router"
config OPENTHREAD_ZEPHYR_BORDER_ROUTER
bool "Adds support for Border Router functionality [EXPERIMENTAL]"
select EXPERIMENTAL
imply NET_ROUTING
help
Enable support for Border Router using Openthread's implementation.
if OPENTHREAD_ZEPHYR_BORDER_ROUTER
config OPENTHREAD_ZEPHYR_BORDER_ROUTER_VENDOR_NAME
string "Base name from which mDNS host name will be derived."
default "Zephyr-OTBR"
help
This value represents part of the mDNS host that will be register within OpenThread
Border Router.
config OPENTHREAD_ZEPHYR_BORDER_ROUTER_BASE_SERVICE_NAME
string "Base name from which a service instance name will be derived."
default "Zephyr-BorderRouter"
help
This value represents part of a service instance name which will be registered
within OpenThread Border Router.
config OPENTHREAD_ZEPHYR_BORDER_ROUTER_MODEL_NAME
string "Name of the Border Agent product model"
default "BorderRouter"
help
This value represents Border Agent's product model.
config OPENTHREAD_ZEPHYR_BORDER_ROUTER_MAX_UDP_SERVICES
int "The maximum number of pollable UDP sockets to be registered in platform UDP."
depends on OPENTHREAD_ZEPHYR_BORDER_ROUTER
default 5
help
This configuration defines the maximum number of pollable UDP sockets
to be used within platform UDP module.
config OPENTHREAD_ZEPHYR_BORDER_ROUTER_MSG_POOL_NUM
int "Maximum entries of backbone message pool."
default 10
help
This value represents the maximum number of messages from backbone interface
that could be stored without being processed.
endif # OPENTHREAD_ZEPHYR_BORDER_ROUTER
endmenu # "OpenThread Border Router"
menu "OpenThread stack features"
rsource "Kconfig.features"
endmenu
menu "Thread Network configuration"
rsource "Kconfig.thread"
endmenu
endif # OPENTHREAD