mirror of
https://github.com/ruvnet/RuView
synced 2026-06-09 10:13:17 +00:00
f5e2b5474b
Three fixes wrapped for the v0.6.5-esp32 release tag:
1. **`sdkconfig.defaults` adds `CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=8192`**.
The fix was already in `sdkconfig.defaults.template` (ADR-081, prevents
"stack overflow in task Tmr Svc" bootloop when adaptive_controller emits
feature_state from inside a Timer Svc callback). It was MISSING from the
canonical `sdkconfig.defaults` file used by the build, so any fresh
build picked up the 2 KiB FreeRTOS default and bootlooped on hardware.
Verified on COM7: with the fix, no panics in 30 s of operation; without
it, "***ERROR*** A stack overflow in task Tmr Svc has been detected."
followed by sustained bootloop.
2. **`ota_update.c` extracts `ota_load_psk_from_nvs()` and calls it from
both `ota_update_init()` and `ota_update_init_ex()`.** `main.c:230` uses
the `_ex` variant, but only `ota_update_init()` was loading the PSK
from NVS. Result: `s_ota_psk` stayed empty regardless of NVS contents,
so the RuView#596 fail-closed posture rejected every request — but the
diagnostic warning never printed at boot, leaving operators no signal
about why their OTA uploads were 403'ing. Verified on COM7:
W (3126) ota_update: NVS namespace 'security' not found —
OTA upload endpoint will REJECT all requests until provisioned.
Fail-closed per RuView#596.
3. **`version.txt`: 0.6.4 → 0.6.5**, paired with the v0.6.5-esp32 tag so the
firmware-ci version-guard job (RuView#505 fix-marker) stays happy.
Both validations done end-to-end on hardware (COM7, ESP32-S3 8MB,
provisioned with --edge-tier 2 to also incidentally re-verify #438 is not
reproducible on current main).
45 lines
1.5 KiB
Plaintext
45 lines
1.5 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
|
|
|
|
# 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
|