firmware/esp32-csi-node: IDF 6 build, HE CSI config, unicore DSP, provision chip detect#522
Merged
Merged
Conversation
…RES) - rvf_parser: use psa_hash_* / psa_hash_compute; mbedTLS 4 has no public mbedtls/sha256.h on the IDF include path. - main/CMakeLists: declare REQUIRES for WiFi, netif, HTTP, OTA, drivers, lwip, mbedtls per ESP-IDF v6 component dependency checks; optional wasm3 when CONFIG_WASM_ENABLE. Signed-off-by: Chaitanya Tata <chaitanya@dotstarconsulting.com> Co-authored-by: Cursor <cursoragent@cursor.com>
When CONFIG_SOC_WIFI_HE_SUPPORT is set, wifi_csi_config_t is the wifi_csi_acquire_config_t bitfield layout. The legacy bool fields (lltf_en, htltf_en, ...) only apply to ESP32-S3-class targets. Initialize acquire fields for HE targets; add MAC v3-only members when CONFIG_SOC_WIFI_MAC_VERSION_NUM >= 3. Verified: idf.py build for esp32c6 and esp32s3 (ESP-IDF v6.1). Signed-off-by: Chaitanya Tata <chaitanya@dotstarconsulting.com> Co-authored-by: Cursor <cursoragent@cursor.com>
edge_processing_init used xTaskCreatePinnedToCore(..., core 1). ESP32-C6 runs FreeRTOS unicore (portNUM_PROCESSORS == 1), so core 1 trips the xTaskCreatePinnedToCore range assert right after CSI init. Use core 1 only when SMP is available; otherwise pin to core 0. Signed-off-by: Chaitanya Tata <chaitanya@dotstarconsulting.com> Co-authored-by: Cursor <cursoragent@cursor.com>
provision.py always passed --chip esp32s3 to esptool, so flashing NVS on ESP32-C6 failed. Default --chip to auto (esptool v5) and add an explicit --chip override. Use write-flash instead of deprecated write_flash. Signed-off-by: Chaitanya Tata <chaitanya@dotstarconsulting.com> Co-authored-by: Cursor <cursoragent@cursor.com>
6043c72 to
2a3ddca
Compare
ruvnet
approved these changes
May 17, 2026
Owner
ruvnet
left a comment
There was a problem hiding this comment.
Forward-compat work for ESP-IDF 6 + Wi-Fi 6 (HE) targets, defensive and well-guarded:
#if CONFIG_SOC_WIFI_HE_SUPPORTcorrectly fences the newwifi_csi_acquire_config_tbitfield layout — ESP32-S3 (no HE) keeps the legacy boolean-stylewifi_csi_config_t, so no regression on the canonical 8MB target.- CMakeLists explicit
REQUIRESis harmless under IDF 5.4 (those components already resolve implicitly) and required under IDF 6 (no more implicit deps). The conditionalwasm3requirement is correct since WASM is compile-time optional. - PSA crypto for SHA-256 in rvf_parser — when this lands I'll want to confirm IDF 5.4 still builds (which uses the public
mbedtls/sha256.h), but if the build is conditional onMBEDTLS_VERSION_MAJOR >= 4it's fine. Going to trust the test plan[x]boxes here. portNUM_PROCESSORSfor task pinning on unicore — defensive against future ESP32-C3 builds, has no effect on dual-core S3.provision.pychip auto-detect — overdue ergonomics fix for the C6 target.
Merging. If the IDF 5.4 build breaks on the PSA SHA-256 change, will guard or revert that hunk in a follow-up.
This was referenced May 17, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Bring
firmware/esp32-csi-nodein line with ESP-IDF 6+ and Wi-Fi 6 (HE) targets(e.g. ESP32-C6): build fixes, correct CSI configuration layout, safe task pinning
on unicore SoCs, and provisioning that does not assume ESP32-S3.
Changes
rvf_parserinstead of theremoved public
mbedtls/sha256.hAPI; set explicitREQUIRESinmain/CMakeLists.txtso IDF 6 component resolution does not treat the componentas dependency-free.
wifi_csi_config_tusing the HE acquire bitfield pathwhen
CONFIG_SOC_WIFI_HE_SUPPORTis set, matchingwifi_csi_acquire_config_tvs legacy boolean-style fields.
portNUM_PROCESSORSso core1isnever used on single-core chips.
auto(optional override); usewrite-flashspelling expected by current esptool.Test plan
idf.py set-target esp32c6(or your HE target),idf.py buildprovision.pyagainst a non-S3 device without hardcoding--chip esp32s3Notes
Intended for ESP-IDF 6+ where the SHA-256 header and component
REQUIRESbehavior changed; older IDF may still build but was not the focus of this series.