Skip to content

[Bug] Kconfig orsource with $ESP_IDF_VERSION fails for IDF 5.5.1 (IDFGH-16607) #85

@csvke

Description

@csvke

Checklist

  • Checked the issue tracker for similar issues to ensure this is not a duplicate
  • Read the documentation to confirm the issue is not addressed there and your configuration is set correctly
  • Tested with the latest version to ensure the issue hasn't been fixed

How often does this bug occurs?

always

Expected behavior

Environment

  • ESP-IDF: v5.5.1
  • Component: esp_wifi_remote v1.1.4
  • Target: ESP32-P4

Problem

The Kconfig file uses $ESP_IDF_VERSION variable expansion which doesn't work:

https://github.com/espressif/esp-wifi-remote/blob/main/Kconfig#L8

This causes slave target selection Kconfig to not be loaded, resulting in:

Actual behavior (suspected bug)

Root Cause

Kconfig's orsource doesn't support shell-style variable expansion. The $ESP_IDF_VERSION is never replaced, so it looks for a literal directory named idf_v$ESP_IDF_VERSION/.

Workaround

Manually symlink: ln -s idf_v5.5 idf_v5.5.1

Proposed Solution

Use one of these approaches:

  1. CMake configure_file() to preprocess Kconfig
  2. Multiple orsource directives for common versions
  3. ESP-IDF should export IDF_VERSION_SHORT to Kconfig environment

Impact

This affects all users building with ESP-IDF 5.5.1 (and likely future patch versions).

Error logs or terminal output

Steps to reproduce the behavior

ESP-IDF Version: v5.5.1
Component Version: esp_wifi_remote v1.1.4 (from component registry)
Component espressif/esp_hosted: v2.5.10
Host Target: ESP32-P4
Slave Target: ESP32-C6 (via SDIO)
Operating System: macOS (also affects Linux/Windows)
Build System: CMake/Ninja via idf.py

Description

The Kconfig file in esp_wifi_remote uses $ESP_IDF_VERSION variable expansion in orsource directives, but this variable is never expanded by the Kconfig system. This causes the slave target selection menu to not be loaded, breaking WiFi Remote configuration for ESP-IDF patch versions like 5.5.1, 5.5.2, etc.

orsource "./idf_v$ESP_IDF_VERSION/Kconfig.slave_select.in"
orsource "./idf_v$ESP_IDF_VERSION/Kconfig.soc_wifi_caps.in"

The component has directories like idf_v5.5/ and idf_tag_v5.5/, but when using ESP-IDF v5.5.1, the Kconfig tries to source from a non-existent idf_v$ESP_IDF_VERSION/ directory (literally with the dollar sign).

Impact

❌ Slave target cannot be selected via menuconfig
❌ CONFIG_SLAVE_IDF_TARGET_ESP32C6 remains undefined
❌ CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET="invalid"
❌ SDIO transport option not available in ESP-Hosted
❌ Build fails with "Unknown Slave Target" errors
This affects all users building with ESP-IDF patch versions (5.3.1, 5.3.2, 5.4.1, 5.4.2, 5.5.1, etc.).

Steps to Reproduce the Behavior

  1. Create a Fresh ESP-IDF Project
# Use ESP-IDF v5.5.1
. ~/esp/esp-idf/export.sh
idf.py --version
# Output: ESP-IDF v5.5.1

# Create test project
mkdir test_wifi_remote && cd test_wifi_remote
idf.py create-project test_wifi
cd test_wifi
idf.py set-target esp32p4
  1. Add WiFi Remote Component
    Edit idf_component.yml
dependencies:
  espressif/esp_wifi_remote: "~1.1.4"
  espressif/esp_hosted: "~2.5.10"
  1. Attempt Configuration
idf.py menuconfig
# Navigate to: Component config → Wi-Fi Remote

Expected Behavior:

  • Should see "choose slave target" menu with options: ESP32, ESP32-S2, ESP32-C3, ESP32-S3, ESP32-C2, ESP32-C6, etc.

  • Selecting ESP32-C6 should enable SDIO option in ESP-Hosted config
    Actual Behavior:

  • Slave target menu is missing or shows as "(invalid)"

  • Warning in build output:
    warning: unknown kconfig symbol 'SLAVE_IDF_TARGET_ESP32C6' assigned to 'y' in sdkconfig.defaults

  1. Verify the Issue
    Check generated sdkconfig:
    grep "ESP_HOSTED_IDF_SLAVE_TARGET" sdkconfig
    Output:
    CONFIG_ESP_HOSTED_IDF_SLAVE_TARGET="invalid" ← Should be "esp32c6"
    Check if Kconfig files exist:
    ls -la managed_components/espressif__esp_wifi_remote/idf_v*
    Output:
idf_v5.3/
idf_v5.4/
idf_v5.5/       ← Directory exists
idf_v6.0/
idf_tag_v5.5/

Notice: No idf_v5.5.1/ directory exists, and the $ESP_IDF_VERSION variable is never replaced.

  1. Enable Build Verbosity to See Kconfig Processing
    idf.py -v reconfigure 2>&1 | grep -i "slave\|unknown"

Output:
warning: unknown kconfig symbol 'SLAVE_IDF_TARGET_ESP32C6' assigned to 'y'
This confirms the Kconfig choice menu was never loaded.

Project release version

v1.4.0, latest

System architecture

ARM 64-bit (Apple M1/M2, Raspberry Pi 4/5)

Operating system

Linux

Operating system version

macOS 15.6 (24G84)

Shell

ZSH

Additional context

No response

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions