# Kconfig - Bluetooth LE stack configuration options # # Copyright (c) 2015-2016 Intel Corporation # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. # menuconfig BLUETOOTH bool "Bluetooth support" default n select NANO_TIMEOUTS select NET_BUF help This option enables Bluetooth support. if BLUETOOTH choice prompt "Bluetooth Stack Selection" default BLUETOOTH_STACK_HCI help Select the Bluetooth stack to compile. config BLUETOOTH_STACK_HCI bool "HCI Stack" help Select the Bluetooth stack to use with HCI drivers. config BLUETOOTH_STACK_NBLE bool "Nordic BLE Stack" help Select the Bluetooth stack to use with Nordic BLE drivers. endchoice comment "HCI Stack Configurations" depends on BLUETOOTH_STACK_HCI config BLUETOOTH_LE bool "Bluetooth Low Energy (LE) support" default y select TINYCRYPT select TINYCRYPT_AES if BLUETOOTH_SMP select TINYCRYPT_AES_CMAC if BLUETOOTH_SMP select TINYCRYPT_SHA256 select TINYCRYPT_SHA256_HMAC select TINYCRYPT_SHA256_HMAC_PRNG depends on BLUETOOTH_STACK_HCI help This option enables Bluetooth Low Energy (LE) support. Currently it is mandatory whenever Bluetooth support (CONFIG_BLUETOOTH) is enabled. if BLUETOOTH_LE config BLUETOOTH_HCI_CMD_COUNT int "Number of HCI command buffers" default 2 range 2 64 help Number of buffers available for HCI commands. config BLUETOOTH_MAX_CMD_LEN int "Maximum supported HCI command length" default 64 default 255 if BLUETOOTH_BREDR range 64 255 range 255 255 if BLUETOOTH_BREDR help Maximum length of each HCI command. config BLUETOOTH_HCI_EVT_COUNT int "Number of HCI event buffers" default 8 if BLUETOOTH_CONN default 4 if !BLUETOOTH_CONN range 2 64 help Number of buffers available for HCI events. This number should ideally be at least as large as the available outgoing buffers to make sure we've got enough buffers to handle bursts of Number of Completed Packets HCI events. config BLUETOOTH_MAX_EVT_LEN int "Maximum supported HCI event length" default 68 if !BLUETOOTH_BREDR default 255 if BLUETOOTH_BREDR range 68 255 help Maximum size of each HCI event buffer. E.g. one big event for LE is the Command Complete for Read Local Supported Commands. It is a 3 byte Command Complete header + 65 byte return parameters = 68 bytes in total. config BLUETOOTH_RX_STACK_SIZE int "Size of the receiving fiber stack" default 1024 range 1024 65536 help Size of the receiving fiber stack. This is the context from which all event callbacks to the application occur. The default value is sufficient for basic operation, but if the application needs to do advanced things in its callbacks that require extra stack space, this value can be increased to accomodate for that. config BLUETOOTH_PERIPHERAL bool "Peripheral Role support" default n select BLUETOOTH_CONN help Select this for LE Peripheral role support. config BLUETOOTH_CENTRAL bool "Central Role support" default n select BLUETOOTH_CONN help Select this for LE Central role support. config BLUETOOTH_CONN bool select NANO_WORKQUEUE select SYSTEM_WORKQUEUE default n if BLUETOOTH_CONN config BLUETOOTH_ACL_IN_COUNT int "Number of incoming ACL data buffers" default 5 range 2 64 help Number of buffers available for incoming ACL data. config BLUETOOTH_L2CAP_IN_MTU int "Maximum supported L2CAP MTU for incoming data" default 65 if BLUETOOTH_SMP default 23 if !BLUETOOTH_SMP range 65 1300 if BLUETOOTH_SMP range 23 1300 if !BLUETOOTH_SMP help Maximum size of each incoming L2CAP PDU. config BLUETOOTH_ATT_MTU int "Attribute Protocol (ATT) channel MTU" default 50 if BLUETOOTH_SMP # BLUETOOTH_L2CAP_IN_MTU is big enough # for two complete ACL packets default 23 if !BLUETOOTH_SMP range 23 BLUETOOTH_L2CAP_IN_MTU help The MTU for the ATT channel. The minimum and default is 23, whereas the maximum is limited by CONFIG_BLUETOOTH_L2CAP_IN_MTU. config BLUETOOTH_ATT_PREPARE_COUNT int "Number of ATT prepare write buffers" default 0 range 0 64 help Number of buffers available for ATT prepare write, setting this to 0 disables GATT long/reliable writes. config BLUETOOTH_SMP bool "Security Manager Protocol support" default n help This option enables support for the Security Manager Protocol (SMP), making it possible to pair devices over LE. if BLUETOOTH_SMP config BLUETOOTH_PRIVACY bool "Privacy Feature" default n help Enable local Privacy Feature support. This makes it possible to use Resolvable Private Addresses (RPAs). config BLUETOOTH_RPA_TIMEOUT int "Resolvable Private Address timeout" depends on BLUETOOTH_PRIVACY default 900 range 1 65535 help This option defines how often resolvable private address is rotated. Value is provided in seconds and defaults to 900 seconds (15 minutes). config BLUETOOTH_SIGNING bool "Data signing support" default n help This option enables data signing which is used for transferring authenticated data in an unencrypted connection. config BLUETOOTH_SMP_SC_ONLY bool "Secure Connections Only Mode" default n help This option enables support for Secure Connection Only Mode. In this mode device shall only use Security Mode 1 Level 4 with exception for services that only require Security Mode 1 Level 1 (no security). Security Mode 1 Level 4 stands for authenticated LE Secure Connections pairing with encryption. Enabling this option disables legacy pairing. config BLUETOOTH_USE_DEBUG_KEYS bool "Enable Security Manager Debug Mode" default n depends on BLUETOOTH_TINYCRYPT_ECC help This option places Security Manager in a Debug Mode. In this mode predefined Diffie-Hellman private/public key pair is used as described in Core Specification Vol. 3, Part H, 2.3.5.6.1. This option should only be enabled for debugging and should never be used in production. If this option is enabled anyone is able to decipher encrypted air traffic. endif # BLUETOOTH_SMP config BLUETOOTH_L2CAP_DYNAMIC_CHANNEL bool "L2CAP Dynamic Channel support" default n help This option enables support for LE Connection oriented Channels, allowing the creation of dynamic L2CAP Channels. config BLUETOOTH_GATT_DYNAMIC_DB bool "GATT dynamic database support" default n help This option enables GATT services to be added dynamically to database. config BLUETOOTH_GATT_CLIENT bool "GATT client support" default n help This option enables support for the GATT Client role. config BLUETOOTH_MAX_CONN int "Maximum number of simultaneous connections" default 1 range 1 16 help Maximum number of simultaneous Bluetooth connections supported. The minimum (and default) number is 1. config BLUETOOTH_MAX_PAIRED int "Maximum number of paired devices" default 1 range 1 32 help Maximum number of paired Bluetooth devices. The minimum (and default) number is 1. endif # BLUETOOTH_CONN config BLUETOOTH_TINYCRYPT_ECC bool "Use TinyCrypt library for ECDH" default n select TINYCRYPT_ECC_DH depends on MICROKERNEL help If this option is set TinyCrypt library is used for emulating the ECDH HCI commands and events needed by e.g. LE Secure Connections. If not set controller crypto is used for ECDH and if controller doesn't support required HCI commands LE Secure Connections support will be disabled. endif # BLUETOOTH_LE config BLUETOOTH_DEBUG bool default n choice prompt "Bluetooth debug type" depends on BLUETOOTH default BLUETOOTH_DEBUG_NONE config BLUETOOTH_DEBUG_NONE bool "No debug log" help Select this to disable all Bluetooth debug logs. config BLUETOOTH_DEBUG_LOG bool "Normal printf-style to console" select BLUETOOTH_DEBUG select STDOUT_CONSOLE select SYS_LOG help This option enables Bluetooth debug going to standard serial console. config BLUETOOTH_DEBUG_MONITOR bool "Monitor protocol over UART" depends on BLUETOOTH_STACK_HCI select BLUETOOTH_DEBUG select CONSOLE_HAS_DRIVER help Use a custom logging protocol over the console UART instead of plain-text output. Requires a special application on the host side that can decode this protocol. Currently the 'btmon' tool from BlueZ is capable of doing this. If the target board has two or more external UARTs it is possible to keep using UART_CONSOLE together with this option, however if there is only a single external UART then UART_CONSOLE needs to be disabled (in which case printk/printf will get encoded into the monitor protocol). endchoice config BLUETOOTH_DEBUG_COLOR bool "Use colored logs" depends on BLUETOOTH_DEBUG_LOG select SYS_LOG_SHOW_COLOR default y help Use color in the logs. This requires an ANSI capable terminal. config BLUETOOTH_MONITOR_ON_DEV_NAME string "Device Name of Bluetooth monitor logging UART" depends on BLUETOOTH_DEBUG_MONITOR default "UART_0" help This option specifies the name of UART device to be used for the Bluetooth monitor logging. if BLUETOOTH_DEBUG config BLUETOOTH_DEBUG_HCI_CORE bool "Bluetooth HCI core debug" depends on BLUETOOTH_STACK_HCI default n help This option enables debug support for Bluetooth HCI core. config BLUETOOTH_DEBUG_CONN bool "Bluetooth connection debug" depends on BLUETOOTH_CONN default n help This option enables debug support for Bluetooth connection handling. config BLUETOOTH_DEBUG_KEYS bool "Bluetooth security keys debug" depends on BLUETOOTH_STACK_HCI depends on BLUETOOTH_SMP default n help This option enables debug support for the handling of Bluetooth security keys. config BLUETOOTH_DEBUG_L2CAP bool "Bluetooth L2CAP debug" depends on BLUETOOTH_CONN default n help This option enables debug support for the Bluetooth L2ACP layer. config BLUETOOTH_DEBUG_SMP bool "Bluetooth Security Manager Protocol (SMP) debug" depends on BLUETOOTH_STACK_HCI depends on BLUETOOTH_SMP default n help This option enables debug support for the Bluetooth Security Manager Protocol (SMP). config BLUETOOTH_SMP_SELFTEST bool "Bluetooth SMP self tests executed on init" depends on BLUETOOTH_DEBUG_SMP default n help This option enables SMP self-tests executed on startup to verify security and crypto functions. config BLUETOOTH_DEBUG_ATT bool "Bluetooth Attribute Protocol (ATT) debug" depends on BLUETOOTH_CONN default n help This option enables debug support for the Bluetooth Attribute Protocol (ATT). config BLUETOOTH_DEBUG_GATT bool "Bluetooth Generic Attribute Profile (GATT) debug" depends on BLUETOOTH_CONN default n help This option enables debug support for the Bluetooth Generic Attribute Profile (GATT). config BLUETOOTH_DEBUG_RFCOMM bool "Bluetooth RFCOMM debug" depends on BLUETOOTH_RFCOMM default n help This option enables debug support for the Bluetooth RFCOMM layer. endif # BLUETOOTH_DEBUG config BLUETOOTH_BREDR bool "Bluetooth BR/EDR support [EXPERIMENTAL]" default n depends on BLUETOOTH_STACK_HCI select BLUETOOTH_CONN select BLUETOOTH_L2CAP_DYNAMIC_CHANNEL help This option enables Bluetooth BR/EDR support" if BLUETOOTH_BREDR config BLUETOOTH_RFCOMM bool "Bluetooth RFCOMM protocol support [EXPERIMENTAL]" default n help This option enables Bluetooth RFCOMM support config BLUETOOTH_BREDR_NAME string "Bluetooth BR/EDR device name" default "Zephyr" help Bluetooth BR/EDR name. Name can be up to 248 bytes long (excluding NULL termination). Can be empty string. endif # BLUETOOTH_BREDR endif # BLUETOOTH