Is platformio suported on VSCode arm64?

I’m trying to compile a project for ESP32 on arm64 windows 11. First the platformio couldn’t find python (even though it was in the path and even when I was pointing it to the exact location of python), then it went into an endless loop of “platformio installed - restart vscode - installing platformio” and then finally it was installed, but the build fails with:

Resolving iec-nugget dependencies...
Already up-to-date.
Updating metadata for the vscode IDE...
UserSideException: Processing iec-nugget (board: esp32-16mb; platform: espressif32 @ 6.3.2; framework: espidf)
--------------------------------------------------------------------------------
Verbose mode can be enabled via `-v, --verbose` option
CONFIGURATION: https://docs.platformio.org/page/boards/espressif32/esp32-16mb.html
PLATFORM: Espressif 32 (6.3.2) > Meatloaf v1 16MB
HARDWARE: ESP32 240MHz, 320KB RAM, 16MB Flash
DEBUG: Current (cmsis-dap) External (cmsis-dap, esp-bridge, esp-prog, ftdi, iot-bus-jtag, jlink, minimodule, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-espidf @ 3.50002.230601 (5.0.2) 
 - tool-cmake @ 3.16.4 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-idf @ 1.0.1 
 - tool-mconf @ 1.4060000.20190628 (406.0.0) 
 - tool-ninja @ 1.9.0 
 - toolchain-esp32ulp @ 1.23500.220830 (2.35.0) 
 - toolchain-xtensa-esp32 @ 11.2.0+2022r1
Installing ESP-IDF's Python dependencies
Collecting urllib3<2
  Using cached urllib3-1.26.20-py2.py3-none-any.whl.metadata (50 kB)
Collecting cryptography~=41.0.1
  Using cached cryptography-41.0.7.tar.gz (630 kB)
  Installing build dependencies: started
  Installing build dependencies: finished with status 'error'
  error: subprocess-exited-with-error
  
    pip subprocess to install build dependencies did not run successfully.
  \u2502 exit code: 1
  \u2570\u2500> [61 lines of output]
      Collecting setuptools>=61.0.0
        Using cached setuptools-77.0.1-py3-none-any.whl.metadata (6.7 kB)
      Collecting wheel
        Using cached wheel-0.45.1-py3-none-any.whl.metadata (2.3 kB)
      Collecting cffi>=1.12
        Using cached cffi-1.17.1.tar.gz (516 kB)
        Installing build dependencies: started
        Installing build dependencies: finished with status 'done'
        Getting requirements to build wheel: started
        Getting requirements to build wheel: finished with status 'error'
        error: subprocess-exited-with-error
      
        × Getting requirements to build wheel did not run successfully.
        │ exit code: 1
        ╰─> [36 lines of output]
            Traceback (most recent call last):
              File "C:\Users\qus\.platformio\penv\.espidf-5.0.2\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 389, in <module>
                main()
                ~~~~^^
              File "C:\Users\qus\.platformio\penv\.espidf-5.0.2\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 373, in main
                json_out["return_val"] = hook(**hook_input["kwargs"])
                                         ~~~~^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users\qus\.platformio\penv\.espidf-5.0.2\Lib\site-packages\pip\_vendor\pyproject_hooks\_in_process\_in_process.py", line 143, in get_requires_for_build_wheel
                return hook(config_settings)
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\build_meta.py", line 334, in get_requires_for_build_wheel
                return self._get_build_requires(config_settings, requirements=[])
                       ~~~~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\build_meta.py", line 304, in _get_build_requires
                self.run_setup()
                ~~~~~~~~~~~~~~^^
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\build_meta.py", line 320, in run_setup
                exec(code, locals())
                ~~~~^^^^^^^^^^^^^^^^
              File "<string>", line 126, in <module>
              File "<string>", line 105, in uses_msvc
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\_distutils\command\config.py", line 215, in try_compile
                self._compile(body, headers, include_dirs, lang)
                ~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\_distutils\command\config.py", line 131, in _compile
                self.compiler.compile([src], include_dirs=include_dirs)
                ~~~~~~~~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\_distutils\compilers\C\msvc.py", line 384, in compile
                self.initialize()
                ~~~~~~~~~~~~~~~^^
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\_distutils\compilers\C\msvc.py", line 294, in initialize
                vc_env = _get_vc_env(plat_spec)
              File "C:\Users\qus\AppData\Local\Temp\pip-build-env-4aqfl66c\overlay\Lib\site-packages\setuptools\_distutils\compilers\C\msvc.py", line 155, in _get_vc_env
                raise DistutilsPlatformError(
                ...<3 lines>...
                )
            distutils.errors.DistutilsPlatformError: Microsoft Visual C++ 14.0 or greater is required. Get it with "Microsoft C++ Build Tools": https://visualstudio.microsoft.com/visual-cpp-build-tools/
            [end of output]
      
        note: This error originates from a subprocess, and is likely not a problem with pip.
      error: subprocess-exited-with-error
      
      × Getting requirements to build wheel did not run successfully.
      │ exit code: 1
      ╰─> See above for output.
      
      note: This error originates from a subprocess, and is likely not a problem with pip.
      [end of output]
  
  note: This error originates from a subprocess, and is likely not a problem with pip.
error: subprocess-exited-with-error

  pip subprocess to install build dependencies did not run successfully.
\u2502 exit code: 1
\u2570\u2500> See above for output.

note: This error originates from a subprocess, and is likely not a problem with pip.
*** Error 1
Installing windows-curses package
ERROR: Could not find a version that satisfies the requirement windows-curses (from versions: none)
ERROR: No matching distribution found for windows-curses
*** Error 1
Reading CMake configuration...
-- Building ESP-IDF components for target esp32
-- Configuring incomplete, errors occurred!
See also "C:/Users/qus/Develop/meatloaf-specialty/.pio/build/iec-nugget/CMakeFiles/CMakeOutput.log".

fatal: not a git repository (or any of the parent directories): .git
CMake Error at C:/Users/qus/.platformio/packages/framework-espidf/tools/cmake/build.cmake:519 (message):
  C:\Users\qus\.platformio\penv\.espidf-5.0.2\Scripts\python.exe: Error while
  finding module specification for 'idf_component_manager.prepare_components'
  (ModuleNotFoundError: No module named 'idf_component_manager')

Call Stack (most recent call first):
  C:/Users/qus/.platformio/packages/framework-espidf/tools/cmake/project.cmake:447 (idf_build_process)
  CMakeLists.txt:4 (project)



========================= [FAILED] Took 12.71 seconds =========================

Environment    Status    Duration
-------------  --------  ------------
iec-nugget     FAILED    00:00:12.708
==================== 1 failed, 0 succeeded in 00:00:12.708 ====================

Afaik pioarduino’s platform-espressif32 support arm64. See Could not find the package 'espressif/toolchain-riscv32-esp @ 8.4.0+2021r2-patch5' on Windows 11 ARM64 - #4 by jason2866

I also tried to instead use WSL with VSCode and to my surprise - it behaves exactly the same with complaining about missing Python, but in this case, it won’t be satisifed with a working Python path.

No, not WSL but pioarduino’s platform-espressif32!

This is not arduino project, but ESP-IDF. I tried it from WSL and the error is:

le, olimex-arm-usb-ocd, olimex-arm-usb-ocd-h, olimex-arm-usb-tiny-h, olimex-jtag-tiny, tumpa)
PACKAGES: 
 - framework-espidf @ 3.50002.230601 (5.0.2) 
 - tool-cmake @ 3.16.9 
 - tool-esptoolpy @ 1.40501.0 (4.5.1) 
 - tool-mkfatfs @ 2.0.1 
 - tool-mklittlefs @ 1.203.210628 (2.3) 
 - tool-mkspiffs @ 2.230.0 (2.30) 
 - tool-ninja @ 1.10.2 
 - toolchain-esp32ulp @ 1.23500.220830 (2.35.0) 
 - toolchain-xtensa-esp32 @ 11.2.0+2022r1
ModuleNotFoundError: No module named 'pkg_resources':
  File "/home/qus/.platformio/penv/lib/python3.12/site-packages/platformio/builder/main.py", line 173:
    env.SConscript("$BUILD_SCRIPT")
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 620:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/qus/.platformio/platforms/espressif32/builder/main.py", line 312:
    target_elf = env.BuildProgram()
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File "/home/qus/.platformio/penv/lib/python3.12/site-packages/platformio/builder/tools/piobuild.py", line 62:
    env.ProcessProgramDeps()
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File "/home/qus/.platformio/penv/lib/python3.12/site-packages/platformio/builder/tools/piobuild.py", line 142:
    env.BuildFrameworks(env.get("PIOFRAMEWORK"))
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Util/envs.py", line 252:
    return self.method(*nargs, **kwargs)
  File "/home/qus/.platformio/penv/lib/python3.12/site-packages/platformio/builder/tools/piobuild.py", line 352:
    SConscript(env.GetFrameworkScript(name), exports="env")
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 684:
    return method(*args, **kw)
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 620:
    return _SConscript(self.fs, *files, **subst_kw)
  File "/home/qus/.platformio/packages/tool-scons/scons-local-4.8.1/SCons/Script/SConscript.py", line 280:
    exec(compile(scriptdata, scriptname, 'exec'), call_stack[-1].globals)
  File "/home/qus/.platformio/platforms/espressif32/builder/frameworks/espidf.py", line 29:
    import pkg_resources
===========================

Is this PlatformIO’s espressif32 platform or puoarduino’s espressif32 platform?

PlatformIO’s espressif32

Give pioarduino’s espressif platform a try…Afaik this should work on arm64.

Heh, with pioarduino the error is exactly the same. :smiley:

Edit, oh wait, let me update the platform…

The pinned platform is very old. The latest is 6.10.0. Can you try:

  • deleting all C:\Users\qus\.platformio\penv\.espidf-* folders
  • setting platform = espressif32@6.10.0

Well, might be old but it’s the version that builds the project. Pioarduino seems to work, though.