Documentation for IDF v6.0-rc1 is available at https://docs.espressif.com/projects/esp-idf/en/v6.0-rc1/
ESP-IDF v6.0-rc1 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.3 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. Note that from v6.0 (final release) onward, and for all future IDF releases, the full changelog of release notes will be published on the ESP Release Notes site.
Obtaining v6.0-rc1
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-rc1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v6.0-rc1
cd esp-idf-v6.0-rc1/
This is the recommended way of obtaining v6.0-rc1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v6.0-rc1.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-rc1/esp-idf-v6.0-rc1.zip
Major changes
Major New Features
-
ESP-IDF v6.0 upgrades to MbedTLS v4.x and adopts the new PSA Crypto API, marking a major shift toward a PSA-first cryptography policy
-
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)
-
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_provisioninginto 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: Fixed wifi_prov_mgr_deinit api return type and handled error case in wifi_prov_mgr example (b9c2242)
- Application Utilities/Provisioning: Disabled protocomm security version 0 and 1 by default. If required then security 0/1 configs should be explicitly enabled. (f0cc452)
- 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)
- BLE/BluFi: BluFi Security is updated to use SHA256 from MD5 (dc38765)
- BLE/BluFi: BluFi Security is updated to migrate to 3072 based FFDHE keys (dc38765)
- BLE/BluFi: BluFi Security is updated to use AES-256 from AES-128 (dc38765)
- 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) - Bootloader: Renamed linker file 'bootloader.ld' to 'bootloader.ld.in'. Custom bootloader build scripts update might be required. (0367cfe)
- 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)
- Build & Config: The binary generation target
gen_signed_project_binaryis no longer available as the build system drops the need for this target. (c8f68c7) - Build & Config: The binary generation
gen_project_binaryis 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 newidf_build_add_post_elf_dependenciy()must be used. (c8f68c7) - Build & Config: Global Cmake variables presented by the
esptool_pyviz.,ESPTOOLPY,ESPSECUREPY,ESPEFUSEPYandESPMONITORare no longer available. These must be accessed via theidf_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 theEXECUTABLEbuild property likeidf_build_get_property(elf EXECUTABLE). (c8f68c7) - Build & Config: Components adding target dependencies on the
encrypted-flashtarget unconditionally is not allowed any more. Such dependencies can only be done ifCONFIG_SECURE_FLASH_ENCRYPTION_MODE_DEVELOPMENTis enabled. (c8f68c7) - Build & Config: Changed the execution order of non-priority C++ constructors and functions marked with attribute((constructor)) from descending to ascending (44aeff1)
- 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: Default warnings are now considered as errors by default. This can be disabled by setting
CONFIG_COMPILER_DISABLE_DEFAULT_ERRORS = y(6efd36f) - 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)
- Classic Bluetooth/Bluedroid: esp_spp_init has been deprecated and now it is replaced with esp_spp_enhanced_init (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_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_bt_dev_get_device_name has been deprecated and now it is replaced with esp_bt_gap_get_device_name (7cac735)
- Classic Bluetooth/Bluedroid: Deprecate RSSI threshold related macros (7a2e19c)
- Core System: Ring buffer functions are now placed in flash memory by default to save IRAM space.
CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASHKconfig option has been removed. (11b80a7) - Core System: Removed deprecated STATUS enum from
ets_sys.h, use ETS_STATUS instead. (166269f) - Core System: The header
esp_vfs_cdcacm.hhas been moved to the new componentesp_usb_cdc_rom_console, you will now have to add an explicitREQUIRESforesp_usb_cdc_rom_consoleif using any functions from this header. (1f0152d) - Core System/ESP Event: Removed unnecessary freertos header includes, if your code relied on this implicit include from
esp_event.hthen please add the correct explicit includes,freertos/queue.h"andfreertos/semphr.hto 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.hinstead (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)whenNDEBUGis set, which confirms to the C standard. (#2758) (33f92c8) - 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 destas first parameter for API consistency. (fb3e616) - Debugging/Apptrace: Removed
CONFIG_APPTRACE_PENDING_DATA_SIZE_MAXconfiguration option. (a083766) - Debugging/Apptrace: Removed destination parameter from all apptrace APIs. (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: Changed the way apptrace is configured. Applications must implement
esp_apptrace_get_init_paramsto provide app_trace parameters to the components (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/Core Dump: Dropped binary format support. Only ELF format is now supported. (521f3e3)
- Debugging/Core Dump: Dropped CRC32 checksum support. Only SHA256 checksum is now used. (521f3e3)
- Debugging/Core Dump: Changed function
esp_core_dump_partition_and_size_get(). Now it returnsESP_ERR_NOT_FOUNDfor blank partitions instead ofESP_ERR_INVALID_SIZE(#15153) (521f3e3) - 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)
- Ethernet: Removed RMII CLK Kconfig option for esp_eth component, use config structure to set this parameter. (bc421db)
- 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 all Ethernet PTP ioctl commands and replaced them by a new API (b28d671)
- FreeRTOS: FreeRTOS functions are now placed in flash memory by default to save IRAM space.
CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASHKconfig option has been removed. (11b80a7) - FreeRTOS: The following deprecated APIs have been removed:
xTaskGetAffinity(),xTaskGetIdleTaskHandleForCPU(),xTaskGetCurrentTaskHandleForCPU(). (46160b0) - FreeRTOS: The compatibility function
xQueueGenericReceive()has been removed. UsexQueueReceive(),xQueuePeek(), orxQueueSemaphoreTake()as per your usecase. (3ef4136) - FreeRTOS: The compatibility function
vTaskDelayUntil()has been removed. Use the functionxTaskDelayUntil()instead. (3ef4136) - FreeRTOS: The compatibility function
ulTaskNotifyTake()has been removed. Use the macroulTaskNotifyTake()instead. (3ef4136) - FreeRTOS: The compatibility function
xTaskNotifyWait()has been removed. Use the macroxTaskNotifyWait()instead. (3ef4136) - FreeRTOS: Removed support for the user defined
vPortCleanUpTCB()and the associated Kconfig optionCONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP. (75619d8) - 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)
- Low Power Features: Rename
esp_deepsleep_gpio_wake_up_mode_ttoesp_sleep_gpio_wake_up_mode_t(d0f992c) - Low Power Features: Rename
esp_deep_sleep_enable_gpio_wakeuptoesp_sleep_enable_gpio_wakeup_on_hp_periph_powerdown(d0f992c) - MQTT: The esp-mqtt component was moved to component manager. Add espressif/mqtt to dependencies to use it. (98a9e14)
- Peripheral Drivers: The
io_loop_backconfig option is removed for all drivers, different peripheral drivers can still share the same GPIO number without having it. (1fa420e) - Peripheral Drivers: The
periph_module_tenum type is refactored intoshared_periph_module_tand only the modules that have multiple independent functions are kept. (f348a10) - Peripheral Drivers: The
driver/periph_ctrl.handdriver/rtc_cntl.hheader files are removed. Please useesp_private/periph_ctrl.handesp_private/rtc_ctrl.hinstead. (e3190c6) - Peripheral Drivers: Removed unnecessary dependencies for the driver component (22a0f9a)
- Peripheral Drivers: Remove FreeRTOS header dependency in peripheral public headers. (5c5d78b)
- Peripheral Drivers/ADC: Legacy ADC driver and legacy ADC calibration driver have been removed (807cbbf)
- Peripheral Drivers/Camera/DVP: Used fourcc for dvp cam color format (7c1e88e)
- Peripheral Drivers/DAC: The legacy DAC driver is removed. (d445536)
- Peripheral Drivers/DMA: The
esp_dma_capable_mallocandesp_dma_capable_callocfunctions are removed. TheGDMA_ISR_IRAM_SAFEKconfig option is removed. (3e09d4f) - Peripheral Drivers/DMA: The DMA core driver is now graduated into a separate component "esp_driver_dma". (799e366)
- Peripheral Drivers/GPIO: Removed
gpio_iomux_in,gpio_iomux_outpublic APIs. Please usegpio_iomux_input,gpio_iomux_outputin esp_private/gpio.h if neccessary. (2fb938c) - 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: Rename
gpio_deep_sleep_wakeup_enable/disabletogpio_wakeup_enable/disable_on_hp_periph_powerdown_sleep(d0f992c) - Peripheral Drivers/GPTimer: The legacy timer group driver is removed. (3b50481)
- Peripheral Drivers/I2C: I2C slave version one driver is removed (456ae96)
- Peripheral Drivers/I2C: Legacy I2C driver (
driver/i2c.h) is end-of-life and compile warning is added. (bb80291) - Peripheral Drivers/I2C/I2C Master: I2C master transaction now will report ESP_ERR_INVALID_RESPONSE when NACK is detected. (6af87b6)
- Peripheral Drivers/I2S: The legacy I2S driver is removed. (e71e755)
- Peripheral Drivers/I2S: Removed 'i2s_port_t' type and use 'int' type instead. (726a430)
- 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
intto the more type-safegpio_num_t. (6ea0fa1) - Peripheral Drivers/LCD: The
color_spaceandrgb_endianconfiguration options in theesp_lcd_panel_dev_config_tstructure is replaced by thergb_ele_ordermember, which sets the RGB element order. (6ea0fa1) - 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: 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/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_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/LEDC: Removed LEDC_USE_RTC8M_CLK macro (e94d9ce)
- 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_modemember in themcpwm_generator_config_tconfiguration structure has been removed. (1fa420e) - Peripheral Drivers/MCPWM: The legacy MCPWM driver is removed. (0972e9d)
- Peripheral Drivers/MCPWM: Removed variadic generator APIs
mcpwm_generator_set_actions_on_xxx(4e62b0e) - Peripheral Drivers/PCNT: The legacy PCNT driver is removed. (81bb6a0)
- Peripheral Drivers/RMT: The
io_od_modemember in thermt_tx_channel_config_tconfiguration structure has been removed. (1fa420e) - Peripheral Drivers/RMT: The legacy RMT driver is removed. (9dc9d7d)
- Peripheral Drivers/SDM: The legacy SDM driver is removed. (d6894a1)
- Peripheral Drivers/SDM: Function
sdm_channel_set_dutyhas been removed. Usesdm_channel_set_pulse_densityinstead. (5d4d12f2) - Peripheral Drivers/SD_HOST/SDMMC: The
get_dma_infomember in thesdmmc_host_tstructure, as well as thesdspi_host_get_dma_infoandsdmmc_host_get_dma_infofunctions, are removed. (3e09d4f) - Peripheral Drivers/SD_HOST/SDMMC: Removed deprecated API
esp_vfs_fat_sdmmc_unmount(a4c03ce) - Peripheral Drivers/SD_HOST/SDMMC Changed public requirement to
esp_driver_gpioto private requirement (dfe8ee5) - Peripheral Drivers/SPI: Removed deprecated HSPI and VSPI related IOMUX pin macros on ESP32 and ESP32S2 (a4c03ce)
- Peripheral Drivers/SPI: The SPI master and slave no longer accepts
ESP_INTR_FLAG_SHAREDas interrupt flag during initialization. (28999c8) - Peripheral Drivers/SPI Flash: Remove
SPI_FLASH_ROM_DRIVER_PATCHoption 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_countersandspi_flash_get_counters(a4c03ce) - Peripheral Drivers/SPI Flash: Removed deprecated header file
esp_spi_flash.h(a4c03ce) - Peripheral Drivers/SPI Flash: New argument
flagsis added toesp_flash_os_functions_t::start. Caller and implementer should handle this argument properly. (f409428) - Peripheral Drivers/SPI Flash: Changed the include path of headers to reflect their visibility. The #include statements of headers for customizing flash drivers and private use need to be updated. (31056d5)
- Peripheral Drivers/SPI Flash: Structures
esp_flash_tandesp_flash_os_functions_tare moved to private headers. Users should call APIs instead of using the members directly. (31056d5) - 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: 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 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 Sensor: Adjust touch channel number on P4 from 0-13 to 1-14. (c1666c8)
- Peripheral Drivers/Touch Sensor: The dependencies of legacy touch sensor driver are removed from ULP touch driver, now you need to use
intinstead oftouch_pad_tto express the touch channel ID. (30d0ede) - Peripheral Drivers/Touch Sensor: Removed
touch_sensor_sample_config_t::bypass_shield_outputon ESP32-P4, it is not supported any more. (ac24f96) - Peripheral Drivers/UART: The
esp_rom_uart.his deprecated and replaced byesp_rom_serial_output.h(ce92b0a) - 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/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: Removed the API
esp_tee_att_generate_token- please use the PSA Attestation APIspsa_initial_attest_get_tokenandpsa_initial_attest_get_token_sizeinstead. (ee2da28) - Security: TEE secure storage no longer supports operations involving ECDSA
secp192r1keys (ee2da28) - Security: Moved security specific hal code to esp_hal_security (78464df)
- Security: The APIs
esp_tee_sec_storage_aead_encrypt()andesp_tee_sec_storage_aead_decrypt()now require explicit parameters for specifying the IV and its length for AES-GCM operations. The IV returned during encryption must be provided during decryption. (246dc5e) - 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/ESP-TLS Removed the wolfssl abstraction layer from ESP-TLS, The component can now be added externally (e114d45)
- Security/HMAC: The newer structure
esp_hmac_opaque_key_trepresents an hardware-backed HMAC opaque key. Applications can populate this structure and import it viapsa_import_key(), enabling all HMAC operations through standard PSA Crypto APIs instead of using theesp_hmac_calculate()API. (148e333) - Security/MbedTLS: Starting from ESP-IDF v5.5, there is a change in how the SHA sub-function APIs,
esp_sha_block()andesp_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 callesp_sha_set_mode()with the argumentSHA2_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/MbedTLS: The
use_tee_sec_stg_keyflag has been removed. ECDSA private key operations using ESP-TEE secure storage can now be performed by just specifyingtee_key_id. (ee4be1a) - 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 callpsa_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 usingesp_ecdsa_free_pk_context()(7da79a6) - Security/MbedTLS:
esp_ecdsa_load_pubkey(),esp_ecdsa_privkey_load_mpi(),esp_ecdsa_privkey_load_pk_context(),esp_ecdsa_set_pk_context(),esp_ecdsa_tee_load_pubkey()andesp_ecdsa_tee_set_pk_context()have been deprecated and removed. The legacyesp_ecdsa_pk_conf_tconfiguration is replaced byesp_ecdsa_opaque_key_t, which represents an hardware-backed ECDSA opaque key. Applications can populate this structure and import it viapsa_import_key(), enabling all ECDSA operations through standard PSA Crypto APIs. (062073a) - Security/MbedTLS: The legacy Digital Signature (DS) peripheral implementation using custom mbedTLS alternative functions (
esp_rsa_sign_alt,esp_rsa_dec_alt,esp_ds_common,esp_ds_init_data_ctx,esp_ds_release_ds_lock,esp_ds_set_session_timeout) has been removed and replaced with a PSA crypto driver implementation. The DS peripheral now uses thepsa_crypto_driver_esp_rsa_dsdriver through the PSA crypto interface. Applications using DS peripheral with ESP-TLS must enable the Kconfig optionMBEDTLS_HARDWARE_RSA_DS_PERIPHERALto enable hardware-accelerated RSA digital signature operations. The ESP-TLS API remains unchanged - applications continue to useesp_tls_cfg_twithds_datafield, enabling all DS operations through standard PSA Crypto APIs. (aa73e94) - 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: Functions
esp_vfs_fat_sdmmc_mountandesp_vfs_fat_sdspi_mountnow returnESP_ERR_INVALID_ARGif any of the arguments are missing. (9408386) - Storage/FATFS: Enable dynamically allocated buffers and long filename support by default (734c172)
- Storage/VFS: Removed deprecated UART and UART-JTAG-serial API from
vfscomponent, these APIs can still be found in the respective driver components. (fb79d92) - Storage/VFS: Disable TERMIOS support by default (0600407)
- Storage/VFS: Make FS registration function used by LWIP private (4b919ca)
- Storage/VFS: Deprecate old VFS API (4b919ca)
- 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.handsoc_memory_types.h.fromesp_hw_supportcomponent. These headers are replaced byesp_rtc_time.handesp_memory_utils.hrespectively. (39d2225) - System Hardware: Changed ESP32P4 REV3 as default option (45fa560)
- System Hardware: Suppress possible data corruption or system panic on ESP32-C5 when flash encryption is enabled. Now the CPU frequency is limited to 160 MHz temporarily. (cd2a4df)
- System Hardware: Default revision of ESP32-P4 is changed to v3.0. Applications for < 3.0 chips whose sdkconfig has no
CONFIG_ESP32P4_SELECTS_REV_LESS_V3=ywill build a incompatible binary. AppendCONFIG_ESP32P4_SELECTS_REV_LESS_V3=yto your sdkconfig file before running reconfigure or build. (d3e1887) - 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: The minimal supported CMake version was upgraded from 3.16 to 3.22 (c43d311)
- Tools: ESP-IDF no longer automates installation of
gdbgui.idf.py gdbguicommand can still be used, provided that thegdbguitool is installed manually. (5799f55) - Tools: Autodetection was removed from idf.py efuse* commands in order to prevent accidental use of the wrong port (adbec6e)
- Tools: Removed old copy of Catch2 (catch). Catch2 is still available as a ESP-IDF component at ESP component registry. (392226b)
- Tools: Updated the minimal supported Python version to 3.10 (138336b)
- Tools: Removed the legacy unit-test-app. It can still be found at the Component Registry (ab2829d)
- WI-FI: Added second channel field in
wifi_action_tx_req_tstructure. (44a66c7) - 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: 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: esp_wifi_init returns ERROR if wifi already initialized(#13643) (34b0344)
- WI-FI: Removed enum values WIFI_BW20 and WIFI_BW_HT40 (3f57799)
Known Issues
- System Hardware/MSPI: Flash access might be unstable when using 80/40 or 40/80 Flash/PSRAM frequency combinations on ESP32-C61
Changelog
For full list of changes, please refer to ESP-IDF v6.0-rc1 Release Notes in Espressif 's release notes database.