| 1 | # SPDX-License-Identifier: GPL-2.0-only |
| 2 | # |
| 3 | # Bluetooth subsystem configuration |
| 4 | # |
| 5 | |
| 6 | menuconfig BT |
| 7 | tristate "Bluetooth subsystem support" |
| 8 | depends on !S390 |
| 9 | depends on RFKILL || !RFKILL |
| 10 | select CRC16 |
| 11 | select CRYPTO |
| 12 | select CRYPTO_LIB_AES |
| 13 | select CRYPTO_LIB_AES_CBC_MACS |
| 14 | select CRYPTO_ECDH |
| 15 | help |
| 16 | Bluetooth is low-cost, low-power, short-range wireless technology. |
| 17 | It was designed as a replacement for cables and other short-range |
| 18 | technologies like IrDA. Bluetooth operates in personal area range |
| 19 | that typically extends up to 10 meters. More information about |
| 20 | Bluetooth can be found at <https://www.bluetooth.com/>. |
| 21 | |
| 22 | Linux Bluetooth subsystem consist of several layers: |
| 23 | Bluetooth Core |
| 24 | HCI device and connection manager, scheduler |
| 25 | SCO audio links |
| 26 | L2CAP (Logical Link Control and Adaptation Protocol) |
| 27 | SMP (Security Manager Protocol) on LE (Low Energy) links |
| 28 | ISO isochronous links |
| 29 | HCI Device drivers (Interface to the hardware) |
| 30 | RFCOMM Module (RFCOMM Protocol) |
| 31 | BNEP Module (Bluetooth Network Encapsulation Protocol) |
| 32 | HIDP Module (Human Interface Device Protocol) |
| 33 | |
| 34 | Say Y here to compile Bluetooth support into the kernel or say M to |
| 35 | compile it as module (bluetooth). |
| 36 | |
| 37 | To use Linux Bluetooth subsystem, you will need several user-space |
| 38 | utilities like hciconfig and bluetoothd. These utilities and updates |
| 39 | to Bluetooth kernel modules are provided in the BlueZ packages. For |
| 40 | more information, see <http://www.bluez.org/>. |
| 41 | |
| 42 | config BT_BREDR |
| 43 | bool "Bluetooth Classic (BR/EDR) features" |
| 44 | depends on BT |
| 45 | default y |
| 46 | help |
| 47 | Bluetooth Classic includes support for Basic Rate (BR) |
| 48 | available with Bluetooth version 1.0b or later and support |
| 49 | for Enhanced Data Rate (EDR) available with Bluetooth |
| 50 | version 2.0 or later. |
| 51 | |
| 52 | source "net/bluetooth/rfcomm/Kconfig" |
| 53 | |
| 54 | source "net/bluetooth/bnep/Kconfig" |
| 55 | |
| 56 | source "net/bluetooth/hidp/Kconfig" |
| 57 | |
| 58 | config BT_LE |
| 59 | bool "Bluetooth Low Energy (LE) features" |
| 60 | depends on BT |
| 61 | default y |
| 62 | help |
| 63 | Bluetooth Low Energy includes support low-energy physical |
| 64 | layer available with Bluetooth version 4.0 or later. |
| 65 | |
| 66 | config BT_LE_L2CAP_ECRED |
| 67 | bool "Bluetooth L2CAP Enhanced Credit Flow Control" |
| 68 | depends on BT_LE |
| 69 | default y |
| 70 | help |
| 71 | Bluetooth Low Energy L2CAP Enhanced Credit Flow Control available with |
| 72 | Bluetooth version 5.2 or later. |
| 73 | |
| 74 | This can be overridden by passing bluetooth.enable_ecred=[1|0] |
| 75 | on the kernel commandline. |
| 76 | |
| 77 | config BT_6LOWPAN |
| 78 | tristate "Bluetooth 6LoWPAN support" |
| 79 | depends on BT && BT_LE && 6LOWPAN |
| 80 | help |
| 81 | IPv6 compression over Bluetooth Low Energy. |
| 82 | |
| 83 | config BT_LEDS |
| 84 | bool "Enable LED triggers" |
| 85 | depends on BT |
| 86 | depends on LEDS_CLASS |
| 87 | select LEDS_TRIGGERS |
| 88 | help |
| 89 | This option selects a few LED triggers for different |
| 90 | Bluetooth events. |
| 91 | |
| 92 | config BT_MSFTEXT |
| 93 | bool "Enable Microsoft extensions" |
| 94 | depends on BT |
| 95 | help |
| 96 | This options enables support for the Microsoft defined HCI |
| 97 | vendor extensions. |
| 98 | |
| 99 | config BT_AOSPEXT |
| 100 | bool "Enable Android Open Source Project extensions" |
| 101 | depends on BT |
| 102 | help |
| 103 | This options enables support for the Android Open Source |
| 104 | Project defined HCI vendor extensions. |
| 105 | |
| 106 | config BT_DEBUGFS |
| 107 | bool "Export Bluetooth internals in debugfs" |
| 108 | depends on BT && DEBUG_FS |
| 109 | default y |
| 110 | help |
| 111 | Provide extensive information about internal Bluetooth states |
| 112 | in debugfs. |
| 113 | |
| 114 | config BT_SELFTEST |
| 115 | bool "Bluetooth self testing support" |
| 116 | depends on BT && DEBUG_KERNEL |
| 117 | help |
| 118 | Run self tests when initializing the Bluetooth subsystem. This |
| 119 | is a developer option and can cause significant delay when booting |
| 120 | the system. |
| 121 | |
| 122 | When the Bluetooth subsystem is built as module, then the test |
| 123 | cases are run first thing at module load time. When the Bluetooth |
| 124 | subsystem is compiled into the kernel image, then the test cases |
| 125 | are run late in the initcall hierarchy. |
| 126 | |
| 127 | config BT_SELFTEST_ECDH |
| 128 | bool "ECDH test cases" |
| 129 | depends on BT_LE && BT_SELFTEST |
| 130 | help |
| 131 | Run test cases for ECDH cryptographic functionality used by the |
| 132 | Bluetooth Low Energy Secure Connections feature. |
| 133 | |
| 134 | config BT_SELFTEST_SMP |
| 135 | bool "SMP test cases" |
| 136 | depends on BT_LE && BT_SELFTEST |
| 137 | help |
| 138 | Run test cases for SMP cryptographic functionality, including both |
| 139 | legacy SMP as well as the Secure Connections features. |
| 140 | |
| 141 | config BT_FEATURE_DEBUG |
| 142 | bool "Enable runtime option for debugging statements" |
| 143 | depends on BT && !DYNAMIC_DEBUG |
| 144 | help |
| 145 | This provides an option to enable/disable debugging statements |
| 146 | at runtime via the experimental features interface. |
| 147 | |
| 148 | source "drivers/bluetooth/Kconfig" |