1
2choice BT_NIMBLE_MEM_ALLOC_MODE
3    prompt "Memory allocation strategy"
4    default BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
5    help
6        Allocation strategy for NimBLE host stack, essentially provides ability to
7        allocate all required dynamic allocations from,
8
9        - Internal DRAM memory only
10        - External SPIRAM memory only
11        - Either internal or external memory based on default malloc()
12          behavior in ESP-IDF
13        - Internal IRAM memory wherever applicable else internal DRAM
14
15    config BT_NIMBLE_MEM_ALLOC_MODE_INTERNAL
16        bool "Internal memory"
17
18    config BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL
19        bool "External SPIRAM"
20        depends on SPIRAM_USE_CAPS_ALLOC || SPIRAM_USE_MALLOC
21
22    config BT_NIMBLE_MEM_ALLOC_MODE_DEFAULT
23        bool "Default alloc mode"
24
25    config BT_NIMBLE_MEM_ALLOC_MODE_IRAM_8BIT
26        bool "Internal IRAM"
27        depends on ESP32_IRAM_AS_8BIT_ACCESSIBLE_MEMORY
28        help
29            Allows to use IRAM memory region as 8bit accessible region.
30
31            Every unaligned (8bit or 16bit) access will result in an exception
32            and incur penalty of certain clock cycles per unaligned read/write.
33
34endchoice #BT_NIMBLE_MEM_ALLOC_MODE
35
36choice BT_NIMBLE_LOG_LEVEL
37    prompt "NimBLE Host log verbosity"
38    depends on BT_NIMBLE_ENABLED
39    default BT_NIMBLE_LOG_LEVEL_INFO
40    help
41        Select NimBLE log level. Please make a note that the selected NimBLE log
42        verbosity can not exceed the level set in "Component config --> Log output
43        --> Default log verbosity".
44
45    config BT_NIMBLE_LOG_LEVEL_NONE
46        bool "No logs"
47    config BT_NIMBLE_LOG_LEVEL_ERROR
48        bool "Error logs"
49    config BT_NIMBLE_LOG_LEVEL_WARNING
50        bool "Warning logs"
51    config BT_NIMBLE_LOG_LEVEL_INFO
52        bool "Info logs"
53    config BT_NIMBLE_LOG_LEVEL_DEBUG
54        bool "Debug logs"
55endchoice #BT_NIMBLE_LOG_LEVEL
56
57config BT_NIMBLE_LOG_LEVEL
58    int
59    default 0 if BT_NIMBLE_LOG_LEVEL_DEBUG
60    default 1 if BT_NIMBLE_LOG_LEVEL_INFO
61    default 2 if BT_NIMBLE_LOG_LEVEL_WARNING
62    default 3 if BT_NIMBLE_LOG_LEVEL_ERROR
63    default 4 if BT_NIMBLE_LOG_LEVEL_NONE
64
65config BT_NIMBLE_MAX_CONNECTIONS
66    int "Maximum number of concurrent connections"
67    range 1 2 if IDF_TARGET_ESP32C2
68    range 1 70 if IDF_TARGET_ESP32C6
69    range 1 35 if IDF_TARGET_ESP32H2
70    range 1 9
71    default 2 if IDF_TARGET_ESP32C2
72    default 3
73    depends on BT_NIMBLE_ENABLED
74    help
75        Defines maximum number of concurrent BLE connections. For ESP32, user
76        is expected to configure BTDM_CTRL_BLE_MAX_CONN from controller menu
77        along with this option. Similarly for ESP32-C3 or ESP32-S3, user is expected to
78        configure BT_CTRL_BLE_MAX_ACT from controller menu.
79        For ESP32C2, ESP32C6 and ESP32H2, each connection will take about 1k DRAM.
80
81config BT_NIMBLE_MAX_BONDS
82    int "Maximum number of bonds to save across reboots"
83    default 3
84    depends on BT_NIMBLE_ENABLED
85    help
86        Defines maximum number of bonds to save for peer security and our security
87
88config BT_NIMBLE_MAX_CCCDS
89    int "Maximum number of CCC descriptors to save across reboots"
90    default 8
91    depends on BT_NIMBLE_ENABLED
92    help
93        Defines maximum number of CCC descriptors to save
94
95config BT_NIMBLE_L2CAP_COC_MAX_NUM
96    int "Maximum number of connection oriented channels"
97    range 0 9
98    depends on BT_NIMBLE_ENABLED
99    default 0
100    help
101        Defines maximum number of BLE Connection Oriented Channels. When set to (0), BLE COC is not compiled in
102
103config BT_NIMBLE_L2CAP_ENHANCED_COC
104    bool "L2CAP Enhanced Connection Oriented Channel"
105    depends on BT_NIMBLE_ENABLED && (BT_NIMBLE_L2CAP_COC_MAX_NUM >= 1)
106    default 0
107    help
108        Enable Enhanced Credit Based Flow Control Mode
109
110
111choice BT_NIMBLE_PINNED_TO_CORE_CHOICE
112    prompt "The CPU core on which NimBLE host will run"
113    depends on BT_NIMBLE_ENABLED && !FREERTOS_UNICORE
114    help
115        The CPU core on which NimBLE host will run. You can choose Core 0 or Core 1.
116        Cannot specify no-affinity
117
118    config BT_NIMBLE_PINNED_TO_CORE_0
119        bool "Core 0 (PRO CPU)"
120    config BT_NIMBLE_PINNED_TO_CORE_1
121        bool "Core 1 (APP CPU)"
122        depends on !FREERTOS_UNICORE
123endchoice
124
125config BT_NIMBLE_PINNED_TO_CORE
126    int
127    depends on BT_NIMBLE_ENABLED
128    default 0 if BT_NIMBLE_PINNED_TO_CORE_0
129    default 1 if BT_NIMBLE_PINNED_TO_CORE_1
130    default 0
131
132config BT_NIMBLE_HOST_TASK_STACK_SIZE
133    int "NimBLE Host task stack size"
134    depends on BT_NIMBLE_ENABLED
135    default 5120 if BLE_MESH
136    default 4096
137    help
138        This configures stack size of NimBLE host task
139
140config BT_NIMBLE_ROLE_CENTRAL
141    bool "Enable BLE Central role"
142    depends on BT_NIMBLE_ENABLED
143    default y
144    help
145            Enables central role
146
147config BT_NIMBLE_ROLE_PERIPHERAL
148    bool "Enable BLE Peripheral role"
149    depends on BT_NIMBLE_ENABLED
150    default y
151    help
152            Enable peripheral role
153
154config BT_NIMBLE_ROLE_BROADCASTER
155    bool "Enable BLE Broadcaster role"
156    depends on BT_NIMBLE_ENABLED
157    default y
158    help
159                Enables broadcaster role
160
161config BT_NIMBLE_ROLE_OBSERVER
162    bool "Enable BLE Observer role"
163    depends on BT_NIMBLE_ENABLED
164    default y
165    help
166            Enables observer role
167
168config BT_NIMBLE_NVS_PERSIST
169    bool "Persist the BLE Bonding keys in NVS"
170    depends on BT_NIMBLE_ENABLED
171    default n
172    help
173            Enable this flag to make bonding persistent across device reboots
174
175config BT_NIMBLE_SMP_ID_RESET
176    bool "Reset device identity when all bonding records are deleted"
177    default n
178    help
179        There are tracking risks associated with using a fixed or static IRK.
180        If enabled this option, Bluedroid will assign a new randomly-generated IRK
181        when all pairing and bonding records are deleted. This would decrease the ability
182        of a previously paired peer to be used to determine whether a device
183        with which it previously shared an IRK is within range.
184
185menuconfig BT_NIMBLE_SECURITY_ENABLE
186    bool "Enable BLE SM feature"
187    depends on BT_NIMBLE_ENABLED
188    default y
189    help
190            Enable BLE sm feature
191
192config BT_NIMBLE_SM_LEGACY
193    bool "Security manager legacy pairing"
194    depends on BT_NIMBLE_SECURITY_ENABLE
195    default y
196    help
197        Enable security manager legacy pairing
198
199config BT_NIMBLE_SM_SC
200    bool "Security manager secure connections (4.2)"
201    depends on BT_NIMBLE_SECURITY_ENABLE
202    default y
203    help
204        Enable security manager secure connections
205
206config BT_NIMBLE_SM_SC_DEBUG_KEYS
207    bool "Use predefined public-private key pair"
208    default n
209    depends on BT_NIMBLE_SECURITY_ENABLE && BT_NIMBLE_SM_SC
210    help
211        If this option is enabled, SM uses predefined DH key pair as described
212        in Core Specification, Vol. 3, Part H, 2.3.5.6.1. This allows to
213        decrypt air traffic easily and thus should only be used for debugging.
214
215config BT_NIMBLE_LL_CFG_FEAT_LE_ENCRYPTION
216    bool "Enable LE encryption"
217    depends on BT_NIMBLE_SECURITY_ENABLE && BT_NIMBLE_ENABLED
218    default y
219    help
220            Enable encryption connection
221
222config BT_NIMBLE_SM_SC_LVL
223    int "Security level"
224    depends on BT_NIMBLE_SECURITY_ENABLE
225    default 0
226    help
227        LE Security Mode 1 Levels:
228        1. No Security
229        2. Unauthenticated pairing with encryption
230        3. Authenticated pairing with encryption
231        4. Authenticated LE Secure Connections pairing with encryption using a 128-bit strength encryption key.
232
233config BT_NIMBLE_SM_SC_ONLY
234    int "Enable Secure Connections Only Mode"
235    depends on BT_NIMBLE_SECURITY_ENABLE
236    default 0
237    help
238        Enable Secure Connections Only Mode
239
240config BT_NIMBLE_DEBUG
241    bool "Enable extra runtime asserts and host debugging"
242    default n
243    depends on BT_NIMBLE_ENABLED
244    help
245        This enables extra runtime asserts and host debugging
246
247config BT_NIMBLE_DYNAMIC_SERVICE
248    bool "Enable dynamic services"
249    depends on BT_NIMBLE_ENABLED
250    help
251        This enables user to add/remove Gatt services at runtime
252
253config BT_NIMBLE_SVC_GAP_DEVICE_NAME
254    string "BLE GAP default device name"
255    depends on BT_NIMBLE_ENABLED
256    default "nimble"
257    help
258        The Device Name characteristic shall contain the name of the device as an UTF-8 string.
259        This name can be changed by using API ble_svc_gap_device_name_set()
260
261config BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN
262    int "Maximum length of BLE device name in octets"
263    depends on BT_NIMBLE_ENABLED
264    default 31
265    help
266        Device Name characteristic value shall be 0 to 248 octets in length
267
268config BT_NIMBLE_ATT_PREFERRED_MTU
269    int "Preferred MTU size in octets"
270    depends on BT_NIMBLE_ENABLED
271    default 256
272    help
273        This is the default value of ATT MTU indicated by the device during an ATT MTU exchange.
274        This value can be changed using API ble_att_set_preferred_mtu()
275
276config BT_NIMBLE_SVC_GAP_APPEARANCE
277    hex "External appearance of the device"
278    depends on BT_NIMBLE_ENABLED
279    default 0
280    help
281        Standard BLE GAP Appearance value in HEX format e.g. 0x02C0
282
283
284menu "Memory Settings"
285    config BT_NIMBLE_MSYS_1_BLOCK_COUNT
286        int "MSYS_1 Block Count"
287        default 24 if SOC_ESP_NIMBLE_CONTROLLER
288        default 12 if !SOC_ESP_NIMBLE_CONTROLLER
289        help
290            MSYS is a system level mbuf registry. For prepare write & prepare
291            responses MBUFs are allocated out of msys_1 pool. For NIMBLE_MESH
292            enabled cases, this block count is increased by 8 than user defined
293            count.
294
295    config BT_NIMBLE_MSYS_1_BLOCK_SIZE
296        int    "MSYS_1 Block Size"
297        default 128 if SOC_ESP_NIMBLE_CONTROLLER
298        default 256 if !SOC_ESP_NIMBLE_CONTROLLER
299        help
300                Dynamic memory size of block 1
301
302    config BT_NIMBLE_MSYS_2_BLOCK_COUNT
303        int    "MSYS_2 Block Count"
304        default 24
305        help
306                Dynamic memory count
307
308    config BT_NIMBLE_MSYS_2_BLOCK_SIZE
309        int    "MSYS_2 Block Size"
310        default 320
311        help
312                Dynamic memory size of block 2
313
314    config BT_NIMBLE_MSYS_BUF_FROM_HEAP
315        bool "Get Msys Mbuf from heap"
316        default y
317        depends on BT_LE_MSYS_INIT_IN_CONTROLLER
318        help
319            This option sets the source of the shared msys mbuf memory between
320            the Host and the Controller. Allocate the memory from the heap if
321            this option is sets, from the mempool otherwise.
322
323    config BT_NIMBLE_TRANSPORT_ACL_FROM_LL_COUNT
324        int "ACL Buffer count"
325        depends on BT_NIMBLE_ENABLED
326        default 24
327        help
328            The number of ACL data buffers allocated for host.
329
330    config BT_NIMBLE_TRANSPORT_ACL_SIZE
331        int "Transport ACL Buffer size"
332        depends on BT_NIMBLE_ENABLED
333        default 255
334        help
335            This is the maximum size of the data portion of HCI ACL data packets.
336            It does not include the HCI data header (of 4 bytes)
337
338    config BT_NIMBLE_TRANSPORT_EVT_SIZE
339        int "Transport Event Buffer size"
340        depends on BT_NIMBLE_ENABLED
341        default 257 if BT_NIMBLE_EXT_ADV
342        default 70
343        help
344            This is the size of each HCI event buffer in bytes. In case of
345            extended advertising, packets can be fragmented. 257 bytes is the
346            maximum size of a packet.
347
348    config BT_NIMBLE_TRANSPORT_EVT_COUNT
349        int "Transport Event Buffer count"
350        depends on BT_NIMBLE_ENABLED
351        default 30
352        help
353            This is the high priority HCI events' buffer size. High-priority
354            event buffers are for everything except advertising reports. If there
355            are no free high-priority event buffers then host will try to allocate a
356            low-priority buffer instead
357
358    config BT_NIMBLE_TRANSPORT_EVT_DISCARD_COUNT
359        int "Discardable Transport Event Buffer count"
360        depends on BT_NIMBLE_ENABLED
361        default 8
362        help
363            This is the low priority HCI events' buffer size. Low-priority event
364            buffers are only used for advertising reports. If there are no free
365            low-priority event buffers, then an incoming advertising report will
366            get dropped
367
368endmenu
369
370config BT_NIMBLE_GATT_MAX_PROCS
371    int "Maximum number of GATT client procedures"
372    depends on BT_NIMBLE_ENABLED
373    default 4
374    help
375        Maximum number of GATT client procedures that can be executed.
376
377config BT_NIMBLE_HS_FLOW_CTRL
378    bool "Enable Host Flow control"
379    depends on BT_NIMBLE_ENABLED
380    default y if IDF_TARGET_ESP32
381    default n
382    help
383        Enable Host Flow control
384
385config BT_NIMBLE_HS_FLOW_CTRL_ITVL
386    int "Host Flow control interval"
387    depends on BT_NIMBLE_HS_FLOW_CTRL
388    default 1000
389    help
390        Host flow control interval in msecs
391
392config BT_NIMBLE_HS_FLOW_CTRL_THRESH
393    int "Host Flow control threshold"
394    depends on BT_NIMBLE_HS_FLOW_CTRL
395    default 2
396    help
397        Host flow control threshold, if the number of free buffers are at or
398        below this threshold, send an immediate number-of-completed-packets
399        event
400
401config BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT
402    bool "Host Flow control on disconnect"
403    depends on BT_NIMBLE_HS_FLOW_CTRL
404    default y
405    help
406        Enable this option to send number-of-completed-packets event to
407        controller after disconnection
408
409config BT_NIMBLE_RPA_TIMEOUT
410    int "RPA timeout in seconds"
411    range 1 41400
412    depends on BT_NIMBLE_ENABLED
413    default 900
414    help
415        Time interval between RPA address change.
416
417menuconfig BT_NIMBLE_MESH
418    bool "Enable BLE mesh functionality"
419    select BT_NIMBLE_SM_SC
420    depends on BT_NIMBLE_ENABLED
421    default n
422    help
423        Enable BLE Mesh example present in upstream mynewt-nimble and not maintained by Espressif.
424
425        IDF maintains ESP-BLE-MESH as the official Mesh solution. Please refer to ESP-BLE-MESH guide at:
426        `https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/esp-ble-mesh/ble-mesh-index.html`
427
428config BT_NIMBLE_MESH_PROXY
429    bool "Enable mesh proxy functionality"
430    default n
431    depends on BT_NIMBLE_MESH
432    help
433        Enable proxy. This is automatically set whenever NIMBLE_MESH_PB_GATT or
434        NIMBLE_MESH_GATT_PROXY is set
435
436
437config BT_NIMBLE_MESH_PROV
438    bool "Enable BLE mesh provisioning"
439    default y
440    depends on BT_NIMBLE_MESH
441    help
442        Enable mesh provisioning
443
444config BT_NIMBLE_MESH_PB_ADV
445    bool "Enable mesh provisioning over advertising bearer"
446    default y
447    depends on BT_NIMBLE_MESH_PROV
448    help
449        Enable this option to allow the device to be provisioned over
450        the advertising bearer
451
452
453config BT_NIMBLE_MESH_PB_GATT
454    bool "Enable mesh provisioning over GATT bearer"
455    default y
456    select BT_NIMBLE_MESH_PROXY
457    depends on BT_NIMBLE_MESH_PROV
458    help
459        Enable this option to allow the device to be provisioned over the GATT
460        bearer
461
462config BT_NIMBLE_MESH_GATT_PROXY
463    bool "Enable GATT Proxy functionality"
464    default y
465    select BT_NIMBLE_MESH_PROXY
466    depends on BT_NIMBLE_MESH
467    help
468        This option enables support for the Mesh GATT Proxy Service,
469        i.e. the ability to act as a proxy between a Mesh GATT Client
470        and a Mesh network
471
472config BT_NIMBLE_MESH_RELAY
473    bool "Enable mesh relay functionality"
474    default n
475    depends on BT_NIMBLE_MESH
476    help
477        Support for acting as a Mesh Relay Node
478
479config BT_NIMBLE_MESH_LOW_POWER
480    bool "Enable mesh low power mode"
481    default n
482    depends on BT_NIMBLE_MESH
483    help
484        Enable this option to be able to act as a Low Power Node
485
486config BT_NIMBLE_MESH_FRIEND
487    bool "Enable mesh friend functionality"
488    default n
489    depends on BT_NIMBLE_MESH
490    help
491        Enable this option to be able to act as a Friend Node
492
493config BT_NIMBLE_MESH_DEVICE_NAME
494    string "Set mesh device name"
495    default "nimble-mesh-node"
496    depends on BT_NIMBLE_MESH
497    help
498        This value defines Bluetooth Mesh device/node name
499
500config BT_NIMBLE_MESH_NODE_COUNT
501    int "Set mesh node count"
502    default 1
503    depends on BT_NIMBLE_MESH
504    help
505        Defines mesh node count.
506
507config BT_NIMBLE_MESH_PROVISIONER
508    bool "Enable BLE mesh provisioner"
509    default 0
510    depends on BT_NIMBLE_MESH
511    help
512        Enable mesh provisioner.
513
514config BT_NIMBLE_CRYPTO_STACK_MBEDTLS
515    bool "Override TinyCrypt with mbedTLS for crypto computations"
516    default y
517    depends on BT_NIMBLE_ENABLED
518    select MBEDTLS_CMAC_C
519    help
520        Enable this option to choose mbedTLS instead of TinyCrypt for crypto
521        computations.
522
523config BT_NIMBLE_HS_STOP_TIMEOUT_MS
524    int "BLE host stop timeout in msec"
525    default 2000
526    depends on BT_NIMBLE_ENABLED
527    help
528        BLE Host stop procedure timeout in milliseconds.
529
530config BT_NIMBLE_HOST_BASED_PRIVACY
531    bool "Enable host based privacy for random address."
532    default n
533    depends on BT_NIMBLE_ENABLED && IDF_TARGET_ESP32
534    help
535        Use this option to do host based Random Private Address resolution.
536        If this option is disabled then controller based privacy is used.
537
538config BT_NIMBLE_ENABLE_CONN_REATTEMPT
539    bool "Enable connection reattempts on connection establishment error"
540    default y if (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3 || SOC_ESP_NIMBLE_CONTROLLER)
541    default n if IDF_TARGET_ESP32
542    help
543        Enable to make the NimBLE host to reattempt GAP connection on connection
544        establishment failure.
545
546config BT_NIMBLE_MAX_CONN_REATTEMPT
547    int "Maximum number connection reattempts"
548    range 1 255
549    default 3
550    depends on BT_NIMBLE_ENABLED && BT_NIMBLE_ENABLE_CONN_REATTEMPT
551    help
552        Defines maximum number of connection reattempts.
553
554menuconfig BT_NIMBLE_50_FEATURE_SUPPORT
555    bool "Enable BLE 5 feature"
556    depends on BT_NIMBLE_ENABLED && (SOC_BLE_50_SUPPORTED || !BT_CONTROLLER_ENABLED)
557    default y
558    help
559            Enable BLE 5 feature
560
561if BT_NIMBLE_50_FEATURE_SUPPORT
562    config BT_NIMBLE_LL_CFG_FEAT_LE_2M_PHY
563        bool "Enable 2M Phy"
564        depends on BT_NIMBLE_50_FEATURE_SUPPORT
565        default y
566        help
567                Enable 2M-PHY
568
569    config BT_NIMBLE_LL_CFG_FEAT_LE_CODED_PHY
570        bool "Enable coded Phy"
571        depends on BT_NIMBLE_50_FEATURE_SUPPORT
572        default y
573        help
574                Enable coded-PHY
575
576    config BT_NIMBLE_EXT_ADV
577        bool "Enable extended advertising"
578        depends on BT_NIMBLE_50_FEATURE_SUPPORT
579        default n
580        help
581            Enable this option to do extended advertising. Extended advertising
582            will be supported from BLE 5.0 onwards.
583
584    if BT_NIMBLE_EXT_ADV
585        config BT_NIMBLE_MAX_EXT_ADV_INSTANCES
586            int "Maximum number of extended advertising instances."
587            range 0 4
588            default 1 if BT_NIMBLE_EXT_ADV
589            default 0
590            depends on BT_NIMBLE_EXT_ADV
591            help
592                Change this option to set maximum number of extended advertising
593                instances. Minimum there is always one instance of
594                advertising. Enter how many more advertising instances you
595                want.
596                For ESP32C2, ESP32C6 and ESP32H2, each extended advertising instance
597                will take about 0.5k DRAM.
598
599        config BT_NIMBLE_EXT_ADV_MAX_SIZE
600            int "Maximum length of the advertising data."
601            range 0 1650
602            default 1650 if BT_NIMBLE_EXT_ADV
603            default 0
604            depends on BT_NIMBLE_EXT_ADV
605            help
606                Defines the length of the extended adv data. The value should not
607                exceed 1650.
608
609        config BT_NIMBLE_ENABLE_PERIODIC_ADV
610            bool "Enable periodic advertisement."
611            default y
612            depends on BT_NIMBLE_EXT_ADV
613            help
614                Enable this option to start periodic advertisement.
615
616        config BT_NIMBLE_PERIODIC_ADV_ENH
617            bool "Periodic adv enhancements(adi support)"
618            depends on BT_NIMBLE_ENABLE_PERIODIC_ADV && SOC_BLE_PERIODIC_ADV_ENH_SUPPORTED
619            help
620                Enable the periodic advertising enhancements
621
622        config BT_NIMBLE_PERIODIC_ADV_SYNC_TRANSFER
623            bool "Enable Transfer Sync Events"
624            depends on BT_NIMBLE_ENABLE_PERIODIC_ADV
625            default y
626            help
627                    This enables controller transfer periodic sync events to host
628
629        config BT_NIMBLE_PERIODIC_ADV_WITH_RESPONSES
630            bool "Enable Periodic Advertisement with Response (EXPERIMENTAL)"
631            depends on BT_NIMBLE_ENABLE_PERIODIC_ADV
632            default n
633            help
634                    This enables controller PAwR (Periodic Advertisement with Response).
635    endif
636
637    config BT_NIMBLE_EXT_SCAN
638        bool "Enable extended scanning"
639        depends on BT_NIMBLE_50_FEATURE_SUPPORT && BT_NIMBLE_ROLE_OBSERVER
640        default y
641        help
642            Enable this option to do extended scanning.
643
644    config BT_NIMBLE_ENABLE_PERIODIC_SYNC
645        bool "Enable periodic sync"
646        default y
647        depends on BT_NIMBLE_EXT_SCAN
648        help
649            Enable this option to receive periodic advertisement.
650
651    if BT_NIMBLE_ENABLE_PERIODIC_SYNC
652        config BT_NIMBLE_MAX_PERIODIC_SYNCS
653            int "Maximum number of periodic advertising syncs"
654            range 0 3 if IDF_TARGET_ESP32C2
655            range 0 8
656            default 1 if BT_NIMBLE_ENABLE_PERIODIC_ADV
657            default 0
658            help
659                Set this option to set the upper limit for number of periodic sync
660                connections. This should be less than maximum connections allowed by
661                controller.
662
663        config BT_NIMBLE_MAX_PERIODIC_ADVERTISER_LIST
664            int "Maximum number of periodic advertiser list"
665            depends on SOC_ESP_NIMBLE_CONTROLLER
666            range 1 5
667            default 5 if BT_NIMBLE_50_FEATURE_SUPPORT
668            help
669                Set this option to set the upper limit for number of periodic advertiser list.
670    endif
671
672    config BT_NIMBLE_BLE_POWER_CONTROL
673        bool "Enable support for BLE Power Control"
674        depends on BT_NIMBLE_50_FEATURE_SUPPORT && SOC_BLE_POWER_CONTROL_SUPPORTED
675        default n
676        help
677            Set this option to enable the Power Control feature
678
679    menuconfig BT_NIMBLE_GATT_CACHING
680        bool "Enable GATT caching"
681        depends on BT_NIMBLE_ENABLED && BT_NIMBLE_50_FEATURE_SUPPORT
682        select BT_NIMBLE_DYNAMIC_SERVICE
683        help
684                Enable GATT caching
685    config BT_NIMBLE_GATT_CACHING_MAX_CONNS
686        int "Maximum connections to be cached"
687        depends on BT_NIMBLE_GATT_CACHING
688        default 1
689        help
690            Set this option to set the upper limit on number of connections to be cached.
691    config BT_NIMBLE_GATT_CACHING_MAX_SVCS
692        int "Maximum number of services per connection"
693        depends on BT_NIMBLE_GATT_CACHING
694        default 64
695        help
696            Set this option to set the upper limit on number of services per connection to be cached.
697    config BT_NIMBLE_GATT_CACHING_MAX_CHRS
698        int "Maximum number of characteristics per connection"
699        depends on BT_NIMBLE_GATT_CACHING
700        default 64
701        help
702            Set this option to set the upper limit on number of characteristics per connection to be cached.
703    config BT_NIMBLE_GATT_CACHING_MAX_DSCS
704        int "Maximum number of descriptors per connection"
705        depends on BT_NIMBLE_GATT_CACHING
706        default 64
707        help
708            Set this option to set the upper limit on number of descriptors per connection to be cached.
709    config BT_NIMBLE_GATT_CACHING_DISABLE_AUTO
710        bool "Do not start discovery procedure automatically upon receiving Out of Sync"
711        depends on BT_NIMBLE_GATT_CACHING
712        default n
713        help
714            When client receives ATT out-of-sync error message, it will not automatically start the discovery procedure
715            to correct the invalid cache.
716endif
717
718
719config BT_NIMBLE_WHITELIST_SIZE
720    int "BLE white list size"
721    depends on BT_NIMBLE_ENABLED
722    range 1 15
723    default 12
724    help
725            BLE list size
726
727config BT_NIMBLE_TEST_THROUGHPUT_TEST
728    bool "Throughput Test Mode enable"
729    default n
730    help
731            Enable the throughput test mode
732
733config BT_NIMBLE_BLUFI_ENABLE
734    bool "Enable blufi functionality"
735    depends on BT_NIMBLE_ENABLED
736    default n
737    help
738        Set this option to enable blufi functionality.
739
740config BT_NIMBLE_USE_ESP_TIMER
741    bool "Enable Esp Timer for Nimble"
742    default y
743    help
744        Set this option to use Esp Timer which has higher priority timer instead of FreeRTOS timer
745
746config BT_NIMBLE_LEGACY_VHCI_ENABLE
747    bool
748    default y if (IDF_TARGET_ESP32 || IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3)
749    default n
750    help
751        This option is used to distinguish whether a previous version of VHCI is being used
752
753config BT_NIMBLE_BLE_GATT_BLOB_TRANSFER
754    bool "Blob transfer"
755    help
756        This option is used when data to be sent is more than 512 bytes. For peripheral role,
757        BT_NIMBLE_MSYS_1_BLOCK_COUNT needs to be increased according to the need.
758
759menu "GAP Service"
760    menu "GAP Appearance write permissions"
761        config BT_NIMBLE_SVC_GAP_APPEAR_WRITE
762            bool "Write"
763            default n
764            help
765                Enable write permission (BLE_GATT_CHR_F_WRITE)
766
767        config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_ENC
768            depends on BT_NIMBLE_SVC_GAP_APPEAR_WRITE
769            bool "Write with encryption"
770            default n
771            help
772                Enable write with encryption permission (BLE_GATT_CHR_F_WRITE_ENC)
773
774        config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHEN
775            depends on BT_NIMBLE_SVC_GAP_APPEAR_WRITE
776            bool "Write with authentication"
777            default n
778            help
779                Enable write with authentication permission (BLE_GATT_CHR_F_WRITE_AUTHEN)
780
781        config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHOR
782            depends on BT_NIMBLE_SVC_GAP_APPEAR_WRITE
783            bool "Write with authorisation"
784            default n
785            help
786                Enable write with authorisation permission (BLE_GATT_CHR_F_WRITE_AUTHOR)
787    endmenu
788
789    config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM
790        int
791        default 0 if !BT_NIMBLE_SVC_GAP_APPEAR_WRITE
792        default 8 if BT_NIMBLE_SVC_GAP_APPEAR_WRITE
793
794    config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ENC
795        int
796        default 0 if !BT_NIMBLE_SVC_GAP_APPEAR_WRITE_ENC
797        default 4096 if BT_NIMBLE_SVC_GAP_APPEAR_WRITE_ENC
798
799    config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHN
800        int
801        default 0 if !BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHEN
802        default 8192 if BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHEN
803
804    config BT_NIMBLE_SVC_GAP_APPEAR_WRITE_PERM_ATHR
805        int
806        default 0 if !BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHOR
807        default 16384 if BT_NIMBLE_SVC_GAP_APPEAR_WRITE_AUTHOR
808
809    choice BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION
810        prompt "GAP Characteristic - Central Address Resolution"
811        default BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP
812        help
813            Weather or not Central Address Resolution characteristic is supported on
814            the device, and if supported, weather or not Central Address Resolution
815            is supported.
816
817            - Central Address Resolution characteristic not supported
818            - Central Address Resolution not supported
819            - Central Address Resolution supported
820
821        config BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP
822            bool "Characteristic not supported"
823
824        config BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP
825            bool "Central Address Resolution not supported"
826
827        config BT_NIMBLE_SVC_GAP_CAR_SUPP
828            bool "Central Address Resolution supported"
829    endchoice
830
831    config BT_NIMBLE_SVC_GAP_CENT_ADDR_RESOLUTION
832        int
833        default -1 if BT_NIMBLE_SVC_GAP_CAR_CHAR_NOT_SUPP
834        default 0 if BT_NIMBLE_SVC_GAP_CAR_NOT_SUPP
835        default 1 if BT_NIMBLE_SVC_GAP_CAR_SUPP
836
837    menu "GAP device name write permissions"
838        config BT_NIMBLE_SVC_GAP_NAME_WRITE
839            bool "Write"
840            default n
841            help
842                Enable write permission (BLE_GATT_CHR_F_WRITE)
843
844        config BT_NIMBLE_SVC_GAP_NAME_WRITE_ENC
845            depends on BT_NIMBLE_SVC_GAP_NAME_WRITE
846            bool "Write with encryption"
847            default n
848            help
849                Enable write with encryption permission (BLE_GATT_CHR_F_WRITE_ENC)
850
851        config BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHEN
852            depends on BT_NIMBLE_SVC_GAP_NAME_WRITE
853            bool "Write with authentication"
854            default n
855            help
856                Enable write with authentication permission (BLE_GATT_CHR_F_WRITE_AUTHEN)
857
858        config BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHOR
859            depends on BT_NIMBLE_SVC_GAP_NAME_WRITE
860            bool "Write with authorisation"
861            default n
862            help
863                Enable write with authorisation permission (BLE_GATT_CHR_F_WRITE_AUTHOR)
864    endmenu
865
866    config BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM
867        int
868        default 0 if !BT_NIMBLE_SVC_GAP_NAME_WRITE
869        default 8 if BT_NIMBLE_SVC_GAP_NAME_WRITE
870
871    config BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_ENC
872        int
873        default 0 if !BT_NIMBLE_SVC_GAP_NAME_WRITE_ENC
874        default 4096 if BT_NIMBLE_SVC_GAP_NAME_WRITE_ENC
875
876    config BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHEN
877        int
878        default 0 if !BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHEN
879        default 8192 if BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHEN
880
881    config BT_NIMBLE_SVC_GAP_NAME_WRITE_PERM_AUTHOR
882        int
883        default 0 if !BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHOR
884        default 16384 if BT_NIMBLE_SVC_GAP_NAME_WRITE_AUTHOR
885
886    config BT_NIMBLE_SVC_GAP_PPCP_MAX_CONN_INTERVAL
887        int "PPCP Connection Interval Max (Unit: 1.25 ms)"
888        depends on BT_NIMBLE_ROLE_PERIPHERAL
889        default 0
890        help
891            Peripheral Preferred Connection Parameter: Connection Interval maximum value
892            Interval Max = value * 1.25 ms
893
894    config BT_NIMBLE_SVC_GAP_PPCP_MIN_CONN_INTERVAL
895        int "PPCP Connection Interval Min (Unit: 1.25 ms)"
896        depends on BT_NIMBLE_ROLE_PERIPHERAL
897        default 0
898        help
899            Peripheral Preferred Connection Parameter: Connection Interval minimum value
900            Interval Min = value * 1.25 ms
901
902    config BT_NIMBLE_SVC_GAP_PPCP_SLAVE_LATENCY
903        int "PPCP Slave Latency"
904        default 0
905        help
906            Peripheral Preferred Connection Parameter: Slave Latency
907
908    config BT_NIMBLE_SVC_GAP_PPCP_SUPERVISION_TMO
909        int "PPCP Supervision Timeout (Uint: 10 ms)"
910        default 0
911        help
912            Peripheral Preferred Connection Parameter: Supervision Timeout
913            Timeout = Value * 10 ms
914
915    config BT_NIMBLE_SVC_GAP_GATT_SECURITY_LEVEL
916        bool "LE GATT Security Level Characteristic"
917        default n
918        help
919            Enable the LE GATT Security Level Characteristic
920
921endmenu
922
923menu "BLE Services"
924    menuconfig BT_NIMBLE_HID_SERVICE
925        bool "HID service"
926        depends on BT_NIMBLE_ENABLED
927        default n
928        help
929            Enable HID service support
930
931    config BT_NIMBLE_SVC_HID_MAX_INSTANCES
932        depends on BT_NIMBLE_HID_SERVICE
933        int "Maximum HID service instances"
934        default 2
935        help
936            Defines maximum number of HID service instances
937
938    config BT_NIMBLE_SVC_HID_MAX_RPTS
939        depends on BT_NIMBLE_HID_SERVICE
940        int "Maximum HID Report characteristics per service instance"
941        default 3
942        help
943            Defines maximum number of report characteristics per service instance
944
945    config BT_NIMBLE_SVC_BAS_BATTERY_LEVEL_NOTIFY
946        depends on BT_NIMBLE_ENABLED
947        bool "BAS Battery Level NOTIFY permission"
948        default n
949        help
950            Enable/Disable notifications on BAS Battery Level Characteristic
951
952    menu "Device Information Service"
953        config BT_NIMBLE_SVC_DIS_MANUFACTURER_NAME
954            depends on BT_NIMBLE_ENABLED
955            bool "Manufacturer Name"
956            default n
957            help
958                Enable the DIS characteristic Manufacturer Name String characteristic
959
960        config BT_NIMBLE_SVC_DIS_SERIAL_NUMBER
961            depends on BT_NIMBLE_ENABLED
962            bool "Serial Number"
963            default n
964            help
965                Enable the DIS Serial Number characteristic
966
967        config BT_NIMBLE_SVC_DIS_HARDWARE_REVISION
968            depends on BT_NIMBLE_ENABLED
969            bool "Hardware Revision"
970            default n
971            help
972                Enable the DIS Hardware Revision characteristic
973
974        config BT_NIMBLE_SVC_DIS_FIRMWARE_REVISION
975            depends on BT_NIMBLE_ENABLED
976            bool "Firmware Revision"
977            default n
978            help
979                Enable the DIS Firmware Revision characteristic
980
981        config BT_NIMBLE_SVC_DIS_SOFTWARE_REVISION
982            depends on BT_NIMBLE_ENABLED
983            bool "Software Revision"
984            default n
985            help
986                Enable the DIS Software Revision characteristic
987
988        config BT_NIMBLE_SVC_DIS_SYSTEM_ID
989            depends on BT_NIMBLE_ENABLED
990            bool "System ID"
991            default n
992            help
993                Enable the DIS System ID characteristic
994
995        config BT_NIMBLE_SVC_DIS_PNP_ID
996            depends on BT_NIMBLE_ENABLED
997            bool "PnP ID"
998            default n
999            help
1000                Enable the DIS PnP ID characteristic
1001
1002        config BT_NIMBLE_SVC_DIS_INCLUDED
1003            depends on BT_NIMBLE_ENABLED
1004            bool "DIS as an Included Service"
1005            default n
1006            help
1007                Use DIS as an included service
1008    endmenu
1009endmenu
1010
1011config BT_NIMBLE_VS_SUPPORT
1012    bool "Enable support for VSC and VSE"
1013    help
1014        This option is used to enable support for sending Vendor Specific HCI commands and handling
1015        Vendor Specific HCI Events.
1016
1017config BT_NIMBLE_OPTIMIZE_MULTI_CONN
1018    bool "Enable the optimization of multi-connection"
1019    depends on SOC_BLE_MULTI_CONN_OPTIMIZATION
1020    select BT_NIMBLE_VS_SUPPORT
1021    default n
1022    help
1023        This option enables the use of vendor-specific APIs for multi-connections, which can
1024        greatly enhance the stability of coexistence between numerous central and peripheral
1025        devices. It will prohibit the usage of standard APIs.
1026
1027config BT_NIMBLE_ENC_ADV_DATA
1028    bool "Encrypted Advertising Data"
1029    help
1030        This option is used to enable encrypted advertising data.
1031
1032config BT_NIMBLE_MAX_EADS
1033    int "Maximum number of EAD devices to save across reboots"
1034    default 10
1035    depends on BT_NIMBLE_ENABLED && BT_NIMBLE_ENC_ADV_DATA
1036    help
1037        Defines maximum number of encrypted advertising data key material to save
1038
1039config BT_NIMBLE_HIGH_DUTY_ADV_ITVL
1040    bool "Enable BLE high duty advertising interval feature"
1041    depends on BT_NIMBLE_ENABLED
1042    help
1043        This enable BLE high duty advertising interval feature
1044
1045config BT_NIMBLE_HOST_ALLOW_CONNECT_WITH_SCAN
1046    bool "Allow Connections with scanning in progress"
1047    depends on BT_NIMBLE_ENABLED && (IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32S3)
1048    help
1049        This enables support for user to initiate a new connection with scan in progress
1050
1051config BT_NIMBLE_HOST_QUEUE_CONG_CHECK
1052    bool "BLE queue congestion check"
1053    depends on BT_NIMBLE_ENABLED
1054    default n
1055    help
1056        When scanning and scan duplicate is not enabled, if there are a lot of adv packets around
1057        or application layer handling adv packets is slow, it will cause the controller memory
1058        to run out. if enabled, adv packets will be lost when host queue is congested.
1059
1060menu "Host-controller Transport"
1061    config BT_NIMBLE_TRANSPORT_UART
1062        bool "Enable Uart Transport"
1063        default y
1064        depends on BT_CONTROLLER_DISABLED
1065        help
1066            Use UART transport
1067
1068    config BT_NIMBLE_TRANSPORT_UART_PORT
1069        int "Uart port"
1070        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1071        default 1
1072        help
1073            Uart port
1074
1075    choice BT_NIMBLE_HCI_USE_UART_BAUDRATE
1076        prompt "Uart Hci Baud Rate"
1077        default UART_BAUDRATE_921600
1078        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1079        help
1080            Uart Baud Rate
1081
1082        config UART_BAUDRATE_115200
1083            bool "115200"
1084        config UART_BAUDRATE_230400
1085            bool "230400"
1086        config UART_BAUDRATE_460800
1087            bool "460800"
1088        config UART_BAUDRATE_921600
1089            bool "921600"
1090    endchoice
1091
1092    config BT_NIMBLE_HCI_UART_BAUDRATE
1093        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1094        int
1095        default 115200 if  UART_BAUDRATE_115200
1096        default 230400 if  UART_BAUDRATE_230400
1097        default 460800 if  UART_BAUDRATE_460800
1098        default 921600 if  UART_BAUDRATE_921600
1099
1100    choice BT_NIMBLE_USE_HCI_UART_PARITY
1101        prompt "Uart PARITY"
1102        default UART_PARITY_NONE
1103        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1104        help
1105            Uart Parity
1106
1107        config UART_PARITY_NONE
1108            bool "None"
1109        config UART_PARITY_ODD
1110            bool "Odd"
1111        config UART_PARITY_EVEN
1112            bool "Even"
1113    endchoice
1114
1115    config BT_NIMBLE_TRANSPORT_UART_PARITY_NONE
1116        int
1117        default 0 if !UART_PARITY_NONE
1118        default 1 if UART_PARITY_NONE
1119        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1120
1121    config BT_NIMBLE_TRANSPORT_UART_PARITY_ODD
1122        int
1123        default 0 if !UART_PARITY_ODD
1124        default 1 if UART_PARITY_ODD
1125        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1126
1127    config BT_NIMBLE_TRANSPORT_UART_PARITY_EVEN
1128        int
1129        default 0 if !UART_PARITY_EVEN
1130        default 1 if UART_PARITY_EVEN
1131        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1132
1133    config BT_NIMBLE_UART_RX_PIN
1134        int "UART Rx pin"
1135        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1136        default 5
1137        help
1138            Rx pin for Nimble Transport
1139
1140    config BT_NIMBLE_UART_TX_PIN
1141        int "UART Tx pin"
1142        depends on BT_CONTROLLER_DISABLED && BT_NIMBLE_TRANSPORT_UART
1143        default 4
1144        help
1145            Tx pin for Nimble Transport
1146
1147    choice BT_NIMBLE_USE_HCI_UART_FLOW_CTRL
1148        prompt "Uart Flow Control"
1149        default UART_HW_FLOWCTRL_DISABLE
1150        help
1151            Uart Flow Control
1152
1153        config UART_HW_FLOWCTRL_DISABLE
1154            bool "Disable"
1155        config UART_HW_FLOWCTRL_CTS_RTS
1156            bool "Enable hardware flow control"
1157    endchoice
1158
1159    config BT_NIMBLE_HCI_UART_FLOW_CTRL
1160        int
1161        default 0 if UART_HW_FLOWCTRL_DISABLE
1162        default 1 if UART_HW_FLOWCTRL_CTS_RTS
1163
1164    config BT_NIMBLE_HCI_UART_RTS_PIN
1165        int "UART Rts Pin"
1166        default 19
1167        help
1168            UART HCI RTS pin
1169
1170    config BT_NIMBLE_HCI_UART_CTS_PIN
1171        int "UART Cts Pin"
1172        default 23
1173        help
1174            UART HCI CTS pin
1175endmenu
1176
1177config BT_NIMBLE_EATT_CHAN_NUM
1178    int "Maximum number of EATT channels"
1179    default 0
1180    depends on BT_NIMBLE_ENABLED
1181    help
1182        Defines the number of channels EATT bearers can use
1183
1184config BT_NIMBLE_SUBRATE
1185    bool "Enable Subrate Change"
1186    default n
1187    depends on BT_NIMBLE_ENABLED
1188    help
1189        Enable connection subrate change feature
1190