# Downloadable IDF Tools

[中文]

The ESP-IDF build process relies on a number of tools: cross-compiler toolchains, CMake build system, and others.

Installing the tools using an OS-specific package manager (e.g., apt, yum, brew, etc.) is the preferred method, when the required version of the tool is available. This recommendation is reflected in the Get Started. For example, on Linux and macOS, it is recommended to install CMake using an OS package manager.

However, some of the tools are specific to ESP-IDF and are not available in OS package repositories. Furthermore, different ESP-IDF versions require different tool versions for proper operation. To solve these two problems, ESP-IDF provides a set of scripts that can download and install the correct tool versions and set up the environment accordingly.

The rest of the document refers to these downloadable tools simply as "tools". Other kinds of tools used in ESP-IDF are:

- Python scripts bundled with ESP-IDF such as `idf.py`

- Python packages installed from PyPI

The following sections explain the installation method and provide the list of tools installed on each platform.

Note

This document is provided for advanced users who need to customize their installation, users who wish to understand the installation process, and ESP-IDF developers.

If you are looking for instructions on how to install the tools, see Get Started.

## Tools Metadata File

The list of tools and tool versions required for each platform is located in tools/tools.json. The schema of this file is defined by tools/tools_schema.json.

This file is used by the tools/idf_tools.py script when installing the tools or setting up the environment variables.

## Tools Installation Directory

The `IDF_TOOLS_PATH` environment variable specifies the location where the tools are to be downloaded and installed. If not set, the default location will be `$HOME/.espressif` on Linux and macOS, and `%USER_PROFILE%\.espressif` on Windows.

Inside the `IDF_TOOLS_PATH` directory, the tools installation scripts create the following directories and files:

- `dist` — where the archives of the tools are downloaded.

- `tools` — where the tools are extracted. The tools are extracted into subdirectories: `tools/TOOL_NAME/VERSION/`. This arrangement allows different versions of tools to be installed side by side.

- `idf-env.json` — user install options, such as targets and features, are stored in this file. Targets are selected chip targets for which tools are installed and kept up-to-date. Features determine the Python package set which should be installed. These options will be discussed later.

- `python_env` — not related to the tools; virtual Python environments are installed in the sub-directories. Note that the Python environment directory can be placed elsewhere by setting the `IDF_PYTHON_ENV_PATH` environment variable.

  - `idf_version.txt` — located within each specific Python environment sub-directory under `python_env`, this file records the ESP-IDF version corresponding to that environment. The version is stored in a format like `5.3` to represent ESP-IDF version `v5.3`.

- `root_managed_components` — directory managed by `idf-component-manager` for components installed globally.

- `espidf.constraints.*.txt` — one constraint file for each ESP-IDF release containing Python package version requirements.

## GitHub Assets Mirror

Most of the tools downloaded by the tools installer are GitHub Release Assets, which are files attached to a software release on GitHub.

If GitHub downloads are inaccessible or slow to access, a GitHub assets mirror can be configured.

To use Espressif's download server, set the environment variable `IDF_GITHUB_ASSETS` to `dl.espressif.com/github_assets`, or `dl.espressif.cn/github_assets` for faster download in China. When the install process is downloading a tool from `github.com`, the URL will be rewritten to use this server instead.

Any mirror server can be used provided the URL matches the `github.com` download URL format. For any GitHub asset URL that the install process downloads, it will replace `https://github.com` with `https://${IDF_GITHUB_ASSETS}`.

Note

The Espressif download server currently does not mirror everything from GitHub, but only files attached as Assets to some releases, as well as source archives for some releases.

## `idf_tools.py` Script

The tools/idf_tools.py script bundled with ESP-IDF performs several functions:

- `install`: Download the tool into the `${IDF_TOOLS_PATH}/dist` directory and extract it into `${IDF_TOOLS_PATH}/tools/TOOL_NAME/VERSION`.

  The `install` command accepts the list of tools to install in the `TOOL_NAME` or `TOOL_NAME@VERSION` format. If `all` is given, all the tools, including required and optional ones, are installed. If no argument or `required` is given, only the required tools are installed.

- `download`: Similar to `install` but doesn't extract the tools. An optional `--platform` argument may be used to download the tools for the specific platform.

- `export`: Lists the environment variables that need to be set to use the installed tools. For most of the tools, setting the `PATH` environment variable is sufficient, but some tools require extra environment variables.

  The environment variables can be listed in either `shell` or `key-value` formats, which can be set using the `--format` parameter:

  - `export` optional parameters:

    - `--unset`: Creates a statement that unsets specific global variables and restores the environment to its state before calling `export.{sh/fish}`.

    - `--add_paths_extras`: Adds extra ESP-IDF-related paths of `$PATH` to `${IDF_TOOLS_PATH}/esp-idf.json`, which is used to remove global variables when the active ESP-IDF environment is deactivated. For example, while processing the `export.{sh/fish}` script, if new paths are added to the global variable `$PATH`, this option saves these new paths to the `${IDF_TOOLS_PATH}/esp-idf.json` file.

  - `shell`: Produces output suitable for evaluation in the shell. For example, produce the following output on Linux and macOS:

        export PATH="/home/user/.espressif/tools/tool/v1.0.0/bin:$PATH"

    Produce the following output on Windows:

        set "PATH=C:\Users\user\.espressif\tools\v1.0.0\bin;%PATH%"

    Note

    Exporting environment variables in Powershell format is not supported at the moment. `key-value` format may be used instead.

    The output of this command may be used to update the environment variables if the shell supports it. For example

        eval $($IDF_PATH/tools/idf_tools.py export)

  - `key-value`: Produces output in the `VARIABLE=VALUE` format that is suitable for parsing by other scripts

        PATH=/home/user/.espressif/tools/tool/v1.0.0:$PATH

    Note that the script consuming this output has to perform expansion of `$VAR` or `%VAR%` patterns found in the output.

- `list`: Lists the known versions of the tools, and indicates which ones are installed.

  The following option is available to customize the output.

  - `--outdated`: Lists only outdated versions of tools installed in `IDF_TOOLS_PATH`.

- `check`: For each tool, checks whether the tool is available in the system path and in `IDF_TOOLS_PATH`.

- `install-python-env`: Creates a Python virtual environment in the `${IDF_TOOLS_PATH}/python_env` directory or directly in the directory set by the `IDF_PYTHON_ENV_PATH` environment variable, and installs the required Python packages there. If the Python virtual environment already exists, packages inside are updated to their latest versions with respect to the `espidf.constraints.*.txt` file.

  - An optional `--features` argument allows one to specify a comma-separated list of features to be added or removed.

    1. A feature that begins with `-` will be removed, and features with `+` or without any sign will be added. Example syntax for removing feature `XY` is `--features=-XY`, and for adding feature `XY` is `--features=+XY` or `--features=XY`. If both removing and adding options are provided with the same feature, no operation is performed.

    2. For each feature, a requirements file must exist. For example, feature `XY` is a valid feature if `${IDF_PATH}/tools/requirements/requirements.XY.txt` is an existing file with a list of Python packages to be installed.

    3. There is one mandatory `core` feature ensuring the core functionality of ESP-IDF, e.g., build, flash, monitor, debug in console. There can be an arbitrary number of optional features.

    4. The selected list of features is stored in `idf-env.json`.

    5. The requirement files contain a list of the desired Python packages to be installed and the `espidf.constraints.*.txt` file downloaded from https://dl.espressif.com and stored in `${IDF_TOOLS_PATH}`, which contains the package version requirements for a given ESP-IDF version.

  Note

  Although it is not recommended, the download and use of constraint files can be disabled with the `--no-constraints` argument or setting the `IDF_PYTHON_CHECK_CONSTRAINTS` environment variable to `no`.

- `check-python-dependencies`: Checks if all required Python packages are installed. Packages from `${IDF_PATH}/tools/requirements/requirements.*.txt` files selected by the feature list of `idf-env.json` are checked with the package versions specified in the `espidf.constraints.*.txt` file.

  Note

  The constraint file is downloaded with the `install-python-env` command. Similar to the `install-python-env` command, the use of constraint files can be disabled with the `--no-constraints` argument or setting the `IDF_PYTHON_CHECK_CONSTRAINTS` environment variable to `no`.

- `uninstall`: Prints and removes tools that are currently not used by the active ESP-IDF version.

  - `--dry-run`: Prints installed unused tools.

  - `--remove-archives`: Additionally removes all older versions of previously downloaded installation packages.

## Install Scripts

Shell-specific user-facing installation scripts are provided in the root directory of ESP-IDF repository to facilitate tools installation. These are:

- `install.bat` for Windows Command Prompt

- `install.ps1` for Powershell

- `install.sh` for Bash

- `install.fish` for Fish

Apart from downloading and installing the tools in `IDF_TOOLS_PATH`, these scripts prepare a Python virtual environment, and install the required packages into that environment.

These scripts accept optionally a comma-separated list of chip targets and `--enable-*` arguments for enabling features. These arguments are passed to the `idf_tools.py` script which stores them in `idf-env.json`. Therefore, chip targets and features can be enabled incrementally.

To install tools for all chip targets, run the scripts without any optional arguments using `idf_tools.py install --targets=all`. Similarly, to install Python packages for core ESP-IDF functionality, run `idf_tools.py install-python-env --features=core`.

It is also possible to install tools for specific chip targets. For example, `install.sh esp32` installs tools only for ESP32. See Step 3. Set up the Tools for more examples.

`install.sh --enable-XY` enables feature `XY` (by running `idf_tools.py install-python-env --features=core,XY`).

## Export Scripts

Since the installed tools are not permanently added to the user or system `PATH` environment variable, an extra step is required to use them in the command line. The following scripts modify the environment variables in the current shell to make the correct versions of the tools available:

- `export.bat` for Windows Command Prompt

- `export.ps1` for Powershell

- `export.sh` for Bash

- `export.fish` for Fish

Note

To modify the shell environment in Bash, `export.sh` must be "sourced" by using the command `. ./export.sh`. Please ensure to include the leading dot and space.

`export.sh` may be used with various shells like Bash, Zsh, sh, dash, etc. When using Bash or Zsh, you can run it from any path (e.g., `. ./<<some_path>>/export.sh`) as it automatically detects `IDF_PATH`. For other shells, it must be run from the ESP-IDF directory (`. ./export.sh`) to locate `IDF_PATH` correctly.

### activate.py

The environment setup is handled by the underlying `tools/activate.py` Python script. This script performs all necessary preparations and checks, generating a temporary file that is subsequently sourced by the export script.

`activate.py` can also function as a standalone command. When run, it launches a new child shell with an ESP-IDF environment, which can be utilized and then exited with the `exit` command. Upon exiting the child shell, you will return to the parent shell from which the script was initially executed.

Additionally, the specific behavior of the `activate.py` script can be modified with various options, such as spawning a specific shell with ESP-IDF using the `--shell` option. For more information on available options, use the `activate.py --help` command.

Note

When using `activate.py` on Windows, it should be executed with `python activate.py`. This ensures the script runs in the current terminal window rather than launching a new one that closes immediately.

## Other Installation Methods

Depending on the environment, more user-friendly wrappers for `idf_tools.py` are provided:

- ESP-IDF Installation Manager can download and install the tools. Internally the installer uses `idf_tools.py`.

- ESP-IDF Eclipse Plugin includes a menu item to set up the tools. Internally the plugin calls `idf_tools.py`.

- VSCode ESP-IDF Extension includes an onboarding flow. This flow helps set up the tools. Although the extension does not rely on `idf_tools.py`, the same installation method is used.

## Custom Installation

Although the methods above are recommended for ESP-IDF users, they are not a must for building ESP-IDF applications. ESP-IDF build system expects that all the necessary tools are installed somewhere, and made available in the `PATH`.

When performing a custom installation, ensure that the `ESP_IDF_VERSION` environment variable is set to reflect the current ESP-IDF version, using a format like `5.3` to represent ESP-IDF version `v5.3`. This variable is required by some components for version-specific configurations and is typically set by the `idf_tools.py export` script in standard installations.

## Uninstall ESP-IDF

Uninstalling ESP-IDF requires removing both the tools and the environment variables that have been configured during the installation.

- Users using the ESP-IDF Installation Manager can remove ESP-IDF in the graphical user interface (GUI) or command line interface (CLI).

- To remove an installation performed by running the supported install scripts, simply delete the tools installation directory including the downloaded and installed tools. Any environment variables set by the export scripts are not permanent and will not be present after opening a new environment.

- When dealing with a custom installation, in addition to deleting the tools as mentioned above, you may also need to manually revert any changes to environment variables or system paths that were made to accommodate the ESP-IDF tools (e.g., `IDF_PYTHON_ENV_PATH` or `IDF_TOOLS_PATH`). If you manually copied any tools, you would need to track and delete those files manually.

- If you installed any plugins like the ESP-IDF Eclipse Plugin or VSCode ESP-IDF Extension, you should follow the specific uninstallation instructions described in the documentation of those components.

Note

Uninstalling the ESP-IDF tools does not remove any project files or your code. Be mindful of what you are deleting to avoid losing any work. If you are unsure about a step, refer back to the installation instructions.

These instructions assume that the tools were installed following the procedures in this provided document. If you've used a custom installation method, you might need to adapt these instructions accordingly.

## List of ESP-IDF Tools

### 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 | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-x86_64-linux-gnu.tar.gz SHA256: 73bc6c4e50b06dceb60e94b53aded61b7769be3cf563572269d9c8d643db8e95
linux-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-aarch64-linux-gnu.tar.gz SHA256: 00290ffe21b2916ffd343fd28ac34fc8b93e99b992a3656fa09b4f2bdc564bea
linux-armel | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-arm-linux-gnueabi.tar.gz SHA256: f187a315e0393c2086d47e22f092524e3a1026143daa93c8e2bbdb8eac77d488
linux-armhf | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-arm-linux-gnueabihf.tar.gz SHA256: c0610a3e19f81cec5c7a9a8d7a3e8bfb53ff965c088ce0870c7df3180e78841b
linux-i686 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-i586-linux-gnu.tar.gz SHA256: 303b06d82d2802f508af603cd7a1e256dca0f232a2fa28ab9fa35539c2c858ac
macos | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-x86_64-apple-darwin24.5.tar.gz SHA256: 706d58849fd4a83244023051605b3631e835565395fa2783ed5afce1f17413ee
macos-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-aarch64-apple-darwin24.5.tar.gz SHA256: da97440e74a9ff36370bdb598cf421a8183c11ae6fb44431be594ad16dbe77ef
win-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-aarch64-w64-mingw32.zip SHA256: 4ff247465d84030ab29b741874d16d740d12febc0508501b72b69564decb17e4
win32 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-i686-w64-mingw32.zip SHA256: 8125a724e4f25c22b19a0321bce8b6a8675e12e0d12e5757d2ed75bd7262c53c
win64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/xtensa-esp-elf-gdb-17.1_20260402-x86_64-w64-mingw32.zip SHA256: 7525ae46b39fc87568717d8f0cc3dfbcdb77b96435dd80acfce6918b0abc2b8a

### 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 | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-x86_64-linux-gnu.tar.gz SHA256: 35f3db841338cb4f9bc60d757bc3e87dfa50ff50607bcbc3867c5b1ac28dd342
linux-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-aarch64-linux-gnu.tar.gz SHA256: f185d924497750f254290a32c48163c08e3b2a29eb248d739d90990ebee17f44
linux-armel | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-arm-linux-gnueabi.tar.gz SHA256: 88c8d492345eb972e5f978defb3395643303a18cf1870ce8cd9b8621d244b36e
linux-armhf | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-arm-linux-gnueabihf.tar.gz SHA256: 739c145268a5b5d8eb90d56951cb7fae9dbb3a0c5eb22e20b837d295431f9635
linux-i686 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-i586-linux-gnu.tar.gz SHA256: 29efe15235157bee507d97787a03e569f073bfef254c75d9662ec7f6e5162066
macos | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-x86_64-apple-darwin24.5.tar.gz SHA256: 4845ec4968207e40c9f840f29007d8e0cd7d11eb613bb9e9078a41bb0ceb6d4d
macos-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-aarch64-apple-darwin24.5.tar.gz SHA256: f944bb6a07b03e5d74dd1f878ba05320ee7957d3a06bcc80cd0a9cf355e8ceea
win-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-aarch64-w64-mingw32.zip SHA256: dd1715255b8e6334de20599cd9c2bbb2d1c9c443acafe76e9f0f792466731902
win32 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-i686-w64-mingw32.zip SHA256: 77b04d797b699127c7d395c55eef0d09840255e7710a0bd51bcbae83ffec1f0c
win64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp-gdb-v17.1_20260402/riscv32-esp-elf-gdb-17.1_20260402-x86_64-w64-mingw32.zip SHA256: f9e56a0d17414a30f7c457f7804173ecfb078b90d94a7b9f6318dc9652575d3f

### 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 | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-x86_64-linux-gnu.tar.xz SHA256: 3d50f5cd5f173acfd524e07c1cd69bc99585731a415ca2e5bce879997fe602b8
linux-arm64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-aarch64-linux-gnu.tar.xz SHA256: c8a8255009803036ba3def98a97a7134ee5a8ac5db048425e126fcf07f27ce1c
linux-armel | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-arm-linux-gnueabi.tar.xz SHA256: 0ae215a8adb2823b370e31d20891747af42b86ce5042331df50829942d8cbbfe
linux-armhf | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-arm-linux-gnueabihf.tar.xz SHA256: 99c1b5d45e9d661457d7a98494e5ebb2ed2e01b4b4dd4861de750acaec15a7bc
linux-i686 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-i586-linux-gnu.tar.xz SHA256: 6d3c510ddf5f084734c1dd5671d87a7b13973d713f641596ec1351dcce8d3ff3
macos | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-x86_64-apple-darwin.tar.xz SHA256: 96da1fcf01e2ac89819d1e336ca9e27762c35ea120627b89de8fd482f42c54f8
macos-arm64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-aarch64-apple-darwin.tar.xz SHA256: 68d3fb1e75c6bb1b88c6a2c74977abd51efd09b560a99149bafdcf403cb21941
win32 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-i686-w64-mingw32.zip SHA256: 72403f48827f75495f7c0b1c2be9f643c8dac25af7722545fc3ba1f21e834389
win64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/xtensa-esp-elf-15.2.0_20251204-x86_64-w64-mingw32.zip SHA256: efa1e337b5f64239674bf755b767969cbba7f4e66fe7c6ab8d19b650f56012a9

### 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 | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-x86_64-linux-gnu.tar.xz SHA256: 6e62bf1973b57b5388aad281ce1463e953e70b3d8df74ef4668c70f31fbeda63
linux-arm64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-aarch64-linux-gnu.tar.xz SHA256: a25e5446ba3aa4bccfafa4328cec240c5b1ae7638978d868c26777c4ceca241b
linux-armhf | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-arm-linux-gnueabihf.tar.xz SHA256: dea30c6e3548aea856e047727054b8d9fe91dcf19dbb76ae426951a8bc7d960e
macos | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-x86_64-apple-darwin.tar.xz SHA256: 0096cbd1713b226bb403b19547003918943ec3294481d2a69c1596c9597f1ba5
macos-arm64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-aarch64-apple-darwin.tar.xz SHA256: b04a345c7b4125400e4de78734cece01147e0cc43b57aeef846ef3b8ff57ef7d
win64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clang-esp-21.1.3_20260408-x86_64-w64-mingw32.tar.xz SHA256: 415566ace6f47a9abc302b4ba79776d27668fd3f4e9c0d26861ec4f970323618

### esp-clang-libs

Standalone Clang shared libraries distribution

License: Apache-2.0

More info: https://github.com/espressif/llvm-project

Platform | Required | Download
--- | --- | ---
linux-amd64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-x86_64-linux-gnu.tar.xz SHA256: c75406f5f0a1fe9692cdf6e6628cbbdf3f25e5721bb58d5e5540ea756d1197f3
linux-arm64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-aarch64-linux-gnu.tar.xz SHA256: a3d89fcb12b59b7b96a20c05e32a4c7ffe3400f965c153310137ffa02e27ec38
linux-armhf | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-arm-linux-gnueabihf.tar.xz SHA256: 79995c0ce185aad89b3f96d097e6ca6c0273cccf47961c5e6c89d6cd494ea0d0
macos | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-x86_64-apple-darwin.tar.xz SHA256: 2e3c51ffa570f7f3ea562686b3fef1a1c07a541096ac291b9bb8bfbac7b82f9c
macos-arm64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-aarch64-apple-darwin.tar.xz SHA256: b524f0f36c6b8897b5dc2a85f66102cc44a2d1dcfdde15fa96796b7c1778b8d3
win64 | optional | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/libs-clang-esp-21.1.3_20260408-x86_64-w64-mingw32.tar.xz SHA256: 00cc2ba925b6d807d722635516a1c44ce3e82cb9f01a2ea9385f19e6cb88c7c5

### 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 | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-x86_64-linux-gnu.tar.xz SHA256: ace5aae6afe98f754947be043d40173e2e22ace57754b11a394b7238eefa01cf
linux-arm64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-aarch64-linux-gnu.tar.xz SHA256: 90cccb3ef035f016836dd7c292528b27333a716d42b9361a68005d178c0f70bf
linux-armel | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-arm-linux-gnueabi.tar.xz SHA256: 5603d18a0534ab5c2faca672ac890ad5b57727e55c6734adf6584aa73844f112
linux-armhf | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-arm-linux-gnueabihf.tar.xz SHA256: 61b2feebfe14c5f2a7966ccec0c1c7ed2e2840d260671730f376aa92323b1338
linux-i686 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-i586-linux-gnu.tar.xz SHA256: 8dc31a97c008bf80d0c0b20b5960c522d9552f77a79ffd60e3ae6b1329cd68ef
macos | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-x86_64-apple-darwin.tar.xz SHA256: 6d4709eadf4c66aecb51c0ff9c7b068eefa6ecec37aa7817f172c9f735318e73
macos-arm64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-aarch64-apple-darwin.tar.xz SHA256: 0869d1083532c631808543dd802885f02dbe1bb3bd640be0dee827e82ded768d
win32 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-i686-w64-mingw32.zip SHA256: a52d9c855f1771527d2a6b6a6012ddff3f17bb5c937830b163aa8418177c86da
win64 | required | https://github.com/espressif/crosstool-NG/releases/download/esp-15.2.0_20251204/riscv32-esp-elf-15.2.0_20251204-x86_64-w64-mingw32.zip SHA256: c61488aa15f49146aae918267110f775a52c3cef3844cbf261f475ef97523c3d

### 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 | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-linux-amd64.tar.gz SHA256: d13a808365b78465fa6591636dfbbb9604d9d15a397c3d9cd22626d54828ac2c
linux-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-linux-arm64.tar.gz SHA256: ecce0788ce1000e5c669c5adaf2fd5bf7f9bf96dcdbd3555d1d9ce4dcb311038
linux-armel | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-linux-armel.tar.gz SHA256: 7228b01277f7908d72eb659470f82e143c4c66b444538a464290d88ece16130e
linux-armhf | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-linux-armhf.tar.gz SHA256: 951b089c66561bc2190a8d57c316dfaef985a778728a7c30e1edcd29fe180016
linux-i686 | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-linux-i686.tar.gz SHA256: df323d40962313168f6feeb2d9471c6010ff23a7896f40244e62991517d9745b
macos | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-macos.tar.gz SHA256: b2aeba8eaafdf156e9e30be928dde1f133b00eaf33802d96827ec544ac7c864c
macos-arm64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-macos-arm64.tar.gz SHA256: e3a4dfea043e2bce8cd00b3a0b260a59249fa61ca5931bf02f18a3d43c18deb4
win32 | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-win32.zip SHA256: d33b64f49df27dcfa4a24d3af1a5ead77b020f85f33448994c31b98f88e66bb4
win64 | required | https://github.com/espressif/binutils-gdb/releases/download/esp32ulp-elf-2.38_20240113/esp32ulp-elf-2.38_20240113-win64.zip 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/v4.0.3/cmake-4.0.3-linux-x86_64.tar.gz SHA256: 585ae9e013107bc8e7c7c9ce872cbdcbdff569e675b07ef57aacfb88c886faac
linux-arm64 | optional | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-linux-aarch64.tar.gz SHA256: 391da1544ef50ac31300841caaf11db4de3976cdc4468643272e44b3f4644713
linux-armel | optional | https://dl.espressif.com/dl/cmake/cmake-4.0.3-Linux-armv7l.tar.gz SHA256: ee80bd9c5a310928eb89c9d28c6867a497c9b146e271ede8383e31426b930e15
linux-armhf | optional | https://dl.espressif.com/dl/cmake/cmake-4.0.3-Linux-armv7l.tar.gz SHA256: ee80bd9c5a310928eb89c9d28c6867a497c9b146e271ede8383e31426b930e15
macos | optional | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-macos-universal.tar.gz SHA256: 4e85de4daf1c3e82d7dc6b8ba5683972944b466343aeb9c327a742437bb3ce9a
macos-arm64 | optional | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-macos-universal.tar.gz SHA256: 4e85de4daf1c3e82d7dc6b8ba5683972944b466343aeb9c327a742437bb3ce9a
win-arm64 | required | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-windows-arm64.zip SHA256: 86ccd6485bbd4bb41a1a858db397be5bca5e0de96858bf8dbba7a64407bd6c00
win32 | required | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-windows-x86_64.zip SHA256: b59a31dfbfa376a4aaea9ff560ff2b29f78ee5f9fb15447fc71ae7bf9fea9379
win64 | required | https://github.com/Kitware/CMake/releases/download/v4.0.3/cmake-4.0.3-windows-x86_64.zip SHA256: b59a31dfbfa376a4aaea9ff560ff2b29f78ee5f9fb15447fc71ae7bf9fea9379

### openocd-esp32

OpenOCD for ESP32

License: GPL-2.0-only

More info: https://github.com/espressif/openocd-esp32

Platform | Required | Download
--- | --- | ---
linux-amd64 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-linux-amd64-0.12.0-esp32-20260703.tar.gz SHA256: 4b71d1b4d8e4025029466e780161262a04137348b68e965c15250dbeebef03ce
linux-arm64 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-linux-arm64-0.12.0-esp32-20260703.tar.gz SHA256: 3ce059a26a543e96b19bef15a29b850aadaff1d4e2dc291e8c1ab45e331a5f1c
linux-armel | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-linux-armel-0.12.0-esp32-20260703.tar.gz SHA256: deb167155c994cd60db93626caf92638614364c16bdc145957eec61950e0ad15
linux-armhf | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-linux-armhf-0.12.0-esp32-20260703.tar.gz SHA256: 0cf9b1209d81bf233d39c86b1bf8f0090905ee5f04797a92fbf8b695b5e97c6d
macos | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-macos-0.12.0-esp32-20260703.tar.gz SHA256: 489daa179ecde646ebf1d2288c96d398f1b8b620ac7487b7c57c3bc45cef0202
macos-arm64 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-macos-arm64-0.12.0-esp32-20260703.tar.gz SHA256: fe366c8b72fc287fbdf5d62a1178dd882c37dc4a5c29205f126a6c3125aa9f41
win-arm64 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-windows-arm64-0.12.0-esp32-20260703.zip SHA256: 20ff818eb708a4e4b8dbcab820394cceb3c9aeb0e0285b9048681e3ed9058f53
win32 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-win32-0.12.0-esp32-20260703.zip SHA256: b72e45d6629e9370b59b80998ae47c1aaaf954e6795e7bf515c972ec9fc3f026
win64 | required | https://github.com/espressif/openocd-esp32/releases/download/v0.12.0-esp32-20260703/openocd-esp32-win64-0.12.0-esp32-20260703.zip SHA256: a49147705e49be9cab4af473e58b5730d99a0220d10f0976a04bf725cd0aa960

### 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
linux-arm64 | optional | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-linux-aarch64.zip SHA256: 5c25c6570b0155e95fce5918cb95f1ad9870df5768653afe128db822301a05a1
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
win-arm64 | required | https://github.com/ninja-build/ninja/releases/download/v1.12.1/ninja-winarm64.zip SHA256: 79c96a50e0deafec212cfa85aa57c6b74003f52d9d1673ddcd1eab1c958c5900
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.12.1/ccache-4.12.1-windows-x86_64.zip SHA256: 98aea520d66905b8ba7a8e648a4cc0ca941d5e119d441f1e879a4a9045bf18f6

### 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 | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-xtensa-softmmu-esp_develop_9.2.2_20260417-x86_64-linux-gnu.tar.xz SHA256: 0eecb2a34a5586c0e59110f77b9343b7b336e82fdb0e1a30e1dc1bab8a547e35
linux-arm64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-xtensa-softmmu-esp_develop_9.2.2_20260417-aarch64-linux-gnu.tar.xz SHA256: 00de5985094c14e47d1b38464a006b8ed64fd0fa7a289c56da24f3a329f65339
macos | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-xtensa-softmmu-esp_develop_9.2.2_20260417-x86_64-apple-darwin.tar.xz SHA256: ae8170fe46bcdfa54a7c0d7afcdb7a066711991be680f72ff7bbc6c4ae3ad88f
macos-arm64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-xtensa-softmmu-esp_develop_9.2.2_20260417-aarch64-apple-darwin.tar.xz SHA256: bb8c15810565d3df1665dc34962430885e11bc95575b228fb44698146be1e9d6
win64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-xtensa-softmmu-esp_develop_9.2.2_20260417-x86_64-w64-mingw32.tar.xz SHA256: 3c483d77f5350a568df1faf4d8dbc82c95d6bc2b826d0d4be910485e0a68ca2a

### 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 | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-riscv32-softmmu-esp_develop_9.2.2_20260417-x86_64-linux-gnu.tar.xz SHA256: 547f03e04701a92cbb699f7f7d015adc1f5b5ef93cbb94c0dd9b7107e2d84e77
linux-arm64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-riscv32-softmmu-esp_develop_9.2.2_20260417-aarch64-linux-gnu.tar.xz SHA256: a9f7b98636008edcf7a11c96f10b3a3ec83c2a890fc54c3e3ceb3ec9edace427
macos | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-riscv32-softmmu-esp_develop_9.2.2_20260417-x86_64-apple-darwin.tar.xz SHA256: a47c38c6e2eb9f5028eda9585dce999ce02b8983a2cdf71c48cfb10a14ae25fe
macos-arm64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-riscv32-softmmu-esp_develop_9.2.2_20260417-aarch64-apple-darwin.tar.xz SHA256: 67bff66ff7158f272ce167fc211c0f8f4c1a79b6f6174350678a6d5035644b30
win64 | optional | https://github.com/espressif/qemu/releases/download/esp-develop-9.2.2-20260417/qemu-riscv32-softmmu-esp_develop_9.2.2_20260417-x86_64-w64-mingw32.tar.xz SHA256: 697aa4800a1f52be0b1693b30e22a684f7ea93c46c489e619384cae7b0e9b87b

### esp-clangd

Clangd for all Espressif chips

License: Apache-2.0

More info: https://github.com/espressif/llvm-project

Platform | Required | Download
--- | --- | ---
linux-amd64 | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-x86_64-linux-gnu.tar.xz SHA256: 7133e67db271ca96b30ec9f5c34c903eaf5fe10120cfe44f85eb88db7ddbe230
linux-arm64 | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-aarch64-linux-gnu.tar.xz SHA256: 468e6fa03def6bcf0c0469d25b8d8b86212e5a94716d0b3db149f21b77791c54
linux-armhf | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-arm-linux-gnueabihf.tar.xz SHA256: 401a3b08011de2a52af6ed729ddf49f970072047886423b148a3cae980e1ef2d
macos | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-x86_64-apple-darwin.tar.xz SHA256: cb8ac31ea7f8e20da69cea9e1720500571c8f2bae335eb1721b676f7ef3950fe
macos-arm64 | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-aarch64-apple-darwin.tar.xz SHA256: 6dccab9acc9766c90383e9b2585fa1cfabad6125bdc32987a86a02cea598970d
win64 | required | https://github.com/espressif/llvm-project/releases/download/esp-21.1.3_20260408/clangd-esp-21.1.3_20260408-x86_64-w64-mingw32.tar.xz SHA256: 1a91c04bb570e0740eede529b20c98c2dd0be6750eb7d91a7226e19f3d88d490

Was this page helpful?

- Thank you! We received your feedback.
- If you have any comments, fill in Espressif Documentation Feedback Form.

- We value your feedback.
- Let us know how we can improve this page by filling in Espressif Documentation Feedback Form.