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