About this project

ESP-IDF (Espressif IoT Development Framework) is the official development framework for Espressif SoCs, supported on Windows, Linux and macOS. It targets Espressif chips; SoCs released before 2016 (ESP8266 and ESP8285) are instead supported by the separate RTOS SDK. The repository documents release support schedules, end-of-life advisories, and compatibility between ESP-IDF releases and chip revisions. Each SoC series and each ESP-IDF release has its own documentation, and the README points to the Versions section of the online docs for finding documentation and checking out a specific release. Getting started involves installing host build dependencies, running an install script (install.bat or install.ps1 on Windows; install.sh or install.fish on Unix shells), and then exporting the environment in each shell (export.bat on Windows, source export.sh on Unix) before using ESP-IDF. A template project (esp-idf-template) and a set of example projects in the examples directory are provided; to start a new project from an example, the example directory is copied outside the ESP-IDF tree. The primary workflow uses the idf.py command-line tool. `idf.py set-target <chip_name>` selects the target chip, and `idf.py menuconfig` opens a text-based configuration menu. `idf.py build` compiles the application and bootloader and generates a partition table from the configuration. Flashing is done with `idf.py -p PORT flash`, which writes app, bootloader and partition table to a new chip and automatically rebuilds anything that needs it; if the port option is omitted, it tries the first available serial port. Serial output is viewed with `idf.py monitor`, which uses the esp-idf-monitor tool and can decode crash output and interact with the device; it is exited with Ctrl-]. `idf.py flash monitor` combines build, flash and monitor in one pass. For iterative work, `idf.py app` builds only the app and `idf.py app-flash` flashes only the app, rebuilding automatically when sources change. `idf.py erase-flash` erases the entire flash, useful for partition table changes or OTA updates, and can be combined with other targets. For non-GitHub forks, the README notes that submodule URLs are relative and link to GitHub; the script tools/set-submodules-to-github.sh sets absolute URLs so `git submodule update --init --recursive` can complete. This step is unnecessary when cloning from GitHub. Resources include the online documentation built from the docs directory, a beginner's guide video, the esp32.com forum for questions and community resources, the GitHub Issues section for bugs and feature requests, and a contributions guide.