espressif / esp-adf

Espressif Audio Development Framework
Other
1.53k stars 672 forks source link

CONFIG_NEWLIB_NANO_FORMAT=y Causes VoIP Example to Crash (AUD-3970) #854

Open sidwarkd opened 2 years ago

sidwarkd commented 2 years ago

Environment

Problem Description

Enabling NEWLIB_NANO_FORMAT=y in sdkconfig causes the application to crash while connecting to the SIP URI.

Expected Behavior

The application should either fail to build if the newlib nano format config setting is set or it should fail gracefully with a runtime error.

Actual Behavior

A LoadProhibited crash occurs resetting the device.

Steps to Reproduce

  1. Build the VoIP Advanced Example project with a valid PBX URI and notice that it successfully registers.
  2. Set CONFIG_NEWLIB_NANO_FORMAT=y in the sdkconfig file
  3. Rebuild and run the application. Crash will occur 100% of the time while trying to connect to the PBX.

Code to Reproduce This Issue

Easily reproduced with existing example code. Only need to set the config option as stated above.

ahhfzhang commented 2 years ago

Hi @sidwarkd

Can you provide some logs?

thanks.

sidwarkd commented 2 years ago

@ahhfzhang I will get debug logs this week and post them here. I'm waiting on a Lyra test board to arrive so I can easily work with this. I found the issue on our custom hardware and can't reflash it at this time with the example code to repro the issue. I will post here as soon as I can.

sidwarkd commented 2 years ago

Ok, I have logs and some additional information on this issue @ahhfzhang . I was not able to reproduce the issue with the voip example sdkconfig.defaults file. So I ported portions of the defaults file we are using in our product. Note that it includes the CONFIG_NEWLIB_NANO_FORMAT=y option. This will cause the out-of-the-box voip example to crash every time. If that option is turned off everything works fine. So it seems there is some other combination happening with other config settings we have. I've attached the sdkconfig file and here is the log output you requested:

I (27) boot: ESP-IDF v4.4.1-dirty 2nd stage bootloader
I (27) boot: compile time 15:47:18
I (27) boot: chip revision: 3
I (31) boot_comm: chip revision: 3, min. bootloader chip revision: 0
I (38) boot.esp32: SPI Speed      : 40MHz
I (42) boot.esp32: SPI Mode       : DIO
I (47) boot.esp32: SPI Flash Size : 8MB
I (51) boot: Enabling RNG early entropy source...
I (57) boot: Partition Table:
I (60) boot: ## Label            Usage          Type ST Offset   Length
I (68) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (75) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (83) boot:  2 factory          factory app      00 00 00010000 00200000
I (90) boot:  3 flash_tone       Unknown data     01 ff 00210000 0007d000
I (98) boot: End of partition table
I (102) boot_comm: chip revision: 3, min. application chip revision: 0
I (109) esp_image: segment 0: paddr=00010020 vaddr=3f400020 size=570a8h (356520) map
I (247) esp_image: segment 1: paddr=000670d0 vaddr=3ffbdb60 size=0585ch ( 22620) load
I (256) esp_image: segment 2: paddr=0006c934 vaddr=40080000 size=036e4h ( 14052) load
I (262) esp_image: segment 3: paddr=00070020 vaddr=400d0020 size=fb16ch (1028460) map
I (635) esp_image: segment 4: paddr=0016b194 vaddr=400836e4 size=16e78h ( 93816) load
I (674) esp_image: segment 5: paddr=00182014 vaddr=50000000 size=00010h (    16) load
I (687) boot: Loaded app from partition at offset 0x10000
I (687) boot: Disabling RNG early entropy source...
I (699) psram: This chip is ESP32-D0WD
I (701) spiram: Found 64MBit SPI RAM device
I (701) spiram: SPI RAM mode: flash 40m sram 40m
I (705) spiram: PSRAM initialized, cache is in low/high (2-core) mode.
I (712) cpu_start: Pro cpu up.
I (716) cpu_start: Starting app cpu, entry point is 0x400818d8
0x400818d8: call_start_cpu1 at /opt/esp/idf/components/esp_system/port/cpu_start.c:160

I (0) cpu_start: App cpu up.
I (1609) spiram: SPI SRAM memory test OK
I (1618) cpu_start: Pro cpu start user code
I (1618) cpu_start: cpu freq: 240000000
I (1618) cpu_start: Application information:
I (1621) cpu_start: Project name:     voip_app
I (1626) cpu_start: App version:      1
I (1631) cpu_start: Compile time:     Aug 18 2022 15:47:10
I (1637) cpu_start: ELF file SHA256:  feded6a8b679f310...
I (1643) cpu_start: ESP-IDF:          v4.4.1-dirty
I (1649) heap_init: Initializing. RAM available for dynamic allocation:
I (1656) heap_init: At 3FFAE6E0 len 0000F480 (61 KiB): DRAM
I (1662) heap_init: At 3FFC6050 len 00019FB0 (103 KiB): DRAM
I (1668) heap_init: At 3FFE0440 len 00003AE0 (14 KiB): D/IRAM
I (1675) heap_init: At 3FFE4350 len 0001BCB0 (111 KiB): D/IRAM
I (1681) heap_init: At 4009A55C len 00005AA4 (22 KiB): IRAM
I (1688) spiram: Adding pool of 4084K of external SPI memory to heap allocator
I (1697) spi_flash: detected chip: generic
I (1700) spi_flash: flash io: dio
I (1706) cpu_start: Starting scheduler on PRO CPU.
I (0) cpu_start: Starting scheduler on APP CPU.
I (1715) spiram: Reserving pool of 18K of internal memory for DMA/internal allocations
I (1755) VOIP_EXAMPLE: [1.0] Initialize peripherals management
I (1765) VOIP_EXAMPLE: [1.1] Initialize and start peripherals
I (1765) gpio: GPIO[36]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:3 
I (1775) gpio: GPIO[39]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:3 
I (1785) VOIP_EXAMPLE: [1.2] Create and start input key service
I (1785) VOIP_EXAMPLE: [ 1.3 ] Create display service instance
W (1805) PERIPH_TOUCH: _touch_init
I (1805) VOIP_EXAMPLE: [ 2 ] Start codec chip
I (1805) gpio: GPIO[19]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 1| Pulldown: 0| Intr:3 
E (1815) gpio: gpio_install_isr_service(449): GPIO isr service already installed
I (1855) gpio: GPIO[21]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0 
I (1855) ES8388_DRIVER: init,out:02, in:00
I (1865) AUDIO_HAL: Codec mode is 3, Ctrl:1
I (1865) VOIP_EXAMPLE: [ 3 ] Initialize tone player
I (1865) AUDIO_THREAD: The media_task task allocate stack on external memory
I (1875) ESP_AUDIO_TASK: media_ctrl_task running...,0x3f803c34

----------------------------- ESP Audio Platform -----------------------------
|                                                                            |
|                 ESP_AUDIO-v1.7.0-81-gf766253-4717e99-25dbfe4               |
|                     Compile date: Jun 15 2022-06:58:11                     |
------------------------------------------------------------------------------
I (1915) ESP_AUDIO_CTRL: Func:media_ctrl_create, Line:350, MEM Total:4407963 Bytes, Inter:270811 Bytes, Dram:249759 Bytes

I (1925) MP3_DECODER: MP3 init
I (1935) I2S: APLL expected frequency is 8192000 Hz, real frequency is 8191999 Hz
I (1935) I2S: DMA Malloc info, datalen=blocksize=1200, dma_buf_count=3
I (1955) I2S: DMA Malloc info, datalen=blocksize=1200, dma_buf_count=3
I (1955) LYRAT_V4_3: I2S0, MCLK output by GPIO0
I (1955) ESP_AUDIO_CTRL: Enter play procedure, src:0
I (1965) ESP_AUDIO_CTRL: Play procedure, URL is ok, src:0
I (1965) ESP_AUDIO_CTRL: Request_CMD_Queue CMD:0, Available:5, que:0x3ffbc7c8
I (1975) ESP_AUDIO_TASK: It's a decoder
I (1985) ESP_AUDIO_TASK: 1.CUR IN:[IN_flash],CODEC:[DEC_mp3],RESAMPLE:[16000],OUT:[OUT_iis],rate:0,ch:0,pos:0
I (1995) ESP_AUDIO_TASK: 2.Handles,IN:0x3f804e94,CODEC:0x3f805024,FILTER:0x3f80535c,OUT:0x3f8051d0
I (2005) ESP_AUDIO_TASK: 2.2 Update all pipeline
I (2005) ESP_AUDIO_TASK: 2.3 Linked new pipeline
I (2015) AUDIO_PIPELINE: link el->rb, el:0x3f804e94, tag:IN_flash, rb:0x3f8056d8
I (2025) AUDIO_PIPELINE: link el->rb, el:0x3f805024, tag:DEC_mp3, rb:0x3f807f18
I (2025) AUDIO_PIPELINE: link el->rb, el:0x3f80535c, tag:Audio_forge, rb:0x3f809f58
I (2035) ESP_AUDIO_TASK: 3. Previous starting...
I (2045) AUDIO_ELEMENT: [IN_flash-0x3f804e94] Element task created
I (2045) AUDIO_ELEMENT: [IN_flash] AEL_MSG_CMD_RESUME,state:1
I (2055) TONE_PARTITION: tone partition format 0, total 21
I (2055) AUDIO_THREAD: The DEC_mp3 task allocate stack on external memory
I (2065) TONE_STREAM: Tone offset:0004ccd8, Tone length:35388, pos:16

I (2075) AUDIO_ELEMENT: [DEC_mp3-0x3f805024] Element task created
I (2085) AUDIO_ELEMENT: [DEC_mp3] AEL_MSG_CMD_RESUME,state:1
I (2055) ESP_AUDIO_CTRL: Func:_ctrl_play, Line:771, MEM Total:4368107 Bytes, Inter:256607 Bytes, Dram:235555 Bytes

I (2085) MP3_DECODER: MP3 opened
I (2095) ESP_AUDIO_TASK: Blocking play until received AEL_MSG_CMD_REPORT_MUSIC_INFO
I (2115) ESP_AUDIO_TASK: Recv Element[IN_flash-0x3f804e94] MSG,type:20000,cmd:8,len:4,status:AEL_STATUS_STATE_RUNNING
I (2125) ESP_AUDIO_TASK: Recv Element[DEC_mp3-0x3f805024] MSG,type:20000,cmd:8,len:4,status:AEL_STATUS_STATE_RUNNING
I (2145) ESP_AUDIO_TASK: Received muisc info then on play
I (2155) ESP_AUDIO_TASK: On event play, status:UNKNOWN, 0
I (2155) AUDIO_THREAD: The Audio_forge task allocate stack on external memory
I (2155) AUDIO_ELEMENT: [Audio_forge-0x3f80535c] Element task created
I (2165) AUDIO_ELEMENT: [Audio_forge] AEL_MSG_CMD_RESUME,state:1
I (2175) AUDIO_FORGE: audio_forge opened
I (2175) AUDIO_THREAD: The OUT_iis task allocate stack on external memory
I (2175) AUDIO_FORGE: audio_forge reopen
I (2185) AUDIO_ELEMENT: [OUT_iis-0x3f8051d0] Element task created
I (2195) AUDIO_ELEMENT: [OUT_iis] AEL_MSG_CMD_RESUME,state:1
I (2205) I2S_STREAM: AUDIO_STREAM_WRITER
I (2205) ESP_AUDIO_TASK: Recv Element[Audio_forge-0x3f80535c] MSG,type:20000,cmd:8,len:4,status:AEL_STATUS_STATE_RUNNING
I (2215) ESP_AUDIO_TASK: Recv Element[OUT_iis-0x3f8051d0] MSG,type:20000,cmd:8,len:4,status:AEL_STATUS_STATE_RUNNING
I (2235) ESP_AUDIO_TASK: ESP_AUDIO status is AEL_STATUS_STATE_RUNNING, 0, src:0, is_stopping:0
I (2235) ESP_AUDIO_TASK: Func:media_ctrl_task, Line:984, MEM Total:4205011 Bytes, Inter:255491 Bytes, Dram:234439 Bytes

I (2255) ESP_AUDIO_CTRL: Exit play procedure, ret:0
I (2265) VOIP_EXAMPLE: [ 4 ] Create Wi-Fi service instance
E (2265) DISPATCHER: exe first list: 0
I (2265) DISPATCHER: dispatcher_event_task is running...
I (2295) AUDIO_THREAD: The wifi_serv task allocate stack on external memory
I (2305) wifi:wifi driver task: 3ffcc2d0, prio:23, stack:6144, core=0
I (2305) system_api: Base MAC address is not set
I (2305) system_api: read default base MAC address from EFUSE
I (2325) wifi:wifi firmware version: 63017e0
I (2325) wifi:wifi certification version: v7.0
I (2325) wifi:config NVS flash: enabled
I (2325) wifi:config nano formating: enabled
I (2335) wifi:Init data frame dynamic rx buffer num: 128
I (2335) wifi:Init management frame dynamic rx buffer num: 128
I (2345) wifi:Init management short buffer num: 32
I (2345) wifi:Init static tx buffer num: 9
I (2355) wifi:Init tx cache buffer num: 32
I (2355) wifi:Init static rx buffer size: 1600
I (2355) wifi:Init static rx buffer num: 9
I (2365) wifi:Init dynamic rx buffer num: 128
I (2365) wifi_init: rx ba win: 16
I (2375) wifi_init: tcpip mbox: 32
I (2375) wifi_init: udp mbox: 64
I (2375) wifi_init: tcp mbox: 6
I (2385) wifi_init: tcp tx win: 5744
I (2385) wifi_init: tcp rx win: 5744
I (2395) wifi_init: tcp mss: 1440
I (2395) wifi_init: WiFi/LWIP prefer SPIRAM
I (2405) phy_init: phy_version 4670,719f9f6,Feb 18 2021,17:07:07
I (2505) wifi:mode : sta (78:21:84:d0:f0:1c)
I (2505) wifi:enable tsf
I (2525) WIFI_SERV: Connect to wifi ssid: [REDACTED]
I (3635) wifi:new:<10,2>, old:<1,0>, ap:<255,255>, sta:<10,2>, prof:1
I (4485) wifi:state: init -> auth (b0)
I (4505) wifi:state: auth -> assoc (0)
I (4515) wifi:state: assoc -> run (10)
I (4525) wifi:connected with [REDACTED], aid = 1, channel 10, 40D, bssid = cc:32:e5:64:ae:66
I (4525) wifi:security: WPA2-PSK, phy: bgn, rssi: -36
I (4525) wifi:pm start, type: 1

W (4535) WIFI_SERV: WiFi Event cb, Unhandle event_base:WIFI_EVENT, event_id:4
W (4545) wifi:<ba-add>idx:0 (ifx:0, cc:32:e5:64:ae:66), tid:0, ssn:0, winSize:64
I (4585) wifi:AP's beacon interval = 102400 us, DTIM period = 1
W (4795) TONE_STREAM: No more data,ret:0 ,info.byte_pos:lu
I (4795) AUDIO_ELEMENT: IN-[IN_flash] AEL_IO_DONE,0
I (4795) ESP_AUDIO_TASK: Recv Element[IN_flash-0x3f804e94] MSG,type:20000,cmd:8,len:4,status:AEL_STATUS_STATE_FINISHED
I (5255) esp_netif_handlers: sta ip: 10.0.0.172, mask: 255.255.255.0, gw: 10.0.0.1
I (5255) WIFI_SERV: Got ip:10.0.0.172
W (5265) WIFI_SERV: STATE type:2, pdata:0, len:0
I (5285) VOIP_EXAMPLE: PERIPH_WIFI_CONNECTED [389]
I (5285) VOIP_EXAMPLE: [ 5 ] Create SIP Service
I (5295) SIP: esp_sip ver : '1.0.2' Compile date: Feb 25 2022-09:31:08
I (5305) SIP: Conecting...
W (5335) SIP: CHANGE STATE FROM 0, TO 1, :func: sip_connect:1674
I (5335) SIP: [1970-01-01/00:00:01]=======WRITE 0636 bytes>>
I (5335) SIP: 

REGISTER [SIP ADDRESS REMOVED] SIP/2.0
Via: SIP/2.0/UDP 10.0.0.172:17494;branch=z9hG4bK--1803533721;rport
From: [SIP ADDRESS REMOVED];tag=345909875
To: [SIP ADDRESS REMOVED]
Contact: <sip:30c6f758ecf4@10.0.0.172:17494;transport=UDP>
Max-Forwards: 70
Call-ID: F34FDEC0D48B0639BAB92B742C1FB2F6654089FC151E
CSeq: 1 REGISTER
Expires: 3600
User-Agent: ESP32 SIP/2.0
Content-Length: 0
Allow: INVITE, ACK, CANCEL, BYE, UPDATE, REFER, MESSAGE, OPTIONS, INFO, SUBSCRIBE
Supported: replaces, norefersub, extended-refer, timer, X-cisco-serviceuri
Allow-Events: presence, kpml

I (5395) SIP: [1970-01-01/00:00:01]=======================>>
I (5505) SIP: [1970-01-01/00:00:01]<<=====READ 0504 bytes==
I (5505) SIP: 

SIP/2.0 401 Unauthorized
Via: SIP/2.0/UDP 10.0.0.172:17494;rport=17494;received=199.30.187.95;branch=z9hG4bK--1803533721
Call-ID: F34FDEC0D48B0639BAB92B742C1FB2F6654089FC151E
From: [SIP ADDRESS REMOVED];tag=345909875
To: [SIP ADDRESS REMOVED];tag=z9hG4bK--1803533721
CSeq: 1 REGISTER
WWW-Authenticate: Digest realm="asterisk",nonce="1660837812/ba6c7c894841918216e3de8de2ea91ab",opaque="6924ec744c83cd4d",algorithm=md5,qop="auth"
Server: Asterisk
Content-Length:  0

I (5555) SIP: [1970-01-01/00:00:01]<<======================
I (5565) SIP: Required authentication
Guru Meditation Error: Core  0 panic'ed (LoadProhibited). Exception was unhandled.

Core  0 register dump:
PC      : 0x4008e04c  PS      : 0x00060730  A0      : 0x801b4b06  A1      : 0x3f8470a0  
0x4008e04c: memchr at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/string/memchr.c:120

A2      : 0xccd7ec6f  A3      : 0x00000000  A4      : 0xccd7ec6e  A5      : 0x00000000  
A6      : 0x401b37a0  A7      : 0x3ffd32d4  A8      : 0x00000001  A9      : 0x3ffd32d4  
0x401b37a0: __ssputs_r at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/nano-vfprintf.c:179

A10     : 0x0000003a  A11     : 0x3f844364  A12     : 0x00000000  A13     : 0x00000000  
A14     : 0x3f847119  A15     : 0x3ffd32d4  SAR     : 0x00000002  EXCCAUSE: 0x0000001c  
EXCVADDR: 0xccd7ec6f  LBEG    : 0x4008e118  LEND    : 0x4008e134  LCOUNT  : 0x00000000  
0x4008e118: memcpy at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/memcpy.S:175

0x4008e134: memcpy at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/machine/xtensa/memcpy.S:197

Backtrace:0x4008e049:0x3f8470a00x401b4b03:0x3f8470c0 0x401b3c71:0x3f847100 0x401b68a6:0x3f8471b0 0x401b68dd:0x3f847250 0x40105f4f:0x3f847280 0x40106255:0x3f847310 0x40103be3:0x3f847390 0x40103ead:0x3f8473d0 0x4010439d:0x3f847400 0x40096015:0x3f847470 
0x4008e049: memchr at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/string/memchr.c:118

0x401b4b03: _printf_i at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/nano-vfprintf_i.c:219

0x401b3c71: _svfprintf_r at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/nano-vfprintf.c:636

0x401b68a6: _vasprintf_r at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vasprintf.c:62

0x401b68dd: vasprintf at /builds/idf/crosstool-NG/.build/xtensa-esp32-elf/src/newlib/newlib/libc/stdio/vasprintf.c:38

0x40105f4f: md5_printf at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/lib/sip_auth.c:59

0x40106255: sip_auth_digest at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/lib/sip_auth.c:191

0x40103be3: _sip_uac_request at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/esp_sip.c:1064

0x40103ead: _sip_uac_request_register at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/esp_sip.c:1289

0x4010439d: _sip_uac_request_register at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/esp_sip.c:1671
 (inlined by) sip_register at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/esp_sip.c:1687
 (inlined by) _sip_task at /builds/adf/esp-adf-libs-source/esp_media_protocols/esp_sip/esp_sip.c:1807

0x40096015: vPortTaskWrapper at /opt/esp/idf/components/freertos/port/xtensa/port.c:131

And here is the sdkconfig.defaults file

CONFIG_ESP_MAIN_TASK_STACK_SIZE=4096
CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=3072

#
# ESP32-specific
#
CONFIG_ESP32_DEFAULT_CPU_FREQ_240=y
CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=240
CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1024

CONFIG_PARTITION_TABLE_CUSTOM=y
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_voip_example.csv"
CONFIG_PARTITION_TABLE_CUSTOM_APP_BIN_OFFSET=0x10000
CONFIG_PARTITION_TABLE_FILENAME="partitions_voip_example.csv"
CONFIG_APP_OFFSET=0x10000

#
# Serial flasher config
#
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
CONFIG_ESPTOOLPY_FLASHSIZE="8MB"
# end of Serial flasher config

#
# Bluetooth
#
CONFIG_BT_ENABLED=y

#
# Bluetooth controller
#
CONFIG_BTDM_CTRL_MODE_BLE_ONLY=y
CONFIG_BTDM_CTRL_BLE_MAX_CONN=3
CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0
CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0
CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0
CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=3
CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0
CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0
CONFIG_BTDM_CTRL_PINNED_TO_CORE_0=y
CONFIG_BTDM_CTRL_PINNED_TO_CORE=0
CONFIG_BTDM_CTRL_HCI_MODE_VHCI=y

#
# MODEM SLEEP Options
#
CONFIG_BTDM_CTRL_MODEM_SLEEP=y
CONFIG_BTDM_CTRL_MODEM_SLEEP_MODE_ORIG=y
CONFIG_BTDM_CTRL_LPCLK_SEL_MAIN_XTAL=y
# end of MODEM SLEEP Options

CONFIG_BTDM_BLE_DEFAULT_SCA_250PPM=y
CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1
CONFIG_BTDM_BLE_SCAN_DUPL=y
CONFIG_BTDM_SCAN_DUPL_TYPE_DEVICE=y
CONFIG_BTDM_SCAN_DUPL_TYPE=0
CONFIG_BTDM_SCAN_DUPL_CACHE_SIZE=200
CONFIG_BTDM_CTRL_FULL_SCAN_SUPPORTED=y
CONFIG_BTDM_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y
CONFIG_BTDM_BLE_ADV_REPORT_FLOW_CTRL_NUM=100
CONFIG_BTDM_BLE_ADV_REPORT_DISCARD_THRSHOLD=20
CONFIG_BTDM_RESERVE_DRAM=0xdb5c
CONFIG_BTDM_CTRL_HLI=y
# end of Bluetooth controller

CONFIG_BT_NIMBLE_ENABLED=y

#
# NimBLE Options
#
CONFIG_BT_NIMBLE_MEM_ALLOC_MODE_EXTERNAL=y
CONFIG_BT_NIMBLE_LOG_LEVEL_INFO=y
CONFIG_BT_NIMBLE_LOG_LEVEL=1
CONFIG_BT_NIMBLE_MAX_CONNECTIONS=3
CONFIG_BT_NIMBLE_MAX_BONDS=3
CONFIG_BT_NIMBLE_MAX_CCCDS=8
CONFIG_BT_NIMBLE_L2CAP_COC_MAX_NUM=0
CONFIG_BT_NIMBLE_PINNED_TO_CORE_0=y
CONFIG_BT_NIMBLE_PINNED_TO_CORE=0
CONFIG_BT_NIMBLE_TASK_STACK_SIZE=4096
CONFIG_BT_NIMBLE_ROLE_CENTRAL=y
CONFIG_BT_NIMBLE_ROLE_PERIPHERAL=y
CONFIG_BT_NIMBLE_ROLE_BROADCASTER=y
CONFIG_BT_NIMBLE_ROLE_OBSERVER=y
CONFIG_BT_NIMBLE_NVS_PERSIST=y
CONFIG_BT_NIMBLE_SM_LEGACY=y
CONFIG_BT_NIMBLE_SM_SC=y
CONFIG_BT_NIMBLE_SVC_GAP_DEVICE_NAME="nimble"
CONFIG_BT_NIMBLE_GAP_DEVICE_NAME_MAX_LEN=31
CONFIG_BT_NIMBLE_ATT_PREFERRED_MTU=256
CONFIG_BT_NIMBLE_SVC_GAP_APPEARANCE=0
CONFIG_BT_NIMBLE_ACL_BUF_COUNT=20
CONFIG_BT_NIMBLE_ACL_BUF_SIZE=255
CONFIG_BT_NIMBLE_HCI_EVT_BUF_SIZE=70
CONFIG_BT_NIMBLE_HCI_EVT_HI_BUF_COUNT=30
CONFIG_BT_NIMBLE_HCI_EVT_LO_BUF_COUNT=8
CONFIG_BT_NIMBLE_MSYS1_BLOCK_COUNT=12
CONFIG_BT_NIMBLE_HS_FLOW_CTRL=y
CONFIG_BT_NIMBLE_HS_FLOW_CTRL_ITVL=1000
CONFIG_BT_NIMBLE_HS_FLOW_CTRL_THRESH=2
CONFIG_BT_NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT=y
CONFIG_BT_NIMBLE_RPA_TIMEOUT=900
CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS=y
CONFIG_BT_NIMBLE_HS_STOP_TIMEOUT_MS=2000
CONFIG_BT_NIMBLE_USE_ESP_TIMER=y
# end of NimBLE Options
# end of Bluetooth

#
# SPI RAM config
#
CONFIG_SPIRAM_SUPPORT=y
CONFIG_SPIRAM_BOOT_INIT=y
CONFIG_SPIRAM_USE_MALLOC=y
CONFIG_SPIRAM_SPEED_80M=y
CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=4096
CONFIG_SPIRAM_MALLOC_RESERVE_INTERNAL=18432
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY=y
CONFIG_SPIRAM_ALLOW_STACK_EXTERNAL_MEMORY=y
CONFIG_WIFI_LWIP_ALLOCATION_FROM_SPIRAM_FIRST=y

#
# Wi-Fi
#
CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=9
CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=128
CONFIG_ESP32_WIFI_STATIC_TX_BUFFER_NUM=9
CONFIG_ESP32_WIFI_IRAM_OPT=n
CONFIG_ESP32_WIFI_RX_IRAM_OPT=n
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
# end of Wi-Fi

#
# UDP
#
CONFIG_LWIP_MAX_UDP_PCBS=64
CONFIG_UDP_RECVMBOX_SIZE=64
CONFIG_TCPIP_TASK_STACK_SIZE=2560

#
# mbedTLS
#
#CONFIG_WPA_MBEDTLS_CRYPTO=n
CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=n
CONFIG_MBEDTLS_EXTERNAL_MEM_ALLOC=y
CONFIG_MBEDTLS_ECDH_LEGACY_CONTEXT=y
CONFIG_MBEDTLS_ECP_RESTARTABLE=y
CONFIG_MBEDTLS_CMAC_C=y
# end of mbedTLS

#
# Newlib
#
CONFIG_NEWLIB_NANO_FORMAT=y
# end of Newlib

#
# Amazon Web Services IoT Platform
#
CONFIG_AWS_IOT_MQTT_TX_BUF_LEN=2048
CONFIG_AWS_IOT_MQTT_RX_BUF_LEN=4096
CONFIG_AWS_IOT_MQTT_NUM_SUBSCRIBE_HANDLERS=10
# end of Amazon Web Services IoT Platform