mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
03634ea64b
* Add workaround to overcome connection establishment failure error. * Fix vulnerability during public key exchange in secure connection
501 lines
15 KiB
Plaintext
501 lines
15 KiB
Plaintext
|
|
choice BT_NIMBLE_MEM_ALLOC_MODE
|
|
prompt "Memory allocation strategy"
|
|
default BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
|
|
help
|
|
Allocation strategy for NimBLE host stack, essentially provides ability to
|
|
allocate all required dynamic allocations from,
|
|
|
|
- Internal DRAM memory only
|
|
- External SPIRAM memory only
|
|
- Either internal or external memory based on default malloc()
|
|
behavior in ESP-IDF
|
|
- Internal IRAM memory wherever applicable else internal DRAM
|
|
|
|
Recommended mode here is always internal, since that is most preferred
|
|
from security perspective. But if application requirement does not
|
|
allow sufficient free internal memory then alternate mode can be
|
|
selected.
|
|
|
|
config BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
|
|
bool "Internal memory"
|
|
|
|
config BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL
|
|
bool "External SPIRAM"
|
|
depends on ESP32_SPIRAM_SUPPORT
|
|
|
|
config BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT
|
|
bool "Default alloc mode"
|
|
|
|
config BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT
|
|
bool "Internal IRAM"
|
|
depends on ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY
|
|
help
|
|
Allows to use IRAM memory region as 8bit accessible region.
|
|
|
|
Every unaligned (8bit or 16bit) access will result in an exception
|
|
and incur penalty of certain clock cycles per unaligned read/write.
|
|
|
|
endchoice #BT_NIMBLE_MEM_ALLOC_MODE
|
|
|
|
choice BT_NIMBLE_LOG_LEVEL
|
|
prompt "NimBLE Host log verbosity"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default BT_NIMBLE_LOG_LEVEL_INFO
|
|
help
|
|
Select NimBLE log level. Please make a note that the selected NimBLE log
|
|
verbosity can not exceed the level set in "Component config --> Log output
|
|
--> Default log verbosity".
|
|
|
|
config BT_NIMBLE_LOG_LEVEL_NONE
|
|
bool "No logs"
|
|
config BT_NIMBLE_LOG_LEVEL_CRIT
|
|
bool "Critical logs"
|
|
config BT_NIMBLE_LOG_LEVEL_ERROR
|
|
bool "Error logs"
|
|
config BT_NIMBLE_LOG_LEVEL_WARNING
|
|
bool "Warning logs"
|
|
config BT_NIMBLE_LOG_LEVEL_INFO
|
|
bool "Info logs"
|
|
config BT_NIMBLE_LOG_LEVEL_DEBUG
|
|
bool "Debug logs"
|
|
endchoice #BT_NIMBLE_LOG_LEVEL
|
|
|
|
config BT_NIMBLE_LOG_LEVEL
|
|
int
|
|
default 0 if BT_NIMBLE_LOG_LEVEL_DEBUG
|
|
default 1 if BT_NIMBLE_LOG_LEVEL_INFO
|
|
default 2 if BT_NIMBLE_LOG_LEVEL_WARNING
|
|
default 3 if BT_NIMBLE_LOG_LEVEL_ERROR
|
|
default 4 if BT_NIMBLE_LOG_LEVEL_CRIT
|
|
default 5 if BT_NIMBLE_LOG_LEVEL_NONE
|
|
|
|
config BT_NIMBLE_MAX_CONNECTIONS
|
|
int "Maximum number of concurrent connections"
|
|
range 1 8 if (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3)
|
|
range 1 9 if IDF_TARGET_ESP32
|
|
default 3
|
|
depends on BT_NIMBLE_ENABLED
|
|
help
|
|
Defines maximum number of concurrent BLE connections. For ESP32, user
|
|
is expected to configure BTDM_CTRL_BLE_MAX_CONN from controller menu
|
|
along with this option. Similarly for ESP32-C3 or ESP32-S3, user is expected to
|
|
configure BT_CTRL_BLE_MAX_ACT from controller menu.
|
|
|
|
config BT_NIMBLE_MAX_BONDS
|
|
int "Maximum number of bonds to save across reboots"
|
|
default 3
|
|
depends on BT_NIMBLE_ENABLED
|
|
help
|
|
Defines maximum number of bonds to save for peer security and our security
|
|
|
|
config BT_NIMBLE_MAX_CCCDS
|
|
int "Maximum number of CCC descriptors to save across reboots"
|
|
default 8
|
|
depends on BT_NIMBLE_ENABLED
|
|
help
|
|
Defines maximum number of CCC descriptors to save
|
|
|
|
config BT_NIMBLE_L2CAP_COC_MAX_NUM
|
|
int "Maximum number of connection oriented channels"
|
|
range 0 9
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 0
|
|
help
|
|
Defines maximum number of BLE Connection Oriented Channels. When set to (0), BLE COC is not compiled in
|
|
|
|
choice BT_NIMBLE_PINNED_TO_CORE_CHOICE
|
|
prompt "The CPU core on which NimBLE host will run"
|
|
depends on BT_NIMBLE_ENABLED && !FREERTOS_UNICORE
|
|
help
|
|
The CPU core on which NimBLE host will run. You can choose Core 0 or Core 1.
|
|
Cannot specify no-affinity
|
|
|
|
config BT_NIMBLE_PINNED_TO_CORE_0
|
|
bool "Core 0 (PRO CPU)"
|
|
config BT_NIMBLE_PINNED_TO_CORE_1
|
|
bool "Core 1 (APP CPU)"
|
|
depends on !FREERTOS_UNICORE
|
|
endchoice
|
|
|
|
config BT_NIMBLE_PINNED_TO_CORE
|
|
int
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 0 if BT_NIMBLE_PINNED_TO_CORE_0
|
|
default 1 if BT_NIMBLE_PINNED_TO_CORE_1
|
|
default 0
|
|
|
|
config BT_NIMBLE_TASK_STACK_SIZE
|
|
int "NimBLE Host task stack size"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 5120 if BLE_MESH
|
|
default 4096
|
|
help
|
|
This configures stack size of NimBLE host task
|
|
|
|
config BT_NIMBLE_ROLE_CENTRAL
|
|
bool "Enable BLE Central role"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
|
|
config BT_NIMBLE_ROLE_PERIPHERAL
|
|
bool "Enable BLE Peripheral role"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
|
|
config BT_NIMBLE_ROLE_BROADCASTER
|
|
bool "Enable BLE Broadcaster role"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
|
|
config BT_NIMBLE_ROLE_OBSERVER
|
|
bool "Enable BLE Observer role"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
|
|
config BT_NIMBLE_NVS_PERSIST
|
|
bool "Persist the BLE Bonding keys in NVS"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
help
|
|
Enable this flag to make bonding persistent across device reboots
|
|
|
|
config BT_NIMBLE_SM_LEGACY
|
|
bool "Security manager legacy pairing"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
help
|
|
Enable security manager legacy pairing
|
|
|
|
config BT_NIMBLE_SM_SC
|
|
bool "Security manager secure connections (4.2)"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default y
|
|
help
|
|
Enable security manager secure connections
|
|
|
|
config BT_NIMBLE_DEBUG
|
|
bool "Enable extra runtime asserts and host debugging"
|
|
default n
|
|
depends on BT_NIMBLE_ENABLED
|
|
help
|
|
This enables extra runtime asserts and host debugging
|
|
|
|
config BT_NIMBLE_SM_SC_DEBUG_KEYS
|
|
bool "Use predefined public-private key pair"
|
|
default n
|
|
depends on BT_NIMBLE_SM_SC
|
|
help
|
|
If this option is enabled, SM uses predefined DH key pair as described
|
|
in Core Specification, Vol. 3, Part H, 2.3.5.6.1. This allows to
|
|
decrypt air traffic easily and thus should only be used for debugging.
|
|
|
|
config BT_NIMBLE_SVC_GAP_DEVICE_NAME
|
|
string "BLE GAP default device name"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default "nimble"
|
|
help
|
|
The Device Name characteristic shall contain the name of the device as an UTF-8 string.
|
|
This name can be changed by using API ble_svc_gap_device_name_set()
|
|
|
|
config BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN
|
|
int "Maximum length of BLE device name in octets"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 31
|
|
help
|
|
Device Name characteristic value shall be 0 to 248 octets in length
|
|
|
|
config BT_NIMBLE_ATT_PREFERRED_MTU
|
|
int "Preferred MTU size in octets"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 256
|
|
help
|
|
This is the default value of ATT MTU indicated by the device during an ATT MTU exchange.
|
|
This value can be changed using API ble_att_set_preferred_mtu()
|
|
|
|
config BT_NIMBLE_SVC_GAP_APPEARANCE
|
|
hex "External appearance of the device"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 0
|
|
help
|
|
Standard BLE GAP Appearance value in HEX format e.g. 0x02C0
|
|
|
|
config BT_NIMBLE_ACL_BUF_COUNT
|
|
int "ACL Buffer count"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 20
|
|
help
|
|
The number of ACL data buffers.
|
|
|
|
config BT_NIMBLE_ACL_BUF_SIZE
|
|
int "ACL Buffer size"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 255
|
|
help
|
|
This is the maximum size of the data portion of HCI ACL data packets.
|
|
It does not include the HCI data header (of 4 bytes)
|
|
|
|
config BT_NIMBLE_HCI_EVT_BUF_SIZE
|
|
int "HCI Event Buffer size"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 257 if BT_NIMBLE_EXT_ADV
|
|
default 70
|
|
help
|
|
This is the size of each HCI event buffer in bytes. In case of
|
|
extended advertising, packets can be fragmented. 257 bytes is the
|
|
maximum size of a packet.
|
|
|
|
config BT_NIMBLE_HCI_EVT_HI_BUF_COUNT
|
|
int "High Priority HCI Event Buffer count"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 30
|
|
help
|
|
This is the high priority HCI events' buffer size. High-priority
|
|
event buffers are for everything except advertising reports. If there
|
|
are no free high-priority event buffers then host will try to allocate a
|
|
low-priority buffer instead
|
|
|
|
config BT_NIMBLE_HCI_EVT_LO_BUF_COUNT
|
|
int "Low Priority HCI Event Buffer count"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 8
|
|
help
|
|
This is the low priority HCI events' buffer size. Low-priority event
|
|
buffers are only used for advertising reports. If there are no free
|
|
low-priority event buffers, then an incoming advertising report will
|
|
get dropped
|
|
|
|
config BT_NIMBLE_MSYS1_BLOCK_COUNT
|
|
int "MSYS_1 Block Count"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 12
|
|
help
|
|
MSYS is a system level mbuf registry. For prepare write & prepare
|
|
responses MBUFs are allocated out of msys_1 pool. For NIMBLE_MESH
|
|
enabled cases, this block count is increased by 8 than user defined
|
|
count.
|
|
|
|
config BT_NIMBLE_HS_FLOW_CTRL
|
|
bool "Enable Host Flow control"
|
|
depends on BT_NIMBLE_ENABLED
|
|
default n if BT_SOC_SUPPORT_5_0
|
|
default y
|
|
help
|
|
Enable Host Flow control
|
|
|
|
config BT_NIMBLE_HS_FLOW_CTRL_ITVL
|
|
int "Host Flow control interval"
|
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
|
default 1000
|
|
help
|
|
Host flow control interval in msecs
|
|
|
|
config BT_NIMBLE_HS_FLOW_CTRL_THRESH
|
|
int "Host Flow control threshold"
|
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
|
default 2
|
|
help
|
|
Host flow control threshold, if the number of free buffers are at or
|
|
below this threshold, send an immediate number-of-completed-packets
|
|
event
|
|
|
|
config BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
|
|
bool "Host Flow control on disconnect"
|
|
depends on BT_NIMBLE_HS_FLOW_CTRL
|
|
default y
|
|
help
|
|
Enable this option to send number-of-completed-packets event to
|
|
controller after disconnection
|
|
|
|
config BT_NIMBLE_RPA_TIMEOUT
|
|
int "RPA timeout in seconds"
|
|
range 1 41400
|
|
depends on BT_NIMBLE_ENABLED
|
|
default 900
|
|
help
|
|
Time interval between RPA address change. This is applicable in case of
|
|
Host based RPA
|
|
|
|
menuconfig BT_NIMBLE_MESH
|
|
bool "Enable BLE mesh functionality"
|
|
select BT_NIMBLE_SM_SC
|
|
depends on BT_NIMBLE_ENABLED
|
|
default n
|
|
help
|
|
Enable BLE Mesh functionality
|
|
|
|
config BT_NIMBLE_MESH_PROXY
|
|
bool "Enable mesh proxy functionality"
|
|
default n
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Enable proxy. This is automatically set whenever NIMBLE_MESH_PB_GATT or
|
|
NIMBLE_MESH_GATT_PROXY is set
|
|
|
|
|
|
config BT_NIMBLE_MESH_PROV
|
|
bool "Enable BLE mesh provisioning"
|
|
default y
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Enable mesh provisioning
|
|
|
|
config BT_NIMBLE_MESH_PB_ADV
|
|
bool "Enable mesh provisioning over advertising bearer"
|
|
default y
|
|
depends on BT_NIMBLE_MESH_PROV
|
|
help
|
|
Enable this option to allow the device to be provisioned over
|
|
the advertising bearer
|
|
|
|
|
|
config BT_NIMBLE_MESH_PB_GATT
|
|
bool "Enable mesh provisioning over GATT bearer"
|
|
default y
|
|
select BT_NIMBLE_MESH_PROXY
|
|
depends on BT_NIMBLE_MESH_PROV
|
|
help
|
|
Enable this option to allow the device to be provisioned over the GATT
|
|
bearer
|
|
|
|
config BT_NIMBLE_MESH_GATT_PROXY
|
|
bool "Enable GATT Proxy functionality"
|
|
default y
|
|
select BT_NIMBLE_MESH_PROXY
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
This option enables support for the Mesh GATT Proxy Service,
|
|
i.e. the ability to act as a proxy between a Mesh GATT Client
|
|
and a Mesh network
|
|
|
|
config BT_NIMBLE_MESH_RELAY
|
|
bool "Enable mesh relay functionality"
|
|
default n
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Support for acting as a Mesh Relay Node
|
|
|
|
config BT_NIMBLE_MESH_LOW_POWER
|
|
bool "Enable mesh low power mode"
|
|
default n
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Enable this option to be able to act as a Low Power Node
|
|
|
|
config BT_NIMBLE_MESH_FRIEND
|
|
bool "Enable mesh friend functionality"
|
|
default n
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Enable this option to be able to act as a Friend Node
|
|
|
|
config BT_NIMBLE_MESH_DEVICE_NAME
|
|
string "Set mesh device name"
|
|
default "nimble-mesh-node"
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
This value defines Bluetooth Mesh device/node name
|
|
|
|
config BT_NIMBLE_MESH_NODE_COUNT
|
|
int "Set mesh node count"
|
|
default 1
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Defines mesh node count.
|
|
|
|
config BT_NIMBLE_MESH_PROVISIONER
|
|
bool "Enable BLE mesh provisioner"
|
|
default 0
|
|
depends on BT_NIMBLE_MESH
|
|
help
|
|
Enable mesh provisioner.
|
|
|
|
config BT_NIMBLE_CRYPTO_STACK_MBEDTLS
|
|
bool "Override TinyCrypt with mbedTLS for crypto computations"
|
|
default y
|
|
depends on BT_NIMBLE_ENABLED
|
|
select MBEDTLS_ECP_RESTARTABLE
|
|
select MBEDTLS_CMAC_C
|
|
help
|
|
Enable this option to choose mbedTLS instead of TinyCrypt for crypto
|
|
computations.
|
|
|
|
config BT_NIMBLE_HS_STOP_TIMEOUT_MS
|
|
int "BLE host stop timeout in msec"
|
|
default 2000
|
|
depends on BT_NIMBLE_ENABLED
|
|
help
|
|
BLE Host stop procedure timeout in milliseconds.
|
|
|
|
config BT_NIMBLE_HOST_BASED_PRIVACY
|
|
bool "Enable host based privacy for random address."
|
|
default n
|
|
depends on BT_NIMBLE_ENABLED && !IDF_TARGET_ESP32
|
|
help
|
|
Use this option to do host based Random Private Address resolution.
|
|
If this option is disabled then controller based privacy is used.
|
|
|
|
config BT_NIMBLE_ENABLE_CONN_REATTEMPT
|
|
bool "Enable connection reattempts on connection establishment error"
|
|
default y if (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3)
|
|
default n if IDF_TARGET_ESP32
|
|
help
|
|
Enable to make the NimBLE host to reattempt GAP connection on connection
|
|
establishment failure.
|
|
|
|
config BT_NIMBLE_MAX_CONN_REATTEMPT
|
|
int "Maximum number connection reattempts"
|
|
range 1 7
|
|
default 3
|
|
depends on BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLE_CONN_REATTEMPT
|
|
help
|
|
Defines maximum number of connection reattempts.
|
|
|
|
config BT_NIMBLE_EXT_ADV
|
|
bool "Enable extended advertising."
|
|
default n
|
|
depends on BT_NIMBLE_ENABLED && BT_SOC_SUPPORT_5_0
|
|
help
|
|
Enable this option to do extended advertising. Extended advertising
|
|
will be supported from BLE 5.0 onwards.
|
|
|
|
config BT_NIMBLE_MAX_EXT_ADV_INSTANCES
|
|
int "Maximum number of extended advertising instances."
|
|
range 0 4
|
|
default 1 if BT_NIMBLE_EXT_ADV
|
|
default 0
|
|
depends on BT_NIMBLE_EXT_ADV
|
|
help
|
|
Change this option to set maximum number of extended advertising
|
|
instances. Minimum there is always one instance of
|
|
advertising. Enter how many more advertising instances you
|
|
want.
|
|
|
|
config BT_NIMBLE_MAX_EXT_ADV_DATA_LEN
|
|
int "Maximum length of the advertising data."
|
|
range 0 1650
|
|
default 1650 if BT_NIMBLE_EXT_ADV
|
|
default 0
|
|
depends on BT_NIMBLE_EXT_ADV
|
|
help
|
|
Defines size of extended advertising data. Size should not increase
|
|
1650.
|
|
|
|
config BT_NIMBLE_ENABLE_PERIODIC_ADV
|
|
bool "Enable periodic advertisement."
|
|
default y
|
|
depends on BT_NIMBLE_EXT_ADV
|
|
help
|
|
Enable this option to start periodic advertisement.
|
|
|
|
config BT_NIMBLE_MAX_PERIODIC_SYNCS
|
|
int "Maximum number of periodic advertising syncs."
|
|
default 1 if BT_NIMBLE_ENABLE_PERIODIC_ADV
|
|
default 0
|
|
depends on BT_NIMBLE_ENABLE_PERIODIC_ADV
|
|
range 1 8
|
|
help
|
|
Set this option to set the upper limit for number of periodic sync
|
|
connections. This should be less than maximum connections allowed by
|
|
controller.
|