README.md

July 1, 2026 · View on GitHub

Documentation Status

Try it with ESP Launchpad

Espressif IoT Solution Overview

ESP-IoT-Solution contains device drivers and code frameworks for the development of IoT systems, providing extra components that enhance the capabilities of ESP-IDF and greatly simplify the development process.

ESP-IoT-Solution contains the following contents:

  • Device drivers for sensors, display, audio, input, actuators, etc.
  • Framework and documentation for Low power, security, storage, etc.
  • Guide for espressif open source solutions from practical application point.

Documentation Center

Quick Reference

Development Board

You can choose any of the ESP series development boards to use ESP-IoT-Solution or choose one of the boards supported in boards component for a quick start.

Powered by 40nm technology, ESP series SoC provides a robust, highly integrated platform, which helps meet the continuous demands for efficient power usage, compact design, security, high performance, and reliability.

Setup Environment

Setup ESP-IDF Environment

ESP-IoT-Solution is developed based on ESP-IDF functions and tools, so ESP-IDF development environment must be set up first, you can refer Setting up Development Environment for the detailed steps.

Please note that different versions of ESP-IoT-Solution may depend on different versions of ESP-IDF, please refer to the below table to select the correct version:

ESP-IoT-SolutionDependent ESP-IDFMajor ChangeUser GuideSupport State
master>= v5.3New Chips SupportDocs onlineNew features
release/v2.0<= v5.3, >= v4.4Support component managerDocs onlineBugfix only,until v5.3 EOL
release/v1.1v4.0.1IDF version update, remove no longer supported codev1.1 Overviewarchived
release/v1.0v3.2.2legacy versionv1.0 Overviewarchived

Note

The recommended ESP-IDF version varies for different chips. For details, please refer to Compatibility Between ESP-IDF Releases and Revisions of Espressif SoCs.

Since the master branch uses the ESP Component Manager to manager components, each of them is a separate package, and each package may support a different version of the ESP-IDF, which will be declared in the component's idf_component.yml file

Get Components from ESP Component Registry

If you just want to use the components in ESP-IoT-Solution, we recommend you use it from the ESP Component Registry.

The registered components in ESP-IoT-Solution are listed below:

ComponentVersion
adc_battery_estimationComponent Registry
adc_micComponent Registry
adc_tp_calibrationComponent Registry
aht20Component Registry
apds9960Component Registry
as5600Component Registry
at24c02Component Registry
at581xComponent Registry
avi_playerComponent Registry
ble_anpComponent Registry
ble_conn_mgrComponent Registry
ble_hciComponent Registry
ble_hrpComponent Registry
ble_htpComponent Registry
ble_midiComponent Registry
ble_otaComponent Registry
ble_ota_rawComponent Registry
ble_otpComponent Registry
ble_servicesComponent Registry
bme280Component Registry
bme690Component Registry
bootloader_support_plusComponent Registry
bq27220Component Registry
bthomeComponent Registry
buttonComponent Registry
cmake_utilitiesComponent Registry
daliComponent Registry
drv10987Component Registry
elf_loaderComponent Registry
esp_lcd_axs15231bComponent Registry
esp_lcd_co5300Component Registry
esp_lcd_ek79007Component Registry
esp_lcd_er88577Component Registry
esp_lcd_gc9107Component Registry
esp_lcd_gc9b71Component Registry
esp_lcd_gc9d01Component Registry
esp_lcd_hx8399Component Registry
esp_lcd_jd9165Component Registry
esp_lcd_jd9365Component Registry
esp_lcd_nv3022bComponent Registry
esp_lcd_nv3052Component Registry
esp_lcd_panel_io_additionsComponent Registry
esp_lcd_sh8601Component Registry
esp_lcd_spd2010Component Registry
esp_lcd_st7121Component Registry
esp_lcd_st7123Component Registry
esp_lcd_st7701Component Registry
esp_lcd_st7703Component Registry
esp_lcd_st77903_qspiComponent Registry
esp_lcd_st77903_rgbComponent Registry
esp_lcd_st77916Component Registry
esp_lcd_st77922Component Registry
esp_lcd_touch_ili2118Component Registry
esp_lcd_touch_spd2010Component Registry
esp_lcd_touch_st7123Component Registry
esp_lcd_usb_displayComponent Registry
esp_lv_decoderComponent Registry
esp_lv_eaf_playerComponent Registry
esp_lv_fsComponent Registry
esp_lv_lottie_playerComponent Registry
esp_lvgl_adapterComponent Registry
esp_mmap_assetsComponent Registry
esp_msc_otaComponent Registry
esp_painterComponent Registry
esp_sensorless_bldc_controlComponent Registry
esp_simplefocComponent Registry
esp_tinyuf2Component Registry
esp_weaverComponent Registry
esp_xiaozhiComponent Registry
extended_vfsComponent Registry
gprofComponent Registry
hdc2010Component Registry
i2c_busComponent Registry
ina236Component Registry
iot_ethComponent Registry
iot_usbhComponent Registry
iot_usbh_cdcComponent Registry
iot_usbh_ecmComponent Registry
iot_usbh_modemComponent Registry
iot_usbh_rndisComponent Registry
ir_learnComponent Registry
keyboard_buttonComponent Registry
knobComponent Registry
led_indicatorComponent Registry
lightbulb_driverComponent Registry
lis2dh12Component Registry
log_routerComponent Registry
max17048Component Registry
mcp-c-sdkComponent Registry
mcp23017Component Registry
mcp3201Component Registry
modem_atComponent Registry
mvh3004dComponent Registry
ntc_driverComponent Registry
openaiComponent Registry
power_measureComponent Registry
pwm_audioComponent Registry
quickjs-ngComponent Registry
ramfsComponent Registry
sensor_hubComponent Registry
servoComponent Registry
sht3xComponent Registry
spi_busComponent Registry
touch_buttonComponent Registry
touch_button_sensorComponent Registry
touch_ic_bs8112a3Component Registry
touch_proximity_sensorComponent Registry
touch_slider_sensorComponent Registry
usb_device_uacComponent Registry
usb_device_uvcComponent Registry
usb_streamComponent Registry
veml6040Component Registry
veml6075Component Registry
xzComponent Registry
zero_detectionComponent Registry

You can directly add the components from the Component Registry to your project by using the idf.py add-dependency command under your project's root directory. eg run idf.py add-dependency "espressif/usb_stream" to add the usb_stream, the component will be downloaded automatically during the CMake step.

Please refer to IDF Component Manager for details.

Get ESP-IoT-Solution Repository

If you want to Contribute to the components in ESP-IoT-Solution or want to start from the examples in ESP-IoT-Solution, you can get the ESP-IoT-Solution repository by following the steps:

  • If select the master version, open the terminal, and run the following command:

    git clone --recursive https://github.com/espressif/esp-iot-solution
    
  • If select the release/v2.0 version, open the terminal, and run the following command:

    git clone -b release/v2.0 --recursive https://github.com/espressif/esp-iot-solution
    

Build and Flash Examples

We highly recommend you Build Your First Project to get familiar with ESP-IDF and make sure the environment is set up correctly.

There is no difference between building and flashing the examples in ESP-IoT-Solution and in ESP-IDF. In most cases, you can build and flash the examples in ESP-IoT-Solution by following the steps:

  1. Change the current directory to the example directory, eg cd examples/usb/host/usb_audio_player.
  2. Run idf.py set-target TARGET to set the target chip. eg idf.py set-target esp32s3 to set the target chip to ESP32-S3.
  3. Run idf.py build to build the example.
  4. Run idf.py -p PORT flash monitor to flash the example, and view the serial output. eg idf.py -p /dev/ttyUSB0 flash monitor to flash the example and view the serial output on /dev/ttyUSB0.

Some examples may need extra steps to setup the ESP-IoT-Solution environment, you can run export IOT_SOLUTION_PATH=~/esp/esp-iot-solution in Linux/MacOS or set IOT_SOLUTION_PATH=C:\esp\esp-iot-solution in Windows to setup the environment.

Resources