Toolchain setup

The recorded example toolchain is Arduino CLI 1.5.1, ESP32 core 3.3.11, and native ARM64 LLVM-MinGW 20260908 / Clang 23.1.1 on Windows 11 ARM. Native compiler and Arduino CLI archive URLs and SHA-256 values are in dependencies.json. Check each download before extraction:

Get-FileHash -Algorithm SHA256 .\downloaded-tool.zip
Expand-Archive -LiteralPath .\downloaded-tool.zip -DestinationPath "$env:USERPROFILE\Tools\aieem"

Use the actual downloaded archive filename. The LLVM archive has its own top-level directory; keep that directory. The project scripts detect $env:USERPROFILE\Tools\aieem\llvm-mingw-20260908-ucrt-aarch64\bin\clang++.exe, or use $env:CXX explicitly. Add the folder containing arduino-cli.exe to the current PowerShell PATH or set $env:ARDUINO_CLI. Record clang++ --version, arduino-cli version, and arduino-cli core list in your own evidence.

Install the core through the official package index (network access required):

arduino-cli core update-index --additional-urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core install esp32:esp32@3.3.11 --additional-urls https://espressif.github.io/arduino-esp32/package_esp32_index.json
arduino-cli core list

The Arduino package manager resolves the pinned core's cross-compilers and tools. There are no sensor libraries in the required build. build-firmware.cmd contains the same full FQBN as the manifest, including CDC, QSPI PSRAM, 4 MB flash and TinyUF2 no-OTA partitions. A fresh learner checkout must compile without an authoring path or a previously generated binary. Record package versions and build output separately from the native test report.

Run the .cmd wrappers from PowerShell as shown in README. They require no PowerShell script execution-policy change. The native wrappers add the selected compiler's directory to their own process PATH so the test/replay executable can find its runtime DLLs; this does not change user or system PATH. If a directly launched executable exits before printing, capture its exit code and check its documented runtime location before changing source. The optional .ps1 wrappers are for environments whose existing policy already permits those scripts.

The host appendix was executed with Apple Clang 21.0.0 and Python 3.13.12 on an ARM64 macOS host; this is a separate software evidence path. Linux is not certified by those results. For Linux, install a C++17 compiler and Python 3, pass --cxx g++ if needed, and record a new result.