github espressif/esp-idf v6.0-beta2
ESP-IDF Pre-release v6.0-beta2

pre-release5 hours ago

Documentation for IDF v6.0-beta2 is available at https://docs.espressif.com/projects/esp-idf/en/v6.0-beta2/

ESP-IDF v6.0-beta2 is a major update for ESP-IDF v5.x. Release v6.0 is mostly compatible with apps written for ESP-IDF v5.x, but there are some breaking changes (please consult the list below) and removal of deprecated functionality which will require code changes when updating projects. Release v5.5.2 is the latest stable release at the time of writing.

We highly recommend referring to our migration guide while moving your apps from ESP-IDF v5.x to v6.0 release.

Obtaining v6.0-beta2

For full installation instructions, see the ESP-IDF Programming Guide.

The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:

Using git

To get this release, use the following commands:

git clone -b v6.0-beta2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v6.0-beta2
cd esp-idf-v6.0-beta2/

This is the recommended way of obtaining v6.0-beta2 of ESP-IDF.

Download an archive with submodules included

Attached to this release is an esp-idf-v6.0-beta2.zip archive. It includes .git directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub. To reduce the size of the archive, the .git directory doesn't include the history of commits older than one year. Users who need to use git checkout to access an older release of IDF will have to use git fetch first to download the remaining part of the history.

This archive can also be downloaded from Espressif's download server: https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v6.0-beta2/esp-idf-v6.0-beta2.zip

Major changes

Major New Features

  • Upgraded default C standard to gnu23 (03855b9)
  • Upgraded default C++ standard to gnu++26 (03855b9)
  • Supported loading idf.py extensions from the project's component directories and from installed Python packages (https://developer.espressif.com/blog/2025/10/idf_py_extension/) (34f658a)
  • ESP-IDF v6.0 is upgrading to MbedTLS v4.x and the new PSA Crypto API. This work is still in progress, so upcoming beta(s) or RC releases may include further updates or breaking changes to crypto APIs.
  • Supported ESP32-P4 Version3 silicon

Breaking Changes

  • Legacy drivers of ADC, DAC, I2S, Timer Group, PCNT, MCPWM, RMT, Temperature Sensor peripherals were removed
  • Application Utilities: The wifi_provisioning component is moved out of ESP-IDF and renamed to network_provisioning into external component https://github.com/espressif/idf-extra-components/tree/master/network_provisioning. The provisioning example and python provisioning tool are also moved to the new component directory. (105a64a)
  • Application Utilities/CJSON: Moved cJSON from ESP-IDF to managed components (https://github.com/espressif/idf-extra-components/tree/master/cjson) (269acda)
  • Application Utilities/ESP HTTP Client: Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For esp_http_client, the flash impact increases about 37KB (~5.76%). (7da79a6)
  • Application Utilities/ESP HTTP Server: Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For http_server/simple, the flash impact increases about 41KB (~4.97%). (7da79a6)
  • Application Utilities/ESP HTTPS OTA: Moved partial-download feature under a newly added config to reduce default flash footprint (b72e532)
  • Application Utilities/ESP HTTPS Server: Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For https_server, the flash impact increases about 27KB (~3.08%). (7da79a6)
  • Application Utilities/Provisioning: Disabled protocomm security version 0 and 1 by default. If required then security 0/1 configs should be explicitly enabled. (f0cc452)
  • Application Utilities/Provisioning: Fixed wifi_prov_mgr_deinit api return type and handled error case in wifi_prov_mgr example (b9c2242)
  • BLE/BluFi: BLUFI protocol version has been updated (BTC_BLUFI_SUB_VER 0x03 → 0x04) and BLUFI security negotiation/crypto is updated. Existing BLUFI client/mobile apps may not interoperate with ESP-IDF v6.0 devices. (7da79a6)
  • Bootloader: Renamed linker file 'bootloader.ld' to 'bootloader.ld.in'. Custom bootloader build scripts update might be required. (0367cfe)
  • Bootloader: Removed option for compiling bootloader with no optimization level (-O0, CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE). For debugging purposes, it is recommended to use the -Og (CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG) optimization level instead. (dea8433)
  • Build & Config: Changed default libc from Newlib to Picolibc. This may introduce breaking changes in rare cases. Refer to the v6.0 Migration Guide ("System" chapter) for details. (effa1e4)
  • Build & Config: Default warnings are now considered as errors by default. This can be disabled by setting CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS = y (6efd36f)
  • Build & Config: Removed inclusion of <dirent.h> when <sys/dirent.h> is included. Include <dirent.h> for function declarations (0a7ace3)
  • Build & Config: Upgraded default C standard to gnu23. Code changes may be required to fix new warnings. (03855b9)
  • Build & Config: Upgraded default C++ standard to gnu++26. Code changes may be required to fix new warnings. (03855b9)
  • Build & Config: Changed the execution order of non-priority C++ constructors and functions marked with attribute((constructor)) from descending to ascending (44aeff1)
  • Build & Config The binary generation target gen_signed_project_binary is no longer available as the build system drops the need for this target. (c8f68c7)
  • Build & Config: The binary generation gen_project_binary is now created during the __idf_build_binary() function invocation by the build system. Components, declaring dependency on this target could have build errors. For post-elf processing, the new idf_build_add_post_elf_dependenciy() must be used. (c8f68c7)
  • Build & Config: Global Cmake variables presented by the esptool_py viz., ESPTOOLPY, ESPSECUREPY, ESPEFUSEPY and ESPMONITOR are no longer available. These must be accessed via the idf_component_get_property() function. (c8f68c7)
  • Build & Config: The internal target variable, ${elf} is removed. Custom targets that need to add dependencies on the project elf must fetch the executable by querying the EXECUTABLE build property like idf_build_get_property(elf EXECUTABLE). (c8f68c7)
  • Build & Config: Components adding target dependencies on the encrypted-flash target unconditionally is not allowed any more. Such dependencies can only be done if CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT is enabled. (c8f68c7)
  • Build & Config: The build process may fail during linking if orphan sections are present. This can be resolved by removing custom section declarations or by explicitly placing orphan sections using linker fragment file. (a319aa9)
  • Classic Bluetooth/Bluedroid: Deprecate RSSI threshold related macros (7a2e19c)
  • Classic Bluetooth/Bluedroid: esp_bt_dev_get_device_name has been deprecated and now it is replaced with esp_bt_gap_get_device_name (7cac735)
  • Classic Bluetooth/Bluedroid: esp_bt_dev_set_device_name has been deprecated and now it is replaced with esp_bt_gap_set_device_name (7cac735)
  • Classic Bluetooth/Bluedroid: esp_hf_ag_devices_status_indchange has been deprecated and now it is replaced with esp_hf_ag_ciev_report (7cac735)
  • Classic Bluetooth/Bluedroid: esp_spp_init has been deprecated and now it is replaced with esp_spp_enhanced_init (7cac735)
  • Core System: Removed deprecated STATUS enum from ets_sys.h, use ETS_STATUS instead. (166269f)
  • Core System: The header esp_vfs_cdcacm.h has been moved to the new component esp_usb_cdc_rom_console, you will now have to add an explicit REQUIRES for esp_usb_cdc_rom_console if using any functions from this header. (1f0152d)
  • Core System: Ring buffer functions are now placed in flash memory by default to save IRAM space. CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH Kconfig option has been removed. (11b80a7)
  • Core System/ESP Event: Removed unnecessary freertos header includes, if your code relied on this implicit include from esp_event.h then please add the correct explicit includes, freertos/queue.h" and freertos/semphr.h to your files. (cb36cd3)
  • Core System/Heap: MALLOC_CAP_EXEC capability only defined when no memory protection is enabled (see #14837) (75305c2)
  • Core System/Interrupts: Removed deprecated intr_types.h header, update to use esp_intr_types.h instead (365c8a3)
  • Core System/Log: The following deprecated APIs have been removed: esp_log_buffer_hex(), esp_log_buffer_char(). (659ae57)
  • Core System/Log: The following deprecated headers have been removed: esp_log_internal.h. (659ae57)
  • Core System/Newlib: COMPILER_ASSERT_NDEBUG_EVALUATE default value changed to 'n'. Default behavior is now to not evaluate expressions inside assert(X) when NDEBUG is set, which confirms to the C standard. (#2758) (33f92c8)
  • Debugging/Apptrace: Removed destination parameter from all apptrace APIs. (8ee473d)
  • Debugging/Apptrace: Changed the way apptrace is configured. Applications must implement esp_apptrace_get_init_params to provide app_trace parameters to the components (8ee473d)
  • Debugging/Apptrace: Changed SystemView trace data destination configuration. Now it is controlled by the same configuration as the apptrace destination. It will not have its own destination configuration. (8ee473d)
  • Debugging/Apptrace: Refactored apptrace UART related menuconfig options. CONFIG_APPTRACE_DEST_UARTx options are removed and CONFIG_APPTRACE_DEST_UART is added to keep the port number. (9f38fa1)
  • Debugging/Apptrace: Moved gcov component out of the IDF and is now available in the ESP Component Registry as esp-gcov (5ac81c1)
  • Debugging/Apptrace: Deprecated ESP_APPTRACE_DEST_TRAX. Now it is replaced with ESP_APPTRACE_DEST_JTAG (fb3e616)
  • Debugging/Apptrace: Changed esp_apptrace_down_buffer_config(). Now it requires esp_apptrace_dest_t dest as first parameter for API consistency. (fb3e616)
  • Debugging/Apptrace: Removed CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX configuration option. (a083766)
  • Debugging/Core Dump: Dropped CRC32 checksum support. Only SHA256 checksum is now used. (521f3e3)
  • Debugging/Core Dump: Dropped binary format support. Only ELF format is now supported. (521f3e3)
  • Debugging/Core Dump: Changed function esp_core_dump_partition_and_size_get(). Now it returns ESP_ERR_NOT_FOUND for blank partitions instead of ESP_ERR_INVALID_SIZE (#15153) (521f3e3)
  • Ethernet: Removed and migrated 3rd party Ethernet drivers outside of ESP-IDF. Add the related driver from component manager to use it. (61aaaf3)
  • Ethernet: Removed RMII CLK Kconfig option for esp_eth component, use config structure to set this parameter. (bc421db)
  • Ethernet: The esp_eth_phy_802_3_reset_hw API accepts only one parameter and resets the Ethernet PHY with internal timing configuration defined during initialization. (7a35466)
  • FreeRTOS: Removed support for the user defined vPortCleanUpTCB() and the associated Kconfig option CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP. (75619d8)
  • FreeRTOS: FreeRTOS functions are now placed in flash memory by default to save IRAM space. CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH Kconfig option has been removed. (11b80a7)
  • FreeRTOS: The compatibility function xQueueGenericReceive() has been removed. Use xQueueReceive(), xQueuePeek(), or xQueueSemaphoreTake() as per your usecase. (3ef4136)
  • FreeRTOS: The compatibility function vTaskDelayUntil() has been removed. Use the function xTaskDelayUntil() instead. (3ef4136)
  • FreeRTOS: The compatibility function ulTaskNotifyTake() has been removed. Use the macro ulTaskNotifyTake() instead. (3ef4136)
  • FreeRTOS: The compatibility function xTaskNotifyWait() has been removed. Use the macro xTaskNotifyWait() instead. (3ef4136)
  • FreeRTOS: The following deprecated APIs have been removed: xTaskGetAffinity(), xTaskGetIdleTaskHandleForCPU(), xTaskGetCurrentTaskHandleForCPU(). (46160b0)
  • LWIP: Deprecated header sntp.h for lwip/app port layer has been removed. Users should include esp_sntp.h. (406c7f3)
  • LWIP: Deprecated header ping.h and esp_ping.h for lwip/app port layer has been removed. Users should include ping_sock.h. (406c7f3)
  • LWIP/DHCP Server: The LWIP_DHCPS_ADD_DNS macro was removed. Applications must now enable DNS option in DHCP offers with esp_netif_dhcps_option() and configure DNS servers explicitly using esp_netif_set_dns_info(). (57013ba)
  • LWIP/ESP Netif Removes option to disable error return in esp netif receive function (3d5c2ef)
  • LWIP/ESP Netif: Deprecated API esp_netif_next() was removed. Users are suggested to iterate over interfaces using esp_netif_tcpip_exec(), or use esp_netif_find_if(). (ba0b61d)
  • MQTT: The esp-mqtt component was moved to component manager. Add espressif/mqtt to dependencies to use it. (98a9e14)
  • Peripheral Drivers: Remove FreeRTOS header dependency in peripheral public headers. (5c5d78b)
  • Peripheral Drivers: The periph_module_t enum type is refactored into shared_periph_module_t and only the modules that have multiple independent functions are kept. (f348a10)
  • Peripheral Drivers: Removed unnecessary dependencies for the driver component (22a0f9a)
  • Peripheral Drivers: The driver/periph_ctrl.h and driver/rtc_cntl.h header files are removed. Please use esp_private/periph_ctrl.h and esp_private/rtc_ctrl.h instead. (e3190c6)
  • Peripheral Drivers: The io_loop_back config option is removed for all drivers, different peripheral drivers can still share the same GPIO number without having it. (1fa420e)
  • Peripheral Drivers/ADC: Legacy ADC driver and legacy ADC calibration driver have been removed (807cbbf)
  • Peripheral Drivers/DAC: The legacy DAC driver is removed. (d445536)
  • Peripheral Drivers/DMA: The esp_dma_capable_malloc and esp_dma_capable_calloc functions are removed. The GDMA_ISR_IRAM_SAFE Kconfig option is removed. (3e09d4f)
  • Peripheral Drivers/GPIO: Add "rom_" prefix to all GPIO ROM functions in components/esp_rom/esp32xx/include/esp32xx/rom/gpio.h (7f0f043)
  • Peripheral Drivers/GPIO: Added the esp_err_t return type to gpio_uninstall_isr_service (#14114) (7f0f043)
  • Peripheral Drivers/GPIO: MAX_PAD_GPIO_NUM, MAX_GPIO_NUM, and DIG_IO_HOLD_BIT_SHIFT macros have been removed. (7f0f043)
  • Peripheral Drivers/GPIO: Removed gpio_iomux_in, gpio_iomux_out public APIs. Please use gpio_iomux_input, gpio_iomux_output in esp_private/gpio.h if neccessary. (2fb938c)
  • Peripheral Drivers/GPTimer: The legacy timer group driver is removed. (3b50481)
  • Peripheral Drivers/I2C: Legacy I2C driver (driver/i2c.h) is end-of-life and compile warning is added. (bb80291)
  • Peripheral Drivers/I2C: I2C slave version one driver is removed (456ae96)
  • Peripheral Drivers/I2C/I2C Master: I2C master transaction now will report ESP_ERR_INVALID_RESPONSE when NACK is detected. (6af87b6)
  • Peripheral Drivers/I2S: Removed 'i2s_port_t' type and use 'int' type instead. (726a430)
  • Peripheral Drivers/I2S: The legacy I2S driver is removed. (e71e755)
  • Peripheral Drivers/LCD: Unified color conversion API across RGB and DSI drivers (734e600)
  • Peripheral Drivers/LCD: Replaced bits_per_pixel with FourCC-based color format configuration (734e600)
  • Peripheral Drivers/LCD: The NT35510 LCD device driver has been moved out of ESP-IDF and is now hosted in the Component Registry. (4589f33)
  • Peripheral Drivers/LCD: Dropped the support of the legacy I2C master driver in the esp_lcd component (9cee386)
  • Peripheral Drivers/LCD: The GPIO number type in the LCD driver has been changed from int to the more type-safe gpio_num_t. (6ea0fa1)
  • Peripheral Drivers/LCD: The color_space and rgb_endian configuration options in the esp_lcd_panel_dev_config_t structure is replaced by the rgb_ele_order member, which sets the RGB element order. (6ea0fa1)
  • Peripheral Drivers/LCD/DSI_LCD: Replaced the original use_dma2d flag with a new hook function esp_lcd_dpi_panel_enable_dma2d(). If 2D-DMA is not used, your application binary size can be saved by around 10KB. (88716d0)
  • Peripheral Drivers/LEDC: Removed LEDC_USE_RTC8M_CLK macro (e94d9ce)
  • Peripheral Drivers/LEDC: Removed ledc_timer_set API, and LEDC_APB_CLK_HZ, LEDC_REF_CLK_HZ macros (3fdb473)
  • Peripheral Drivers/LEDC: esp_driver_gpio no longer is the public required component for esp_driver_ledc (3fdb473)
  • Peripheral Drivers/MCPWM: Removed variadic generator APIs mcpwm_generator_set_actions_on_xxx (4e62b0e)
  • Peripheral Drivers/MCPWM: The legacy MCPWM driver is removed. (0972e9d)
  • Peripheral Drivers/MCPWM: Changed the default MCPWM group clock prescaler to 1 so that we can achieve a higher resolution. (#14815) (904d952)
  • Peripheral Drivers/MCPWM: The io_od_mode member in the mcpwm_generator_config_t configuration structure has been removed. (1fa420e)
  • Peripheral Drivers/PCNT: The legacy PCNT driver is removed. (81bb6a0)
  • Peripheral Drivers/RMT: The legacy RMT driver is removed. (9dc9d7d)
  • Peripheral Drivers/RMT: The io_od_mode member in the rmt_tx_channel_config_t configuration structure has been removed. (1fa420e)
  • Peripheral Drivers/SDM: The legacy SDM driver is removed. (d6894a1)
  • Peripheral Drivers/SD_HOST/SDMMC: Changed public requirement to esp_driver_gpio to private requirement (dfe8ee5)
  • Peripheral Drivers/SD_HOST/SDMMC: Removed deprecated API esp_vfs_fat_sdmmc_unmount (a4c03ce)
  • Peripheral Drivers/SD_HOST/SDMMC: The get_dma_info member in the sdmmc_host_t structure, as well as the sdspi_host_get_dma_info and sdmmc_host_get_dma_info functions, are removed. (3e09d4f)
  • Peripheral Drivers/SPI: The SPI master and slave no longer accepts ESP_INTR_FLAG_SHARED as interrupt flag during initialization. (28999c8)
  • Peripheral Drivers/SPI: Removed deprecated HSPI and VSPI related IOMUX pin macros on ESP32 and ESP32S2 (a4c03ce)
  • Peripheral Drivers/SPI Flash: New argument flags is added to esp_flash_os_functions_t::start. Caller and implementer should handle this argument properly. (f409428)
  • Peripheral Drivers/SPI Flash: Remove SPI_FLASH_ROM_DRIVER_PATCH option as this is not needed any more (19fef9f)
  • Peripheral Drivers/SPI Flash: Removed deprecated enum esp_flash_speed_t (a4c03ce)
  • Peripheral Drivers/SPI Flash: Removed deprecated API spi_flash_reset_counters, spi_flash_dump_counters and spi_flash_get_counters (a4c03ce)
  • Peripheral Drivers/SPI Flash: Removed deprecated header file esp_spi_flash.h (a4c03ce)
  • Peripheral Drivers/TWAI Deprecate the legacy twai driver API (7471043)
  • Peripheral Drivers/Temperature Sensor: The legacy temperature sensor driver is removed. (f4a45a3)
  • Peripheral Drivers/Touch Element: The component 'touch_element' in 'esp-idf' is moved to managed component (see https://components.espressif.com/components/espressif/touch_element/versions/1.0.0/readme). (be099ca)
  • Peripheral Drivers/Touch Element: Touch Element Library is moved to managed component (https://components.espressif.com/components/espressif/touch_element/versions/1.0.0/readme). (be099ca)
  • Peripheral Drivers/Touch Sensor: The dependencies of legacy touch sensor driver are removed from ULP touch driver, now you need to use int instead of touch_pad_t to express the touch channel ID. (30d0ede)
  • Peripheral Drivers/Touch Sensor: Removed touch_sensor_sample_config_t::bypass_shield_output on ESP32-P4, it is not supported any more. (ac24f96)
  • Peripheral Drivers/Touch Sensor: Adjust touch channel number on P4 from 0-13 to 1-14. (c1666c8)
  • Peripheral Drivers/UART: Removed soc/uart_channel.h. All UART GPIO lookup equivalent macros can be found in soc/uart_pins.h (4fbcab8)
  • Peripheral Drivers/UART: The esp_rom_uart.h is deprecated and replaced by esp_rom_serial_output.h (ce92b0a)
  • Peripheral Drivers/USB: Removed deprecated pin mappings for external USB PHY (1bbf04c)
  • Peripheral Drivers/USB/USB Host: Removed usb component from esp-idf (4dc77d1)
  • Security: Updating to Mbed TLS 4.0 moves ESP-IDF toward PSA-first crypto. Applications relying on legacy Mbed TLS cryptography APIs (many mbedtls_* crypto primitives) may no longer compile or behave the same, because Mbed TLS 4.0 moves cryptography to TF-PSA-Crypto and mostly removes legacy crypto APIs. Migrate application crypto usage to PSA Crypto APIs where possible (and avoid relying on Mbed TLS internals/private headers). (7da79a6)
  • Security/ESP-TLS: [Security/MbedTLS] After updating to the PSA APIs, there is an additional ~800 bytes of stack usage increase for HTTPS connection. Ensure that the application allocates enough stack memory. (7da79a6)
  • Security/MbedTLS: With PSA-first behavior, psa_crypto_init() must be called before any cryptographic operation, including indirect ones like parsing keys/certs or starting a TLS handshake. ESP-IDF initializes PSA during system startup, but code that runs earlier than normal startup (very early init, custom startup flows, etc.) must call psa_crypto_init() explicitly. (7da79a6)
  • Security/MbedTLS: Code using APIs that previously accepted f_rng, p_rng will fail to compile. This includes (at least) X.509 write and cookie/ticket helper APIs. Users must update to new prototypes and rely on PSA RNG (7da79a6)
  • Security/MbedTLS: TLS/DTLS interoperability with peers requiring DHE key exchange or RSA key exchange (non-forward-secret) is removed in Mbed TLS 4.0. If a server only offers removed suites, ESP-IDF TLS clients will fail to connect (and vice-versa). Ensure servers/clients support modern suites (typically (EC)DHE and TLS 1.3 where available) and update configs accordingly. (7da79a6)
  • Security/MbedTLS: Certificates/peers using small curves (<250 bits; e.g., secp192r1/secp224r1) are no longer supported in certs/TLS. (7da79a6)
  • Security/MbedTLS: pk contexts initialised by esp_ecdsa_set_pk_context() must be freed by using esp_ecdsa_free_pk_context() (7da79a6)
  • Security/MbedTLS: The use_tee_sec_stg_key flag has been removed. ECDSA private key operations using ESP-TEE secure storage can now be performed by just specifying tee_key_id. (ee4be1a)
  • Security/MbedTLS: Starting from ESP-IDF v5.5, there is a change in how the SHA sub-function APIs, esp_sha_block() and esp_sha_dma(), are used. Previously, these APIs used to set the SHA mode internally, however, in the updated version, you must explicitly set the SHA mode before invoking them. For instance, if you intend to use the SHA-256 algorithm, you must first call esp_sha_set_mode() with the argument SHA2_256. (8d0527d)
  • Security/MbedTLS: Starting with ESP-IDF v6.0, all deprecated CA certificates have been removed from the mbedTLS certificate bundle. As a result, any firmware built with ESP-IDF v6.0 may fail to connect to endpoints that rely on these removed certificates. Thus, before upgrading deployed devices to firmware built with v6.0, thoroughly test all connectivity endpoints to ensure compatibility and avoid connection failures. (e05390f)
  • Security/NVS Encryption: If Flash encryption is enabled on SoCs with the HMAC peripheral (SOC_HMAC_SUPPORTED) and NVS encryption is also enabled, the HMAC-based scheme will be selected by default instead of the Flash encryption scheme. (649741f)
  • Storage/FATFS: Enable dynamically allocated buffers and long filename support by default (734c172)
  • Storage/FATFS: Functions esp_vfs_fat_sdmmc_mount and esp_vfs_fat_sdspi_mount now return ESP_ERR_INVALID_ARG if any of the arguments are missing. (9408386)
  • Storage/VFS: Make FS registration function used by LWIP private (4b919ca)
  • Storage/VFS: Deprecate old VFS API (4b919ca)
  • Storage/VFS: Disable TERMIOS support by default (0600407)
  • Storage/VFS: Removed deprecated UART and UART-JTAG-serial API from vfs component, these APIs can still be found in the respective driver components. (fb79d92)
  • System Hardware: Changed ESP32P4 REV3 as default option (45fa560)
  • System Hardware: For ESP32-C6, the option to use RC32K clock as the RTC slow clock source has been completely removed (RTC_CLK_SRC_USE_DANGEROUS_RC32K_ALLOWED, RTC_CLK_SRC_INT_RC32K) (e94d9ce)
  • System Hardware: Removed deprecated headers: {IDF_TARGET}/rtc.h and soc_memory_types.h. from esp_hw_support component. These headers are replaced by esp_rtc_time.h and esp_memory_utils.h respectively. (39d2225)
  • System Hardware/Memory Layout: Removed RTC_ related memory attributes on chips which do not support RTC memory (ba7d244)
  • System Hardware/PSRAM: Removed deprecated header file esp_spiram.h (a4c03ce)
  • Toolchain: Updated MacOS-x86_64 toolchain minimum OS version from 10.8 to 10.12 (released on September 20, 2016) (0223bfe)
  • Tools: Removed old copy of Catch2 (catch). Catch2 is still available as a ESP-IDF component at ESP component registry. (392226b)
  • Tools: Removed the legacy unit-test-app. It can still be found at the Component Registry (ab2829d)
  • Tools: The minimal supported CMake version was upgraded from 3.16 to 3.22 (c43d311)
  • Tools: Updated the minimal supported Python version to 3.10 (138336b)
  • Tools: Autodetection was removed from idf.py efuse* commands in order to prevent accidental use of the wrong port (adbec6e)
  • Tools: ESP-IDF no longer automates installation of gdbgui. idf.py gdbgui command can still be used, provided that the gdbgui tool is installed manually. (5799f55)
  • WI-FI: Removed enum values WIFI_BW20 and WIFI_BW_HT40 (3f57799)
  • WI-FI: esp_wifi_init returns ERROR if wifi already initialized(#13643) (34b0344)
  • WI-FI: The function esp_rrm_send_neighbor_rep_request has been removed. Use esp_rrm_send_neighbor_report_request instead. (bdd8d25)
  • WI-FI: The functions esp_wifi_set_ant_gpio, esp_wifi_get_ant_gpio, esp_wifi_set_ant, and esp_wifi_get_ant have been removed. Please use the equivalent functions from the esp_phy component: esp_phy_set_ant_gpio, esp_phy_get_ant_gpio, esp_phy_set_ant, and esp_phy_get_ant. (bdd8d25)
  • WI-FI: The authentication modes WIFI_AUTH_WPA3_EXT_PSK and WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE have been removed. Use WIFI_AUTH_WPA3_PSK instead. (bdd8d25)
  • WI-FI: In the wifi_event_neighbor_report_t structure, the report field has been removed. Please use the n_report field instead, which is a flexible array member. (bdd8d25)
  • WI-FI: The function esp_wifi_config_espnow_rate has been removed. Use esp_now_set_peer_rate_config instead. (bdd8d25)
  • WI-FI: The header file components/esp_wifi/include/esp_interface.h has been removed. The wifi_interface_t enum is now defined in components/esp_wifi/include/esp_wifi_types_generic.h. The enum values (e.g., WIFI_IF_STA, WIFI_IF_AP) are no longer defined based on ESP_IF_WIFI_STA, ESP_IF_WIFI_AP, etc. (bdd8d25)
  • WI-FI: Field svc_info from structures wifi_nan_publish_cfg_t, wifi_nan_subscribe_cfg_t, wifi_nan_followup_params_t, wifi_event_ndp_indication_t, wifi_event_ndp_confirm_t has been removed. Please use the equivalent fields ssi and ssi_len instead. (bdd8d25)
  • WI-FI: Field peer_svc_info from structure wifi_event_nan_receive_t has been removed. Please use the equivalent fields ssi and ssi_len instead. (bdd8d25)
  • WI-FI: The function argument ndp_resp_needed of esp_wifi_nan_publish_service has been moved to structure wifi_nan_publish_cfg_t. (bdd8d25)
  • WI-FI: Field use_get_report_api from structure wifi_ftm_initiator_cfg_t and field ftm_report_data from structure wifi_event_ftm_report_t has been removed. Please use esp_wifi_ftm_get_report to fetch raw FTM report data instead. (bdd8d25)
  • WI-FI: The function esp_wifi_wps_start no longer accepts a timeout_ms argument. It should now be called as esp_wifi_wps_start(void). (bdd8d25)
  • WI-FI: The DPP event callback esp_supp_dpp_event_cb_t and event enum esp_supp_dpp_event_t have been removed. Please use Wi-Fi events directly (e.g., WIFI_EVENT_DPP_URI_READY, WIFI_EVENT_DPP_CFG_RECVD, WIFI_EVENT_DPP_FAILED). The function esp_supp_dpp_init no longer accepts a callback and should be called as esp_supp_dpp_init(void). (bdd8d25)
  • WI-FI: Added second channel field in wifi_action_tx_req_t structure. (44a66c7)

Known Issues

  • BluFi: Due to a major update to mbedTLS, the BluFi functionality is impacted and is not available in this version. The issue will be fixed in the v6.0 final release.

Changelog

This is the list of changes since release v5.5.

15.4

  • Update the 'ieee802154_get_recent_rssi' API to obtain real-time RSSI from BB(baseband) (63fb646)

MAC

  • Replaced the TX pending feature with backoff-based retransmission mechanism. (2a4cf25)
  • Added compensation on the energy detection result for H2 (2bcd754)
  • Changed the default cca threshold to -75dBm (1b21b68)

Thread

  • Replaced iperf command from ot-cli-extension with iperf-cmd (bf216a4)
  • Updated openthread submodule (upstream rebased from a12ff0d0f) (c3b129c)
  • Fixed an issue with key destruction in mode 2 (c3b129c)
  • Fixed an issue where NVS was not opened from the configured partition (4ccd8f9)
  • Supported RCP debugging via Spinel logs (08920f0a)
  • Fixed an occasional multicast router initialization failure (bf9070c)
  • Fixed a deadlock issue in DNS resolver (bf9070c)
  • Supported OTA examples over Thread interface (22316a3)
  • Fixed a potential stack overflow issue in TREL browse (02fd823)
  • Supported multicast forwarding cache filter in Thread BR (1b21b68)
  • Supported DHCPv6 PD feature (1b21b68)
  • Updated openthread submodule (36b14d3ef) (1b21b68)
  • Supported custom netif config during initialization (d877831)
  • Added APIs to start or stop the OpenThread stack (29d8fbe)
  • Updated the OpenThread examples to use the new APIs (29d8fbe)
  • Updated OpenThread examples to use esp_console. The ot prefix is required when running OpenThread CLI commands. (29d8fbe)
  • Updated openthread submodule (3b3dd203) (2f4c63b)
  • Fixed an issue with source address selection during network switching (aca957c)
  • Use the ML-EID address for self-hosted services if OMR address is not preferred (e5d11d1)
  • Supported RCP over USB Serial JTAG interface (611176d)
  • Handled MeshCoP mDNS service in state change callback (c976203)
  • Updated openthread submodule (b945928) (c976203)
  • Improved TREL message reception (ba2b0fd)
  • Introduced a new API to register the console based openthread CLI command (5590a74)
  • Added a function to exit openthread main loop safely (1bb75b2)
  • Added Thread network setup instruction for sntp example (016e836)

Application Utilities

App Update

  • Fixed OTA failure when using partial download with AWS signed URL restricted to GET requests. Additionally, added a new API to get content-range from the HTTP response. (5aff8a9)
  • Revised logic to always update non-running otadata at the time of setting ota boot partition (#14688) (be89fa3)

CJSON

ESP HTTP Client

  • Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For esp_http_client, the flash impact increases about 37KB (~5.76%). (7da79a6)
  • Added fix to prevent out-of-bounds read in Digest auth causing a potential security vulnerability (7a33741)
  • Updated condition to dispatch FINISH event during HTTP response read (#17437) (e6f9459)
  • Clarified esp_http_client_set_post_field() usage: post data must be set to NULL to avoid reuse (#17053) (6f5ec4b)
  • Fixed handling of errors while reading data from server using API esp_http_client_perform(). (71d3492)
  • Added new HTTP state HTTP_STATE_CONNECTING and made states public (#16019) (056e4a4)
  • Updated condition to close and cleanup the HTTP client (#16070) (056e4a4)
  • Fixed issue during enabling digest auth in esp client (#17238) (4a69fcb)
  • Updated postman root certificate dependency to esp_crt_bundle for https_aysnc request from esp_http_client_example (5c15e41)
  • Fixed often triggering of HTTP_EVENT_ERROR when asynchronous client is set (#16075, #16075) (4e12ed0)
  • Fixed memory leak in HTTP client when header parsing fails during fetch operation. (c6cc403)
  • Added with new HTTP client event HTTP_EVENT_ON_STATUS_CODE. (bfc5e1b)
  • Fixed description for API esp_http_client_fetch_headers (#16204) (a1b9581)

ESP HTTP Server

  • Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For http_server/simple, the flash impact increases about 41KB (~4.97%). (7da79a6)
  • Fixed the response status in Captive portal example. (79f6849)
  • Fixed http(s) server request close order with LRU purge enabled. (#17470) (030ba7d)
  • Fixed memory leak issue for esp_http_server scratch buffer. (#17501) (b789445)
  • Added support for pre-handshake callback, which is executed before upgrading to WebSocket protocol. (a783974)
  • Upgraded the restful_server example to use Vue3 and Vuetify3. (1f82b34)
  • Fixed multiple WebSocket frame parsing errors. The issue arises due to httpd_recv_with_opt returning partial data. (#15767, #15235) (464d03f)
  • Fix the regression cause in httpd_cookie_key_value due to commit 4a47cf8 (#16202) (0920278)
  • Fixed httpd_register_uri_handler api for memory leak (#15878) (54e071a)

ESP HTTPS OTA

  • Aligned the OTA written length to 16 bytes during OTA resumption when flash encryption is enabled. (ca667e1)
  • Fixed partial download OTA to work on a single persistent connection rather than sending every range request on individual subsequent connections (92d4e3a)
  • Added fix to ensure the data written during OTA updates is properly aligned to 16 bytes when flash encryption is enabled (20098cb)
  • Moved partial-download feature under a newly added config to reduce default flash footprint (b72e532)

ESP HTTPS Server

  • Updating to mbedTLS 4.x with PSA migration increases the flash footprint. For https_server, the flash impact increases about 27KB (~3.08%). (7da79a6)
  • Added optional configuration for client cert verification (#17641) (6682774)
  • Fixed the issue where a second request on the same socket was blocked after the first async request succeeded.(#16998) (fd5b86d)
  • Added the API in esp_http_sever to return unparsed headers data buffer (#15857) (dee2895)

Protocomm

  • Added security checks for buffer overflow / incorrect length handling (93fd99f)
  • Added validation for Security1 client verifier data (084d1f0)

Provisioning

  • Disabled protocomm security version 0 and 1 by default (f0cc452)
  • Disabled protocomm security version 0 and 1 by default. If required then security 0/1 configs should be explicitly enabled. (f0cc452)
  • Fixed wifi_prov_mgr_deinit api return type and handled error case in wifi_prov_mgr example (b9c2242)

BLE

  • Fixed uninitialized return code in BLE Get Started - NimBLE examples (07d9bb9)
  • Added support for ESP32C61 revision v1.0 (22ae972)
  • Removed support for ESP32C61 revision v0.2 (22ae972)
  • Add Bluetooth LE CTE connless AoA/AoD example. (23d71fe)

BluFi

  • BLUFI protocol version has been updated (BTC_BLUFI_SUB_VER 0x03 → 0x04) and BLUFI security negotiation/crypto is updated. Existing BLUFI client/mobile apps may not interoperate with ESP-IDF v6.0 devices. (7da79a6)
  • Supported setting BLE encryption for blufi example (b890d08)
  • Added an API to start advertising with specified name. (5152593)

Bluedroid

  • Added bluedroid Connection Subrating examples (da2e3a3)
  • Added bluedroid PAwR (Periodic Advertising with Responses) examples (da2e3a3)
  • Added bluedroid Power Control examples (da2e3a3)
  • Added bluedroid CTE examples (da2e3a3)
  • Reduced bluedroid host bin size (83c48f3)
  • Fixed bluedroid host get white list size error (83c48f3)
  • Optimized bluedroid some code (fd333f9)
  • Added bluedroid encrypted advertising data examples (385f667)
  • Supported bluedroid encrypted advertising data (385f667)
  • Supported bluedroid host encryption with mbedTLS (68bef4f)
  • Supported bluedroid host encryption with TinyCrypt (68bef4f)
  • Fixed the issue that extend advertising might not restart if the connection fails (14c6f73)
  • Fixed Bluetooth LE incorrect device record count issue (e38d58a)
  • Fixed GATT response timeout setting. (e522c42)
  • Supported bluedroid host PAwR feature (df80f1d)
  • Supported bluedroid host Advertising Coding Selection feature (df80f1d)
  • Supported bluedroid host channel sounding feature (df80f1d)
  • Supported LE Security Levels Characteristic (df80f1d)
  • Fixed a memory leak during deinitialization when the service table was created but not started (7a20f71)
  • Fixed crash when deinitializing or disabling host during scanning (d822e9b)
  • Added an API to set channel map for scanning or initiating. (76b28d8)
  • Fixed the status setting in the HCI event. (3216dfa)
  • Fixed potential out-of-bounds memory access when resolving advertising data (c6923d2)
  • Added Bluetooth LE multiple connections examples. (fbea0c6)
  • Fixed the connection count limit in multi-connection. (fbea0c6)
  • Adjusted L2CAP round robin msg send strategy. (fbea0c6)
  • Supported multi-connection optimization vendor HCI command. (fbea0c6)
  • Set sec_conn only on successful pairing in ble_hid_device_demo to avoid unexpected behavior (a3146c7)
  • Fixed issue that caused failure in "BTM_GetSecurityFlags" (a8d3b48)
  • Fixed incorrect update of resolving_list_avail_size (a8d3b48)
  • Fixed issue where resolving list was not updated after the oldest device was removed (a8d3b48)
  • Fixed failure to disconnect when device record is cleared (a8d3b48)
  • Fixed build failure when some BLE features are disabled (0904627)
  • Support BLE vendor hci event reporting with corresponding parameters. (85d74cd)
  • Support anonymous address type for white list. (a4fcd06)
  • Fixed extended advertising restart failure during reconnection. (a172dac)
  • Fixed BLE SMP state machine inconsistency on disconnection (7d25722)
  • Fixed null pointer assert in l2c_link_check_send_pkts (f51c769)
  • Fixed issue with deleting link key when classic Bluetooth is not used. (c91a897)
  • Fixed validation logic for BLE GAP appearance configuration. (617d215)
  • Increased maximum attribute value length to 517 to prevent data loss. (617d215)

Controller

  • Fix the assertion in controller_uart_hci example, caused by Rx size mismatch between that read from ring buffer and that is expected from HCI on ESP32-C3/ESP32-S3 (5a23c96)
  • Fixed an occasional Interrupt Watchdog Timeout issue in an edge case of Multi-ADV scenario for ESP32-C2. (1c23b86)
  • Fixed an occasional disconnection issue caused by 0x3D on ESP32-C6, ESP32-H2,ESP32-C61 and ESP32-C5. (e41ecaa)
  • Fixed BLE assert lld_con.c 1479 on ESP32-C3 and ESP32-S3. (25814db)
  • Add a feature to automatically initiate a data length update using the appropriate parameters when a PHY update or a connection interval update occurs for ESP32-C6 and ESP32-H2. (3e36bc9)
  • Fixed an occasional disconnect issue caused by MIC errors on ESP32-C6, ESP32-H2 and ESP32-C5. (3e36bc9)
  • Fixed a disconnection issue that occurred when using the Coded PHY to transmit data with a 7.5 ms connection interval and a Tx data length of 251 bytes for ESP32-C5, ESP32-C6, ESP32-C61 and ESP32-H2.. (3e36bc9)
  • Changed the maximum number of concurrent connections to 70 on ESP32-H2 (57235cb)
  • Fixed crash in btdm_controller_task on ESP32 (876b5eb)
  • Fixed scan HCI command timeout issue on ESP32 (876b5eb)
  • Added a feature that allows the Controller to continue receiving PDUs in the next connection event instead of entering latency after receiving a data packet on ESP32-C6/C61, ESP32-H2, and ESP32-C5. (d305551)
  • Fixed an occasional interrupt watchdog timeout issue when stopping scanning for ESP32-C2. (d305551)
  • Supported controller log compression on ESP32-C3 and ESP32-S3. (8b036aa)
  • Fixed the disconnection issue caused by a MIC error on ESP32-C61. (b65d10f)
  • Fixed an occasional interrupt watchdog timeout issue when establishing connection for ESP32-C2. (94d2e8e)
  • Fixed an occasional connection timeout issue when utilizing BLE Flash Only feature for ESP32-C2. (94d2e8e)
  • Fixed an occasional connection establishment failure issue when utilizing BLE Flash Only feature for ESP32-C2. (94d2e8e)
  • Add scheduling priority level configuration when internal scheduling conflicts on ESP32-H2,ESP32-C6 and ESP32-C5. (94d2e8e)
  • Fixed occasional memory leaks in multi-connection scenarios on ESP32-H2 and ESP32-C6. (9fe5195)
  • Fixed an occasional MIC failure issue in Start Encryption procedure for ESP32-C2. (9fe5195)
  • Fixed occasional disconnection issue when sending Data Length Update too quickly on ESP32-C2. (a3b8073)
  • Fixed occasional assertion in scan/connection coexistence scenario on ESP32-C6. (a3b8073)
  • Fixed occasional assertion in adv/scan/connection coexistence scenario on ESP32-H2. (a3b8073)
  • Supported the PAwR feature on ESP32-C6, ESP32-H2, ESP32-C61 and ESP32-C5. (e31611d)
  • Improved security when receiving a connection request PDU with an invalid Access Address on ESP32n request PDU with an invalid Access Address on ESP32 (5540a8c)
  • Fixed the issue where RSSI of connection is incorrect when latency is no zero on ESP32. (d26f280)
  • Fixed priority setting for BLE events on ESP32. (d26f280)
  • Fixed disconnection issue when coexisting with other BLE events on ESP32. (d26f280)
  • Fixed crash due to bandwidth full when updating connection params on ESP32. (d26f280)
  • Supported multiple connection optimization vendor HCI command on ESP32. (d26f280)
  • Fixed BLE assert llc_llcp.c 487 on ESP32-C3 and ESP32-S3. (652fe76)
  • Fixed BLE assert sch_prog.c 304 on ESP32-C3 and ESP32-S3. (652fe76)
  • Fixed BLE anonymous extended advertising filtering on ESP32-C3 and ESP32-S3. (652fe76)
  • Fixed BLE TX issue when the event is aborted on ESP32-C3 and ESP32-S3. (652fe76)
  • Optimized check Access Address when receive connection request PDU on ESP32 (63f7d7e)
  • Fixed an occasional sync lost issue on ESP32-C6, ESP32-H2 and ESP32-C5. (5b11d5b)
  • Fixed an occasional assert issue in case of controller disable on ESP32-C2. (5b11d5b)
  • Fixed an occasional assertion issue during sync on ESP32-C6, ESP32-H2 and ESP32-C5. (dad2c53)
  • Fixed occasional disconnection issue when sending Data Length Update too quickly on ESP32-C6, ESP32-H2 and ESP32-C5. (dad2c53)
  • Fixed double free exception during BLE init under low memory on ESP32-C3/S3 (f1dd6da)
  • Fixed an APM panic issue when enabling TEE in the BLE scenario on ESP32-C6, ESP32-H2 and ESP32-C5. (71da548)
  • Fixed an occasional abnormal scanning stop issue on ESP32-C6, ESP32-H2 and ESP32-C5. (71da548)
  • Fixed an issue where the central role would disconnect abnormally when the peripheral did not support the Connection Parameters Request Procedure on ESP32-C6, ESP32-H2 and ESP32-C5. (71da548)
  • Fixed an occasional assertion issue during scanning on ESP32-C6. (71da548)
  • Reduced bin size and IRAM for BLE rom code on ESP32-C3 and ESP32-S3 (6897f90)
  • Fixed missing ADV reports after bonding and connection on ESP32-C3 and ESP32-S3 (#15789) (e178a09)
  • Fixed an occasional assertion issue in scan and connection scenarios on ESP32-C6. (b452748)
  • Supported creating connections during scanning process on ESP32-C6 and ESP32-H2. (b452748)
  • Fixed occasional packet loss issue in multi-connection scenarios on ESP32-C6. (b452748)
  • Fixed crash issue caused by using os_mbuf_dup on ESP32-C6 and ESP32-H2. (b452748)

Documentation

  • Added BLE Multi-Connection Guide in API Guides (9011d5d)
  • Added Bluetooth LE Low Power Mode FAQ in API Guides (0978fc1)
  • Updated ESP-Nimble SIG qualification version to core specification 6.1. (51d5e8f)
  • Added Bluetooth LE 6.0 features support status. (6588b00)

Mesh

  • Supported using unified stack crypto components for Bluetooth Mesh (35ff0c7)
  • Support Device Firmware Update. (d5086b3)
  • Support for BLE 5.0 Extended Advertising in ESP-BLE Mesh communication (53249ad)
  • Support log-compression while building Bluetooth Mesh applications (448f89e)

NimBLE

  • Add support for static passkey (e3ed88f)
  • Fix tinycrypt related compilation issue (256f00f)
  • Fixed PAwR Subevent Data Set error when data length set too large (07dc868)
  • Handle sync cancel during reattempt operations (125dc7d)
  • Added a check for periodic psync before processing (8e7ada5)
  • Fix compilation issues across different NimBLE examples (8e7ada5)
  • Support runtime memory alloc for mempool. (8e7ada5)
  • Fix typos in NimBLE examples (#17824) (c3f6d23)
  • Add Read all local / remote supported feature HCI command /event. (95b97de)
  • Improve debugging by adding more logs and thread diagnostic tools. (6abb398)
  • Fix array overflow caused by invalid connection handle indexing (7ae7dcd)
  • Added support for Channel Sounding host functionality. (03dd5e3)
  • Use nimble platform mem malloc / free APIs (7c1700b)
  • Added support to consider mbuf of different size during copying (448b5c0)
  • Update HCI log functions to use uint16_t for data length (f8935f8)
  • Rearrange NimBLE menuconfig options (7a87603)
  • Handled adv ext data setting in reattempt adv (9ba0b37)
  • Add indicate / notification code under correct flags [ Closes https://github.com//issues/16769 ] (b722615)
  • Fixed incorrect HCI status in connect event (d84d8ab)
  • Updated reattempt count handling for periodic adv (d1b3fd1)
  • Restructured table of README.md file of bleprph and blecent (7ef3215)
  • Add connection failure event when connection fails (4dd2694)
  • Added helper api's in nimble. (a3808c9)
  • ISO minor support for NimBLE Host (74bb9f6)
  • Update ble_gatts_show_local to show CPFDs and CAFDs. (92c125d)
  • Fix include service definition handle being the same for all definitions. (92c125d)
  • Added VSC for Set Scan Channel Bitmap (4f84ba0)
  • Fix for attribute count mismatch between cached gatt db and actual db (6fbc17c)
  • Update count parameter correctly by considering offset. (6fbc17c)
  • Fixed compilation issue due to BLE_GATTS flag (aa1c21f)
  • Clear GATT service entries counter upon GATT deinit (d1ea452)
  • Add timestamp information to HCI logging. (635169f)
  • Provide a way to make blufi advertising customizable. [ https://github.com//issues/16234 ] (2a1a76d)
  • Add ble_ancs example to build-test-rules configuration file. (f03521b)
  • Fix compilation issues when gatt caching is enabled in peripheral only mode (dffb03f)
  • Add a missing instance of ble_hs_unlock() in a corner case. (90b88af)
  • Added parameter in peer_init() to allocate memory for included services (304b561)
  • Automatically initiate security and retry service request if service request fails due to insufficient security. (0699507)
  • Added option to require Encryption, Authentication, or Authorization to subscribe for Notifications or Indications. (0699507)
  • Wrap BLE service API with extern "C" (5beacd1)
  • Fix compilation issue when CSFCS is set to 0. (5beacd1)
  • fix(nimble): Fixed issue of Adv report not observed in PAwR example. (beb6d79)
  • Added sdkconfig with options to showcase DRAM reduction for NimBLE examples. (52a6290)
  • Handle memory leak due to missing mempool_deinit call (adcbdd7)
  • Add Support for Apple Notification Center Service (ANCS) in NimBLE (2209a6c)
  • Add chip dependancy flag for Flow control feature (ebd4caf)
  • Added new Gattc + Gatts BLE coex example for nimble ( #12755) (925b563)
  • Fixed incorrect comparison with gattc proc that can cause request-response mismatches (644e38f)
  • Provide support for anonymous address type for whitelist (01520e8)
  • Added a configurable option to select ext adv v2 command (01520e8)
  • Added fix for an async race condition with HCI outstanding packets counter (01520e8)
  • Fixed UUID type error in GATT caching API to search for included services. (c9bab9e)
  • Added api's to fetch gatt cache info (764d722)

Power Management

  • Fixed occasional sleep enter failure due to BLE waking up too soon (94d2e8e)

Bluetooth Common

  • Added flow diagrams to Bluedroid BLE examples to improve documentation clarity and onboarding experience (b92e60d)
  • Increased maximum notify/indication registration limit in Bluedroid (IDFGH-16690) (b92e60d)
  • Added retry mechanism for Periodic Advertising Create Sync to improve synchronization reliability (b92e60d)
  • Fixed multiple potential issues and strengthened security in Bluedroid, including memory safety vulnerabilities and improper packet validation (b92e60d)
  • Introduced BLE ACL latency measurement example for evaluating round-trip latency between central and peripheral device (b92e60d)
  • Replaced hardcoded advertising-type values with descriptive macros across Bluedroid examples (IDFGH-16960) (b92e60d)
  • Added BLE time-interval conversion macros (ESP_BLE_GAP_SCAN_ITVL_MS, ESP_BLE_GAP_ADV_ITVL_MS, etc.) to improve readability and prevent unit-conversion errors (b92e60d)

Bluedroid

  • Security enhancements for Bluedroid Host Stack and Examples (4af7054)
  • Fixed missing BLE connection and disconnection events (e38d58a)

Controller

  • Refactor controller_hci_uart example for ESP32-C3/S3 to use UHCI driver (c87b9e9)
  • Fixed the issue that Bluetooth baseband might not reinitialize after stopping and starting Bluetooth when coexisting with WiFi on ESP32 (#15841) (b922352)
  • Fixed the issue that unfixed core tasks may register or trigger software interrupts of the wrong core when calling the Bluetooth interface on ESP32 (a23fad1)

Bootloader

  • Fixed stuck in PSRAM write after a CPU or system reset on esp32C5/ESP32C61 (3df1ee1)
  • Renamed linker file 'bootloader.ld' to 'bootloader.ld.in'. Custom bootloader build scripts update might be required. (0367cfe)
  • Removed option for compiling bootloader with no optimization level (-O0, CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE). For debugging purposes, it is recommended to use the -Og (CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG) optimization level instead. (dea8433)
  • Added support for secondary bootloader on C5 and C6. Allowing for safe OTA updates of the bootloader. (e603f4e)

Build & Config

  • Added the source of the component into the project_description.json (2dc0f49)
  • Changed default libc from Newlib to Picolibc. This may introduce breaking changes in rare cases. Refer to the v6.0 Migration Guide ("System" chapter) for details. (effa1e4)
  • Configuration related log information is aggregated into a configuration report which is printed every time configuration is re-built (2da9307)
  • The config-report build system target was added for producing a configuration report in JSON format (2da9307)
  • Fixed idf.py encrypted-flash to flash all the binaries (Bootloader, Partition Table and ESP-TEE) similar to idf.py flash (5ddfb04)
  • Added a technical preview of a new CMake-based build system (36d7618)
  • Updated the multi_config example to demonstrate usage of configuration presets (0c8566f)
  • Added support for changing the destination of the generated sdkconfig file via CMake configuration presets (https://developer.espressif.com/blog/2025/12/cmake_presets/) (0c8566f)
  • Fixed syntax errors in generated Graphviz dependency graphs by wrapping Node ID strings in double quotes (#17594) (d816c3f)
  • Deprecated options are now correctly evaluated in linker fragment files (7832985)
  • Added zc* extensions build options for ESP32P4 (rev >= 3.0) (e0b6934)
  • Fixed build error for esp_ds peripheral with clang O2 optimisation (#17582) (5cf6b6d)
  • Default warnings are now considered as errors by default. This can be disabled by setting CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS = y (6efd36f)
  • Added zc* extensions build options for ESP32C5, ESP32C61 and ESP32H4 (22cae61)
  • Added COMPILER_CXX_GLIBCXX_CONSTEXPR choice option to reduce C++ applications binary size (espressif/crosstool-NG#67) (f3dba4f)
  • Produced Cmake warnings if a component includes or builds from another component (746acf4)
  • Changed name of component newlib to esp_libc (0d10158)
  • Removed inclusion of <dirent.h> when <sys/dirent.h> is included. Include <dirent.h> for function declarations (0a7ace3)
  • Added -mtune=esp-base option for RISC-V targets to improve size and performance for memcpy inlining (620d1cb)
  • Created build system hooks for post-ELF file processing (#17251) (5eb8e74)
  • Fixed evaluation of dependencies based on Kconfig options in idf_component.yml files (b111672)
  • Fixed an issue where optional Kconfig dependencies were not evaluated correctly unless idf.py reconfigure was run twice (de098b9)
  • Reduced binary size for size-optimized xtensa builds by adding -mno-target-align compile option (#15677) (c433a76)
  • Enabled LIBC_OPTIMIZED_MISALIGNED_ACCESS by default (177dee6)
  • Upgraded default C standard to gnu23. Code changes may be required to fix new warnings. (03855b9)
  • Upgraded default C++ standard to gnu++26. Code changes may be required to fix new warnings. (03855b9)
  • Changed add_prebuilt_library function to create GLOBAL targets (a939f41)
  • Fixed the issue that linker fragments couldn't specify placements of symbols from prebuilt libraries (a939f41)
  • Switched to using __libc_init_array() instead of non-standard init_array() (44aeff1)
  • Changed the execution order of non-priority C++ constructors and functions marked with attribute((constructor)) from descending to ascending (44aeff1)
  • Added .preinit_array section to ELF to support C++ and sanitizer features (44aeff1)
  • The binary generation target gen_signed_project_binary is no longer available as the build system drops the need for this target. (c8f68c7)
  • The binary generation gen_project_binary is now created during the __idf_build_binary() function invocation by the build system. Components, declaring dependency on this target could have build errors. For post-elf processing, the new idf_build_add_post_elf_dependenciy() must be used. (c8f68c7)
  • Global Cmake variables presented by the esptool_py viz., ESPTOOLPY, ESPSECUREPY, ESPEFUSEPY and ESPMONITOR are no longer available. These must be accessed via the idf_component_get_property() function. (c8f68c7)
  • Updated esptool_py component to be an idempotent component in the build (c8f68c7)
  • The internal target variable, ${elf} is removed. Custom targets that need to add dependencies on the project elf must fetch the executable by querying the EXECUTABLE build property like idf_build_get_property(elf EXECUTABLE). (c8f68c7)
  • Components adding target dependencies on the encrypted-flash target unconditionally is not allowed any more. Such dependencies can only be done if CONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENT is enabled. (c8f68c7)
  • Changed default linker orphan section handling from warning to error (a319aa9)
  • The build process may fail during linking if orphan sections are present. This can be resolved by removing custom section declarations or by explicitly placing orphan sections using linker fragment file. (a319aa9)
  • Added support for conditional dependencies in idf_component.yml which depend on Kconfig option values (efcb8a5)
  • Misspelled Kconfig[.projbuild] files are now detected by the build system (espressif/esp-idf-kconfig#14) (47d20da)

Classic Bluetooth

Bluedroid

  • Deprecate RSSI threshold related macros (7a2e19c)
  • Fixed failure of buffer allocation in L2CAP throughput test by optimizing L2CAP memory footprint (d267cc7)
  • Fix bluetooth L2CAP data transmission stops after a failed write (d267cc7)
  • Fix index boundary check and function return values during A2DP SEP registration (e31ef6f)
  • Add missing setting of A2DP sink delay for AVRCP cover art and absolute volume examples (8ff88e2)
  • Backported several security-related fixes to from Google Fluoride to esp-idf Bluedroid (7950fdd)
  • Split A2DP sink example to several simpler examples to demonstrate A2DP/AVRCP functions of different aspects (2829b78)
  • Fixed missing NULL pointer check in l2c_fcr_clone_buf in Bluedroid (27f9cd6)
  • Allows downgrading AVRCP version to 1.5 by disabling the Cover Art feature (bc64651)
  • Fixed crash caused by performing A2DP deinitialization when initating an A2DP connection (b4a0b89)
  • Fix the status judgment in registration of A2DP source stream end point (0287fe9)
  • Added an API to create SPP server with a parameter that selects whether to create a corresponding SDP service record (99983a5)
  • Fixed potential stack buffer overflow in the processing SDP response in Bluedroid (70b1223)
  • Fixed memory leak in HID host and HID device (d3f6357)
  • Update the class of device before enabling inquiry scan to make it effective in inquiry scan response (bd7cbe7)
  • Fixed potential buffer overflow in the composition of AVRCP vendor dependent command in Bluedroid (f95a5f5)
  • Fixed the issue that HFP AG not report audio data to application when using external codec (b922352)
  • fix(bt/bluedroid): Fix the boundary conditions when checking EIR data (3e0545f)
  • Removed the code relying on compiler-specific extension for FAM in union (bdda830)
  • Fixed potential buffer overflow vulnerability in Bluedroid (bf695d0)
  • esp_bt_dev_get_device_name has been deprecated and now it is replaced with esp_bt_gap_get_device_name (7cac735)
  • esp_bt_dev_set_device_name has been deprecated and now it is replaced with esp_bt_gap_set_device_name (7cac735)
  • esp_hf_ag_devices_status_indchange has been deprecated and now it is replaced with esp_hf_ag_ciev_report (7cac735)
  • esp_spp_init has been deprecated and now it is replaced with esp_spp_enhanced_init (7cac735)
  • fix(bt/bluedroid): Prevent out-of-bounds access and add type check when resolving EIR data (892ec6a)
  • Fixed a description error in the classic Bluetooth GAP header file (1979646)
  • Added record_handle parameter in ESP_SDP_REMOVE_RECORD_COMP_EVT (706b7c8)
  • Fixed AVRCP build issue when Cover Art feature is disabled (#16155) (4e8ad76)
  • Fixed HFP AG data callback gets mistakenly cleared after profile re-initialization, if Bluedroid dynamic memory allocation is enabled (cca744c)
  • Added AVRCP callback event for notification of profile ON/OFF state (6177115)
  • Fixed the issue where an incorrect mask was used to exclude SCO packets during the establishment of eSCO link (fb6693c)

Controller

  • Fixed not reject connection request when auto accept is off and connect request event is masked on ESP32 (e6959c6)
  • Fixed the hardware channel map error by ignoring invalid channel maps during AFH disable procedure on ESP32 (b4b06fe)
  • Fixed improper handling of transaction collision during LMP encryption start/stop procedure on ESP32 (b4b06fe)
  • Removed the assertion when new acl data packet is sent to controller while previous data transmission is not finished on ESP32 (1904fd4)
  • Fixed that peripheral does not authenticate agaist peer device when the first request was rejected on ESP32 (549a727)
  • Fixed the errors that SCO frame scheduling is not stopped fter the base ACL link has been released on ESP32 (549a727)
  • Fixed the out of sync of data buffers between software and hardware on ESP32 (549a727)
  • Fixed the issue where modifying the btdm_pwr_state value would cause phy_disable to be called twice on ESP32 (549a727)
  • Fixed the issue that sniff anchor point are mismatched between Central and Peripheral on ESP32 which prevented them from receiving peer packets. (c4a2511)
  • Fixed missing of HCI event upon canceling truncated page procedure on ESP32 (f82e101)
  • Always send LMP_ENC_KEY_SIZE_MASK_REQ before changing to temp key on ESP32 (f82e101)
  • Ignored the reception of LMP_DETACH PDU during detach process on ESP32 (f82e101)
  • Fixed possible access to NULL pointers on ESP32 (f82e101)
  • Fixed for no HCI_LINK_KEY_NOTIFICATION_EVENT during re-pairing on Secure Simple Pairing acceptor on ESP32 (1979646)
  • Fixed zero size of encryption key used in Active Peripheral Broadcast on ESP32 (1979646)
  • Fixed wrong state caused by transaction collision in Enryption Pause and Resume procedure on ESP32 (1979646)
  • Fixed that Tx descriptor for FHS packet in page procedure may becomes empty after handshake failure on ESP32 (1979646)
  • Fixed the incorrect unit of clock in CPB Rx event on ESP32 (8bca0ba)
  • Fixed LMP legacy and secure authentication collision bugs on ESP32 (c4bfb8a)

Coexistence

  • Fixed ESP32 cache disable crash issue at coexistence scenario. (dcd23a4)
  • Fixed the ESP-NOW send fail when coexist enable (34b0344)
  • Fixed the abnormal grant or priority value issue when the external coexistence pin floating (d58da3b)
  • Added 802.15.4 status for internal coexistence (37322d4)
  • Fixed the issue that BLE connection may disconnect when WIFI is reconnecting on ESP32C2 (473f316)

Core System

  • Removed the exe flag from PSRAM memory for ESP32. ESP32 is not capable of running code from PSRAM. This is a link-time check, and actual CPU RWX permissions are controlled seperately so this has no practical implications, but it could mistakenly be remarked upon during security scansor checks by customers. (bffd1ac)
  • The component esp_vfs_console has been renamed esp_stdio and will henceforth be responsible for all stdio related functionality. (19e0997)
  • Fixed "defalut" typos in esp_rom function names (#17668) (86b39c6)
  • Added functionality to reset a ringbuffer (#17524) (4c589d6)
  • Fixed an issue where the ESP32-P4 chip could encounter exceptions or hang when exiting the WFI (Wait For Interrupt) state. (3124e04)
  • Removed deprecated STATUS enum from ets_sys.h, use ETS_STATUS instead. (166269f)
  • The header esp_vfs_cdcacm.h has been moved to the new component esp_usb_cdc_rom_console, you will now have to add an explicit REQUIRES for esp_usb_cdc_rom_console if using any functions from this header. (1f0152d)
  • Added a Kconfig option CONFIG_RINGBUF_IN_IRAM to allow placement of esp_ringbuf functions in IRAM. Ring buffer functions are now placed in flash memory by default. (11b80a7)
  • Ring buffer functions are now placed in flash memory by default to save IRAM space. CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH Kconfig option has been removed. (11b80a7)
  • Added Kconfig options for placing system-related APIs into flash when using CONFIG_SPI_FLASH_AUTO_SUSPEND (ff53d5d)
  • Added xt_specreg.h with Xtensa special register definitions with the XT_REG_ prefix and deprecated specreg.h (#16040, #12723) (7023f5b)
  • Fixed esp_ptr_executable and esp_ptr_byte_accessible to consider TCM memory (#15998, #15996) (fd9b2fa)
  • fix an issue that prevented RTC reserved area to have a size multiple of 4 (#13082) (1e516f0)

Console

  • Updated parsing of escape sequences in linenoise to read every character of the sequence seprately (#16762) (361c1b1)

ESP Event

  • Removed unnecessary freertos header includes, if your code relied on this implicit include from esp_event.h then please add the correct explicit includes, freertos/queue.h" and freertos/semphr.h to your files. (cb36cd3)

ESP Timer

  • Changed esp_timer_init_os to return ESP_OK if esp_timer already initialized. Now ESP-IDF will not abort the start-up process if esp_timer was initilized from a user constructor before the system tries to init it (#9679) (88c9af7)
  • Fixed potential buffer overflow with esp_timer_dump() (#17008) (32d8565)

Heap

  • Fixed a heap tracer bug that caused a startup crash when static memory usage was too high (#17232) (798e210)
  • Fixed the advanced heap tracing example name in its README file (#17233) (798e210)
  • MALLOC_CAP_EXEC capability only defined when no memory protection is enabled (see #14837) (75305c2)
  • Changed patched TLSF ROM functions to be placed in flash (6aeba18)

IPC

  • Allowed IPC recursion calls in esp_ipc_call (fdc3206)

Interrupts

  • Removed deprecated intr_types.h header, update to use esp_intr_types.h instead (365c8a3)

Log

  • Optimized esp-idf components for binary logging usage (reducing image size) (b7da740)
  • Fixed wrong year timestamp with LOG_TIMESTAMP_SOURCE_SYSTEM_FULL (#17451) (097f8a9)
  • Removed deprecated functions and header file (659ae57)
  • The following deprecated APIs have been removed: esp_log_buffer_hex(), esp_log_buffer_char(). (659ae57)
  • The following deprecated headers have been removed: esp_log_internal.h. (659ae57)
  • Fixed bin log config. It is available only for log version 2. (eb81a85)

Newlib

  • COMPILER_ASSERT_NDEBUG_EVALUATE default value changed to 'n'. Default behavior is now to not evaluate expressions inside assert(X) when NDEBUG is set, which confirms to the C standard. (#2758) (33f92c8)
  • Added kconfig option for configurable buffer length for assert msgs (#17454) (f25ae48)

Panic handling

  • Fixed infinite loop in .eh_frame-based backtracing when DWARF unwind information was missing. (686165a)
  • Fixed an issue where the panic handler may reboot even though it is configured to dump the CPU registers and halt (#17260) (7a6559f)

Partition Table

  • Fixed partition table names must be only ASCII characters (9f6136d)

Pthread

Watchdogs

  • Fixed Task watchdog not checking the return value from the interrupt allocator (f496b43)

Debugging

Apptrace

  • Removed destination parameter from all apptrace APIs. (8ee473d)
  • Changed the way apptrace is configured. Applications must implement esp_apptrace_get_init_params to provide app_trace parameters to the components (8ee473d)
  • Changed SystemView trace data destination configuration. Now it is controlled by the same configuration as the apptrace destination. It will not have its own destination configuration. (8ee473d)
  • Refactored apptrace UART related menuconfig options. CONFIG_APPTRACE_DEST_UARTx options are removed and CONFIG_APPTRACE_DEST_UART is added to keep the port number. (9f38fa1)
  • Moved gcov component out of the IDF and is now available in the ESP Component Registry as esp-gcov (5ac81c1)
  • Deprecated ESP_APPTRACE_DEST_TRAX. Now it is replaced with ESP_APPTRACE_DEST_JTAG (fb3e616)
  • Changed esp_apptrace_down_buffer_config(). Now it requires esp_apptrace_dest_t dest as first parameter for API consistency. (fb3e616)
  • Removed CONFIG_APPTRACE_PENDING_DATA_SIZE_MAX configuration option. (a083766)
  • Updated SystemView trace processing to support SEGGER standard multicore format available in v3.60 or later. (52e8876)
  • Added CRC16 checksum of trace blocks to enable host-side data integrity verification. Strored in Xtensa perfmon register. (89adafa)
  • Fixed deadlock on sysview start (b5303b5)

Core Dump

  • Fixed CONFIG_ESP_COREDUMP_MAX_TASKS_NUM option that was previously ignored, allowing users to limit the number of tasks included in core dumps. (#14407) (b98d27c)
  • Dropped CRC32 checksum support. Only SHA256 checksum is now used. (521f3e3)
  • Dropped binary format support. Only ELF format is now supported. (521f3e3)
  • Changed function esp_core_dump_partition_and_size_get(). Now it returns ESP_ERR_NOT_FOUND for blank partitions instead of ESP_ERR_INVALID_SIZE (#15153) (521f3e3)

GDB Stub

  • Added support for RISCV FPU and PIE registers (c7db234)
  • Fixed segfault if registers changed not for running task (c7db234)

Documentation

  • Updated Get Started for installing ESP-IDF using ESP-IDF Installation Manager (1ee108c)
  • Updates documentation for QEMU based build and test (#17464, #17458) (4371348)
  • Fixed wrong link to Putty in getting started (#17444) (8b96e82)
  • Updated missing Chinese translation in Build System documentation (#16236) (4bdd6b6)
  • Updated CLion documentation (#15944) (a9cdd33)
  • Updated the links in the COMPATIBILITY.md (#16025) (94143f2)
  • Restructured the Error Handling doc in terms of macros (#15930) (9d0d1d2)
  • Updated ulp-riscv doc regarding the ULP I2C hardware limitation. (#15917) (e9aa543)

Ethernet

  • Fixed ESP32P4 higher than expected EMAC MDC range frequency issue (ff9d18a)
  • Removed and migrated 3rd party Ethernet drivers outside of ESP-IDF. Add the related driver from component manager to use it. (61aaaf3)
  • Removed RMII CLK Kconfig option for esp_eth component, use config structure to set this parameter. (bc421db)
  • The esp_eth_phy_802_3_reset_hw API accepts only one parameter and resets the Ethernet PHY with internal timing configuration defined during initialization. (7a35466)
  • Added light sleep Ethernet retention for ESP32P4 (3fb1f9a)
  • Added ioctl option to enable time stamping for all frame types (#16016) (48b37dd)

Examples

  • The Common Connect example component uses Ethernet Init component now to configure and initialize Ethernet interface. (ec0ef59)
  • Removed references to components/ethernet_init to use managed ethernet_init component. (64df286)

FreeRTOS

  • The FreeRTOS port layer function xPortGetTickRateHz() has been deprecated and will be removed in the future. (25ffd0f)
  • Removed support for the user defined vPortCleanUpTCB() and the associated Kconfig option CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP. (75619d8)
  • Made task snapshot API public via freertos_debug.h. (df1e1c2)
  • Fixed mistakenly stating that stack watermarks are reported in words, IDF reports these in bytes (2ca2209)
  • Fixed rv_xesppie registers save/restore on context switch (c7db234)
  • FreeRTOS functions are now placed in flash memory by default to save IRAM space. CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH Kconfig option has been removed. (11b80a7)
  • Added a Kconfig option CONFIG_FREERTOS_IN_IRAM to allow placement of FreeRTOS functions in IRAM. FreeRTOS functions are now placed in flash memory by default. (11b80a7)
  • The compatibility function xQueueGenericReceive() has been removed. Use xQueueReceive(), xQueuePeek(), or xQueueSemaphoreTake() as per your usecase. (3ef4136)
  • The compatibility function vTaskDelayUntil() has been removed. Use the function xTaskDelayUntil() instead. (3ef4136)
  • The compatibility function ulTaskNotifyTake() has been removed. Use the macro ulTaskNotifyTake() instead. (3ef4136)
  • The compatibility function xTaskNotifyWait() has been removed. Use the macro xTaskNotifyWait() instead. (3ef4136)
  • The function pxTaskGetStackStart() is deprecated and a type safe version xTaskGetStackStart() has been added to idf_additions.h. (46160b0)
  • The following deprecated APIs have been removed: xTaskGetAffinity(), xTaskGetIdleTaskHandleForCPU(), xTaskGetCurrentTaskHandleForCPU(). (46160b0)
  • Changed vApplicationStackOverflowHook to be placed in flash when CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is enabled (6aeba18)

IDF Additions

  • Fixed full no-split buffer frees item incorrectly (#17466) (eeb4ec5)

LWIP

  • allow task stack from SPIRAM except for ESP32 ECO2 and below (#17827) (798cf55)
  • Removed deprecated sntp.h, users should include esp_sntp.h (406c7f3)
  • Removed deprecated ping.h and esp_ping.h, users should include ping_sock.h (406c7f3)
  • Deprecated header sntp.h for lwip/app port layer has been removed. Users should include esp_sntp.h. (406c7f3)
  • Deprecated header ping.h and esp_ping.h for lwip/app port layer has been removed. Users should include ping_sock.h. (406c7f3)
  • Added support for NETIF link callback (#17463) (9063a6c)
  • Updated TCP/IP task name to "tcpip" to be more descriptive (#13523) (31602cb)
  • Fixed wrong deallocation in lwip port layer (#11534) (5c7a237)
  • Removed: CONFIG_LWIP_DHCPS_ADD_DNS. DNS option in DHCP responses now depends only on runtime config. (57013ba)
  • Fixed DHCP ARP check issue (67e149c)

DHCP

  • Fixed incorrect DHCP length calculation causes potential memory corruption for some longer options (ESP_NETIF_HOSTNAME_MAX_SIZE) (d9457b8)

DHCP Server

  • The LWIP_DHCPS_ADD_DNS macro was removed. Applications must now enable DNS option in DHCP offers with esp_netif_dhcps_option() and configure DNS servers explicitly using esp_netif_set_dns_info(). (57013ba)

ESP Netif

  • No release notes (42abb32)
  • Added support for MTU initial settings and runtime configuration (#11613, #15319) (8a64cc1)
  • Added support for posting event on SNTP time update (b3afa26)
  • Removes option to disable error return in esp netif receive function (3d5c2ef)
  • Added support for network interface UP and DOWN events (82d8f9f)
  • Fixed minor memory leak if PPP netif creation fails (#17472) (7ab29a8)
  • Added support for IP_EVENT_ASSIGNED_IP_TO_CLIENT to include DHCP client hostname (opt 12) when CONFIG_LWIP_DHCPS_REPORT_CLIENT_HOSTNAME is enabled (#10706) (747c172)
  • Deprecated API esp_netif_next() was removed. Users are suggested to iterate over interfaces using esp_netif_tcpip_exec(), or use esp_netif_find_if(). (ba0b61d)
  • Fixed esp_netif_ip6_get_addr_type() to be const correct (#15882) (fe059bc)
  • Fixed documentation rendering of doxygen groups in esp_netif.h (#16993) (c33b88d)
  • Fixed reassigning the last static IP address after disconnection and reconnection (bc34abb)
  • Changed IP event name from IP_EVENT_AP_STAIPASSIGNED to IP_EVENT_ASSIGNED_IP_TO_CLIENT to reflect that any network interface could act as a DHCP client or server (#15663) (ce6e136)
  • Fixed potential crash caused by DHCP restore callback for PPP interface types (espressif/esp-protocols#800) (469a39b)

IPv6

Low Power Features

  • Fixed power leakage in the LP peripheral power domain during Light Sleep when the HP peripheral domain remained powered on esp32c6. (aea8fa8)
  • Fixed a rare issue where ESP32-C6 could permanently hang on wake-up when Wi-Fi Power Save was enabled and the HP peripheral domain remained powered during light sleep. (aea8fa8)
  • Optimized active power consumption of ESP32P4 rev3 chips in single-core mode. (3584d22)
  • Fixed HP LDO leakage during Lightsleep and optimized power consumption of ESP32P4 Lightsleep. (86d09a2)
  • Fixed an issue where the system would stop responding to interrupts after sleep was rejected in ESP32P4 PD_TOP lightsleep. (86d09a2)
  • Fixed an issue where the xtal32k was powered down during sleep when used as the slow clock source on ESP32C5 with Wi-Fi disabled. (e1b6006)
  • Supported lightsleep to power down the CPU power domain separately on ESP32P4 rev2.0. (dfeae96)
  • Fixed the issue where RTC_BOD may reset or get stuck when waking up from Deepsleep on ESP32P4. (7bd0eef)
  • Removed the support for switching power from DCDC to LDO during ESP32P4 lightsleep. (7bd0eef)
  • Fixed the approach for writing to reject enable registers to achieve the reject light or deep sleep feartures. (https://github.com/espressif/esp-idf/issues/16738](https://github.com/espressif/esp-idf/issues/16738) (28c4172)
  • Revised the description of ESP32 reject sources: only GPIO and SDIO are valid as reject sources. (28c4172)
  • Added USB-Serial-JTAG console usage warnings to sleep examples (#16129) (d85ad74)
  • Fixed the issue where the sleep wakeup failed after reset when RTC_CLK_SRC_INT_8MD256 is enabled on esp32/esp32c2/esp32c3/esp32s3. (#16243) (feb1dc9)
  • Fixed the issue where entering mac_pd lightsleep may get stuck when Wi-Fi/BT coexist on ESP32C5. (e71760b)
  • Added explicit handling for ESP_PD_OPTION_AUTO, allowing direct mode switching and reference count reset. (e6dfb60)
  • Warning instead of assert when disable a disabled power domain using esp_sleep_pd_config (#16872) (e6dfb60)
  • Fixed the problem that the modem would work abnormally after waking up from light sleep if ADC is initialized on esp32c6/esp32h2. (f1df2f3)
  • Fixed a possible wakeup failure on esp32 if lightsleep/deepsleep was requested by Core1. (#16243) (dd980b7)
  • Added esp_sleep_get_wakeup_causes() to support multiple wakeup sources and deprecate esp_sleep_get_wakeup_cause() (60d9ca9)
  • Support user configurable low power analog mode by esp_sleep_enable_lowpower_analog_mode if analog-related peripherals(ADC,TSENS,TOUCH) is not used in monitor mode (#7882) (bac996a)
  • Fixed esp_sleep_get_ext1_wakeup_status always return 0 on esp32p4. (a225749)
  • Improved esp_timer timing accuracy for esp32 and esp32s2 when esp_pm DFS is enabled. (a42929a)
  • Fixed the issue that esp32p4 may get stuck when entering deepsleep. (8931a8a)
  • Fixed deepsleep leakage after USB HS phy is initialized on esp32p4 (d5441e6)

ULP

LP Core

  • Fixed an issue where the LP Mailbox did not function correctly when LP core interrupts are enabled (#18095) (b685c0e)
  • Support LP UART to wake up the LP Core when the HP Core is in sleep mode for esp32c5, esp32c6 and esp32p4 (5d40b0d)
  • Added an API definition and implementation for the hardware mailbox (056c404)
  • Added trap (exception) wake-up source for HP-CPU. If LP-Core trigger an exception it will now also wake-up the HP-Core from sleep with a trap wakeup cause. (0ac9dfb)
  • Updated LP core I2C library to provide macros for SDA and SCL GPIO pin instead of hardcoding the same at each stage, so the library as well as test apps don't need manual update when switching from ESP32C6 to C5 or P4. (b59b366)
  • Fixed array-bound compile error for P4 when compiling with -Os (#17054) (5d98c90)
  • Updated the LP UART and LP I2C drivers to not enable interrupts but rather use raw interrupt registers to prevent the LP core from jumping to the default interrupt handler and aborting the LP core code. (a7e6122)

ULP-RISC-V

  • Added a pulse counter example code for ulp riscv core to find out the highest possible frequency of pulses that can be counted by ULP core (0f776d3)
  • Added support for ADC Unit 2 on RISCV co processors (#17515) (cdef6dc)
  • Fixed an issue where I2C error prints in ulp_riscv_i2c component were not getting disabled by using esp_log_level_set API (#17425) (031a2f2)
  • Returned error code back to application for ULP RISC-V I2C read/write errors (Closes #15904) (031a2f2)
  • Fixed the ulp_riscv_delay_cycles() to handle small delays correctly (#16891) (d9241bf)

MQTT

  • The esp-mqtt component was moved to component manager. Add espressif/mqtt to dependencies to use it. (98a9e14)

Networking

  • Fixed Ethernet initialization order in VLAN example. (14ae391)

Examples

  • Added option to use polling mode for SPI Ethernet modules in protocols examples (#16869) (5aab43e)
  • Removed modbus examples, examples available at esp-modbus repository. (be5e48b)

PHY

  • Fix Wi-Fi Rx performance issue due to imcomplete phy initialization at coexistence scenarios. (21d2788)
  • Fixed the TX gain mismatch in Coexistence scenario on ESP32C5/ESP32C61 (7e87423)
  • Added protection against double phy-disable operations by one modem source, which can result in hardware clock being switched off in coexistence scenario (4b559f6)
  • Updated librtc.a to fix coexist problems on ESP32 (bba5292)
  • Fixed phy cert_test example crash on ESP32-C3 and ESP32-S3 (#16888) (33493d4)

Peripheral Drivers

  • Remove FreeRTOS header dependency in peripheral public headers. (5c5d78b)
  • The default console UART TX IO can now also be re-used as a peripheral signal input through GPIO matrix (#16764, #17459) (0e6525a)
  • Fixed potential bugs where functions called within MIN/MAX macros could be executed multiple times, leading to unexpected behavior or performance issues. (f050c1d)
  • Fixed issue that DMA are not reset when CPU reset (746485f)
  • The periph_module_t enum type is refactored into shared_periph_module_t and only the modules that have multiple independent functions are kept. (f348a10)
  • Removed unnecessary dependencies for the driver component (22a0f9a)
  • The driver/periph_ctrl.h and driver/rtc_cntl.h header files are removed. Please use esp_private/periph_ctrl.h and esp_private/rtc_ctrl.h instead. (e3190c6)
  • The default console UART TX IO can now also be re-used as a signal input without interference from the drive of the console UART TX signal (#16764) (248c87a)
  • The io_loop_back config option is removed for all drivers, different peripheral drivers can still share the same GPIO number without having it. (1fa420e)
  • Call esp_pm APIs when only when CONFIG_PM_ENABLE is enabled, to save binary size (#15923) (8afb0fb)
  • Deprecated periph_interrput_t and replaced it with periph_interrupt_t to fix the typo. (9c8ead5)

ADC

  • Fixed ADC continuous mode ISR not in IRAM issue leading to panic on ESP32 and ESP32-S2 (#17526) (240c5d0)
  • Fixed ADC function abnormal on 32k XTAL clock pin on esp32c6/esp32h2/esp32c5/esp32c61/esp32p4 (7738347)
  • removed deprecated ADC continuous format config (a88b299)
  • Fixed ESP32 ADC2 continuous loss sample times (#10612) (23dc9a9)
  • Fix temp_sensor error after adc continuous start (#15524) (3ec9502)
  • Added ADC continuous parse data API (8222f88)
  • Fixed ESP32-P4 ADC2 wrong channel-to-gpio mapping (8222f88)
  • Fixed inaccurate ADC readings at high input voltages on ESP32-C5 (7aca624)
  • Fixed ESP32-P4 ADC2 oneshot do not claim apb periph clock (f638d5e)
  • Fixed ADC hw calibration do not free apb periph clock (#16130) (f638d5e)
  • Legacy ADC driver and legacy ADC calibration driver have been removed (807cbbf)
  • Legacy ADC driver and legacy ADC calibration driver have been removed (807cbbf)

oneshot

  • Fixed inaccurate high readings from ADC oneshot mode on ESP32-C6 (94bcd65)

Camera

  • Fixed CSI and ISP_DVP driver RX buffer data corrupted issue due to cache coherence issue caused by cache autowriteback (e80a749)
  • Fixed DVP loss half frames error (37ba98d)
  • Added a help function to allocate camera buffer (4e7bfc3)
  • Add power manage lock for esp_camera (a6c26c3)

DVP

  • Add format conversion for LCD_CAM DVP (abaa608)
  • Switched to use proper DMA descriptor type for better memory usage on ESP32S3 (b57f726)

DAC

  • The legacy DAC driver is removed. (d445536)

DMA

  • Disallow burst sizes larger than 32 bytes when using DMA to access PSRAM on ESP32-C5 and ESP32-C61. (6e0dd05)
  • The esp_dma_capable_malloc and esp_dma_capable_calloc functions are removed. The GDMA_ISR_IRAM_SAFE Kconfig option is removed. (3e09d4f)

GDMA

  • Fixed race condition in gdma resource allocation and free (611f5cc)

GPIO

  • Fixed the issue that gpio_output_enable and gpio_output_disable would not take effect if the IO was routing to an output signal through IOMUX. (0e6525a)
  • Add "rom_" prefix to all GPIO ROM functions in components/esp_rom/esp32xx/include/esp32xx/rom/gpio.h (7f0f043)
  • Added the esp_err_t return type to gpio_uninstall_isr_service (#14114) (7f0f043)
  • MAX_PAD_GPIO_NUM, MAX_GPIO_NUM, and DIG_IO_HOLD_BIT_SHIFT macros have been removed. (7f0f043)
  • Fixed the issue where the hold state of the GPIO corresponding to XTAL_32K_P was destroyed during reset or deepsleep. (#17419) (3a0eba4)
  • Fix USB DP pin unusable after CPU reset for ESP32-S3 and ESP32-C3 if USJ_ENABLE_USB_SERIAL_JTAG is deselected in menuconfig (#17488) (f1e6e66)
  • Updated the generic gpio example to avoid conflicts between the default GPIO numbers and USB peripherals (#16244) (5df7a0a)
  • Use enum values when assigning "pull_[up|down]_en" fields of "gpio_config" (#17241) (451cfc9)
  • Fixed the issue that on ESP32, the IOs with RTC functionality are not able to reflect GPIO sleep PU/PD configuration during light sleep (2319386)
  • Calling gpio_reset_pin on an input only pin should not produce an error message (#17047) (df5bff7)
  • Support clock output feature for esp32c5 & esp32c61. (e8ef305)
  • Improved some RTC_IO LL functions performance by avoiding "read-modify-write" operation (2fbd877)
  • Removed gpio_iomux_in, gpio_iomux_out public APIs. Please use gpio_iomux_input, gpio_iomux_output in esp_private/gpio.h if neccessary. (2fb938c)
  • Removed unsupported GPIO_OUTPUT_SET macro for ESP32-P4 (#16050) (2fb938c)

GPTimer

  • The legacy timer group driver is removed. (3b50481)

H264

  • Added esp_h264 encoder and decoder example (3785a24)

I2C

  • Change type of write.data member in i2c_operation_job_t from uint8_t * to const uint8_t * (#17585) (23b76aa)
  • Legacy I2C driver (driver/i2c.h) is end-of-life and compile warning is added. (bb80291)
  • Disable the open drain mode on deinit (#17737) (2fb0c3c)
  • Add i2c_slave_reset_tx_fifo function to allow reset the tx fifo state of i2c slave device (#16241) (a8ace9d)
  • Fix the potential wdt might happen after nack. (12c633f)
  • Remove I2C PULL UP notice log (#13963) (5aceead)
  • Add u8g2 example based on i2c master driver (02b2f69)
  • Fix a typo in the documentation of i2c_master_probe function (#17475) (00e5eff)
  • Fixed wrong clock name when the used clock is REF_TICK. (#17422) (5efe1db)
  • Updated the i2c basic example to correct the timeout parameter in I2C API calls (#17246) (185a1c5)
  • Fixed i2c read value via several read jobs might lose data (#16231) (92df25e)
  • Make I2C nack error log as debug level, not force print anymore. (5aa9d6a)
  • I2C slave version one driver is removed (456ae96)
  • Added gpio reserve check on i2c driver (b1b99b3)

I2C Master

  • Added timeout range check (#17930) (5848016)
  • I2C master transaction now will report ESP_ERR_INVALID_RESPONSE when NACK is detected. (6af87b6)
  • Now write buffer in i2c_master_transmit_multi_buffer_info_t is a const (#16890) (5053084)

I2S

  • Fixed the rw_pos and curr_ptr invalid issue while big gap between the two 'write' or 'read'. (3111588)
  • Removed 'i2s_port_t' type and use 'int' type instead. (726a430)
  • Fixed incorrect ffmpeg command in documentation (#17653) (b8a0d88)
  • Support to constitute full-duplex mode for STD and TDM automatically when the channel configuration are same. (a5bd9d2)
  • Fixed the sample rate slow down issue when using more than 4 slots in PDM RX mode. (a19ad8d)
  • Added PLL240M clock source on ESP32-S3/C6 (#17056) (a19ad8d)
  • The legacy I2S driver is removed. (e71e755)

STD

  • Fixed STD mode initialization failure on ESP32 when using I2S_NUM_AUTO. (88c27e5)

ISP

  • Fixed the issue that AWB subwindow always need to be set (78206e9)
  • Allowed to configure ISP submodule configurations immediately (bypassing shadow registers) (78206e9)
  • ISP color mode enum values are now compatible with ESP FourCC (0f7ae73)
  • Added subwindow field to esp_isp_awb_config_t for AWB subwindow statistics (60e129b)
  • Refactored ISP multi-pipelines example into modular structure with separate modules. (cfb8f3b)
  • Support video frame crop in ISP module on esp32p4-rev3. (ef1b1d1)
  • Supported AWB module white balace gain configuration API and subwindow statitics API (53f96d8)
  • Supported Black Level Correction (BLC) driver on ESP32P4 REV3 (e13699a)
  • Increased the valid hue depth from 256 levels to 360 levels in esp32p4 rev3 (2d9b6c1)

JPEG

  • Add feature that engine can decode to yuv420 from a yuv444/yuv422 jpeg picture since esp32p4 revision 3 (d5ddb10)
  • Changing color type definition from color structure to fourcc (06e5eeb)
  • Added additional checks for JPEG markers to prevent potential exploitation of this vulnerability to attack ESP chips (5a14ccf)
  • Support yuv444 yuv420 jpeg encoder format on esp32p4 revision 3 (e49093a)
  • Fixed random black line appearance while jpeg decode (446e2fc)
  • Fixed wrong parameter in jpeg encoder memory sync which leads to cache error. (9b77416)

LCD

  • Supported partial source draw bitmap by new api dpi_panel_draw_bitmap_2d() (88716d0)
  • Fixed the issue that SPI MISO can't be used with LCD D/C together (#17858) (771edae)
  • Unified color conversion API across RGB and DSI drivers (734e600)
  • Replaced bits_per_pixel with FourCC-based color format configuration (734e600)
  • The underrun interrupt is supported on ESP32-P4 version 3.0 (a480689)
  • The NT35510 LCD device driver has been moved out of ESP-IDF and is now hosted in the Component Registry. (4589f33)
  • The MIPI DSI driver can draw bitmap of gray8 format on ESP32-P4 version 3.0 (f4c40f7)
  • Dropped the support of the legacy I2C master driver in the esp_lcd component (9cee386)
  • The GPIO number type in the LCD driver has been changed from int to the more type-safe gpio_num_t. (6ea0fa1)
  • The color_space and rgb_endian configuration options in the esp_lcd_panel_dev_config_t structure is replaced by the rgb_ele_order member, which sets the RGB element order. (6ea0fa1)
  • Reserved the GPIO used by RGB LCD in driver initialization and disconnect them from the LCD signals when deinitialize the driver (f071b54)
  • Corrected the hyperlink in README.md (#16389) (c7561dc)

DSI_LCD

  • Allow set the pixel clock frequency with float value (7577b19)
  • Replaced the original use_dma2d flag with a new hook function esp_lcd_dpi_panel_enable_dma2d(). If 2D-DMA is not used, your application binary size can be saved by around 10KB. (88716d0)
  • Supported to use a custom hook (e.g. PPA) to process the draw buffer (88716d0)

RGB_LCD

  • Driver can use the frame buffer(s) allocated by user (c961c24)

LEDC

  • Add ETM support for LEDC peripheral (#11855) (8242e69)
  • Add power management support for ledc_basic example (#17517) (8242e69)
  • Update anonymous nested struct for correct documentation building (#8813) (13f4225)
  • Removed LEDC_USE_RTC8M_CLK macro (e94d9ce)
  • Removed ledc_timer_set API, and LEDC_APB_CLK_HZ, LEDC_REF_CLK_HZ macros (3fdb473)
  • esp_driver_gpio no longer is the public required component for esp_driver_ledc (3fdb473)
  • Forced the new duty update to wait until its last duty update finishes for ESP32 (3fdb473)

MCPWM

  • Removed variadic generator APIs mcpwm_generator_set_actions_on_xxx (4e62b0e)
  • Fixed the division by zero error when input expect resolution was too low.(#17665) (3108707)
  • Fixed FOC example frequency calculation (#17015) (9f43c02)
  • The legacy MCPWM driver is removed. (0972e9d)
  • Supported to get last latched capture value directly. (0972e9d)
  • Changed the default MCPWM group clock prescaler to 1 so that we can achieve a higher resolution. (#14815) (904d952)
  • The io_od_mode member in the mcpwm_generator_config_t configuration structure has been removed. (1fa420e)
  • Fixed the issue that MCPWM output wrong frequency during DFS on ESP32 and ESP32-S3 (5945ad1)

PARL_IO

  • Support the unaligned receive buffer in Parlio RX driver. (#17581) (88c27e5)
  • Supported to set start/stop delay for valid signal on ESP32P4 V3.0 (a1f765b)
  • Supported to append receive queue in the ISR context. (3750278c)
  • Supported to register buffer switched callback in loop transmission (ffebb32)
  • Supported PARLIO_TX with BitScrambler for mismatched input/output sizes on ESP32-C5 (#16122) (d6a4c37)
  • Expanded the upper limit of the buffer size that the Parallel IO can transmit in a single send on ESP32-C5 (f05d47c)

PCNT

  • Fixed race condition causing accum_value loss on counter overflow (22cfc7e)
  • The legacy PCNT driver is removed. (81bb6a0)

PPA

  • PPA color mode enum values are now compatible with ESP FourCC (36134f6)
  • Added notes about SRM bilinear interpolation algorithm in programming guide (#17531) (36134f6)
  • Removed PPA_SRM_COLOR_MODE_YUV444 as a valid SRM output color mode (36134f6)
  • Fixed a potential issue on SRM operations may get stuck on DMA (36134f6)

RMT

  • Improve the stability of ESP32 when pm is enabled (77b6cfb)
  • Fixed RMT TX disable timeout on ESP32 when mem_block_symbols is large. (#17692) (3b0d850)
  • The rmt_receive function can accept a buffer from PSRAM (01a27c8)
  • The legacy RMT driver is removed. (9dc9d7d)
  • Enhanced the inspection of the size of encoded symbols in loop transmission. (f160701)
  • Fixed the spurious RX done interrupts when the RX engine has been disabled on ESP32 (#15948) (7324fc6)
  • Supported unaligned receive buffer with DMA, the driver will help to do the alignment internally (7324fc6)
  • Supported to set initial level before any TX transmission (#16068) (7324fc6)
  • Fixed the state of a simple encoder when mem_full and done occur together.(#17244) (844dc17)
  • Enable the internal pull-up resistor in the onewire bus example (5f1ad2c)
  • The io_od_mode member in the rmt_tx_channel_config_t configuration structure has been removed. (1fa420e)
  • Added flags names and enhance the readability of the document (#15929, #15933) (3baaa8c)

SDM

  • Added sleep retention driver support, SDM module can be powered off during sleep and restored automatically after wakeup (ae221cb)
  • The legacy SDM driver is removed. (d6894a1)

SD_HOST

  • Supported UHS-I SDR104 (200MHz, 100MB/s) on ESP32P4 REV3 (4a38301)

SDMMC

  • Added Block device layer (esp_blockdev component) interface for sdmmc component (6cd8b82)
  • Changed public requirement to esp_driver_gpio to private requirement (dfe8ee5)
  • Added Kconfig option SDMMC_ENABLE_SDIO_SUPPORT to enable/disable SDIO specific steps in sdmmc_card_init (e2954eb)
  • Removed deprecated API esp_vfs_fat_sdmmc_unmount (a4c03ce)
  • Fixed sdmmc initialization issue caused by CMD52 CRC error (37733a8)
  • The get_dma_info member in the sdmmc_host_t structure, as well as the sdspi_host_get_dma_info and sdmmc_host_get_dma_info functions, are removed. (3e09d4f)
  • Fixed multiple definitions of SD Card example pins issue in project Kconfig file (30f9814)
  • Fixed all pins need to be set issue when using slot0 on ESP32P4 (30f9814)
  • Introduced SD Host (SDMMC) new driver in driver/sd_host.h and driver/sd_host_sdmmc.h (b1999b5)

SDSPI

  • Added an option to modify the waiting time for MISO before sending next command - can help speed up transaction speed for e.g. SD cards on boards with no or incorrect pull-up resistors (#16909, #10493) (5616067)
  • Fixed missing error handling in sdspi_host_start_command function when calling spi_device_acquire_bus function (5616067)

SPI

  • The SPI master and slave no longer accepts ESP_INTR_FLAG_SHARED as interrupt flag during initialization. (28999c8)
  • Added note and workaround for esp32 spi slave hold MISO pin issue (#8638) (f4e999f)
  • Added note for esp32 spi slave with DMA but real trans_len unaligned to 4 bytes (#2085) (f4e999f)
  • Fixed spi device turn to maximum speed when override_freq uninitialized (#17460) (f4e999f)
  • Removed deprecated HSPI and VSPI related IOMUX pin macros on ESP32 and ESP32S2 (a4c03ce)
  • Fixed slave mode with dma RX data error on ESP32C5 (c8fcebd)
  • Fixed spi master full duplex with dma enabled but single RX data error on ESP32C5, C61 (323e942)
  • Change ESP32P4 spi master default clock source to PLL to support up to 80M by default (d8fa822)

SPI Master

  • SPI Master can transfer PSRAM buffers with DMA directly without extra copy (311bec8)

SPI Slave

  • Added a note about drive capability for GPIO pins in SPI slave example (#17268) (4bd3661)

SPI Flash

  • Fixed issue that ESP32-C5 flash encrypted write data corruption when CPU is 240MHz. Now the CPU frequency will be switched to 160/80 MHz on v1.2/v1.0 chips during the write. (f409428)
  • New argument flags is added to esp_flash_os_functions_t::start. Caller and implementer should handle this argument properly. (f409428)
  • Added Block device layer (esp_blockdev component) interface for spi_flash component (7c4eac9)
  • Fix flash software suspend doesn't perform efficiently on esp32h2 (8811f2e)
  • Remove SPI_FLASH_ROM_DRIVER_PATCH option as this is not needed any more (19fef9f)
  • Fixed the cache map 32M flash failed on esp32c5 (79cc42a)
  • Fixed cpu start failed when log functions are put in flash on esp32c5 (92b90af)
  • Removed deprecated enum esp_flash_speed_t (a4c03ce)
  • Removed deprecated API spi_flash_reset_counters, spi_flash_dump_counters and spi_flash_get_counters (a4c03ce)
  • Removed deprecated header file esp_spi_flash.h (a4c03ce)
  • Fixed flash read failed in qio mode on external flash (65a6e9c)
  • Fixed bootloader flash size is not accurate when flash size is larger than 32MB (142a830)
  • Added GD55D256 flash chip support (de58c6d)
  • Updated 32-bit address (16MB or more) documentation to clarify experimental support for code execution and data access with CONFIG_BOOTLOADER_CACHE_32BIT_ADDR_QUAD_FLASH (bfe5caf)
  • Fixed issue of escaping boundary check (d5b4654)
  • Make GD flash driver linked by default (561c7c4)
  • Added XM25QH256D flash support for new 32MB flash module (8ab564a)

TWAI

  • Improve new driver transmits API description (#17883) (30e864c)
  • Supports get free queue size and improve logs and API docs (#17888) (30e864c)
  • Removed the errata config option and apply workaround automatically (9245d8e)
  • Deprecate the legacy twai driver API (7471043)
  • Fixed ESP32C5 can't receive frame in listen_only mode when multiple node on bus (#17461) (e8ec954)
  • Fixed [tx|rx]_error_count empty from twai_node_get_info (#17434) (e8ec954)
  • Fixed using twai_make_dual_filter() to config dual filter for 29-bits ext_id (#17504) (e8ec954)
  • More accurate the sample_point calculation when using twai_timing_basic_config_t::sp_permill (#17522) (e8ec954)
  • Fixed the issue that legacy twai driver can't send frame with dlc equals to zero (#17467) (fecbfdc)
  • Added a new TWAI example to drive XiaoMi "CyberGear" servo with a console CLI. (c6d7d5d)
  • Removed unsupported busoff and clkout signals on ESP32-C5 (6fdaf37)
  • Added support for calling twai_node_transmit() from ISR contexts, enabling real-time CAN frame transmission from interrupt handlers with automatic context detection and ISR-safe queue operations. (5c97f96)
  • Fixed DLC larger than 255 in received frame from twai_node_receive_from_isr (4e5401e)
  • Added API twai_node_transmit_wait_all_done() (54a9c2e)
  • Improve the quanta_resolution_hz formula of twai_timing_config_t (#17002, #16996) (f5e9a24)
  • Update twai examples with new driver API and simplified them (#8461) (675fe2d)
  • Fixed build warnings in the cxx environment (#16999) (7d1e974)

Temperature Sensor

  • Fixed cpp compiling warning for temperature sensor (#17656) (068c8ab)
  • remove spurious printf (#16211) (94765b5)
  • The legacy temperature sensor driver is removed. (f4a45a3)

Touch Element

Touch Sensor

  • Fixed non-symmetric gpio reserve/revoke in Touch Sensor driver (#17806) (88c27e5)
  • Fixed touch channel 8/9 enable mask bit swap issue (681c6a2)
  • Fixed touch current measuring channel workaround and added test for it (#17759) (37b8f8f)
  • The dependencies of legacy touch sensor driver are removed from ULP touch driver, now you need to use int instead of touch_pad_t to express the touch channel ID. (30d0ede)
  • Support P4 Ver3 features: 1. force update benchmark; 2. touch_sensor_config_t::trigger_rise_cnt (ac24f96)
  • Removed touch_sensor_sample_config_t::bypass_shield_output on ESP32-P4, it is not supported any more. (ac24f96)
  • Fixed the issue in the legacy touch sensor driver that the read API can't be used from ISR context. (#17045) (d622116)
  • Adjust touch channel number on P4 from 0-13 to 1-14. (c1666c8)
  • Fixed calculation of sleep intervals. (c1666c8)

UART

  • Fixed UHCI RX buffer data potential corrupted issue due to cache coherence issue caused by cache autowriteback (8bd344c)
  • Removed soc/uart_channel.h. All UART GPIO lookup equivalent macros can be found in soc/uart_pins.h (4fbcab8)
  • Fixed the issue that interrupt watchdog would get triggered on uart_driver_install if uart_driver_delete was called previously on ESP32-C5 (#17779) (0e6525a)
  • Fixed an issue that some UART ports would generate a BRK_DET interrupt directly after module enabled (register reseted) (0e6525a)
  • Fixed the issue that LP watchdog would get triggered on esp_restart if uart_driver_delete was called previously on ESP32-C5 (0e6525a)
  • Fixed parenthesis typo on UART_INTR_CONFIG_FLAG macro (#17885) (0e6525a)
  • Fixed incorrect uart_get_tx_buffer_free_size API behavior (#15859) (d76364c)
  • Added support for UART DTR and DSR signals (#15987, #6211) (8651d6c)
  • The esp_rom_uart.h is deprecated and replaced by esp_rom_serial_output.h (ce92b0a)
  • Fixed uart_release_pin logic if switching only specific pins with uart_set_pin (dc527fb)

USB

  • Fixed USB-Serial-JTAG and USB-OTG1.1 PHY swapping on ESP32-P4 (#17831) (5d313ad)
  • Added USB support for ESP32-H4 (4f578d8)
  • Updated USB Device examples to esp_tinyusb v2.0.0 (5efa5ab)
  • Added CherryUSB host and device demo example (3622995)
  • Updated cdcacm_rx_cb and cdcacm_tx_cb placement when CONFIG_ESP_CONSOLE_USB_CDC_SUPPORT_ETS_PRINTF (#17000) (4c9c308)
  • Removed deprecated pin mappings for external USB PHY (1bbf04c)
  • Changed USB CDC VFS read() to treat end-of-line characters as regular bytes, with no early return (2f4c5d2)
  • Changed USB CDC VFS read() to return with available data when in blocking mode (2f4c5d2)
  • Updated ESP32-P4 USB pins for mass production version (#16136) (32bee68)
  • Fixed switching between TinyUSB and USB-Serial-JTAG modes on ESP32-S3 (#15932, #15912) (27099e1)

USB Device

  • [Peripheral Drivers / USB / USB Device] Added handling of Remote Wakeup feature in USB Device HID example (#13804) (35fffe9)

USB Host

  • Removed usb component from esp-idf (4dc77d1)
  • Relocated PHY code to esp_hw_support and removed deprecated APIs (f4a8619)
  • Improved stability of the USB Host Library with external hubs (602941e)
  • Added USB Host support for Full Speed peripheral on ESP32-P4 (94d71a8)
  • Added support for custom FIFO sizing via HAL API (c06fa31)
  • Added option to allocate USB buffers in external RAM on ESP32-P4 (6d2f4b3)

USB Serial JTAG

  • Check the pointer validation of tx ringbuffer (0997c89)
  • Fixed an issue where CPU would be blocked for approximately 50ms during wake-up when performing USB Serial/JTAG printing if the device was not connected to a host. (56a284e)
  • Added clarifying note about disabling USB-Serial-JTAG in bootloader stage (#14638) (961c10b)
  • Changed USB Serial JTAG VFS read() to treat end-of-line characters as regular bytes, with no early return (2f4c5d2)

Power Management

  • Removed the configurable constraint for sleep memory usage optimization option (8d0fc97)
  • Fixed potential crash on ESP32-C61 during DFS when PSRAM is enabled and CPU frequency is lower than 10 MHz. (f409428)
  • Fixed ESP32P4 rev3 core1 initialization after single-core active power consumption optimization (ac1e81f)
  • Auto adjust LDO volt for esp32c6 using PVT function (bef4d8c)
  • Reduce current of ESP32-H2 in light sleep with TOP PD and flash PU (e6b82fa)
  • [Low Power Features] Added zcmp workaround for ESP32C5, ESP32C61 and ESP32H4 (bcccf9b)
  • The current leakage for ESP32 in light sleep has been decreased by 80uA (2319386)
  • Fixed the issue that ESP32C5 TX packet failed when DFS enabled (bacb0ce)
  • Fixed examples/system/light_sleep compilation fail on CONFIG_ESP_CONSOLE_NONE selected (dc527fb)
  • Optimized the power consumption of esp32c5 in active state (2a861ea)
  • deepsleep current decrease about 7uA for C61 (17uA -> 10uA) (22f6319)

Security

  • Updating to Mbed TLS 4.0 moves ESP-IDF toward PSA-first crypto. Applications relying on legacy Mbed TLS cryptography APIs (many mbedtls_* crypto primitives) may no longer compile or behave the same, because Mbed TLS 4.0 moves cryptography to TF-PSA-Crypto and mostly removes legacy crypto APIs. Migrate application crypto usage to PSA Crypto APIs where possible (and avoid relying on Mbed TLS internals/private headers). (7da79a6)
  • Added support for ESP-TEE (Trusted Execution Environment) on ESP32-C61 (ef148ae)
  • Fixed app image encryption length for secure update without secure boot case (b05300b)
  • Added support for ESP-TEE (Trusted Execution Environment) on ESP32-C5 (74da6d7)
  • Fix secure OTA without secure boot issue for MMU page size configurable SoCs (#15936) (ef08cca)

AES

  • Fixed a DMA + write-back cache coherency bug during AES-DMA operations that caused intermittent PSRAM output corruption by enforcing proper cache clean on DMA destination buffers. (0a79c99)
  • Fixed AES failure with C5 PSRAM encryption by using an internal buffers to perform chunk-wise operation (6fb5705)
  • Dynamically switch between AES block and DMA mode to significantly improve the performance of operation with shorter input data lengths (#15914) (c6e6558)

ESP Cert Bundle

  • Updated the default root certificate bundle (cacrt_all.pem - 19 Nov 2025) (31d01bc)

ESP-TLS

  • [Security/MbedTLS] After updating to the PSA APIs, there is an additional ~800 bytes of stack usage increase for HTTPS connection. Ensure that the application allocates enough stack memory. (7da79a6)
  • Support runtime TLS version and ciphersuite list configuration for https server (#17660) (02af1db)
  • Updated esp-tls docs for non TLS connections (#17652, #17598) (59f5bb4)
  • Added missing event tracker during mbedtls read operation (#16239) (5721196)

Flash Encryption

  • Fixed Flash Encryption and Secure Boot Release mode config behaviour to write-protect the SECURE_BOOT_SHA_384_EN bit by default, when Secure Boot scheme is not SHA-384 (b6c253a)
  • Fixed esp_flash_encryption_set_release_mode() API to program the efuse bit to level low only if the efuse is not already programmed. (343fd79)

Key Manager

  • Fix broken encrypted write operation to use efuses key instead of the Key Manger key when Flash Encryption is disabled. (fd7d9c9)
  • Fixed incorrect internal state management when starting a Key Manager operation (de36c80)

MbedTLS

  • Update mbedTLS to v4.0.0 (7da79a6)
  • With PSA-first behavior, psa_crypto_init() must be called before any cryptographic operation, including indirect ones like parsing keys/certs or starting a TLS handshake. ESP-IDF initializes PSA during system startup, but code that runs earlier than normal startup (very early init, custom startup flows, etc.) must call psa_crypto_init() explicitly. (7da79a6)
  • Code using APIs that previously accepted f_rng, p_rng will fail to compile. This includes (at least) X.509 write and cookie/ticket helper APIs. Users must update to new prototypes and rely on PSA RNG (7da79a6)
  • TLS/DTLS interoperability with peers requiring DHE key exchange or RSA key exchange (non-forward-secret) is removed in Mbed TLS 4.0. If a server only offers removed suites, ESP-IDF TLS clients will fail to connect (and vice-versa). Ensure servers/clients support modern suites (typically (EC)DHE and TLS 1.3 where available) and update configs accordingly. (7da79a6)
  • Certificates/peers using small curves (<250 bits; e.g., secp192r1/secp224r1) are no longer supported in certs/TLS. (7da79a6)
  • pk contexts initialised by esp_ecdsa_set_pk_context() must be freed by using esp_ecdsa_free_pk_context() (7da79a6)
  • The use_tee_sec_stg_key flag has been removed. ECDSA private key operations using ESP-TEE secure storage can now be performed by just specifying tee_key_id. (ee4be1a)
  • Fixed alignment requirements when hardware AES and SHA operations access encrypted PSRAM buffers (145de94)
  • Updated mbedTLS version to 3.6.5 (b32cd28)
  • Optimized dependent peripheral clock usage for the ESP32-H2's revision v1.2 whose ECDSA peripheral does not use the MPI peripheral. (286f7fe)
  • This release restructures the mbedTLS configuration system and adds support for configuration presets. (4e03698)
  • Fix build failure when using non-AES ciphers GCM operation fallback with CONFIG_MBEDTLS_GCM_C being disabled. (d8a3ef5)
  • Adds in support for verifying cross signed certificates if the cross signed certificate is available in the trusted CA bundle. (1f4612e)
  • When using the esp_sha_block() and esp_sha_dma() APIs, the SHA mode needs to be explicitly set using the esp_sha_set_mode() API. (8d0527d)
  • Starting from ESP-IDF v5.5, there is a change in how the SHA sub-function APIs, esp_sha_block() and esp_sha_dma(), are used. Previously, these APIs used to set the SHA mode internally, however, in the updated version, you must explicitly set the SHA mode before invoking them. For instance, if you intend to use the SHA-256 algorithm, you must first call esp_sha_set_mode() with the argument SHA2_256. (8d0527d)
  • Starting with ESP-IDF v6.0, all deprecated CA certificates have been removed from the mbedTLS certificate bundle. As a result, any firmware built with ESP-IDF v6.0 may fail to connect to endpoints that rely on these removed certificates. Thus, before upgrading deployed devices to firmware built with v6.0, thoroughly test all connectivity endpoints to ensure compatibility and avoid connection failures. (e05390f)
  • Updated the deprecated root certificate bundle (cacrt_deprecated.pem - 21 May 2025) (e05390f)
  • Fixes failing TLS handshake when running HTTPS Server with TLS1.3 (#15984) (619996f)

NVS Encryption

  • If Flash encryption is enabled on SoCs with the HMAC peripheral (SOC_HMAC_SUPPORTED) and NVS encryption is also enabled, the HMAC-based scheme will be selected by default instead of the Flash encryption scheme. (649741f)

NVS Sec Provider

  • Fixed startup workflow to emit warning when nvs_keys partition is missing instead of returning error (#17710) (0da946d)

RNG

  • Added new entropy source for RNG on ESP32P4 ECO5 (0cf98bd)
  • Improved RNG documentation (#14665) (0fa59a2)

Secure Boot

  • Fixed the issue where bootloader fails to properly skip image verification and triggers reset when both CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP and secure boot are enabled. (64c7148)
  • Fix the application's Secure Boot verify API to support ECDSA-P384 (b7fe4ba)
  • Fixed enabling ROM secure download mode when DIS_DOWNLOAD_MODE is already disabled (a249714)
  • Fixed the Secure Boot behaviour to write disable SECURE_BOOT_SHA384_EN / ECDSA_CURVE_MODE in the security init function instead of the bootloader to allow configuring other efuses sharing the same write-protection (4e082ef)

Storage

  • Added Block Device Layer support for esp_partition component (1e1b95c)
  • Added new Block device layer interface component (d4e58bf)
  • Added a mention of read-only NVS partitions in File System Considerations document (8925459)

FATFS

  • Enable dynamically allocated buffers and long filename support by default (734c172)
  • Refactored FATFS VFS functions - body of convenience mounting functions split to smaller steps. (9408386)
  • Added esp_vfs_fat_format_drive and esp_vfs_fat_partition_drive functions. (9408386)
  • Functions esp_vfs_fat_sdmmc_mount and esp_vfs_fat_sdspi_mount now return ESP_ERR_INVALID_ARG if any of the arguments are missing. (9408386)

LittleFS

  • Default LittleFS version in examples bumped to 1.20.0 (2aeec90)

NVS

  • Changed implementation to support BDL as storage layer (958b2f6)
  • Added 2 new NVS examples: nvs_statistics and nvs_iteration (7b271c4)
  • Copyright sections were unified (207199a)
  • Header files were unified to use #pragma once (207199a)
  • NVS constants were refactored to avoid dependency on spi_flash (207199a)
  • fixed nvs_tool to parse non-ASCII keys (69d2079)
  • Fix NVS encryption initialization when using MINIMAL_BUILD (Closes #17256) (649741f)
  • Fixed updates of BLOBs present in old format when legacy compatibility menuconfig option is set (553d103)
  • Improved performance of BLOB get and set operations (efb4d57)

Partitions

  • Added error-returning variants for partition find APIs (#9281) (053fb47)
  • Added support for partitions larger than 4MB on Linux target (94b8128)

VFS

  • Make FS registration function used by LWIP private (4b919ca)
  • Deprecate old VFS API (4b919ca)
  • Disable TERMIOS support by default (0600407)
  • Removed deprecated UART and UART-JTAG-serial API from vfs component, these APIs can still be found in the respective driver components. (fb79d92)

System Hardware

  • Fixed incorrect breakpoint and watchpoint numbers for ESP32-C5 (9b74192)
  • Changed ESP32P4 REV3 as default option (45fa560)
  • For ESP32-C6, the option to use RC32K clock as the RTC slow clock source has been completely removed (RTC_CLK_SRC_USE_DANGEROUS_RC32K_ALLOWED, RTC_CLK_SRC_INT_RC32K) (e94d9ce)
  • Fixed assert when changing 8MD256 RTC slow clock source during OTA on esp32/esp32s2/esp32s3. (6f8dbe8)
  • Removed deprecated headers: {IDF_TARGET}/rtc.h and soc_memory_types.h. from esp_hw_support component. These headers are replaced by esp_rtc_time.h and esp_memory_utils.h respectively. (39d2225)
  • Fixed the issue that LP_WDT is triggered in ROM after esp_restart reset if UART0 is disabled in App. (Affected targets: esp32c5/esp32c6/esp32h2) (2bd3931)
  • Auto adjust core voltage for different chip and different environment on ESP32-P4 (fa41e76)
  • only detect VDD digital for ESP32-C5 / C61 (22f6319)
  • Removed support of C5_ECO0 & C61_ECO0 / C61_ECO1 (22f6319)
  • Fixed compile error on esp_cpu_int_has_handler on ESP32-P4 (GitHub PR) (#15942 #15941) (184b993)

Cache

  • Fixed cache sync operation concurrency issue that leads to system crash (#18023) (6831592)

Efuse

  • Allowed custom key purposes (b0f34bd)

MMU

  • No longer disable Cache when doing external memory mapping on ESP32S3, C3, C2, C5, C6, C61, H2 (ae3f20f)

MSPI

  • Now the Flash frequency will not be decreased during DFS on ESP32-P4, when PSRAM is not enabled. (f409428)
  • Supported 120MHz timing tuning for Flash and PSRAM on ESP32C5 (cec614e)

Memory Layout

  • Removed RTC_ related memory attributes on chips which do not support RTC memory (ba7d244)

PSRAM

  • Fixed

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.