# Increase stack size for Wi-Fi (fixes crash after scan) CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=3072 # Ensure large enough stack for network operations (e.g. AppHub) CONFIG_ESP_MAIN_TASK_STACK_SIZE=6144 # Fixes static assertion: FLASH and PSRAM Mode configuration are not supported CONFIG_IDF_EXPERIMENTAL_FEATURES=y # Free up IRAM CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH=y CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH=y # Wi-Fi hot-path code normally duplicated into IRAM for throughput/latency # Tactility's Wi-Fi usage (HTTP/NTP/ESP-NOW, not sustained high-throughput streaming) doesn't need it. # Frees >27KB IRAM across Wi-Fi-enabled boards. CONFIG_ESP_WIFI_IRAM_OPT=n CONFIG_ESP_WIFI_RX_IRAM_OPT=n CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=n CONFIG_ESP_WIFI_SLP_IRAM_OPT=n CONFIG_WIFI_RMT_IRAM_OPT=n CONFIG_WIFI_RMT_EXTRA_IRAM_OPT=n CONFIG_WIFI_RMT_RX_IRAM_OPT=n CONFIG_WIFI_RMT_SLP_IRAM_OPT=n CONFIG_LIBC_OPTIMIZED_MISALIGNED_ACCESS=n CONFIG_LOG_IN_IRAM=n # EmbedTLS # Use TLS 1.2 because 1.3 conflicts with MbedTLS dynamic buffer CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y # Frees TLS IN/OUT buffers between reads/writes instead of holding them for the whole session. # Internal-RAM-only devices need this: mbedtls_ssl_setup() otherwise fails with ALLOC_FAILED # (-0x7F00). # Keep MBEDTLS_SSL_IN_CONTENT_LEN at its 16384 default: servers may send TLS records up to that # size, and a smaller buffer fails mid-transfer with MBEDTLS_ERR_SSL_INVALID_RECORD (-0x7200). CONFIG_MBEDTLS_DYNAMIC_BUFFER=y # LVGL CONFIG_LV_USE_USER_DATA=y CONFIG_LV_USE_FS_STDIO=y CONFIG_LV_FS_STDIO_LETTER=65 CONFIG_LV_FS_STDIO_PATH="" CONFIG_LV_FS_STDIO_CACHE_SIZE=4096 CONFIG_LV_USE_LODEPNG=n CONFIG_LV_USE_BUILTIN_MALLOC=n # Routes lv_malloc/realloc/free through Modules/lvgl-module/source/lv_mem_custom.c, which prefers # PSRAM (falls back to internal RAM automatically) instead of a fixed-size pool or plain malloc. CONFIG_LV_USE_CUSTOM_MALLOC=y CONFIG_LV_USE_MSGBOX=n CONFIG_LV_USE_SPINNER=n CONFIG_LV_USE_WIN=n CONFIG_LV_USE_SNAPSHOT=y CONFIG_LV_BUILD_EXAMPLES=n CONFIG_LV_BUILD_DEMOS=n # Slot 0 is reserved by ESP-IDF's pthread API (see esp_wifi/lwip pthread_getspecific usage). # Tactility's Thread wrappers use slot 1 for their own self-pointer. CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=2 CONFIG_FREERTOS_HZ=1000 CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=2 CONFIG_FREERTOS_SMP=n CONFIG_FREERTOS_UNICORE=n CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=5120 CONFIG_FREERTOS_USE_TRACE_FACILITY=y CONFIG_FATFS_LFN_HEAP=y CONFIG_FATFS_VOLUME_COUNT=3 CONFIG_FATFS_SECTOR_512=y CONFIG_WL_SECTOR_SIZE_512=y CONFIG_WL_SECTOR_SIZE=512 CONFIG_WL_SECTOR_MODE_SAFE=y CONFIG_WL_SECTOR_MODE=1 # Allow new i2c_master API (used by Tab5Keyboard for LP_I2C_NUM_0) to coexist with legacy i2c driver CONFIG_I2C_SKIP_LEGACY_CONFLICT_CHECK=y # Allow new adc_oneshot API (esp32_adc_oneshot kernel driver, linked into every device via # platform-esp32) to coexist with boards still reading battery voltage via the legacy ADC driver # (e.g. m5stack-cardputer, m5stack-cardputer-adv, lilygo-thmi). Only one API is ever actually used # per board at runtime, so this just bypasses ESP-IDF's link-time-only conflict abort. CONFIG_ADC_SKIP_LEGACY_CONFLICT_CHECK=y # Wi-Fi memory optimizations CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=3 CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=5 CONFIG_ESP_WIFI_STATIC_TX_BUFFER=y CONFIG_ESP_WIFI_TX_BUFFER_TYPE=0 CONFIG_ESP_WIFI_STATIC_TX_BUFFER_NUM=5 CONFIG_ESP_WIFI_CACHE_TX_BUFFER_NUM=5 CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y CONFIG_ESP_WIFI_TX_BA_WIN=5 CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y CONFIG_ESP_WIFI_RX_BA_WIN=5 # Audio codec: audio-stream only decodes (never encodes), and AudiobookPlayer (the only current # consumer) is MP3-only. Disabling the rest saves several hundred KB of flash across every device; # re-enable a specific decoder here if a future app needs it. CONFIG_AUDIO_DECODER_AAC_SUPPORT=n CONFIG_AUDIO_DECODER_G711_SUPPORT=n CONFIG_AUDIO_DECODER_AMRNB_SUPPORT=n CONFIG_AUDIO_DECODER_AMRWB_SUPPORT=n CONFIG_AUDIO_DECODER_FLAC_SUPPORT=n CONFIG_AUDIO_DECODER_OPUS_SUPPORT=n CONFIG_AUDIO_DECODER_VORBIS_SUPPORT=n CONFIG_AUDIO_DECODER_ADPCM_SUPPORT=n CONFIG_AUDIO_DECODER_ALAC_SUPPORT=n CONFIG_AUDIO_DECODER_SBC_SUPPORT=n CONFIG_AUDIO_DECODER_LC3_SUPPORT=n CONFIG_AUDIO_ENCODER_AAC_SUPPORT=n CONFIG_AUDIO_ENCODER_G711_SUPPORT=n CONFIG_AUDIO_ENCODER_AMRNB_SUPPORT=n CONFIG_AUDIO_ENCODER_AMRWB_SUPPORT=n CONFIG_AUDIO_ENCODER_OPUS_SUPPORT=n CONFIG_AUDIO_ENCODER_ADPCM_SUPPORT=n CONFIG_AUDIO_ENCODER_ALAC_SUPPORT=n CONFIG_AUDIO_ENCODER_SBC_SUPPORT=n CONFIG_AUDIO_ENCODER_LC3_SUPPORT=n CONFIG_AUDIO_ENCODER_PCM_SUPPORT=n