69 lines
3.0 KiB
Plaintext
69 lines
3.0 KiB
Plaintext
# ESP32-S3 CSI Node — Default SDK Configuration
|
|
# This file is applied automatically by idf.py when no sdkconfig exists.
|
|
|
|
# Target: ESP32-S3
|
|
CONFIG_IDF_TARGET="esp32s3"
|
|
|
|
# Use custom partition table (8MB flash with OTA — ADR-045)
|
|
CONFIG_PARTITION_TABLE_CUSTOM=y
|
|
CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions_display.csv"
|
|
|
|
# Flash configuration: 8MB (Quad SPI)
|
|
CONFIG_ESPTOOLPY_FLASHSIZE_8MB=y
|
|
CONFIG_ESPTOOLPY_FLASHSIZE="8MB"
|
|
|
|
# Compiler optimization: optimize for size to reduce binary
|
|
CONFIG_COMPILER_OPTIMIZATION_SIZE=y
|
|
|
|
# Enable CSI (Channel State Information) in WiFi driver
|
|
CONFIG_ESP_WIFI_CSI_ENABLED=y
|
|
|
|
# NVS encryption disabled by default (requires eFuse provisioning).
|
|
# Enable only after burning HMAC key to eFuse block.
|
|
# CONFIG_NVS_ENCRYPTION is not set
|
|
|
|
# Disable unused features to reduce binary size
|
|
CONFIG_BOOTLOADER_LOG_LEVEL_WARN=y
|
|
CONFIG_LOG_DEFAULT_LEVEL_INFO=y
|
|
|
|
# LWIP: enable extended socket options for UDP multicast
|
|
CONFIG_LWIP_SO_RCVBUF=y
|
|
|
|
# Issue (sibling of #946/#949/#864 cluster): UDP `sendto` returned ENOMEM
|
|
# in a tight loop on both ESP32-S3 (COM8) and ESP32-C6 (COM9) at the v0.7.0
|
|
# CSI packet rate (CSI cb + status + sync + feature_state all sharing the
|
|
# LWIP/WiFi pools). stream_sender.c has a cooldown path so the device
|
|
# doesn't crash, but ~90 % of CSI frames were dropped before reaching the
|
|
# host — boot trace showed `sendto ENOMEM — backing off 100 ms` repeating
|
|
# every capture cycle. Stock IDF v5.4 defaults: UDP recv mbox=6, TCPIP
|
|
# mbox=32, WiFi dynamic TX buffers=32 — too small once CSI promiscuous
|
|
# mode is active. These bumps roughly quadruple the relevant pools at
|
|
# ~3 KB extra heap cost, measured live on both targets Jun 8 2026.
|
|
CONFIG_LWIP_UDP_RECVMBOX_SIZE=32
|
|
CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=64
|
|
CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=64
|
|
# NOTE: Empirical 25 s measurements on the S3 at COM8 showed these bumps
|
|
# eliminate the csi_collector.sendto failure path (`fail #1..5` →
|
|
# `fail #0`) — real improvement — but do NOT eliminate the broader
|
|
# `feature_state emit` ENOMEM at ~10/s. That residual is the WiFi
|
|
# radio's TX airtime saturating under CSI promiscuous RX, and bigger
|
|
# buffers cap out at the 100 ms backoff window regardless of size
|
|
# (verified at WIFI_DYNAMIC_TX=128 + PBUF_POOL=32 — identical count).
|
|
# The proper fix is rate-limiting adaptive_controller.c's emit cadence
|
|
# from ~50 ms to the intended 1 Hz, which is a code refactor tracked
|
|
# in a separate follow-up issue.
|
|
|
|
# FreeRTOS: increase task stack for CSI processing
|
|
CONFIG_ESP_MAIN_TASK_STACK_SIZE=8192
|
|
|
|
# Extra WiFi IRAM placement (defense-in-depth for RuView#396 SPI cache race)
|
|
CONFIG_ESP_WIFI_EXTRA_IRAM_OPT=y
|
|
|
|
# ADR-081: adaptive_controller runs emit_feature_state + stream_sender
|
|
# network I/O inside Timer Svc callbacks, exceeding the 2 KiB default.
|
|
# Without this, the device bootloops with
|
|
# "***ERROR*** A stack overflow in task Tmr Svc has been detected."
|
|
# Was present in sdkconfig.defaults.template but missing here — fixed
|
|
# in the v0.6.5-esp32 release.
|
|
CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=8192
|