1CONFIG_BT=y
2CONFIG_BT_SMP=y
3CONFIG_BT_CENTRAL=y
4
5# Drivers and peripherals
6CONFIG_I2C=n
7CONFIG_WATCHDOG=n
8CONFIG_PINCTRL=n
9CONFIG_SPI=n
10CONFIG_GPIO=n
11CONFIG_SERIAL=n
12
13# Power management
14CONFIG_PM=n
15
16# Interrupts
17CONFIG_DYNAMIC_INTERRUPTS=n
18CONFIG_IRQ_OFFLOAD=n
19
20# Memory protection
21CONFIG_THREAD_STACK_INFO=n
22CONFIG_THREAD_CUSTOM_DATA=n
23CONFIG_FPU=n
24
25# Boot
26CONFIG_BOOT_BANNER=n
27CONFIG_BOOT_DELAY=0
28
29# Console
30CONFIG_CONSOLE=n
31CONFIG_UART_CONSOLE=n
32CONFIG_STDOUT_CONSOLE=n
33CONFIG_PRINTK=n
34CONFIG_EARLY_CONSOLE=n
35
36# Build
37CONFIG_SIZE_OPTIMIZATIONS=y
38
39# ARM
40CONFIG_ARM_MPU=n
41
42# In order to correctly tune the stack sizes for the threads the following
43# Configurations can enabled to print the current use:
44# CONFIG_THREAD_NAME=y
45# CONFIG_THREAD_ANALYZER=y
46# CONFIG_THREAD_ANALYZER_AUTO=y
47# CONFIG_THREAD_ANALYZER_RUN_UNLOCKED=y
48# CONFIG_THREAD_ANALYZER_USE_PRINTK=y
49# CONFIG_THREAD_ANALYZER_AUTO_INTERVAL=20
50# CONFIG_CONSOLE=y
51# CONFIG_UART_CONSOLE=y
52# CONFIG_SERIAL=y
53# CONFIG_PRINTK=y
54
55# Example output of thread analyzer
56# BT RX               : STACK: unused 576 usage 448 / 1024 (43 %); CPU: 0 %
57# BT RX pri           : STACK: unused 260 usage 188 / 448 (41 %); CPU: 0 %
58# BT ECC              : STACK: unused 256 usage 888 / 1144 (77 %); CPU: 1 %
59# BT TX               : STACK: unused 296 usage 344 / 640 (53 %); CPU: 0 %
60# thread_analyzer     : STACK: unused 128 usage 384 / 512 (75 %); CPU: 1 %
61# sysworkq            : STACK: unused 856 usage 168 / 1024 (16 %); CPU: 0 %
62# logging             : STACK: unused 232 usage 536 / 768 (69 %); CPU: 0 %
63# idle 00             : STACK: unused 208 usage 48 / 256 (18 %); CPU: 97 %
64# main                : STACK: unused 576 usage 448 / 1024 (43 %); CPU: 0 %
65CONFIG_BT_RX_STACK_SIZE=1024
66CONFIG_BT_HCI_TX_STACK_SIZE_WITH_PROMPT=y
67CONFIG_BT_HCI_TX_STACK_SIZE=640
68CONFIG_SYSTEM_WORKQUEUE_STACK_SIZE=512
69CONFIG_IDLE_STACK_SIZE=128
70CONFIG_MAIN_STACK_SIZE=640
71CONFIG_ISR_STACK_SIZE=1024
72
73# Disable features not needed
74CONFIG_TIMESLICING=n
75CONFIG_COMMON_LIBC_MALLOC=n
76CONFIG_LOG=n
77CONFIG_ASSERT=n
78
79# Disable Bluetooth features not needed
80# CONFIG_BT_DEBUG_NONE=y
81CONFIG_BT_ASSERT=n
82CONFIG_BT_DATA_LEN_UPDATE=n
83CONFIG_BT_PHY_UPDATE=n
84CONFIG_BT_GATT_CACHING=n
85CONFIG_BT_GATT_SERVICE_CHANGED=n
86CONFIG_BT_GAP_PERIPHERAL_PREF_PARAMS=n
87CONFIG_BT_SETTINGS_CCC_LAZY_LOADING=y
88CONFIG_BT_HCI_VS=n
89
90# Disable Bluetooth controller features not needed
91CONFIG_BT_CTLR_PRIVACY=n
92CONFIG_BT_CTLR_PHY_2M=n
93
94# Reduce Bluetooth buffers
95CONFIG_BT_BUF_EVT_DISCARDABLE_COUNT=1
96CONFIG_BT_BUF_EVT_DISCARDABLE_SIZE=45
97CONFIG_BT_BUF_EVT_RX_COUNT=2
98
99CONFIG_BT_L2CAP_TX_BUF_COUNT=2
100CONFIG_BT_CTLR_RX_BUFFERS=1
101CONFIG_BT_BUF_ACL_TX_COUNT=3
102CONFIG_BT_BUF_ACL_TX_SIZE=27
103
104# Limit the number of key slots in PSA Crypto core to reduce
105# RAM footprint
106CONFIG_MBEDTLS_PSA_KEY_SLOT_COUNT=5
107
108# This is required because otherwise there won't be
109# __heap_start/__heap_end symbols defined in the build. This
110# is due to Mbed TLS which at boot uses standard calloc/free
111# functions and only after the initialization done from Zephyr
112# it switches to its internal memory management functions.
113CONFIG_COMMON_LIBC_MALLOC=y
114