ESP-IDF Release v5.1.4
Documentation for IDF v5.1.4 is available at https://docs.espressif.com/projects/esp-idf/en/v5.1.4/
ESP-IDF v5.1.4 is a bugfix update for ESP-IDF v5.1.3.
Obtaining v5.1.4
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 v5.1.4 --recursive https://github.com/espressif/esp-idf.git esp-idf-v5.1.4
cd esp-idf-v5.1.4/
This is the recommended way of obtaining v5.1.4 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v5.1.4.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.
This archive can also be downloaded from Espressif's download server: https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v5.1.4/esp-idf-v5.1.4.zip
Major changes
This is the list of changes since release v5.1.3:
Changelog
802.15.4
Fixed
- Fixed ieee802154 include header file issue and unused value issue (2fd087b)
Thread
Added
- Added state indicator in Thread examples (19dd338)
- Added cli support in openthread sleep example (54ad993)
Changed
- Enabled RCP uart configuration for BR by default (19dd338)
Fixed
- Fixed the race condition in rx buffer count operation (19dd338)
- Fixed openthread alarm timer calculation remaining_us overflow issue (1f1d252)
Bluetooth Low Energy (BLE)
Bluetooth Low Energy Controller
Added
- Added CCA related config option on ESP32-C6, ESP32-H2 and ESP32-C2 (07c17c6)
Changed
- Expanded the scan period to the maximum of 0xffff on ESP32C6, ESP32H2, and ESP32-C2. (07c17c6)
- Supported ESP32C2 light sleep using external 32.768 kHz oscillator at pin0 as slow clock source. (07c17c6)
Fixed
- Fixed occasional assert issue in modem sleep mode on ESP32C6 and ESP32H2. (9fe40d4)
- Fixed issue of slave latency applied when not receiving valid PDU on ESP32C6 and ESP32H2. (9fe40d4)
- Fixed HCI command status event send when LLCP busy on ESP32 (8519d3c)
- Fixed HCI command status event sending for disconnect command on ESP32 (8519d3c)
- Fixed LE transmitter test command parameters check error on ESP32 (8519d3c)
- Fixed an occasional assertion issue when enabling multiple periodic adv on ESP32-C2. (b0107bd)
- Fixed adv interval range limit error issue on ESP32-C2,ESP32-C6 and ESP32-H2. (b0107bd)
- Fixed an occasional assertion issue when disable controller on ESP32-C2. (b0107bd)
- Fixed Bluetooth not waking up due to internal 136k oscillator clock drift on ESP32C3 and ESP32S3 (c8d47c1)
- Fixed scheduling when modem sleep wakeup delayed on ESP32-C3 and ESP32-S3. (00db642)
- Fixed BLE IRQ FIFO overflow when enter critical on ESP32-C3 and ESP32-S3. (00db642)
- Fixed clock sync timeout when exit modem sleep on ESP32-C3 and ESP32-S3. (00db642)
- Fixed directed advertising with RPA when privacy is disabled on ESP32-C3 and ESP32-S3. (00db642)
- Fixed instant passed when connection parameters updating or PHY updating on ESP32-C3 and ESP32-S3. (00db642)
- Fixed BLE TX count in direct test mode on ESP32-C3 and ESP32-S3. (00db642)
- Fixed BLE modem sleep enter failed sometimes on ESP32-C3 and ESP32-S3. (00db642)
- Fixed BLE TX count in direct test mode on ESP32-C3 and ESP32-S3. (00db642)
- Fixed BLE modem sleep enter failed sometimes on ESP32-C3 and ESP32-S3. (00db642)
- Fixed an issue of occasional ACL data loss under multiple BLE connections on ESP32-C2. (07c17c6)
- Fixed an occasional assertion issue during slave connection in coexistence scenarios on ESP32-C2. (2622be4)
ESP Bluedroid Host
Changed
- Updated maximum BLE reconnection attempts configuration (7cfe227)
Fixed
- Example: Use correct struct type in discover service complete event (8519d3c)
- Example: Fixed UART HCI when flow control is off on ESP32-C3 and ESP32-S3. (2e9916b)
- Fixed BLE crash when repeatedly iniitialize and deinitialize host (b0fb3bb)
- Fixed BLE periodic advertising create sync parameters check error (b0fb3bb)
- Fixed crash when calculating GATTS database hash (8519d3c)
- Fixed "report" typo in esp_ble_gap_ext_adv_reprot_t (8519d3c)
- Fixed xQueueSemaphoreTask assert when deinit host during scan (69900de)
ESP NimBLE Host
Added
- Added documentation for p4 gpio pins configuration (0c26579)
- Added ble_host_rpa_enabled flag for address resoultion for ESP32 (5710425)
- Added menuconfig options for bleprph_host_only example (67c4eac)
- Added Gatt Caching support (956797e)
- Added usage of esp_timer_get_expiry_time to get current remaining ticks (9ddaaca)
- Added support to send and receive read multiple variable length characteristic request and response. (cac867d)
- Added observer role flag. (67c4eac)
- Added support for user to authorize GATT read or write operations. (67c4eac)
- Added support for more advertisement data AD Types. (67c4eac)
- Added support for Characteristic Presentation Format Descriptors. (67c4eac)
- Added support for Characteristic Aggregate Format Descriptor. (67c4eac)
- Added support for sending and receiving signed write commands using CSRK and Sign Counter. (67c4eac)
- Added APIs to support BLE DTM functions. (67c4eac)
- Added nimble-host only support over UART. (67c4eac)
- Added test API to show stack operations status (67c4eac)
Changed
- Updated help sections for BLE_RPA_TIMEOUT config. (dc384fc)
- Updated variable name to remove keyword. (67c4eac)
- Improved documentation for bleprph_host_only example. (13141a0)
- Increase range of reattempt connection count (c1f26cc)
- Added change to return success for API execution in "ble_sm_inject_io" (67c4eac)
Fixed
- Fixed type in blehr/README (#13034) (077a966)
- Fixed compilation error for strict-prototype enabled (a4916eb)
- Exposed macros used by the GAP service as menuconfig options. (f93025b)
- Exposed baud rate in the menuconfig. (e78e9a9)
- Handle memory leak in callout deinit (cac867d)
- Added the check to prevent address resolution in case of identity addr for ESP32 (cac867d)
- Fixed general and limited scanning to check relevent Flags AD Type. (67c4eac)
- Fixed allowing selective and auto connection establishment. (67c4eac)
- Added check to validate adv interval min /max range (67c4eac)
- Fixed out of order message causing DOS during SMP procedure. (67c4eac)
- Authorized or deauthorized a BLE device for a connection (67c4eac)
- Fixed signed write procedure using correct CSRK and message. (67c4eac)
- Changed 'move_count' to uint8_t type to fix compilation issue in nimble for -O2 flag (67c4eac)
- Fixed wrong #if guard in porting layer and UART configuration support. (67c4eac)
- Added change to return success for API execution in "ble_sm_inject_io" (956797e)
Removed
- Removed double free of l2cap packet in example (4677804)
- Removed duplicate hci_common.h file. (67c4eac)
BluFi
Fixed
ESP-BLE-MESH
Fixed
- Fixed the struct initialization to meet C++ requirements for BLE Mesh stack (7452f30)
- Fixed the struct initialization to meet C++ requirements for BLE Mesh examples (7452f30)
- Fixed using wrong type value for non-connectable adv in NimBLE Host adapter (d1ad4b5)
Bluetooth Common
Bluedroid
Changed
- Make the maximum number of bond devices to be configurable. (2e9916b)
Controller
Changed
- Added compile options
-ffunction-sections
and-fdata-sections
when building libbtdm_app.a, to allow to reduce code and data from executable on ESP32 (2d2bfc1) - Apply only necessary patches for Bluetooth controller ROM code according to Bluetooth mode on ESP32 in order to reduce IRAM consumption and binary size (2d2bfc1)
Classic Bluetooth
Classic Bluetooth Bluedroid Host
Added
- Added description of use limitations of security masks in SPP API document (603268e)
Changed
- Moved the memory allocation of HF AG control blocks to BTC module when option dynamic memory is enabled (e1eaa7b)
Fixed
- Fixed the dangling pointer in processing the list of bonded bluetooth device (f9db462)
- Fixed SPP connection failure due to out-of-sync status of application layer and BTU layer (69695c2)
Classic Bluetooth Controller
Fixed
- Fixed crash issue when doing Bluetooth deinit in coexistence scenario on ESP32. (7d16878)
- Fixed invalid transmission of LMP_MAX_POWER PDU in case that peer device is expected peer to increase TX power to maximum on ESP32. (7d16878)
- Fixed the loss of coexistence request event during sniff transition process due to insufficent of message queue length, which causes Bluetooth link disconnection in case of wireless coexistence on ESP32 (8519d3c)
- Clear sniff state in coexistence scheme when no connections exist on ESP32 (8519d3c)
Coexistence
Fixed
PHY
Changed
- Updated ESP32C3 PHY version to 1170, f4aea9b, Apr 30 2024. (9d8842f)
- Updated ESP32S3 PHY version to 670, b7bc9b9, Apr 30 2024. (9d8842f)
- Updated ESP32C6 PHY version to 290, 81efd96, May 8 2024. (9d8842f)
- Updated ESP32C2 PHY version to 320, 1f0ce9d, Mar 22 2024. (3826f2b)
- Updated ESP32S2 PHY version to 2500, 8368a9b, Mar 21 2024. (592b7a9)
- Supported multiple antenna for ESP32S2. (592b7a9)
Fixed
- Fixed PLL track when enabling and disabling PHY frequently. (4395683)
- Fixed BLE signal test issue. (3826f2b)
Wi-Fi
Changed
- Updated the LMK description in ESP-NOW documentation (#12976) (089113c)
- Smart Config: Removed rogue semicolon in
SMARTCONFIG_START_CONFIG_DEFAULT()
which was causing some build errors when used in C++ (#12867) (7365474)
Fixed
- Fixed the SPIRAM malloc issue in wifi mesh (#13285) (8af8f58)
- Fixed the crash when association request is processed before processing of STA confirm is completed (46d402d)
- Fixed DPP example init error by setting STA mode before DPP init (92a184d)
Wi-Fi MAC
Changed
- Refactor FTM code and added calibration for FTM in 40MHz Bandwidth (29f78ce)
- Added improvements in scan/connect path as per specifications along with bug fixes(#12517) (4bdbb79)
- Modified iperf sdkconfig to improve performance (e524ab1)
- Improved Wi-Fi connecting success rate at coexist scenario. (8d3b3df)
Fixed
- Fixed the issue that scan AP number not cleared when scan AP records cleared(69c8490)
- Fixed beacon timeout after restart (8d3b3df)
- Fixed Wi-Fi stop cost too much time at coexist scenario (8d3b3df)
- Fixed the bug in
esp_wifi_deauthenticate_internal()
and other improvements (3e526ef) - Fixed the issue that task watchdog got triggered in mplen clear (e524ab1)
- Fixed the issue that
esp_wifi_set_mode()
not returning error for invalid argument (e524ab1) - Used low rate to send DHCP offer and DHCP ack to avoid get IP fail (3991a98)
- Fixed QoS encapsulated EAPOL issue (3991a98)
- Fixed potential memory issue in wifi stop(may increase binary image by 2KB) (3991a98)
- Limited the number of AMSDU sub frame (3991a98)
- Fixed the crash issue during WiFi connect when AMSDU TX enabled (3991a98)
- Fixed
esp_wifi_scan_start
memory leakage issue (#10693) (4febc6e) - Fixed the issue that when station receive multicast frames with QoS field will fail to receive other frames in the same TID for a while (592b7a9)
- Fixed the issue that task watchdog got triggered by
esp_wifi_stop
(592b7a9) - Fixed AMPDU compatibility issue for some AP (24dc97b)
ESP-WIFI-MESH
Fixed
- Waited for child disconnect event when mesh deinit (69c8490)
Wi-Fi Supplicant
Added
- Added parameter to configure reason code of deauthentication frame (3e526ef)
- Added Kconfig option to free dynamic buffer used in Wi-Fi Enterprise (6481fdf)
- Added support to move supplicant BSS to external memory (f8a1cf9)
Changed
- Added change to allow calling esp_mbo_* APIs only when MBO config flag enabled. (e9fcccf)
Fixed
- Reduced memory footprint for scan when SAE-PK enabled (8b48f33)
- Fixed dereferencing a dangling function pointer in WPS (aead2f3)
- CVE-2023-52160 Updated phase2 requirement for WiFi PEAP authentication to required when client cert/private key not used. (819fbf9)
- Supplicant: Fixed compile error when CONFIG_SAE disabled (35d5ea1)
ESP Vendor Feature
Fixed
- Fixed smartconfig BSSID set issue (3991a98)
Ethernet
Added
- Added option to use SPI Ethernet modules in poll mode without interrupt. (#12682) (0cc6903)
- Added a timeout in Rx task when waiting for interrupt for KSZ8851. (0cc6903)
- Added functions to access MDIO Managed Devices (MMD) PHY registers (00d9861)
Fixed
- Fixed issue when Ethernet MAC didn't start after the second start/stop sequence when auto-negotiation disabled. (bf23680)
- Fixed reset timing of IP101 to align with datasheet. (e9ab9f3)
- Fixed SPI Ethernet _alloc_recv_buf error handling (ab894a1)
- Fixed W5500 flush received frame function (ab894a1)
Security
Changed
- Updated method for disabling HMAC to avoid unnecessary reset during disabling. (b884b37)
Fixed
- Fixed incorrect results for GCM operations that used non-AES ciphers using software fallback (7be8274)
- Fixed build failure and incorrect GCM hardware usage when
CONFIG_MBEDTLS_HARDWARE_GCM
is disabled (1b5d4f8) - Added additional protection for secure version check in anti-rollback case to avoid security bypass with physical access to flash (7003f1e)
Peripheral Drivers
Added
- RMT: Added help function to allocate the memory used by the encoder (#13032) (bfd1cfd)
- RMT: Support update bytes encoder configurations at runtime (#12775) (bb66e97)
Changed
- SPI Flash: Move config options that depends special flash models into
Main Flash configuration
menu (db2a037) - SPI Flash: Now HPM (Quad Flash > 80MHz), that rely on special flash model, needs users' manual confirmation by selecting
SPI_FLASH_HPM_ENA
(Read Programming guideSPI Flash API > Optional Features for Flash > High Performance Mode
First!) (db2a037)
Fixed
- Modbus: Fixed possible incorrect event processing in modbus slave examples (1a50f08)
- ADC: Fixed wrong results after ADC continuous mode stops and starts again on ESP32-C3/C6/H2/S3/S2/C2 (ba14fc2, 374e54c)
- ADC: Fixed disable adc will make temperature sensor crash (#12921) (c4f114d)
- Dedicated GPIO: Fixed the software UART driver to stop sending the dummy byte from the
emulate_uart_send
routine. (37e0e8a) - I2S: Fixed incorrect reg base name on ESP32-C3 (#12643) (92b25c0)
- MCPWM: Reset the generator GPIO after deleting (#12980) (6e44d4e)
- RGB LCD: Flush the PSRAM frame buffer after allocation (#13294) (50eea05)
- RGB LCD: Fixed the issue that the restart transmission can't work with RGB332 pixel format(#13020) (c48ddea)
- SDMMC: Fixed initialization process for certain cards in SPI mode (#6686, #10542) (b2123cc)
- SPI Flash: Fixed esp_flash_encryption_write slow speed (#12553) (f12d653)
- SPI Flash: Fixed wrong detected MXIC flash size (#12222) (96888a9)
- SPI Flash: Fixed issue that flash encryption failed while ROM_IMPL config is enabled, increases 1.2KB IRAM usage. (8aa5610)
- SPI Flash: Add check for safe write address in encrypted flash write API (35713b9)
- Temperature Sensor: Fixed the issue that value becomes incorrect after disable and enable (#12864) (c4f114d)
- Temperature Sensor: Fixed the issue that temperature sensor cannot change range smoothly on ESP32-H2 (226a4d3)
- UART: Added missing include for esp32/rom/uart.h (#13025) (19022e0)
- USB Host: USB host allows user to filter enumerated devices and set the device configuration during the enumeration (66e6e7c)
- USB Host: Fixed a issue in the USBH layer where multiple concurrent events on the same device would result in some of those events being dropped. (975a86b)
- I2C: Fixed timeout being overwritten when starting an I2C transfer (#4999) (d82b572)
Removed
System Hardware
Changed
- Improved voltage convergence of ESP32-C6 chips for better stability (76152c8)
Fixed
- Solved CLK calibration timeout problem caused by the wrong range of RTC_CLK_CAL_CYCLES. (59d686e)
- Fixed bbpll calibration fail bug for s3 to avoid TG0WDT_SYS_RESET. (4885b77)
- BOD: Fixed wrong threshold on ESP32-H2, the previous behavior is the triggered value is higher or lower than you set. (ffd34ba)
- Cache: Fixed wrong configuration for DCache 0 size condition which leads to startup crash on ESP32-S2 (96f4468)
Core System
Added
- Newlib: Added definition of aligned_alloc declared in stdlib.h (663d42f)
Changed
- Updated and added missing reset reasons for ESP32-C6 and ESP32-H2 (c2274f9)
Fixed
- Fixed the flash I/DROM region PMP entries for C6/H2 (590c650)
- Console: Fixed a bug in linenoise console where a negative prompt length can lock up the console, making it unresponsive and leading to a task watchdog timeout. (#4924) (51c263b)
- Interrupts: Fixed esp_intr_free when task has no core affinity (#12608) (b65563f)
- Heap: Fixed missing include in esp_heap_task_info.h (9f1922d)
- Heap: Fixed size propagated to allocation failed hook in heap_caps_calloc() (9abd010)
- Fixed the incorrect flash I/DROM region PMP entries for ESP32-C6/ESP32-H2 (d1c17f9)
- Fixed risky PMU initialization sequence at startup (a8f833a)
Debugging
Added
- Espcoredump: Added task watchdog panic output to the core dump ELF file. (9bada8c)
- Espcoredump: Enable SHA256 flash integrity verification for all targets (10a0dd5)
Changed
- Espcoredump: Moved the log strings from RAM to flash (cbfdec3)
Fixed
- GCOV: Avoid multiple tick hook registration (d8e82c3)
Low Power Features
Power Management
Added
- Support GDMA channel configuration retention in peripheral power down light sleep (44fa82c)
Changed
- Deep sleep current may decrease about 0.2uA on ESP32-C6 (76152c8)
- Light sleep current may decrease about 3uA when
top_on
andcpu_on
on ESP32-C6 (76152c8)
Fixed
- Fixed Fast Memory and Slow Memory may lost in sleep modes on ESP32-C3/ESP32-S3 (9eb22e6)
- Fixed a small probability of getting stuck when entering deep sleep without deinit wifi/bt on ESP32-C6. (368b7eb)
- Fixed the issue of modem hang caused by incorrect configuration of power and isolate signals in modem domain (a1471a9)
ULP
Added
Fixed
- ULP: Fixed an issue where the RTC I2C SDA and SCL lines were not initialized in open-drain mode. (b80a694)
- ULP: Fixed an issue where the LP I2C SDA and SCL lines were not initialized in open-drain mode. (#12969) (51b461e)
LWIP
Added
- Added fallback DNS server option to component configuration (69c8490)
Fixed
- Fixed compilation error in lwIP debug print formatting. (69c8490)
- Fixed DNS initialization to work correctly with FALLBACK_DNS_SERVER_ADDRESS() in IPv4 only mode (espressif/esp-lwip#62) (69c8490)
App Utils
Fixed
- Fixed esp_http_client_example build failure for ESP32-C6 (ebbacf4)
- Fixed esp_http_client digest auth without qop (13e7052)
- Fixed incorrect processing of HTTP header (#13497) (d1baafb)
HTTP Client
Fixed
- Fixed reset errno value to 0 before call esp_transport_read. (8fb370f)
App Update
Changed
- Updated
esp_ota_revoke_secure_boot_public_key
to validate the new app and the bootloader before key revocation. (fe5ccaf)
mbedTLS
Changed
- Updated mbedTLS to v3.5.2 (dcf187f)
Bootloader
Added
- Added legacy retained memory CRC calculation as an option (#12849) (44da2b9)
- Added a config to encrypt only the app image instead of the whole partition when flash encryption is enabled (#12576) (8b7bd28)
- Added API to verify bootloader/app image before revoking the secure boot key. (fe5ccaf)
Changed
- Flash: Move SPI Flash config options that depends on bootloader into bootloader submenu to make them more obvious (db2a037)
Fixed
- Fixed the value of the
image_length
field of the image metadata populated byesp_image_verfiy()
to include the size of the signature sector when Secure Boot V1 is enabled. (8b7bd28)
Storage
Added
- LittleFS: LittleFS demo example is added (f210386)
Changed
- NVS: Improved NVS initialisation by extending consistency check of multi page BLOBs (9706e5a)
Fixed
- Fatfs: Fixed issue where FatFs tried to trim on sd cards that did not support it (5059908)
- NVS: Fixed race condition during Lock class initialisation (9706e5a)
- NVS: Fixed buffer overrun in nvs_get_blob when reading from NVS partition containing inconsistent multi page BLOBs (9706e5a)
- VFS: Fixed select of eventfd: Add the judgment coditions of
event_start_select
to avoid relating the semaphore to unmonitored eventfd (19dd338) - VFS: Fixed some build errors when
CONFIG_ESP_CONSOLE_NONE
was enabled (#12984) (0417eec)
Tools
Fixed
- Fixed Access Violation Error on Windows with Python 3.12 (#13232) (0bef269)
- Fixed return codes in BAT scripts (46ba89c)
- Added additional Python environment checks (#13196) (1f1d2b0)
- Fixed support of gdbgui on Unix with Python 3.11 (#12764) (acec4e2)
- Removed extra new lines in saved command's output (stdout/stderr) on Windows, which may break hint processing (f85280f)
Build & Config
Removed
- Removed non-existent directories from chip-specific CMakeLists.txt in esp_hw_support (#12700) (ba155b0)
Documentation
Fixed
- Added missing semi-colons in the code blocks presented in the esp_event documentation. (#13156) (6c9b4e1)
- Fixed mistake in ESP Event API docs (#13346) (a8a178a)
- Fixed mistake (<= vs. <) in the heap allocator docs (#13353) (9ceabe7)
Removed
- Removed mentions of ULP in deep sleep example readme (#13340)