ESP32: Difference between pio run -t menuconfig vs. idf.py menuconfig

Hi,
I try to migrate some of my projects from standalone espressif-tools to Vscode embedded PIO.

However: The configuration of ESP32 projects seems to be somewhat out of sync.
When I run:

pio run menuconfig vs. idf.py menuconfig

the pio configuration is missing 4 entries:

  • BLUETOOTH
  • ESP32 BLE Mesh Support
  • ESP32-specific
  • Power management

So I am not able to create bluetooth based projects with the PIO toolchain. Furthermore: When I open an sdkconfig, which was created with core espressif tools, and save it within PIO, all configuration items from those 4 sections are missing in the resulting sdkconfig. The project is now broken and does not longer compile.

Are there some more options in platformio.ini needed, to get those configuration settings?

Hello again,

nobody here with any idea?
Right now it looks somewhat stupid for me, using PIO, when I need a own Espressif-IDE installation in parallel, to be able to configure new projects.

Pretty sure that if you use idf.py it uses the ESP-IDF installation that you have manually set up, not the one PlatformIO uses. Those are at different versions (different IDF_PATH so to say) and have inherently different options. Only use pio run -t menuconfig to change the options to change the ESP-IDF options for a PlatformIO project so that it uses the right ESP-IDF version that PlatformIO uses…

Yes, I know, that they are different. That is the problem. I need to use idf.py because pio run -t menuconfig does not offer bluetooth configuration and other things.
In addition: When I have a working espidf project, and open the configuration with pio run -t menuconfig and save the configuration without changing anything, the configuration is broken.
All Bluetooth settings are gone, the project can’t be compiled any longer.

Can’t reproduce that behavior If I go into the premade example espidf-ble-eddystone and execute pio run -t menuconfig, it’s clearly there

You can clearly see all “missing” 4 in the screenshot.