Ref.: docs.espressif.com > Get Started > Installation of ESP-IDF and Tools on macOS. (23/08/2026)
brew install libgcrypt glib pixman sdl2 libslirp dfu-util cmake pythonSaída exemplo (macOS Intel Sequoia 15.7.7):
(Obs.: python não foi instalado usando brew, uma vez que uso conda)
(base) fernandopassold:~/ $ brew install libgcrypt glib pixman sdl2 libslirp dfu-util cmake==> Downloading Homebrew API data✔︎ JSON API packages.sequoia.jws.json Downloaded 15.8MB/ 15.8MBWarning: glib 2.88.3 is already installed and up-to-date.To reinstall 2.88.3, run: brew reinstall glibWarning: pixman 0.46.4 is already installed and up-to-date.To reinstall 0.46.4, run: brew reinstall pixmanWarning: sdl2-compat 2.32.70 is already installed and up-to-date.To reinstall 2.32.70, run: brew reinstall sdl2-compatWarning: cmake 4.4.2 is already installed and up-to-date.To reinstall 4.4.2, run: brew reinstall cmake==> Downloading bottle manifests✔︎ Bottle Manifest libgcrypt (1.12.2) Downloaded 10.6KB/ 10.6KB✔︎ Bottle Manifest libslirp (4.9.3) Downloaded 17.0KB/ 17.0KB✔︎ Bottle Manifest dfu-util (0.11) Downloaded 19.2KB/ 19.2KB==> Would install 3 formulae:libgcrypt libslirp dfu-util==> Would install 1 dependency for libgcrypt:libgpg-error==> Would install 1 dependency for dfu-util:libusb==> Do you want to proceed with the installation? [y/n] y==> Fetching downloads for: libgcrypt, libslirp and dfu-util✔︎ Bottle Manifest libgpg-error (1.61) Downloaded 9.5KB/ 9.5KB✔︎ Bottle Manifest libusb (1.0.30) Downloaded 15.0KB/ 15.0KB✔︎ Bottle dfu-util (0.11) Downloaded 53.3KB/ 53.3KB✔︎ Bottle libslirp (4.9.3) Downloaded 146.7KB/146.7KB✔︎ Bottle libgpg-error (1.61) Downloaded 582.0KB/582.0KB✔︎ Bottle libusb (1.0.30) Downloaded 188.3KB/188.3KB✔︎ Bottle libgcrypt (1.12.2) Downloaded 1.5MB/ 1.5MB==> Installing libgcrypt dependency: libgpg-error==> Pouring libgpg-error--1.61.sonoma.bottle.tar.gz🍺 /usr/local/Cellar/libgpg-error/1.61: 50 files, 1.8MB==> Installing libgcrypt==> Pouring libgcrypt--1.12.2.sonoma.bottle.tar.gz🍺 /usr/local/Cellar/libgcrypt/1.12.2: 24 files, 4.0MB==> Running `brew cleanup libgcrypt`...Disable this behaviour by setting `HOMEBREW_NO_INSTALL_CLEANUP=1`.Hide these hints with `HOMEBREW_NO_ENV_HINTS=1` (see `man brew`).==> Pouring libslirp--4.9.3.sonoma.bottle.tar.gz🍺 /usr/local/Cellar/libslirp/4.9.3: 13 files, 354.0KB==> Running `brew cleanup libslirp`...==> Installing dfu-util dependency: libusb==> Pouring libusb--1.0.30.sonoma.bottle.tar.gz🍺 /usr/local/Cellar/libusb/1.0.30: 23 files, 573.8KB==> Installing dfu-util==> Pouring dfu-util--0.11.sonoma.bottle.tar.gz🍺 /usr/local/Cellar/dfu-util/0.11: 13 files, 236.2KB==> Running `brew cleanup dfu-util`...(base) fernandopassold:~/ $ ESP-IDF excite Python 3.10+, verificando:
(base) fernandopassold:~/ $ python --version Python 3.13.5(base) fernandopassold:~/ $ python3 --versionPython 3.13.5(base) fernandopassold:~/ $ which python/opt/miniconda3/bin/python(base) fernandopassold:~/ $ Ok.
Foi preferido o método usando Homebrew pois isto facilita atualizações.
brew tap espressif/eimSaída gerada:
(base) fernandopassold:~/ $ brew tap espressif/eim [17:51:30]==> Tapping espressif/eimCloning into '/usr/local/Homebrew/Library/Taps/espressif/homebrew-eim'...Tapped 1 cask and 1 formula (16 files, 74.0KB). [17:51:47](base) fernandopassold:~/ $Então se instala a interface gráfica (GUI) do EIM e/ou sua linha de comandos (CLI).
Foi preferido instalar a GUI:
brew install --cask eim-guiSaída gerada:
(base) fernandopassold:~/ $ brew install --cask eim-gui==> Downloading Homebrew API data✔︎ JSON API packages.sequoia.jws.json Downloaded 15.8MB/ 15.8MBError: Refusing to load cask espressif/eim/eim-gui from untrusted tap espressif/eim.Run `brew trust --cask espressif/eim/eim-gui` or `brew trust espressif/eim` to trust it.(base) fernandopassold:~/ $Problemas...
(base) fernandopassold:~/ $ brew trust espressif/eim [17:54:45]Trusted tap: espressif/eim(base) fernandopassold:~/ $ brew install --cask eim-gui [17:56:54]==> Would install 1 cask:espressif/eim/eim-gui==> Fetching downloads for: espressif/eim/eim-gui✔︎ Cask eim-gui (0.18.0) Downloaded 13.8MB/ 13.8MB==> CaveatsESP-IDF Installation Manager (EIM) has been installed.
The `eim` command is now also available in your terminal.
IMPORTANT: ESP-IDF requires Python 3.9, 3.10, 3.11, 3.12, 3.13 or 3.14.
If you don't have a compatible Python version, install one with: brew install python
For QEMU emulation support, you may also need: brew install libgcrypt glib pixman sdl2 libslirp dfu-util
==> Installing Cask eim-gui==> Moving App 'eim.app' to '/Applications/eim.app'==> Linking Binary 'eim' to '/usr/local/bin/eim'🍺 eim-gui was successfully installed!(base) fernandopassold:~/ $ [17:57:36]Ok.
Foi preferida a instalação online da GUI, recomendada para a maioria dos usuários. Instala a ESP-IDF e ferramentas via interface gráfica mas exige acesso à internet.
É só rodar o App EIM:

Selecionado: New Instalation > Start Installation.
Selecionado: Easy Installation.
Surge janela com Ready to Install ESP-IDF version: v6.1-beta1 (2.29 GB) !
Preferi selecionar uma versão stable, optando pela: V6.0.2 (2.18 GB), 10-45 minutos ETD em /Users/fernandopassold/.espressif.
Pressionar Start Installation e aguarde. Aparece "Downloading offline package". O processo eim ocupa apenas 1 core da CPU. Depois de uns 8 minutos fazendo download apareceu "Extracting archive: archive_v6.0.2_macos-x64.zst" e Starting offline installation...., Extracting: riscv32 esp elf, tempo estimado: 1m 45s.
Esperando até surgir "Installation Complete!" Com a opção:
Keep the downloaded package?
Keeping it lets you reinstall or repair offline later without downloading again.
/Users/fernandopassold/Library/Application Support/eim/offline_archives/archive_v6.0.2_macos-x64.zst
Optato por "Keep".
Surge: Next Steps:
~/.espressif/tools/ foldersource ~/.espressif/tools/activate_idf_v6.0.2.sh to activate the IDF environmentidf.py build to build your projectSurge opção "Show Dashboard" que confirma a instalação da versão v6.0.2 em /Users/fernandopassold/.espressif/v6.0.2/esp-idf.
E aparece opção para "Install New Version" (não selecionada).
App encerrado.
Efetivamente:
xxxxxxxxxx(base) fernandopassold:~/ $ ls -al ~/Library/Application\ Support/eim/offline_archivestotal 4587544drwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:14 .drwxr-xr-x 5 fernandopassold staff 160 Aug 23 18:14 ..-rw-r--r-- 1 fernandopassold staff 2343252546 Aug 23 18:21 archive_v6.0.2_macos-x64.zst(base) fernandopassold:~/ $ du -sh ~/Library/Application\ Support/eim/offline_archives2.2G /Users/fernandopassold/Library/Application Support/eim/offline_archives(base) fernandopassold:~/ $e:
xxxxxxxxxx(base) fernandopassold:~/ $ ls -al ~/.espressif/tools [19:12:43]total 112drwxr-xr-x 19 fernandopassold staff 608 Aug 23 18:32 .drwxr-xr-x 5 fernandopassold staff 160 Aug 23 18:23 ..-rwxr-xr-x 1 fernandopassold staff 12525 Aug 23 18:32 activate_idf_v6.0.2.fish-rwxr-xr-x 1 fernandopassold staff 13273 Aug 23 18:32 activate_idf_v6.0.2.sh-rwxr-xr-x 1 fernandopassold staff 5487 Aug 23 18:32 deactivate_idf_v6.0.2.fish-rwxr-xr-x 1 fernandopassold staff 7176 Aug 23 18:32 deactivate_idf_v6.0.2.sh-rw-r--r-- 1 fernandopassold staff 1475 Aug 23 18:32 eim_idf.jsondrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 esp-clangdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 esp-clang-libsdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 esp-rom-elfsdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:26 esp32ulp-elf-rw-r--r-- 1 fernandopassold staff 2385 Aug 10 10:49 espidf.constraints.v6.0.txtdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 ninjadrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 openocd-esp32drwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:30 pythondrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:23 riscv32-esp-elfdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 riscv32-esp-elf-gdbdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:27 xtensa-esp-elfdrwxr-xr-x 3 fernandopassold staff 96 Aug 23 18:28 xtensa-esp-elf-gdb(base) fernandopassold:~/ $Mais info:
xxxxxxxxxx(base) fernandopassold:~/ $ du -sh ~/.espressif/v6.0.2 # espaço ocupado pela pasta644M /Users/fernandopassold/.espressif/v6.0.2(base) fernandopassold:~/ $
Fernando Passold, em 23/08/2026.