可下载的 ESP-IDF 工具
构建过程中,ESP-IDF 依赖许多工具,如交叉编译工具链、CMake 构建系统等。
如 快速入门 所述,若所需工具版本可用,首选使用当前操作系统的软件包管理器(如 apt、yum、brew 等)安装相关工具。例如,在 Linux 和 macOS 系统中,建议用 Linux 和 macOS 系统的软件包管理器安装 CMake。
但部分 ESP-IDF 的特定工具在操作系统软件包存储库中不可用,且不同版本的 ESP-IDF 需相应使用不同版本的工具运行。为解决以上两个问题,ESP-IDF 提供了一组脚本,可以下载和安装正确的工具版本,并设置相应运行环境。
下文中,这类可下载的工具简称为“工具”。除此类工具外,ESP-IDF 还使用以下工具:
- ESP-IDF 捆绑的 Python 脚本,如 - idf.py
- 从 PyPI 安装的 Python 软件包 
以下各小节介绍了可下载工具的安装方法,并提供了在不同平台上安装的工具列表。
工具元数据文件
各平台所需工具及工具版本列表存放在 tools/tools.json 文件中,tools/tools_schema.json 定义了该文件的模式。
在安装工具或设置环境变量时,tools/idf_tools.py 脚本将使用上述文件。
工具安装目录
IDF_TOOLS_PATH 环境变量指定下载及安装工具的位置。若未设置该变量,Linux 和 macOS 系统的默认下载安装位置为 HOME/.espressif,Windows 系统的默认下载安装位置为 %USER_PROFILE%\.espressif。
在 IDF_TOOLS_PATH 目录下,工具安装脚本会创建以下子目录和文件:
- dist— 工具存档下载位置。
- tools— 工具解压缩位置。工具会解压缩到子目录- tools/TOOL_NAME/VERSION/中,该操作支持同时安装不同版本的工具。
- idf-env.json— “目标 (target)”和“功能 (feature)”等用户安装选项均存储在此文件中。“目标”为选择需要安装和保持更新的工具的芯片目标;“功能”则决定应安装哪些 Python 软件包。有关用户安装选项的详情,请参阅下文。
- python_env— 与工具无关;虚拟 Python 环境安装在其子目录中。注意,设置- IDF_PYTHON_ENV_PATH环境变量可以将 Python 环境目录放置到其他位置。
- espidf.constraints.*.txt— 每个 ESP-IDF 版本都有的约束文件,包含 Python 包版本要求。
GitHub 资源镜像
工具下载器下载的工具大多属于 GitHub 发布的资源,即在 GitHub 上伴随软件发布的文件。
如果无法访问 GitHub 下载或访问速度较慢,可以配置一个 GitHub 资源镜像。
要使用乐鑫下载服务器,请将环境变量  IDF_GITHUB_ASSETS 设置为 dl.espressif.com/github_assets,在国内下载时,也可设置为 dl.espressif.cn/github_assets 加快下载速度。安装过程中,当从 github.com 下载工具时,URL 将重写为使用乐鑫下载服务器。
只要 URL 与 github.com 的下载 URL 格式匹配,任何镜像服务器均可使用,安装过程中下载的 GitHub 资源 URL 将把 https://github.com 替换为 https://${IDF_GITHUB_ASSETS}。
备注
目前,乐鑫下载服务器不会镜像 GitHub 上的所有内容,只镜像部分发布版本的附件资源文件及源文件。
idf_tools.py 脚本
ESP-IDF 随附的 tools/idf_tools.py 脚本具备以下功能:
- install:将工具下载到- ${IDF_TOOLS_PATH}/dist目录,并解压缩到- ${IDF_TOOLS_PATH}/tools/TOOL_NAME/VERSION。- install命令接收- TOOL_NAME或- TOOL_NAME@VERSION格式的安装工具列表。如果给定参数- all,则会安装列表上的所有工具,包括必须项和可选项。如果没有给定参数,或给定参数为- required,则只安装必须项。
- download:与- install类似,但不会解压缩工具。使用可选项- --platform可下载特定平台的工具。
- export:列出使用已安装工具前应设置的环境变量。对多数工具而言,只需要设置环境变量- PATH,但也有些工具需要设置额外的环境变量。- 环境变量可以以 - shell或- key-value格式列出,使用- --format参数设置该选项。- export可选参数:- --unset:该参数可用于创建语句,取消特定全局变量设置,使环境恢复到调用- export.{sh/fish}前的状态。
- --add_paths_extras:该参数将- $PATH中与 ESP-IDF 相关的额外路径添加到- ${IDF_TOOLS_PATH}/esp-idf.json中,以保证在退出当前 ESP-IDF 环境时删除全局变量。例如,在运行- export.{sh/fish}脚本时,如果在全局变量- $PATH中添加了新的路径,在命令中添加该参数可以将这些新路径保存到- ${IDF_TOOLS_PATH}/esp-idf.json文件中。
 
- shell:生成适合在 shell 中执行的输出,例如,在 Linux 和 macOS 上生成以下输出- export PATH="/home/user/.espressif/tools/tool/v1.0.0/bin:$PATH" - 在 Windows 上生成以下输出 - set "PATH=C:\Users\user\.espressif\tools\v1.0.0\bin;%PATH%" - 备注 - 当前不支持以 Powershell 格式导出环境变量,可以用 - key-value格式代替。- 如果 shell 支持,则该命令的输出可用于更新环境变量。例如 - eval $($IDF_PATH/tools/idf_tools.py export) 
- key-value:以- VARIABLE=VALUE格式生成输出,以便其他脚本解析- PATH=/home/user/.espressif/tools/tool/v1.0.0:$PATH - 注意,用于处理此输出的脚本必须对输出中的 - $VAR或- %VAR%模式进行扩展,即解析成对应变量。
 
- list:列出已知的工具版本,并指示哪些版本已安装。- 以下选项可用于自定义输出。 - --outdated:仅列出安装在- IDF_TOOLS_PATH中的过时版本工具。
 
- check:检查每个工具是否在系统路径和- IDF_TOOLS_PATH中可用。
- install-python-env:在- ${IDF_TOOLS_PATH}/python_env目录或直接在- IDF_PYTHON_ENV_PATH环境变量设置的目录中创建 Python 虚拟环境,并在其中安装所需的 Python 软件包。- 参数 - --features为可选项,用于指定要添加或删除的功能列表,功能之间用逗号分隔。- 该参数将删除以 - -开头的功能,添加以- +开头或无符号标记的功能。例如,要删除功能- XY,示例语法为- --features=-XY;要添加功能- XY,示例语法为- --features=+XY或- --features=XY。如果为同一功能同时提供了删除和添加选项,则不执行任何操作。
- 每个功能都必须有依赖文件。例如,只有当 - ${IDF_PATH}/tools/requirements/requirements.XY.txt文件已存在,并包含要安装的 Python 包列表时,功能- XY才有效。
- core功能为必须项,确保 ESP-IDF 的核心功能,如控制台中的构建、烧录、监视器、调试等。
- 用户可选择任意数量的可选功能,已选功能列表存储在 - idf-env.json中。
- 依赖文件中存储了需要安装的 Python 包以及 - espidf.constraints.*.txt文件,该约束文件从 https://dl.espressif.com 下载,并存储在- ${IDF_TOOLS_PATH}目录,包含了针对特定 ESP-IDF 版本的安装包版本要求。
 
 - 备注 - 可以通过使用 - --no-constraints参数或将环境变量- IDF_PYTHON_CHECK_CONSTRAINTS设置为- no,禁用约束文件的下载和使用,但 并不建议此做法。
- check-python-dependencies:检查所有必需的 Python 包是否均已安装。该命令会对比检查由- idf-env.json功能列表从- ${IDF_PATH}/tools/requirements/requirements.*.txt所选择的软件包与- espidf.constraints.*.txt文件指定的软件包版本是否一致。- 备注 - 约束文件可通过 - install-python-env命令下载。与- install-python-env命令类似,可以通过使用- --no-constraints参数或将环境变量- IDF_PYTHON_CHECK_CONSTRAINTS设置为- no,禁止使用约束文件。
- uninstall:打印并删除当前 ESP-IDF 版本未使用的工具。- --dry-run打印已安装但未使用的工具。
- --remove-archives删除过去下载的所有旧版本软件安装包。
 
安装脚本
ESP-IDF 的根目录中提供了针对不同 shell 的用户安装脚本,包括:
- install.bat适用于 Windows 命令提示符
- install.ps1适用于 Powershell
- install.sh适用于 Bash
- install.fish适用于 Fish
这些脚本除了下载和安装 IDF_TOOLS_PATH 中的工具外,还会准备一个 Python 虚拟环境,并在此虚拟环境中安装所需软件包。
为启用相应功能,这些脚本可以选择性地接受一组以逗号分隔的芯片目标列表及 --enable-* 参数,这类参数会传递给 idf_tools.py 脚本,并由该脚本将这类参数存储在 idf-env.json 中,从而逐步启用芯片目标及功能。
要为所有芯片目标安装工具,请在不使用任何可选参数的情况下,运行 idf_tools.py install --targets=all。要安装具备 ESP-IDF 核心功能的 Python 软件包,请运行 idf_tools.py install-python-env --features=core。
也可为特定芯片安装工具,例如,运行 install.sh esp32 可以只为 ESP32 安装工具。更多相关示例,请参阅 第三步:设置工具。
运行 idf_tools.py install-python-env --features=core,XY,install.sh --enable-XY 可以启用 XY 功能。
导出脚本
由于安装好的工具并非永久添加到用户或系统的 PATH 环境变量中,因此,要在命令行中使用这些工具,还需要额外步骤。以下脚本会修改当前 shell 的环境变量,从而使用正确版本的工具:
- export.bat适用于 Windows 命令提示符
- export.ps1适用于 Powershell
- export.sh适用于 Bash
- export.fish适用于 Fish
备注
在 Bash 中修改 shell 环境时,必须使用 . ./export.sh 命令加载 export.sh,注意添加前面的点和空格。
export.sh 可以在多种 shell 中使用,例如 bash、sh、zsh、dash 等。在使用 bash 或 zsh 时,可以在任何路径中直接运行(例如 . ./<<some_path>>/export.sh),这是因为它能够自动检测到 IDF_PATH。若使用其它 shell, 则必须在 ESP-IDF 路径中运行 (. ./export.sh),才能正确找到 IDF_PATH。
activate.py
环境设置由底层的 tools/activate.py 脚本处理。该脚本用于执行所有必要的准备和检查,并生成一个临时文件,之后供导出脚本使用。
activate.py 也可以作为独立命令运行。执行该脚本时,会启动一个新的子 shell 并加载 ESP-IDF 环境。使用 exit 命令可以退出子 shell,并退回至最初执行该脚本的父 shell。
此外,activate.py 脚本的具体行为可以通过各种选项进行修改,例如使用 --shell 选项可以生成特定的 ESP-IDF shell。若想了解更多有关可用选项的详细信息,请使用 activate.py --help 命令。
备注
在 Windows 系统中使用 activate.py 脚本时,应执行 python activate.py 命令。这可以确保脚本在当前终端窗口中运行,而不是启动一个立即关闭的新窗口。
其他安装方法
为适用于不同环境,ESP-IDF 提供了更多用户友好的 idf_tools.py 包装工具:
- ESP-IDF 工具安装器 支持下载和安装工具,其内部使用 - idf_tools.py实现功能。
- ESP-IDF Eclipse 插件 包括了一个用于设置工具的菜单项,该插件内部调用 - idf_tools.py。
- VSCode ESP-IDF 扩展 提供了设置工具的入门流程。尽管此扩展包不依赖 - idf_tools.py,但安装方法相同。
自定义安装
推荐用户使用上述方法安装 ESP-IDF 工具,但也可以选择其他方式来构建 ESP-IDF 应用程序。自定义安装时,用户需将所有必要的工具都安装在某个位置,并在 PATH 中定义,以保证 ESP-IDF 构建系统可用。
卸载 ESP-IDF
卸载 ESP-IDF 需要删除安装过程中配置的工具和环境变量。
- 使用 Windows ESP-IDF 工具安装器 的 Windows 用户可以直接运行卸载向导卸载 ESP-IDF。 
- 工具安装目录 下包含了已下载及安装的工具,删除该目录即可删除此前通过运行 安装脚本 安装的内容。通过 导出脚本 设置的环境变量不具备永久性,新环境中不会存在此类环境变量。 
- 如在安装过程中进行了自定义设置,除删除上述工具外,可能还涉及手动恢复此前为适用 ESP-IDF 工具而修改的环境变量及系统路径,例如 - IDF_PYTHON_ENV_PATH或- IDF_TOOLS_PATH。如存在通过手动复制安装的工具,则也需手动追踪并删除相关文件。
- 如安装了 ESP-IDF Eclipse 或 VSCode ESP-IDF 扩展程序 等插件,则需按照对应插件文档中的特定卸载说明进行操作。 
备注
卸载 ESP-IDF 工具不会删除任何项目文件或用户代码。为防止意外丢失其他文件,请在删除文件时谨慎操作。如果对某个步骤的操作有所疑问,请参考前述安装说明。
上述卸载指南默认需卸载的工具是按本文档中的步骤进行安装的。如果使用了自定义安装,可能需要进行相应调整。
ESP-IDF 工具列表
xtensa-esp-elf-gdb
GDB for Xtensa
License: GPL-3.0-or-later
More info: https://github.com/espressif/binutils-gdb
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: 9d68472d4cba5cf8c2b79d94f86f92c828e76a632bd1e6be5e7706e5b304d36e | 
| linux-arm64 | required | SHA256: bdabc3217994815fc311c4e16e588b78f6596b5ad4ffa46c80b40e982cfb1e66 | 
| linux-armel | required | SHA256: d54b8d703ba897b28c627da3d27106a3906dd01ba298778a67064710bc33c76d | 
| linux-armhf | required | SHA256: 6187d1dd54e57927f7a7b804ff431fe0a295d5d5638c7654ee2bb7c3e0e84d4b | 
| linux-i686 | required | SHA256: 64d3bc992ed8fdec383d49e8b803ac494605a38117c8293db8da055037de96b0 | 
| macos | required | SHA256: 023e74b3fda793da4bc0509b02de776ee0dad6efaaac17bef5916fb7dc9c26b9 | 
| macos-arm64 | required | SHA256: ea757c6bf8c25238f6d2fdcc6bbab25a1b00608a0f9e19b7ddd2f37ddbdc3fb1 | 
| win32 | required | SHA256: 322e8d9b700dc32d8158e3dc55fb85ec55de48d0bb7789375ee39a28d5d655e2 | 
| win64 | required | SHA256: a27a2fe20f192f8e0a51b8936428b4e1cf8935cfe008ee445cc49f6fc7f6db2e | 
riscv32-esp-elf-gdb
GDB for RISC-V
License: GPL-3.0-or-later
More info: https://github.com/espressif/binutils-gdb
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: ce004bc0bbd71b246800d2d13b239218b272a38bd528e316f21f1af2db8a4b13 | 
| linux-arm64 | required | SHA256: ba10f2866c61410b88c65957274280b1a62e3bed05131654ed9b6758efe18e55 | 
| linux-armel | required | SHA256: 88539db5d987f28827efac7e26080a2803b9b539342ccd2963ccfdd56d7f08f7 | 
| linux-armhf | required | SHA256: b45b9711d6a87d4c2f688a9599ce850ce02f477756e3e797c4a6c1c549127fcb | 
| linux-i686 | required | SHA256: 0e628ee37438ab6ba05eb889a76d09e50cb98e0020a16b8e2b935c5cf19b4ed2 | 
| macos | required | SHA256: 8f6bda832d70dad5860a639d55aba4237bd10cbac9f4822db1eece97357b34a9 | 
| macos-arm64 | required | SHA256: d88b6116e86456c8480ce9bc95aed375a35c0d091f1da0a53b86be0e6ef3d320 | 
| win32 | required | SHA256: d6e7ce05805b0d8d4dd138ad239b98a1adf8da98941867d60760eb1ae5361730 | 
| win64 | required | SHA256: 5c9f211dc46daf6b96fad09d709284a0f0186fef8947d9f6edd6bca5b5ad4317 | 
xtensa-esp-elf
Toolchain for 32-bit Xtensa based on GCC
License: GPL-3.0-with-GCC-exception
More info: https://github.com/espressif/crosstool-NG
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: e3e6dcf3d275c3c9ab0e4c8a9d93fd10e7efc035d435460576c9d95b4140c676 | 
| linux-arm64 | required | SHA256: ac2b311dc0003386425086bfc813bf2aeb3cdf3b117845802df6ebef5f69955f | 
| linux-armel | required | SHA256: c54c2877582070115fe6f4870a88a4db4f2f945becf2d70bb1f71e5ab1cac673 | 
| linux-armhf | required | SHA256: 04addfee56b45d62b6980967c71fafd6aec2be6dee6d8501e9db70345a6179d2 | 
| linux-i686 | required | SHA256: acf3fb7e37274413cd8c812894a6a0e3a0b3a78e9d5b533893d304008cc996c2 | 
| macos | required | SHA256: 1ca7a93825d5b84f6547fa73e6174acadb9af5c877f365e50e176936784383ea | 
| macos-arm64 | required | SHA256: b9732bb3cdcd6a50420c25eb9a8d90eb1216a0a0a274c8ffd4c2037167b5081f | 
| win32 | required | SHA256: b30e450e0af279783c54a9ae77c3b367dd556b78eda930a92ec7b784a74c28c8 | 
| win64 | required | SHA256: 62ae704777d73c30689efff6e81178632a1ca44d1a2d60f4621eb997e040e028 | 
esp-clang
Toolchain for all Espressif chips based on clang
License: Apache-2.0
More info: https://github.com/espressif/llvm-project
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | optional | SHA256: aee15b8e02440f9ec6a8070f017621dc400dbd62a4701f9cf456dbe34d2a0c4d | 
| linux-arm64 | optional | SHA256: 14abbc368d9c153270aa4d22ce28d78633cb0f1ca83d4be70591d9e39ae9bc82 | 
| linux-armhf | optional | SHA256: 4133285303aabb1831c477536a13413319a569170b0aa54b92abe69cc0e7b938 | 
| macos | optional | SHA256: b4641ec4dd574b6b7d037aa1bb2e5ff5a8a4623c88e89668db656282eb1d9dc8 | 
| macos-arm64 | optional | SHA256: 5d2e187ef40ecc9996630a7c6efcc19bdfd32ec4ce8cc4dd3014cd24e7016560 | 
| win64 | optional | SHA256: c4af15073b105dc174c0452dfd1875bab200412fa3151c0363cfc0d30abf5173 | 
riscv32-esp-elf
Toolchain for 32-bit RISC-V based on GCC
License: GPL-3.0-with-GCC-exception
More info: https://github.com/espressif/crosstool-NG
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: 7faaa86d272f3e43c233f8a5ffeba327673224a752c2eb72394655d5e7950000 | 
| linux-arm64 | required | SHA256: 762eac9ee3d909cf806dcbd26feeb4a83061640d1afea39bc36efdb566b77b03 | 
| linux-armel | required | SHA256: f5b92a7f91c97e11f8c871cffbb040310a3cea1049e967621e5dfc0ff1a601bc | 
| linux-armhf | required | SHA256: 14e7962cb4d00ef5c45bc2df2d5f7f2af796d4b68def9f9861d82ac05bb1831f | 
| linux-i686 | required | SHA256: 39f12f204d3aef7b0c4f3f3e58846ff1ee0a90526db56e91d11bc1c093b645c0 | 
| macos | required | SHA256: fd7543ca97f4d971798b8323e1e7315e648dded4cf2c16a82c3093447b0358fa | 
| macos-arm64 | required | SHA256: b0e54a077c8abd261a588ee96b4079a95218ad9c3124b70ef7275c5de262277d | 
| win32 | required | SHA256: 54193a97bd75205678ead8d11f00b351cfa3c2a6e5ab5d966341358b9f9422d7 | 
| win64 | required | SHA256: 24c8407fa467448d394e0639436a5ede31caf1838e35e8435e19df58ebed438c | 
esp32ulp-elf
Toolchain for ESP32 ULP coprocessor
License: GPL-3.0-or-later
More info: https://github.com/espressif/binutils-gdb
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: d13a808365b78465fa6591636dfbbb9604d9d15a397c3d9cd22626d54828ac2c | 
| linux-arm64 | required | SHA256: ecce0788ce1000e5c669c5adaf2fd5bf7f9bf96dcdbd3555d1d9ce4dcb311038 | 
| linux-armel | required | SHA256: 7228b01277f7908d72eb659470f82e143c4c66b444538a464290d88ece16130e | 
| linux-armhf | required | SHA256: 951b089c66561bc2190a8d57c316dfaef985a778728a7c30e1edcd29fe180016 | 
| linux-i686 | required | SHA256: df323d40962313168f6feeb2d9471c6010ff23a7896f40244e62991517d9745b | 
| macos | required | SHA256: b2aeba8eaafdf156e9e30be928dde1f133b00eaf33802d96827ec544ac7c864c | 
| macos-arm64 | required | SHA256: e3a4dfea043e2bce8cd00b3a0b260a59249fa61ca5931bf02f18a3d43c18deb4 | 
| win32 | required | SHA256: d33b64f49df27dcfa4a24d3af1a5ead77b020f85f33448994c31b98f88e66bb4 | 
| win64 | required | SHA256: 3a7627008ac92d1580542b95c696449e56aaa1d0881dc3ef5fd5c60afc77a49d | 
cmake
CMake build system
On Linux and macOS, it is recommended to install CMake using the OS-specific package manager (like apt, yum, brew, etc.). However, for convenience it is possible to install CMake using idf_tools.py along with the other tools.
License: BSD-3-Clause
More info: https://github.com/Kitware/CMake
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | optional | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-x86_64.tar.gz SHA256: cdd7fb352605cee3ae53b0e18b5929b642900e33d6b0173e19f6d4f2067ebf16 | 
| linux-arm64 | optional | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-linux-aarch64.tar.gz SHA256: d18f50f01b001303d21f53c6c16ff12ee3aa45df5da1899c2fe95be7426aa026 | 
| linux-armel | optional | https://dl.espressif.com/dl/cmake/cmake-3.30.2-Linux-armv7l.tar.gz SHA256: 446650c69ea74817a770f96446c162bb7ad24ffecaacb35fcd4845ec7d3c9099 | 
| linux-armhf | optional | https://dl.espressif.com/dl/cmake/cmake-3.30.2-Linux-armv7l.tar.gz SHA256: 446650c69ea74817a770f96446c162bb7ad24ffecaacb35fcd4845ec7d3c9099 | 
| macos | optional | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-macos-universal.tar.gz SHA256: c6fdda745f9ce69bca048e91955c7d043ba905d6388a62e0ff52b681ac17183c | 
| macos-arm64 | optional | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-macos-universal.tar.gz SHA256: c6fdda745f9ce69bca048e91955c7d043ba905d6388a62e0ff52b681ac17183c | 
| win32 | required | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-windows-x86_64.zip SHA256: 48bf4b3dc2d668c578e0884cac7878e146b036ca6b5ce4f8b5572f861b004c25 | 
| win64 | required | https://github.com/Kitware/CMake/releases/download/v3.30.2/cmake-3.30.2-windows-x86_64.zip SHA256: 48bf4b3dc2d668c578e0884cac7878e146b036ca6b5ce4f8b5572f861b004c25 | 
openocd-esp32
OpenOCD for ESP32
License: GPL-2.0-only
More info: https://github.com/espressif/openocd-esp32
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | required | SHA256: eb1fa9b21c65b45a2200af6dcc2914e32335d37b6dbbd181778dcc0dc025e70a | 
| linux-arm64 | required | SHA256: f70334a9b12a75b4d943e09fa5db30973037c39dbb54d6fa9f1a7118228b3d1c | 
| linux-armel | required | SHA256: 4ac34d6fd1af86aeda87c8318732f8d691c300c285c7fd2f5037c432c63fbbb3 | 
| linux-armhf | required | SHA256: 75372bdbcef2df64013dd36c88836e1029c52955941b69ca463397ccbd287c21 | 
| macos | required | SHA256: 9186a7a06304c6d9201cbce4ee3c7099b393bf8d329cda17a68874f92308f6ce | 
| macos-arm64 | required | SHA256: 2cc39318d52f393233ff1f777871aebe5b97b3fbad29556a238489263401b774 | 
| win32 | required | SHA256: ecb4f8533fa9098d10000f5f7e8b8eaa8591015b824b481078ddb2b37e7aa6f2 | 
| win64 | required | SHA256: e9eae8e1a8d0e030cd81dcb08394a9137cb7338a6211dfabcdbdfb37b58c5a23 | 
ninja
Ninja build system
On Linux and macOS, it is recommended to install ninja using the OS-specific package manager (like apt, yum, brew, etc.). However, for convenience it is possible to install ninja using idf_tools.py along with the other tools.
License: Apache-2.0
More info: https://github.com/ninja-build/ninja
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | optional | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux.zip SHA256: 6f98805688d19672bd699fbbfa2c2cf0fc054ac3df1f0e6a47664d963d530255 | 
| macos | optional | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip SHA256: 89a287444b5b3e98f88a945afa50ce937b8ffd1dcc59c555ad9b1baf855298c9 | 
| macos-arm64 | optional | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-mac.zip SHA256: 89a287444b5b3e98f88a945afa50ce937b8ffd1dcc59c555ad9b1baf855298c9 | 
| win64 | required | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-win.zip SHA256: f550fec705b6d6ff58f2db3c374c2277a37691678d6aba463adcbb129108467a | 
idf-exe
IDF wrapper tool for Windows
License: Apache-2.0
More info: https://github.com/espressif/idf_py_exe_tool
| Platform | Required | Download | 
|---|---|---|
| win32 | required | https://github.com/espressif/idf_py_exe_tool/releases/download/v1.0.3/idf-exe-v1.0.3.zip SHA256: 7c81ef534c562354a5402ab6b90a6eb1cc8473a9f4a7b7a7f93ebbd23b4a2755 | 
| win64 | required | https://github.com/espressif/idf_py_exe_tool/releases/download/v1.0.3/idf-exe-v1.0.3.zip SHA256: 7c81ef534c562354a5402ab6b90a6eb1cc8473a9f4a7b7a7f93ebbd23b4a2755 | 
ccache
Ccache (compiler cache)
License: GPL-3.0-or-later
More info: https://github.com/ccache/ccache
| Platform | Required | Download | 
|---|---|---|
| win64 | required | https://github.com/ccache/ccache/releases/download/v4.10.2/ccache-4.10.2-windows-x86_64.zip SHA256: 6252f081876a9a9f700fae13a5aec5d0d486b28261d7f1f72ac11c7ad9df4da9 | 
dfu-util
dfu-util (Device Firmware Upgrade Utilities)
License: GPL-2.0-only
More info: http://dfu-util.sourceforge.net/
| Platform | Required | Download | 
|---|---|---|
| win64 | required | https://dl.espressif.com/dl/dfu-util-0.11-win64.zip SHA256: 652eb94cb1c074c6dbead9e47adb628922aeb198a4d440a346ab32e7a0e9bf64 | 
esp-rom-elfs
ESP ROM ELFs
License: Apache-2.0
More info: https://github.com/espressif/esp-rom-elfs
| Platform | Required | Download | 
|---|---|---|
| any | required | https://github.com/espressif/esp-rom-elfs/releases/download/20241011/esp-rom-elfs-20241011.tar.gz SHA256: 921f000164a421c7628fbfee55b173384aafaa51883adc65cd27bf9b0af9e9a9 | 
qemu-xtensa
QEMU for Xtensa
Some ESP-specific instructions for running QEMU for Xtensa chips are here: https://github.com/espressif/esp-toolchain-docs/blob/main/qemu/esp32/README.md
License: GPL-2.0-only
More info: https://github.com/espressif/qemu
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | optional | SHA256: 071d117c44a6e9a1bc8664ab63b592d3e17ceb779119dcb46c59571a4a7a88c9 | 
| linux-arm64 | optional | SHA256: 43552f32b303a6820d0d9551903e54fc221aca98ccbd04e5cbccbca881548008 | 
| macos | optional | SHA256: 0096734280ce04f558cd9bd72f35db39667f80d44309a35565f2f8c02d1f9cc3 | 
| macos-arm64 | optional | SHA256: fb4ca6be7b1a4dbcf153879cf0582300f974371def0826c0c5b728f12812ad08 | 
| win64 | optional | SHA256: 281659f7a1d49761ac6f54d0aeb14366cb93c002f21948b847a0e15c0b8f5425 | 
qemu-riscv32
QEMU for RISC-V
Some ESP-specific instructions for running QEMU for RISC-V chips are here: https://github.com/espressif/esp-toolchain-docs/blob/main/qemu/esp32c3/README.md
License: GPL-2.0-only
More info: https://github.com/espressif/qemu
| Platform | Required | Download | 
|---|---|---|
| linux-amd64 | optional | SHA256: 47120e826cfec7180db8cb611a7a4aed2e9b2191c2a739194f8ce085e63cdd8d | 
| linux-arm64 | optional | SHA256: 3b6221a8b1881d2c9b9fa0b0bf8d7065c84153d2a54e429307bde9feae235c27 | 
| macos | optional | SHA256: 3afa55d5abea52ccf18d0bc41fe819d568bd4ee1582989b1ee9b1ee4a609a31e | 
| macos-arm64 | optional | SHA256: 69ba5154594fb2922d5490a49ea6b4925c024c6c37f875b42f9885f513e0bcdd | 
| win64 | optional | SHA256: f49bb5c8f4d6e2cfbf7eeec21eb8ef190a57307778705bc689536ac13bde511c |