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

pre-release7 hours ago

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_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: 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_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: 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_FLASH Kconfig 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.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/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: 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/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_params to 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 returns ESP_ERR_NOT_FOUND for blank partitions instead of ESP_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_FLASH Kconfig 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. 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: Removed support for the user defined vPortCleanUpTCB() and the associated Kconfig option CONFIG_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_t to esp_sleep_gpio_wake_up_mode_t (d0f992c)
  • Low Power Features: Rename esp_deep_sleep_enable_gpio_wakeup to esp_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_back config 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_t enum type is refactored into shared_periph_module_t and only the modules that have multiple independent functions are kept. (f348a10)
  • 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: 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_malloc and esp_dma_capable_calloc functions are removed. The GDMA_ISR_IRAM_SAFE Kconfig 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_out public APIs. Please use gpio_iomux_input, gpio_iomux_output in 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/disable to gpio_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 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: 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_mode member in the mcpwm_generator_config_t configuration 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_mode member in the rmt_tx_channel_config_t configuration 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_duty has been removed. Use sdm_channel_set_pulse_density instead. (5d4d12f2)
  • 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/SD_HOST/SDMMC: Removed deprecated API esp_vfs_fat_sdmmc_unmount (a4c03ce)
  • Peripheral Drivers/SD_HOST/SDMMC Changed public requirement to esp_driver_gpio to 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_SHARED as interrupt flag during initialization. (28999c8)
  • 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/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: 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_t and esp_flash_os_functions_t are 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 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/UART: The esp_rom_uart.h is deprecated and replaced by esp_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 APIs psa_initial_attest_get_token and psa_initial_attest_get_token_size instead. (ee2da28)
  • Security: TEE secure storage no longer supports operations involving ECDSA secp192r1 keys (ee2da28)
  • Security: Moved security specific hal code to esp_hal_security (78464df)
  • Security: The APIs esp_tee_sec_storage_aead_encrypt() and esp_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_t represents an hardware-backed HMAC opaque key. Applications can populate this structure and import it via psa_import_key(), enabling all HMAC operations through standard PSA Crypto APIs instead of using the esp_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() 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/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: 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: 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() and esp_ecdsa_tee_set_pk_context() have been deprecated and removed. The legacy esp_ecdsa_pk_conf_t configuration is replaced by esp_ecdsa_opaque_key_t, which represents an hardware-backed ECDSA opaque key. Applications can populate this structure and import it via psa_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 the psa_crypto_driver_esp_rsa_ds driver through the PSA crypto interface. Applications using DS peripheral with ESP-TLS must enable the Kconfig option MBEDTLS_HARDWARE_RSA_DS_PERIPHERAL to enable hardware-accelerated RSA digital signature operations. The ESP-TLS API remains unchanged - applications continue to use esp_tls_cfg_t with ds_data field, 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_mount and esp_vfs_fat_sdspi_mount now return ESP_ERR_INVALID_ARG if 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 vfs component, 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.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: 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=y will build a incompatible binary. Append CONFIG_ESP32P4_SELECTS_REV_LESS_V3=y to 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 gdbgui command can still be used, provided that the gdbgui tool 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_t structure. (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.

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.