ESP-IDF Release v5.1
Documentation for IDF v5.1 is available at https://docs.espressif.com/projects/esp-idf/en/v5.1/
ESP-IDF v5.1 is a minor update for ESP-IDF v5.0. Release v5.1 is mostly compatible with apps written for ESP-IDF v5.0.
Obtaining v5.1
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 --recursive https://github.com/espressif/esp-idf.git esp-idf-v5.1
cd esp-idf-v5.1/
This is the recommended way of obtaining v5.1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v5.1.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/esp-idf-v5.1.zip
Major changes
This is the list of changes since release v5.0:
Major Features
- ESP32-C6 support status
- ESP32-H2 support status
- Bluetooth: Bluetooth support use main XTAL in light sleep mode on ESP32-C3/ESP32-S3 (33f1747)
- Bluetooth: Supported Bluetooth to release .bss and .data segment memory on ESP32-C3 and ESP32-S3 (d530630)
- Bluetooth: Supported Bluetooth to release .bss and .data segment memory on ESP32-C2 (8ea3865)
- NimBLE: Added stack support for LE Power Control (8facf6f)
- NimBLE: Migrated to nimble-1.5 (07d8862)
- Wi-Fi: Added WPS registrar support in SoftAP mode. (f27a95c)
- Wi-Fi: Added support for SAE-PK (Public Key) authentication for station. (e44c7fb)
- Wi-Fi: Added support of WPA3 Personal (SAE) in SoftAP. (146a5c4)
- Wi-Fi: Added Wi-Fi Aware (NAN) support(currently only ESP32/ESP32S2 support)(d5f53fb)
- Wi-Fi: Added support for WPA2/WPA3, mixed mode for SoftAP. (146a5c4)
- OpenThread: Added support of Ethernet interface for Openthread br (6ca5db1)
- OpenThraed: Supported CSL feature (bb9200a)
- OpenThread: Supported Link Metrics feature (bb9200a)
- OpenThread: Added SPI support in Radio Co-Processor (c0097c1)
- Coexistence: Added external coexistence(leader mode) support on ESP32-S3 and ESP32-C2 (895d97d)
- Coexistence: Added external coexistence(follower mode) support on ESP32-C2 (895d97d)
- Coexistence: Added force RX mode in external coexistence on ESP32-C2 (895d97d)
- ULP: Added support for RTC I2C to ULP RISC-V on ESP32-S2 and ESP32-S3 (867745a)
- WDT: Support Interrupt WDT and Task WDT on ESP32-C2 (4f1a9e4)
- GDB Stub: Added support for GDB Stub on ESP32-C2 (6020bb0)
- pthreads: Added POSIX semaphore implementation (6382fc3)
- espcoredump: Added ESP32-C2 target support (47fa643)
- espcoredump: Added support for stacks in external RAM for all targets (5eb8def)
- Analog Comparator: Introduced the driver of the analog comparator on ESP32-H2 (2d14ba2)
- DAC: Introduced new DAC driver, oneshot mode, continuous mode and cosine wave mode are supported on ESP32 and ESP32-S2. Legacy DAC driver in dac.h has been deprecated but still available. The legacy channel enums DAC_CHANNEL_1 and DAC_CHANNEL_2 are deprecated, please use DAC_CHAN_0 and DAC_CHAN_1 instead (9bc2d15)
- esp_etm: Support allocating ETM channels dynamically and extensions for GPIO, GPTimer (fefe6f3)
- GPTimer: New example to capture HC-SR04 sensor by GPTimer and ETM channel (fefe6f3)
- I2S: Supported 4-line PDM RX on ESP32-S3 (48b23b7)
- LEDC: Supported LEDC gamma curve fade new feature on ESP32-C6 and ESP32-H2, and added a new relevant ledc_gamma_curve_fade example (3ec287e)
- MMU: Added new component esp_mm for memory management, added memory mapping APIs in esp_mmu_map.h (1c69929)
- Cache: Added an API to synchronize data between Cache and external memory, on Cache writable chips (ESP32S2, ESP32S3) (a9ce760)
- Parlio: Added parallel IO TX driver for ESP32-C6 and ESP32-H2 (14555a1)
- Parlio: Added a simple RGB LED Matrix example based on the Parallel IO TX driver (14555a1)
- RGB_LCD: Support RGB-YUV data format conversion (e2634b5)
- spi_flash: Octal flash and Quad flash mode can be detected automatically in run time. Enabling this feature reduces available internal RAM size by about 900 bytes (cb28fcf)
- USB Host: Added support for UVC Host Class (see the UVC Host Class Driver component for more details) and accompanying example (#6493, f161184)
- USB: Added Mass Storage Device example (a9e40f6)
- Added a new chip version logic (major * 100 + minor) (c546de8)
- Semihosting: VFS semihost additional syscalls implemented (38acc3f)
- VFS: VFS semihost additional syscalls implemented. (38acc3f)
- ESP Partition/Linux: Added support for non default file emulating flash memory (6987526)
- sysview: Added FreeRTOS SMP port (1a006cb)
- Tools: Added QEMU with xtensa chip support to the Docker image (ccc7846)
Major Bug Fixes
- Flash MMAP: Fixed issue that only only limited vaddr ranges can be mapped to instructions/rodata on Flash on ESP32-S2, C3, S3, C2 (#10373, 1c69929)
- MSPI: Fixed timing tuning issue for 80MHz Octal PSRAM on ESP32S3, which would lead to system stall at early stage (34e5a80)
- MSPI: Fixed timing turning issue on high frequency lead to crash when entering sleep on ESP32-S3 (3b62bf5)
- Fixed POWER ON reset when using RTC IO as input in deepsleep on ESP32-S2/ESP32-C3/ESP32-C2 (cfcb573)
- Fixed RTC memory lost in high temperature in deepsleep on ESP32-S2/ESP32-C3 (cfcb573)
- Support 8MD256 as RTC slow clock work properly ESP32-S2/ESP32-C3/ESP32-C2/ESP32 (cfcb573)
- Fixed dangerous power parameters in sleep modes on ESP32-S2 (cfcb573)
- PHY: Fix the iPhone disconnects immediately after connecting when BLE and wifi coexist on ESP32-C3 and ESP32-S3 (e8dba71)
Breaking Changes
- bootloader_support: The API bootloader_common_get_partition_description has now been made private, the alternative function esp_ota_get_partition_description should be used (a2f028a)
- SDMMC/SDSPI: SD cards accept custom frequencies, not only fixed values 20 MHz or 40 MHz. See Storage migration guide for details (7d28aba)
- ESSL: The esp_serial_slave_link is removed from the esp-idf components. Now user should use the component manager to pull it in. See example examples/peripherals/sdio/host/main/idf_component.yml for more details (03d8059)
- Sleep: esp_light_sleep_start now returns two error num when sleep fails: ESP_ERR_SLEEP_REJECT and ESP_ERR_SLEEP_TOO_SHORT_SLEEP_DURATION (f191b2f)
- Storage: All the partition handling APIs and data-type definitions have been moved from the 'spi_flash' to the new component 'esp_partition'. See Storage 5.x migration guide for more details (b14116f)
- esp_chip_info() returns the chip version in the format = 100 * major eFuse version + minor eFuse version. (c546de8)
- Wi-Fi: Modified maximum SoftAP connection number and ESPNOW encrypted connection number. (d89a512)
- Wi-Fi: Changed ESP-NOW receive callback function type (esp_now_recv_cb_t). This change is made to fix potential security issues mentioned in #8574. (8223a59)
- ADC: No longer support ADC2 continuous (DMA) mode on ESP32-S3 and ESP32-C3, search for errata on Espressif website to know more details. Users can force use it by enabling ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 (6569be4)
- ADC: No longer support ADC2 oneshot mode on ESP32-C3, search for errata on Espressif website to know more details. Users can force use it by enabling ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 (6569be4)
- I2S STD: Enabled left_align in the default slot configuration. For the default and most used case, data_bit_width equals to slot_bit_width, which means left_align does not matter in this case
For the case that data_bit_width is shorter than slot_bit_width, enabling left_align is a quite typical usage for almost all the codecs. (190e9e7) - NimBLE: Updated return type for nimble_port_init / nimble_port_deinit functions. (9916eb6)
- IDF: All dynamic memory allocated by FreeRTOS now defaults to internal memory. To allocate FreeRTOS objects in special memory (e.g., external memory), please use one of the CreateWithCaps() functions in #include "freertos/idf_additions.h" (daf4150)
Known Issues
- In ESP32-C6, there is a small chance of core dump when it sends advertisement and scanning
- In ESP32-C6, DUT might crash or disconnect with AP when light sleep is enabled
- On ESP32-C6, sometimes chip can't wakeup under low temperature, RTC memory lost under high temperature, unexpected power on reset when GPIO wakeup enabled in Deep-sleep. Can't wakeup properly under high temperature from Light-sleep
- When using the FPU from multiple tasks on the same core there is a change that the FPU state will be corrupted, causing invalid results. Issue affects ESP32 and ESP32-S3 (#11690)
Changelog
802.15.4
Added
- Added support for ESP32-H2 MP chip (63d0494)
- esp_phy: Added API esp_btbb_disable to be used by 802.15.4 and Bluetooth (e797a06)
- Open source driver code (0be6802)
OpenThread
Added
- Support NAT64 ICMP (5573d13)
- Added some flash optimization options (45fb699)
- Added support of Ethernet interface for Openthread BR (6ca5db1)
- Added 802.15.4 and Thread support for ESP32-C6 (2ce330b)
- Added support for ESP32-C2 BR and ESP32-C6 BR (radio spinel uart) (46a1165)
- Supported CSL feature (bb9200a)
- Supported Link Metrics feature (bb9200a)
- Added SPI support in Radio Co-Processor (c0097c1)
- Added the default DNS server address configuration (96e1f6e)
- Supported border router to communicate with the SSED. (7492e0a)
- Supported border router to response the link metrics registration. (7492e0a)
- Added kconfig for mac filter. (ea5e0ff)
Fixed
- Fixed frame counter when re-transmition. (ea5e0ff)
Zigbee
Added
- Added Zigbee support for ESP32-C6 (83d1bed)
- Supported esp32c6 single chip zigbee gateway solution (d6767c2)
- Added wifi example_connect for zigbee gateway (d6767c2)
- Supported ESP32-H2 MP chip (cc3e709)
- Updated the example use ZDO API function. (a63a73a)
Bluetooth
Controller
Added
- ESP32-C3/ESP32-S3: bluetooth support use main XTAL in light sleep mode (33f1747)
Changed
- Updated phy lib for ESP32C2, ESP32C3 and ESP32S3 (cea6614)
- Optimized the coexist on ESP32 under sniff and iscan/pscan (51c682c) and BLE initiation (51c682c)
Fixed
- Fixed the issue of Bluetooth disconnection due to not backing up Bluetooth AGC related registers when light sleep is enabled and baseband power down on ESP32-C3 and ESP32-S3 (6f677de)
- Fixed BR/EDR connection fail in coexistence on ESP32 (51c682c)
Bluetooth Low Energy
Added
- Added Periodic Advertising ADI Feature on ESP32-C2 (74abb42)
- Added APIs to set and get the ble tx power on ESP32-C2 (8d9c51f)
- Supported Bluetooth to release .bss and .data segment memory on ESP32-C3 and ESP32-S3 (d530630)
- Supported Bluetooth to release .bss and .data segment memory on ESP32-C2 (8ea3865)
- Added config to disable scan backoff on ESP32-C3 and ESP32-S3 (4a3319d)
- Enabled BLE PLL track to fix bluetooth disconnection caused by temperature rise or fall on ESP32C3 and ESP32-S3 (cea6614)
- Support bluedroid host maximum number of connections to 9 on ESP32-C3 and ESP32-S3 (18e0cd6)
- Added config to set duplicate scan list refresh period on ESP32 (af9dcc4)
- Supported BLE for ESP32-C6 (bdf3001)
- Supported BLE for ESP32-H2 (3ab20c1)
- Support ESP32-C3 and ESP32-S3 new BLE lib (ad1999f)
Changed
- Updated BLE TX power level mapping on ESP32-C3 and ESP32-S3 (4f4edef)
- Updated coexist module for ESP32-C2 (8d9c51f)
- Reduced the RAM size of npl_os_freertos.c file on ESP32-C2 (afeb7db)
- Modified ESP32-C2's default BLE TX power (afeb7db)
- Changed BLE default TX power from 3dBm to 9dBm on ESP32-C3 and ESP32-S3 (4a3319d)
- Unified the controller internal error code on ESP32-C2 (f0fd0b7)
- Merge ESP32-C3 and ESP32-S3 BLE bt.c, esp_bt.h and kconfig files to one (fe979e6)
- Disabled controller 5.0 feature bits if host 5.0 feature is not enabled on ESP32-C3 and ESP32-S3 (ad1999f)
- Changed default TX power to 9 dBm on ESP32 (cd5ce86)
- Set default instance value to 6 on ESP32-C3 and ESP32-S3 (b6fda97)
Fixed
- Fixed the issue that the output power level wasn't correct on ESP32-C2 (74abb42)
- Fixed the occasional issue that adv pdu won't tx at the secondary channel when multiple adv instances are enabled on ESP32-C2 (74abb42)
- Fixed the occasional assert error when send long data by periodic adv on ESP32-C2 (74abb42)
- Fixed the occasional sync lost issue on ESP32-C2 (74abb42)
- Fixed wrong offset adjust bit in ll_periodic_sync_ind pdu on ESP32-C2 (74abb42)
- Fixed wrong NESN/SN issue on ESP32-C2 (74abb42)
- Fixed the issue that the peer device may disconnect due to MIC Failure(0x3D) on ESP32-C2 (74abb42)
- Fixed ble sch_arb assert on ESP32-C3 and ESP32-S3 (4f4edef)
- Fixed occasional disconnection due to MIC Failure(0x3D) on ESP32-C2 (8d9c51f)
- Fixed connection packet segmentation error on ESP32-C2 (8d9c51f)
- Fixed disconnection issue when no memory was left on ESP32-C2 (8d9c51f)
- Fixed the performance issue of BLE sync scan in coexistence scenario when PLL track is enabled on ESP32-C3 and ESP32-S3 (e2f57ec)
- Fixed connect failed due to error sync found signal on ESP32-C3 and ESP32-S3 (e2f57ec)
- Fixed BLE disconnect failed due to terminate_ind have sent but no ACK is received on ESP32-C3 and ESP32-S3 (e2f57ec)
- Added ADV mode error check in ADV rx isr handler function on ESP32-C3 and ESP32-S3 (e2f57ec)
- Fixed BLE RAL_UNDERRUN and TX_CRYPT_ERR assert on ESP32-C3 and ESP32-S3 (e2f57ec)
- Fixed the issue that the mbuf can't be obtained when mtu is too small on ESP32-C2. (5aeba87)
- Fixed BLE disconnection issue when channel map instant passed due to bad channels on ESP32-C3 and ESP32-S3 (02aad58)
- Fixed the issue that lower power mode can't be entered after closing bt on ESP32-C2. (292fe7c)
- Fixed the issue that wifi connection fails after bt sleep mode is enabled on ESP32-C2. (292fe7c)
- Fixed repeatedly data length set error on ESP32-C2 (5a83ed8)
- Fixed second bonding fail issue on ESP32-C2 (5a83ed8)
- Fixed the hci event length overflow issue on ESP32-C2 (5a83ed8)
- Fixed occasional crash when coexisting with WiFi sleep on ESP32-C2 (5a83ed8)
- Fixed light-sleep enter issue on ESP32-C2 (c61910c)
- Fixed the issue that master sends retransmitted data incorrectly on ESP32-C2 (f881197)
- Fixed BLE ASSERT_PARAM(32 0) in rwble.c at line 384 on ESP32 (1308ff3)
- Fixed BLE lld_per_adv.c line 401 assert on ESP32-C3 and ESP32-S3 (0fa55c8)
- Fixed memory leak issue when modem sleep is enabled on ESP32-C2 (55eaf66)
- Fixed occasional crash during scanning on ESP32-C2 (6e65b61)
- Fixed occasional failure to establish sync on ESP32-C2 (b313d7e)
- Fixed occasional wdt timeout on ESP32-C2 (b313d7e)
- Fixed BLE array access out of bounds on ESP32-C3 and ESP32-S3 (203596f)
- Fixed llm_scan.c assert at line 1485 during controller deinit if extend duplicate scan is not stopped on ESP32-C3 and ESP32-S3 (4a3319d)
- Fixed memory leak when RAM free size is insufficient on ESP32-C2 (7869f4e)
- Fixed memory leak when setting ext scan parameters failed on ESP32-C2 (7869f4e)
- Fixed interrupt latency when cache is disabled on ESP32-C2 (7869f4e)
- Fixed occasional assertion when stop periodic adv on ESP32-C2 (7869f4e)
- Fixed lld_con.c line 3048 assert on ESP32-C3 and ESP32-S3 (18e0cd6)
- Fixed crash sometimes when connected as a slave by 8th device on ESP32-C3 and ESP32-S3 (18e0cd6)
- Fixed some memory was not released after Bluetooth controller initialization failed on ESP32 (bf3a9a1)
- Fixed some memory was not released after Bluetooth controller initialization failed on ESP32-C3 and ESP32-S3 (6842d2f)
- Overwrite the oldest device information if the list is full on ESP32 (af9dcc4)
- Fixed duplicate scan period is not accurate on ESP32 (af9dcc4)
- Fixed hci uart flow ctrl error on ESP32-C2 (e58181b)
- Fixed BLE disconnect due to channel map update instant passed on ESP32 (1002ad1)
- Fixed the issue that adv stops abnormally when the same device initiates two connections on ESP32-C2. (50ae186)
- Fixed the issue of abnormal reporting of connection update complete event on ESP32-C2. (50ae186)
- Fixed the occasional assertion when the controller is disabled on ESP32-C2. (20cc537)
- Fixed the occasional packet loss issue on ESP32-C2. (b43cde7)
- Fixed extend ADV parameters check for ADV_DIRECT_HI on ESP32-C3, ESP32-S3 (ad1999f)
- Fixed the occasional assertion when the BLE sleep is enabled on ESP32-C2. (08b4bd2)
- Fixed that functions "coex_enable" and "coex_disable" are not used in pairs on ESP32-C3, ESP32-S3, ESP32-C2 (43f5f3d)
- Fixed disconnect reason 0x1f (unspecified error) on ESP32 (cd5ce86)
- Fixed connection timeout due to LL_TERMINATE_IND has not been acknowledged on ESP32 (cd5ce86)
- Fixed privacy error for directed advertising on ESP32-C3 and ESP32-S3 (be7f20e)
- Fixed multiple periodic advertising sync failed in air on ESP32-C3 and ESP32-S3 (be7f20e)
- Fixed BLE HW RAL_UNDERRUN assert on ESP32-C3 and ESP32-S3 (6cac537)
- Fixed BLE connection terminated due to MIC failure during encryption procedure on ESP32-C3 and ESP32-S3 (7fcba0f)
- Fixed BLE connection failed to be established when disabled 5.0 feature on ESP32-C3 and ESP32-S3. (b3b85ca)
- Fixed duplicate scan refresh cycle is not accurate after restarting scan on ESP32 (3ae079a)
- Fixed disconnection due to consecutive CRC errors in first 6 intervals on ESP32 (3ae079a)
- Fixed non-connectable and non-scannable directed adv can't be scanned on ESP32-C3 and ESP32-S3 (36d6a92)
- Improved scan performance when scan and sync coexist on ESP32-C3 and ESP32-S3 (36d6a92)
- Disable controller 5.0 feature bits if host 5.0 feature is not enabled on ESP32-C3 and ESP32-S3 (36d6a92)
Removed
- Removed redundant pm_lock on ESP32-C2. (f0fd0b7)
Classic Bluetooth
Fixed
- Fixed the exhaustion of ACL buffer in case of connection-disconnection stress test on ESP32. (19759d5)
- Fixed the duplicated reports of HCI_Connection_Request event from the same Bluetooth device on ESP32. (19759d5)
- Fixed the issue that Wi-Fi task can be blocked by Bluetooth Controller because of the use of blocking coexistence callback function on ESP32 (0ebae99)
- Fixed bt sleep flow hangs in btdm_sleep_clock_sync on ESP32-C3 and ESP32-S3 (236a530)
- Fixed disconnection due to unhandled lmp_unsniff_req in LC_WAIT_SNIFF_SUB_RSP state on ESP32 (6ede152)
- Fixed a crash issue due to supervision timeout being less than the clock interval between two sniff subrating anchors on ESP32 (6ede152)
- Fixed crash after controller disable and re-enable on esp32 (a12e124)
- Fixed the crash caused by processing the HCI_Read_Remote_Extented_Features command in the non-connected state on ESP32 (a12e124)
Bluedroid
Fixed
- Fixed Bluedroid compile errors after setting CONFIG_ESP_SYSTEM_USE_EH_FRAME=y on RISC-V SoCs (0591695)
Bluedroid
Fixed
- Fixed Bluedroid compile errors after setting CONFIG_ESP_SYSTEM_USE_EH_FRAME=y on RISC-V SoCs (0591695)
Classic Bluetooth
Added
- Added esp_spp_enhanced_init() API to indicate whether to enable Logical Link Control and Adaptation Layer Protocol enhanced retransmission mode (4b2ac6c)
- Added esp_spp_vfs_unregister() to free memory allocated by esp_spp_vfs_register() (7b1bbd5)
- Added report of ACL link connected and disconnected event to upper layer for GAP (7d7a710)
- Added report of response code for AVRCP passthrough command (9c18970)
Changed
- Updated A2DP version to v1.4 (1ac3595)
- Updated HFP version to v1.8 (1ac3595)
- Changed the SR_mode selection when the pager knows nothing about the paged device's SR mode. (706a2c7)
Fixed
- Fixed union member access typos for parameters for security-related callback events (#9498, 68bd2ba)
- Fixed the failure of 'connect audio' operation in HFP examples with default SDK configuration. (1c25086)
- Fixed A2DP sink device not being able to accept and decode mono channel audio stream (a026d98)
- Fixed deadlock due to wrong parameter when calling btc_transfer_context() after calling esp_bluedroid_disable().(#9672, 4eb98ad)
- Fixed the issue Bluetooth Classic connection can not be created while there is an active Bluetooth LE connection, resulted from LMP procedure deadlock. (35faecc)
- Fixed incorrect description in macro BT_CONTROLLER_INIT_CONFIG_DEFAULT(). (e0580d2)
- Fixed esp_spp_write() crash when the length of data to send. (af3e6d6)
- Fixed L2CAP enhanced retransmission mode tx window size being too large causing memory exhaustion in case of multiple SPP connections. (d938cb7)
- Fixed the error in parsing CLCC command response bug on HFP client (6a8f528)
- Fixed HID Host improper handle of freeing resource in esp_hid component (11fde1a)
- Fixed authentication failure by changing pin_type of Legacy Paring from FIXED to VARIABLE. (#10005, 2024e44)
- Added compatibilities with devices that do not support Secure Simple Paring. (#10069, 2024e44)
- Fixed the use of invalid configuration when the peer device configures the stream, and returned an incorrect error code (1ac3595)
- Fixed A2DP failing to connect again after disconnected (3601243)
- Fixed memory leak due to not freeing memory if posting a message to a thread fails (12180da)
- Fixed memory leak when SPP initialization failed (7b1bbd5)
- Fixed HID Device can not remove virtually cabled device without a connection (df5c1ff)
- Fixed crash caused by accessing nullptr in btm_acl_disconnected (068fec4)
- Fixed SDP BTA_SDP_REMOVE_RECORD_USER_EVT event status overridden by handle. (#10607, fb19027)
- Fixed build errors when sniff subrating is enabled. (2c3fe88)
- Fixed HID Host bug when handling the two consecutive connection request (1f05281)
- Fixed LoadProhibited issue caused by invalid operation on list node in handling hci_hardware_error event. (a15c36f)
- Fixed memory leak in AVDT delay report for A2DP. (defae70)
- Fixed out-of-bound array access in HFP-AG. (0fc51ea)
- Fixed the problem of memory access out-of-bounds in HFP caused by the variable-length array introduced in 3268075. (#11264, 8b7cd4d)
- Fixed the issue in A2DP source example that the a2dp source would not send the media start command due to the connection initiated by the peer device.(#11170, 2010d70)
- Fixed the crash of A2DP source when it connects to Bose speaker. This is caused by the crossed incoming- and outcoming-AVDT procedures and solved by separating the processing of the different directions. (0ed8499)
- Fixed the off-by-one error of indicator value in HFP in handling "+CIEV" AT command. (#6486, 4db113a)
Removed
- Removed audio cache in BTC layer of Bluedroid and added flow control for audio data in application layer. (55f92ec)
- Removed SPP default send buffer size option and add parameters to configure send buffer size in esp_spp_enhance_init() (4b2ac6c)
- Removed -Wno-format compile option for bluedroid classic bluetooth examples (7269f3c)
Bluetooth Low Energy
Added
- Supported BLE Micro definition in a header file (bd0904c)
- Supported LE GATT service database hash calculate (84e48db)
- Supported LE GATT robust caching feature (84e48db)
- Supported LE periodic advertising sync transfer (84e48db)
- Supported LE L2CAP credit based connection (84e48db)
- Supported SMP OOB pairing for LE secure connection (84e48db)
- Added internal GATT API for BLE PTS (84e48db)
- Added characteristics for LE GAP and GATT service (84e48db)
- Added API to get the name of bluetooth device (a8f66c6)
- Added parameters for GATT connect event (732df63)
- Supported BLE notify and write throughput test at the same time (fdc92ef)
- Supported BLE privacy by controller (e0e3700)
Changed
- Configurable option to modify max GATT service attributes count on bluedroid. (e2d488c)
- Reduced the stack consumption of BTU_TASK, saving 609 bytes (c9b4f19)
Fixed
- Fixed bluedroid host ATT Ignore wrong response error sometimes (b6fda97)
- Enable BT_BLE_RPA_SUPPORTED If target is not ESP32 (b6fda97)
- HID: Fixed esp hid crash when authentication failed on bluedroid. (88b71f6)
- Fixed ble generate RPA for ESP32 on bluedroid. (7908025)
- Fixed calling esp_ble_get_cur_sendable_packets_num() sometimes crashes when bluetooth is disconnecting (735063c)
- Fixed extend ADV TX power range error (09f7589)
- Fixed BLE resolvable private address generate and update on bluedroid. (6014e92)
- Fixed BLE advertising TX power map on bluedroid (76834a7)
- Allow bluedroid host to report ADV_IND separately (3b20bc7)
- Configurable max GATTC cache characteristic count on bluedroid. (a5e1924)
- Correct the length of ATT_READ_BY_TYPE_REQ PDU (2cbc83a)
- Fixed the unexpected memory free when malloc failed. (2d2d0ba)
- Fixed a bug in the linker fragment file that made BSS part, marked by bt_bss_start and bt_bss_end, empty. (8e9b1e8)
- Fixed encrypt keysize of GATT characteristic permission (6d67601)
- Fixed BLE HID LED output report. (5a09f71)
- Fixed BLE connection update with the same parameters (250f2c4)
- Fixed GATT multiple notifications and robust caching (c08cd91)
- Fixed BLE address type of advertising and scan parameters (e0e3700)
- Fixed the bluedroid hci crash due to insufficient memory on ESP32-C2 (1157657)
- Fixed state conflict between advertising and scanning (251e0c5)
- Fixed extend advertising set remove failed (4f4edef)
- Fixed ble_compatibility_test example NVS init error (4a3319d)
- Fixed sometimes BTU task overflow when doing read and write performance test (4a3319d)
- Fixed BLE extended advertising random address setting for NRPA (7fcba0f)
- Fixed BLE advertising data construct for device name (7fcba0f)
- Fixed BLE SMP key distribution setting (7fcba0f)
- Fixed battery profile wrong condition in bluedroid host (8a08cfe)
- Fixed no error report when own address type is rpa_random and no random address setting (8a08cfe)
- Report status when clearing the BLE whitelist is complete. (1644050)
- Fixed saving GATTC cache with the same device address. (1644050)
Removed
- Removed -Wno-format compile option for bluedroid BLE examples (a78d6a1)
NimBLE
Added
- Added extra allocation for data pointer returned by the controller for ESP IP (6396122)
- Added check to not include VHCI buffer handling code if controller support is disabled (f03ec22)
- Added an example framework for BLE PHY (e83b6a2)
- Added an example support for ble periodic adv. (c51d4ab)
- Added check to deregister stack callback with controller during stack deinit (2ec9f47)
- Support to expose blufi handler for external BLE application (6f806e1)
- Added init deinit of nimble stack in a loop (6a8810f)
- Added stack support for Connection subrating feature (a6251da)
- Added support for HCI Commands / Events for LE Power Control (8facf6f)
- Support Nimble host maximum number of connections to 9 on ESP32-C3 and ESP32-S3 (7b08933)
- Helper macro added to set perdiodic adv interval (f301284)
- Added return value (success / failure ) to nimble_port_init (9916eb6)
- Added custom gatt server functionality (2538270)
- Handle larger controller buffer size during data transfer (67f88ae)
- Added pcl demo in blecent app (d013bed)
- Added code to retry for memory allocation if previous allocation attempt fails for a Rx packet handling. ( e63f609)
- Added debug related code under debug flag to improve throughput (a945b85)
- Added support for writing data more than BLE_ATT_ATTR_MAX_LEN (e32083c)
- Added power control specific SOC capability (f1084c2)
- Added Walkthrough tutorial for phy_prph example (#11034) (6e1d60e)
- Added demo usage of write blob in ble phy application. (224b88c)
- Added configurable option for resolving peer address in bleprph example (720af16)
- Added heart rate measurement service (d6f49be)
- Added support for writing data more than BLE_ATT_ATTR_MAX_LEN (e32083c)
- Added multi advertising example (409e788)
- Added an example of Bluetooth LE using auto light sleep (57b31ed)
Changed
- Added change for extra allocation in header for ACL data for newer chips. (84bbb2a)
- Updated debug level for a print to avoid unwanted console log. (f57356f)
- Updated nimble examples structure (c828055)
- Updated README file of BLE PHY prph example (a48cd1e)
- Re-ordered the function sequence in stack deinit to be reverse of stack init process (f39869f)
- Make BLE_UUIDxx_INIT macros c++ compatible (e085cfd)
- Changed GATT notify/indicate from gattc to gatts (2a6e789)
- Updated check for reattempt connection code (858c5e2)
- Updated Mesh example documentation (af953e4)
- Updated functions related to adding and clearing peer_dec_rec table. (5c8263a)
- Updated ble_l2cap_coc nimble example (f6ec69a)
- Updated NimBLE submodule to latest upstream release 1.5.0 (07d8862)
- Changed the component path to relative in IDF examples ( PR #10797, 60a7fe9)
- Improved existing bleprph implementation and added bugfixes for bleprph application (30a46d0)
- Updated example configuration setting for BLE ext advertising. (8fc0343)
- Updated README file for nimble examples (414b06e)
- Reorganized Nimble examples structure (c828055)
- Selected NIMBLE host by default for ESP32-C2 blufi example (7232c0e)
Fixed
- Fixed memory corruption introduced in reconnection attempt code (fbf0dff)
- Solved the memory leak issue while doing init and deinit of blufi example for ESP32-C2. (728654a)
- Allocate memory for ext adv reports packets from lower priority pool (23cac26)
- Fixed freeing up of same memory address twice in L2CAP COC example. (9748158)
- Fixed clearing of connection_handle array in spp_server example (dd19ec3)
- Fixed README of SPP server ( #10930, 1d08f5b)
- Fixed advertising instance check api in bleprph example (c99f91d)
- Fixed config options in esp_nimble_cfg.h (cb79b1e)
- Fixed crash in multi advertising example. (3c18433)
- Fixed warning cur_len unused (ff88044)
- Fixed macro names in buffer allocation (9e0502d)
- Fixed compilation issue for nimble examples when optimization is enabled (a32201f)
- Expose Address Resolution API outside stack (b62cbeb)
Removed
- Removed -Wno-format compile option for nimble examples (ad66203)
- Removed global min/max definition (8ff7d52)
- Removed indicate flag from gatt db and added subscription case in spp_server example (310e5e7)
Blufi
Added
- API for stack and profile deinit added. (6c5c595)
- Support to query disconnected information, connecting information (0c8272b)
- Return errcode if fail to scan (0c8272b)
Fixed
- Fixed vulnerability attacks that could cause heap overflow in fragmented Blufi packet processing (c176e5e)
- Fixed hdr getting freed twice while using blufi (998711b)
- Fixed Blufi document description errors (431f5b8)
ESP-BLE-Mesh
Added
- Added an option for LPN to subscribe all-nodes-address automatically (cfbdc55)
- Added an option for initiating IV Index Recovery if missing one (7ddbaae)
- Added default configurations for BLE Mesh examples on ESP32-H2 (eaae317)
- Added default configurations for BLE Mesh examples on ESP32-C6 (e57fb38)
Changed
- Updated the processing of adding and removing heartbeat filter entries (9f80af3)
Fixed
- Fixed handling continuously received secure update in friend queue (ee10f25)
- Fixed using wrong range for Heartbeat Publication Period Log value (8886316)
- Fixed using wrong count_log for Heartbeat Subscription Status (8886316)
- Fixed not ignoring connectable PB-ADV PDU containing a Link Open message (8886316)
- Fixed ignoring KR flag within Secure Network Beacon from non-primary subnet (8886316)
- Fixed the sequence of checking invalid Provisioning PDU type (8886316)
- Fixed not checking invalid link flag during PB-GATT provisioning (8886316)
- Fixed wrongly overwritten the expect_ack_for flag after send_pub_key (8886316)
- Fixed not checking if AppKey is bound to model during model publication set (8886316)
- Fixed regression introduced in the btc_transfer_context changes (a3b7751)
- Fixed Friend not relay LPN messages if relay feature is disabled (f25af53)
- Fixed not using fast adv interval when PB-GATT and PB-ADV are both enabled (beb8a7c)
- Fixed not able to get optional fields from messages with a group address as DST (dd12715)
- Fixed typo in the directly erase settings event (e4bb9cb)
- Fixed not transmit Transaction ACK before closing provisioning link by Provisioner (ec030b3)
- Fixed not send Link Close message before resetting provisioning link by Provisioner (ec030b3)
Removed
- Removed -Wno-format compile option for BLE Mesh examples (7283a40)
Wi-Fi
Added
- Added hash key length validation to avoid some crash or connection issues caused (7a7bdf0)
- Added station connect retry count to make it easier to connect to the except AP (4c8f4ff)
- Added check for IEs in match security level (6700c04)
- Provided RSSI info in disconnected event for user to decide whether connect to this AP (0c8272b)
- Added data subtype for more Wi-Fi information in Blufi for error handing (0c8272b)
- Supported Wi-Fi TX fragment in the crypto mode of GCMP. (5f0cb56)
- Added connectionless documentation (6bb28c4)
- Added configuration options for maximum number of ESP-NOW encrypted connections. (d89a512)
- Added config option to mandate station authmode threshold to WPA3 if AP sends transition_disable bit. (70426ed)
- Added WPS registrar support in SoftAP mode. (f27a95c)
- Added a check to avoid initiator mode in FTM on SoftAP mode (0d6b9e4)
- Supported ESP32-C6 Wi-Fi, including 802.11ax. (c681c92 and 6d7282e)
- Stored some missed station config parameters into NVS (0b921fd)
- Added support for SAE-PK (Public Key) authentication for station. (e44c7fb)
- Added support of WPA3 Personal (SAE) in SoftAP. (146a5c4)
- Added support for Hunt and Peck & H2E SAE PWE derivation method. (146a5c4)
- Added support for WPA2/WPA3, mixed mode for softAP. (146a5c4)
- Added support for PMK caching for softAP. (146a5c4)
- Added support for SAE softAP to skip SA query if the connection link is abruptly broken and the station tries to Re-associate using fresh authentication. (146a5c4)
- Added identifier support for SAE. (a3b5472)
- PHY: Added PHY test lib. (266a58f)
- PHY: Added cert test example. (266a58f)
- Added WiFi Aware (NAN) support (d5f53fb)
- Added dynamic carrier sense threshold to improve TX throughput in high interference env. (29737e1)
- Added an API
esp_wifi_clear_ap_list
to clear AP scan list to free memory in time (b738321) - Added the MBO information element in the probe request frame (057cf2b)
- Added support for recognising GCMP and GCMP-256 ciphers if used by AP. (057cf2b)
- Added API "esp_now_set_peer_rate_config" to config ESPNOW frame rate. (a0df46d)
- Added support for WPS Registrar in APSTA mode (a0df46d)
Changed
- Run eloop in ppTask context (7278cf3)
- Modify Wi-Fi scan return value to make it more accurate and match the document. (e6c57c0)
- Changed the log level of some logs to avoid misunderstanding. (e6c57c0)
- Modify maximum SoftAP connection number. (d89a512 & 92a4a14)
- Updated Wi-Fi AMSDU document (8574ec3)
- Changed ESP-NOW receive callback to pass it more information (#8574, 8223a59)
- SA Query and associate comeback related improvements in STA and SoftAP (#9428, c08a008)
- Updated esp_wifi_wps_start() API documentation (Fixed #10407, de42b29).
- Connection management related improvements in STA and SoftAP. (2707c95)
- Buffer deauth, disassoc and action frames for station in sleep mode (5c885a0)
- Merged esp_wifi and wpa_supplicant's Kconfig (254efe4)
- Update station config options. (e8b38e1)
- PHY: Updated ESP32-C3 phy_version 960, 7392adf, Mar 31 2023, 16:27:13 (d0a29ad)
- PHY: Updated ESP32-S3 phy_version 600, 8dd0147, Mar 31 2023, 16:34:12 (d0a29ad)
- Improved ESP32 connection success rate at some coexistence scene (51c682c)
- Updated TX rate when phymode change from LR to 11N (893d6ad)
- Updated softAP pairwise cipher. (c710a69)
Fixed
- For ESP32-S2, fixed the but that fail to scan AP after receiving disassoc/deauth from AP. (f444aa4)
- Removed beacon monitor timer when call pm deinitialized (cd39088)
- Removed eloop timer when eloop destroyed (cd39088)
- ESP32-C2: Fixed the bug that multi-PHY api not work (b738321)
- Cleared scan results when wifi stopped (b738321)
- Fixed the bug that ESP-NOW fail to clear key (1c9796b)
- Fixed pairwise cipher TKIP and PMF compatibility issue (02be0a8)
- Fixed repeated scans causing BSS overwrite in connect process (86c4094)
- Fixed ESP-NOW example fails to add peer with other channel (#9592, 4d8a026)
- Fixed set country code before wifi start issue (681c538)
- Installed GTK before send 2 of 2 (cef946e)
- Fixed the bug that station connected to an AP already connected caused subsequent scan fail (ee493e0)
- Prevented using WPA3 PMK caching for WPA2 connection (cf9921a)
- Avoided flushing PMK caching when station receives Deauthentication frame with Reason Code unspecified (72a70f0)
- Fixed connect failure when enable SPIRAM and ESPNOW send (3b7d9fa)
- Added security fixes from upstream wpa_supplicant (CVE-2019-9496, CVE-2022-23304, CVE-2022-23303, CVE-2019-9494, f03f3b0)
- Added key reinstallation related security fixes from upstream wpa_supplicant (CVE-2017-13077, CVE-2017-13078, CVE-2017-13079, CVE-2017-13080, CVE-2017-13081, CVE-2017-13082, 3b31370)
- Fixed ignore RX sub AMPDU interrupt issue (b813476)
- Fixed deauth and disassoc issue for SoftAP PMF connections (d257838)
- Fixed the bug that sniffer mode can not capture control packet (b3a76f7)
- Fixed some SoftAP PMF and ESP-NOW key management related issues (f5bffc2)
- Removed RC4 code instances from wpa_supplicant for mbedTLS (9d7facf)
- Fixed some crash in eloop timer (b52659d)
- Fixed Wi-Fi getting stuck in Wi-Fi start when working with BT for ESP32-C3 and ESP32-S3 (e5dc958)
- Fixed memory leaks in WPS operations. (93dd1b2)
- Fixed WAPI issue on GTK compatibility and reference to broadcast ARP packets (5f0cb56)
- Fixed TX fragment issue that PN code for fragment is less than or equal to MSDU after it (5f0cb56)
- Fixed WPA2 Enterprise Re-authentication issue (9be5145)
- Fixed the issue that connect failure return wrong error code (e6c57c0)
- Fixed some issues on SoftAP power save. (812b9b3)
- Fixed high current issue after reconnected (6bb28c4)
- Select ESP_WIFI_STA_DISCONNECTED_PM_ENABLE by default, force it at coexistence (6bb28c4)
- Fixed the issue that fail to send ESPNOW after changing Wi-Fi mode (d89a512)
- Prevented PMK caching if AP security mode has changed (22f8bcd)
- Fixed potential Wi-Fi disconnection when BT deinitialized (09231b4)
- Fixed the ESP32-C3 connect failure issue (b04e332)
- Fixed unprotected SA Query issue and scan regression (0dd6826)
- Fixed the ESP-NOW crash when modify the interface of the peer (1669bc0)
- Fixed SoftAP memory leak issue. (a6982a9)
- Fixed the issue that STA get AP info does not return connected SSID (a6982a9)
- Fixed SoftAP recv ps-poll not update inactive timer issue. (a6982a9)
- Fixed the issue that multicast packets dropped for some AP when DTIM period > 1. (206f486)
- Clear current PMKSA to fix WPA3 connect loop (#10364, 9d6ff96)
- Fixed home channel issue in FTM for AP/STA mode (0d6b9e4)
- Fixed int overflow for T1-T4 counter variables in FTM (0d6b9e4)
- Fixed the issue that STA connect slowly with some AP (77d220c)
- Fixed the issue that wpa_supplicant sends two M1 of WPS EAP with different enrollee nonce as a reply to request expanded WPS (eab2792)
- Fixed the bug that fail to connect to the AP encrypted with WPA3 SAE. (73b838d)
- Fixed the connection issue with specific WPA3 AP (def5db1)
- Fixed debug logs issue in wpa_supplicant (20f5f64)
- Added fix for potential null pointer dereference in wpa_supplicant (25a56d1)
- Changed abnormal beacon log level to debug (ec8a702)
- Fixed for default WPA2 casing PMK recalculation. (5754e29)
- Fixed FTM procedure with peer failed status 4 issue. (a75a36f)
- Fixed initialization of EAP methods during reassoc. (58b3692)
- Added validations during Suite B Enterprise connections. (58b3692)
- Fixed STA auth failed but SoftAP shows it connected issue. (f3f3e87)
- Fixed typo in wifi_enterprise example README (#10042, 80be82e)
- Fixed potential issue when TX fragment packets. (29737e1)
- Fixed ESP-NOW unexpectedly enter modem sleep on ESP32-C2 (deb966c)
- Fixed processing of association response in OWE mode (420ebd2)
- Fixed the bug that send invalid PMKID from softAP in message 1 of 4 (2621492)
- AP-STA concurrent mode improvements for Management Frame Protection (PMF) (c46188a)
- NVS PMF required will be enabled by default if softAP is configured with WPA3 auth mode (20f200a)
- Improvements in station SA query procedure handling (4c75ad9)
- Fixed the issue that sometimes fail to enter modem sleep after scan (51c682c)
- Fixed the issue that set inactive time crash issue. (2ffd3ce)
- Fixed ESP32-C2/ESP32-C3/ESP32-S3 rate control issue to improve TX robust (c3e0e36)
- Fixed SoftAP QoS null issue (70c3cdc)
- Fixed infinite loop in PMK mismatch case in WPA3 SoftAP (74c151d)
- Fixed SoftAP mode nvs not match issue. (057cf2b)
- Fixed a DPP listen issue(#10865, 057cf2b)
- Wpa pmf should be disabled. (c710a69)
- Fixed beacon TX process when softAP interface is stopped (a0df46d)
- ESP Station install traffic keys only after successful transmission of EAPOL 4/4 message. (a0df46d)
- Fixed the bug that some values can't be stored into NVS (a0df46d)
- Fixed PMKID SHA-256 related regression (961018d)
- Fixed rejection of TKIP cipher incase of OWE connection (1b4e464)
- PHY: Fixed the iPhone disconnects immediately after connecting when BLE and wifi coexist on ESP32-C3 and ESP32-S3 (e8dba71)
- PHY: Fixed lp_bod if bt/i154 initialize phy before Wi-Fi. (7746962)
- Fixed STA RX CSA issue caused by receiving SCA packets that do not belong to STA. (4259255)
Removed
- Removed 3DES and RC4 Cipher suites from WPA supplicant for mbedTLS (#9607, 08ed16f)
- Removed -Wno-format compile option for FTM example, iperf example, roaming example. (a00bde9)
- Removed the \n in supplicant logging (#10285, ac7aaab)
- Added changes to use SHA256 size ciphers for WPA2 enterprise for cert size > 2048 (45571b0)
- Removed redundant DEBUG_PRINT in supplicant (3636495)
- Removed -Wno-format compile option for esp_phy, esp_wifi and part of wpa_supplicant components. (ce8f51a)
ESP-WIFI-MESH
Changed
- Updated mesh doc (5c4f029)
- Updated discard context condition and process disconnect condition (5c4f029)
Fixed
- Fixed invalid child issue (6cbedbf)
- Fixed WIFI_EVENT_AP_STADISCONNECTED event error (6cbedbf)
- Fixed memory leak issue when esp_mesh_start/stop (7b35f80)
- Fixed the bug that stop DHCP server before set DNS(#10762, 7d8416b)
- Fixed the bug that esp_mesh_is_root() return error when set root type (5c4f029)
- Fixed the bug that user can't set inactive time on mesh root (5c4f029)
- Fixed the bug in set idle type (5c4f029)
- Fixed the heap corrupt issue (a0df46d)
- Fixed the layer2 node scan issue in fixed root (4259255)
Removed
- Removed -Wno-format compile option for mesh examples. (05ce3ce)
Coexistence
Added
- Added external coexistence(leader mode) support on ESP32-S3 and ESP32-C2 (895d97d)
- Added external coexistence(follower mode) support on ESP32-C2 (895d97d)
- Added force RX mode(can do RX without grant signal) in external coexistence on ESP32-C2 (895d97d)
- Added support for output grant signal delay and validate pin level configuration on ESP32-C2 (895d97d)
- Supported ESP32-C6 coexistence (a9646eb)
Changed
- Separated coexist from components/esp_wifi to components/esp_coex. (a9646eb)
Fixed
- Fixed part of modem module not reset when power up (e08e2f0)
Ethernet
Added
Changed
- Simplified Ethernet examples initialization (742205a)
- Updated DM9051 configuration to receive multicast packets (531e23c)
- Report error if chip version is not expected. (#10554, 46c00b2)
Fixed
- Reduced possibility of "no mem for receive buffer" error. (#9308, #9083, #6101, #9594, 785f154)
- Fixed clearing of incorrect registry prior servicing the interrupt in ENC28J60 (#10237, 48a6f11)
- Fixed issue when DM9051 was stopped, it was not properly started and there was no Ethernet communication (d849f29)
- Fixed issue when ESP32 EMAC could hang when stopped/started multiple times at 10Mbps speed mode (05510e6)
Removed
- Removed -Wno-format in affected examples, changed type specifiers to match types which are logged in protocols, Ethernet, network (a39514a)
Security
Added
- Sec1 and Sec2 are now supported in the esp_local_ctrl example, with default security version set to 2. (79e0992)
- Added new APIs to confirm that all eFuse security features are enabled correctly in bootloader. (fd34bdb)
- ESP32-C6: Enable support for DS and HMAC peripherals on ESP32-C6 (e7ca2f2)
- enable security/flash_encryption example for ESP32-C2 (81e1e65)
- Set write-protect for DIS_ICAHE and DIS_DCACHE to prevent accidental brick chips if burn them (f22daec)
- Added support for RNG peripheral in ESP32-C6 and ESP32-H2 (125d00c)
Changed
- esp_flash_encrypt: In API to set flash encryption to release mode, if the target supports it then enable Secure ROM DL mode instead of disabling it completely. (bcb4fd7)
- esp_ds: Updated documentation regarding input endianness required by esp_ds API (#10391, 078835e)
- memprot: Moved some (unrequired) memprot functions out of IRAM (a5c70c2)
Fixed
- esp_rsa_sign_alt: Fixed the behaviour of esp_ds_init_data_ctx API when ds_data is provided directly from the flash. (4697f75)
- esp_srp: Fixed small issues reported by coverity scan. (9697eb5)
- AES: Return error instead of aborting if AES wait for dma completion times out (#10648, a9e7ccb)
- efuse: Prevent burning XTS_AES and ECDSA keys into BLOCK9 (BLOCK_KEY5) because HW bug, (related to ESP32-C3, ESP32-C6, ESP32-S3, ESP32-H2 chips) (badf267)
Peripheral Drivers
Added
- ADC: Added an all-in-one API to get calibrated voltage (8f82c5c)
- ADC: Supported ADC digital filter (#10514, #10663, d3fec83)
- ADC: Supported calibration on ESP32-C2 (542bdea)
- ADC: Supported selecting ADC clock source for oneshot mode driver (4452a3c)
- Cache: Added an API to synchronize data between Cache and external memory, on Cache writable chips (ESP32S2, ESP32S3) (a9ce760)
- DAC: Introduced new DAC driver, oneshot mode, continuous mode and cosine wave mode are supported on ESP32 and ESP32-S2. Legacy DAC driver in dac.h has been deprecated but still available. The legacy channel enums DAC_CHANNEL_1 and DAC_CHANNEL_2 are deprecated, please use DAC_CHAN_0 and DAC_CHAN_1 instead. (9bc2d15)
- esp_etm: Support allocating EMT channels dynamically (fefe6f3)
- esp_hw_support: Added an all-in-one API to get the frequency of module clocks (d9825f5)
- ESP_LCD: Support register color-transfer-done callback at runtime. (ed26b01)
- ESP_LCD: Added SH1107 OLED LCD support in the example (1303a7c)
- I2C_LCD: Added support for rotation to OLED SSD1306 screen (1303a7c)
- i80_lcd: Allow to skip command phase for i80 LCD driver (#10794, b5ccdc9)
- RGB_LCD: Added esp_lcd_rgb_panel_restart function to restart DMA transmission (d35bb63)
- RGB_LCD: RGB LCD bounce buffer can work with multiple frame buffers. (3d09cc3)
- RGB_LCD: Support RGB-YUV data format conversion (e2634b5)
- RGB_LCD: Support allocating multiple frame buffers. (171b849)
- SPI_LCD: Support LCD whose CS line is active high (#9881, b847138)
- SPI_LCD: Support SPI LCD single IO mode: By communicating with st7789 serial interface-I type LCD, its validity is verified, and it works fine when the clock frequency is 20M and below. (06b8d39)
- SPI_LCD: Support transmit color buffer without specifying a command (#9881, b847138)
- GPIO: Added GPIO glitch filter driver (3744345)
- GPIO: Added comments on GPIO pin bitmasking selection (#10733, ab8e3ef)
- GPIO: Support GPIO ETM extension (fefe6f3)
- GPIO: Supported digital input hysteresis filter (66cda02)
- Dedicated GPIO: Added examples implementing software I2C, UART and SPI thanks to dedicated GPIOs on RISC-V targets. (7baa63c)
- Analog Comparator: Introduced the driver of the analog comparator on ESP32-H2 (2d14ba2)
- GPTimer: Acquire ESP_PM_NO_LIGHT_SLEEP pm lock for XTAL clock source. (76433e4)
- GPtimer: Added function gptimer_get_resolution to return the real resolution of the timer. (080328a)
- GPTimer: GPTimer supports ETM events and tasks (fefe6f3)
- GPTimer: New example to capture HC-SR04 sensor by GPTimer and ETM channel (fefe6f3)
- I2S: Add I2S TDM ES7210 codec recording example (dac24d5)
- I2S: ES8311 example expanded with BSP support (c64c6f3)
- I2S: Supported 4-line PDM RX on ESP32-S3. (48b23b7)
- I2S: Supported to preload the data into DMA buffer to transmit data immediately after enabled (#8471, 0f15d4a)
- I2S_TDM: Added bclk_div field in the i2s_tmd_clock_config_t for the application using high sample rate with slave role. (#9513, 740a8b5)
- LEDC: Supported LEDC gamma curve fade new feature on ESP32-C6 and ESP32-H2, and added a new relevant ledc_gamma_curve_fade example (3ec287e)
- MCPWM: Support calling mcpwm_comparator_set_compare_value under an ISR context (4cc763f)
- MCPWM: Support configure MCPWM generator actions one by one, without using variable length argument lists (#10449, dba66c1)
- MCPWM: Support keeping the GPIO configuration when deleting the MCPWM capture channel (Closes #10327, c83d1db)
- MMU: Added new component esp_mm for memory management, added memory mapping APIs in esp_mmu_map.h (1c69929)
- MMU: Supported at most 14.5MB vaddr ranges that can be mapped to read-only data on Flash on ESP32-S2 (1c69929)
- MMU: Supported at most 32MB vaddr ranges that can be mapped to instructions or read-only data on Flash on ESP32-S3 (1c69929)
- MMU: Supported at most 4MB vaddr ranges that can be mapped to instructions or read-only data on Flash on ESP32-C2 (1c69929)
- MMU: Supported at most 8MB vaddr ranges that can be mapped to instructions or read-only data on Flash on ESP32-C3 (1c69929)
- MSPI: Added an experimental feature on ESP32-S3: 120 MHz DDR mode for Octal Flash and / or Octal PSRAM (ebaf987)
- Parlio: Added a simple RGB LED Matrix example based on the Parallel IO TX driver (14555a1)
- Parlio: Added parallel IO TX driver for ESP32-C6 and ESP32-H2 (14555a1)
- PCNT: Support accumulate counter value when overflow at high/low limit (#10167, 71968a4)
- RMT: Added private function to return internal channel ID (#10596, 4a604be)
- SDIO Slave: Support disabling the highspeed mode from slave side. (9bc18ba)
- SDIO Slave: Support using ESP32-S3 as SDMMC host to communicate with ESP SDIO Slave in the example. (439a709)
- SDM: Added a wave output example sdm_dac (5fb9866)
- SPI: Supported placing SPI driver hal-layer IRAM functions into flash (d89db7e)
- SPI Master: Added a check to prevent using both tx&rx phase in half-duplex mode on chips later than ESP32-S2 (60d7945)
- SPI Master: Added a flag to bypass returning transaction done descriptor. (#9141, 8226806)
- SPI Master: Support GPSPI peripheral clock source selectable (e7c520e)
- SPI Master: Support SPI Master & Slave Driver on ESP32-C6 (65c0b2b)
- SPI Master: Supported registering driver ISR on a certain CPU core (e6ed62d)
- SPI Master: Added an API to know the max transaction length (f79088f)
- SPI Slave: Added a flag to bypass returning transaction done descriptor. (e352382)
- SPI Slave: Supported SPI Slave HD Append mode on all supported chips (896f046)
- SPI Slave: Supported registering driver ISR on a certain CPU core (e6ed62d)
- spi_flash: Added GD25QxxE flash high performance mode (120M) support (2f13368)
- spi_flash: Added a programming guide chapter listing the difference between ESP-IDF and Chip-ROM SPI Flash driver. (7f7b0a7)
- spi_flash: Octal flash and Quad flash mode can be detected automatically in run time. Enabling this feature reduces available internal RAM size by about 900 bytes. (cb28fcf)
- spi_flash: Supported collecting performance data for esp_flash APIs by enabling CONFIG_SPI_FLASH_ENABLE_COUNTERS (b6d57a2)
- spi_flash: Supported verifying Flash write feature and checking writing zero to one feature for both esp_flash_write and esp_flash_write_encrypted. (7f7b0a7)
- systimer: Support generating ETM events for systick and esp_timer (fefe6f3)
- Temperature Sensor: Implemented temperature monitor feature on ESP32-H2/ESP32-C6 (679dae7)
- touch_element: Touch element support sleep mode. (38bb2de)
- USB Host: Added SetAddress() recovery time. Added possibility to configure Root Hub Configuration (delay values) via menuconfig. (6777579)
- USB Host: Added initial USB Host HID driver and example (0c9e30f)
- USB Host: USB Host Library transfer API now checks that users do attempt to submit an already inflight transfer, and will return an error if attempted (#8748, 598dd5f)
- USB MSC Device Class: This change modifies the example according to newly implemented USB MSC Device class driver. The new driver is located in idf-extra-components. The example makes use of APIs exposed by USB MSC Device class driver. The driver supports storage media of two types: a. SPI Flash b. SD Card (8cf6325)
- USB: Added Mass Storage Device example (a9e40f6)
- USB Host: Add support for USB host UVC class (f161184)
- USB: Extended MSC device example by adding SD MMC card support. (490f9eb)
- USB_Host/CDC: Extended Virtual COM Port example with CH340 USB/UART converter (fb4b18d)
- TinyUSB: Added voltage monitoring feature (#7747, 446daa9)
- USB_SERIAL_JTAG: Added a Kconfig option PM_NO_AUTO_LS_ON_USJ_CONNECTED to monitor USB port connection status and avoid entering automatic light sleep if USB is connected (#8507, 8486a2c)
Changed
- esp_hw_support: Reduced power consumption of some ESP32-S3 chips (e7dbfd6)
- examples: Updated max GPIO range for ESP32-C2 examples to exclude UART0 pins (#10174, 73724b0)
- GDMA: Changed the UHCI GDMA trigger ID from SOC_GDMA_TRIG_PERIPH_UART0 to SOC_GDMA_TRIG_PERIPH_UHCI0 (1f3507e)
- hw-support: Updated C2 chip info to reflect that esp8684 has embedded flash (#10175, 73724b0)
- I2C: The buses are now properly reset after error. The reset only happens on the stalled bus, so they won't affect each other. (#7144, 790aa40)
- I2S: Moved ES7210 component into component manager. (febb360)
- I2S TDM: Added the check for slot_mask field, there will be failure if slot_mask is 0. (190e9e7)
- ESP_LCD: Changed example for using LVGL port component (1303a7c)
- ESP_LCD: Changed tjpgd and SPI example for using esp_jpeg component (5b48a33)
- ESP_LCD: Reduced recommended I2C link size for I2C panel (#11015, 26fd252)
- LEDC: Moved the callback in ledc_fade example to IRAM (#10402, 36cdf88)
- PCNT: Extend the rotary encoder example to wake the CPU from light sleep. (2c9ded3)
- PSRAM: Improved the way adding PSRAM memory to heap allocator, now it's added according to memory alignment caps (ac63c0a)
- RMT: led_strip component has been uploaded to the component registry (093324b)
- SPI Master: Added transaction length check to refuse longer than hardware supported transactions (f79088f)
- SPI_FLASH: Starting from ESP32-C6/ESP32-H2, we only link chip vendor supported by default. This saves nearly 2KB IRAM usage at most. Note that when a new official supported vendor driver is linked, it'll take some IRAM usage accordingly. (7e08b40)
- SPI_LCD: Checked the return value of spi_device_acquire_bus and not release the bus if it's acquired failed (#10952, 126a1b2)
- TinyUSB: Refactored MIDI example (ba0eb09)
- TinyUSB: Updated TinyUSB version (23fd449)
- UART: Increased default stack size for nmea example (#11044, 2002878)
- UART: Updated wrong referenced function name "uart_enable_pattern_det_intr" in programming guide (#10856, 0558d40)
- USB Host: HID Host example updated (456eaf9)
- USB Host: Updated CDC examples for CDC-ACM driver v2 (9f20121)
Fixed
- Suppress CPU crash and memory issues under extreme temperature on a small amount of ESP3-2C3 chips. (8282dca)
- LD: Fixed potential bootloader and app overlap issue on ESP32-C2 and ESP32-C3 (a807e0d)
- ADC: Fixed ADCx_GPIOxx_CHANNEL macros not aligned with new ADC driver issue (#10508, 297c785)
- ADC: Fixed calibration value issue on ESP32-S2 (#9705 , #9715, ee2ae1d)
- ADC: Fixed continuous mode PM lock release fail issue (#10853, bbac0c8)
- esp_hw_support: Fixed check for SOC_MODEM_CLOCK_IS_INDEPENDENT definition in components/esp_hw_support/periph_ctrl.c (dbbc1ba)
- ESP_LCD: Fixed incorrect bpp size of RGB666 color format (#9729, aa64085)
- I2C_OLED: Fixed missing first character in LVGL OLED example (087f9c0)
- I80_LCD: Fixed the issue that PLL240M clock source is not allowed to use by ESP32-S3 i80 LCD (18295bb)
- SPI_LCD: Changed RGB endian in LCD SPI example, when used with ILI9341 controller (#10242, 2e3c72a)
- ESP_LOG: Fixed function name esp_log_impl_lock_timeout in components/log/log_noos.c (dbbc1ba)
- esp_rom: Fixed the issue that mz_crc32 is not defined in the miniz library (#10177, f7f3c51)
- ESSL SPI: Fixed Quad SPI wrong dummy cycle issue on ESP32-C2, ESP32-C3 and ESP32-S3 (0da21ac)
- Examples: Fixed partition size not enough issue in i2c_tools example. (#10947, #9084) (2f49ccc)
- Flash MMAP: Fixed issue that only 128KB vaddr ranges can be mapped to instructions on Flash on ESP32-C3 and S3 (#10373, 1c69929)
- Flash MMAP: Fixed issue that only 16MB/4MB vaddr ranges can be mapped to read-only data on Flash on ESP32-S3/S2 (1c69929)
- Flash MMAP: Fixed issue that only at most 128KB vaddr ranges can be mapped to instructions on Flash on ESP32-C2 (1c69929)
- GDMA: Fixed GDMA psram_alignment and cache line size unmatched issue when PSRAM is enabled. Now by default GDMA psram_alignment fallbacks to data cache line (for PSRAM) size. Configuring smaller-than-cache-line psram_alignment value will return an error. This will avoid data inconsistency. (a9ce760)
- GDMA: Fixed SPI2 DMA can't work with async memory copy (#10575, fd2b9d9)
- GPIO: Fixed the issue on ESP32 that GPIO can't hold on after deep sleep (ebd3081)
- GPIO: Fixed the issue that IOs, which are used for deep sleep wakeup, keep staying in holding state after waking up. These IOs can now be re-configured. (eae70a8)
- GPTimer: Fixed potential race condition between timer start and stop (f8d68ef)
- HAL: Fixed UART LL functions can't compile with cxx (#10106, 31d9312)
- HAL: Fixed UART LL functions can't compile with cxx on ESP32-S3 (#10640, db59ab5)
- HAL: Fixed missing definition for "bool" type (dbbc1ba)
- I2C: Fixed crash issue if user uses i2c_param_config ahead of i2c_driver_install (#10163, e96e7ec)
- I2C: Fixed doc about I2C pull-up resistors (#9791, e96e7ec)
- I2C: Port number is now an enum type named i2c_port_t (6f3c6dc)
- I2S: Fixed I2S tx incomplete auto clear (#9882, 9408e13)
- I2S: Fixed PDM TX frequency 48kHz limitation (#10420, 42509fa)
- I2S: Fixed doubled mclk in TDM mode (#10196, 4867928)
- I2S: Fixed i2s_adc_adc example gap (#9389, 3d15042)
- I2S: Fixed the compiling failure of i2s_record example (#10343, a5adb4b)
- I2S: Fixed typo philip of philips format (#10197, 4867928)
- I2S: Fixed wrong interrupt allocation flag (#10997) (7c5d65b)
- LEDC: Fixed -Werror=maybe-uninitialized warning that could happen on glb_clk variable when CONFIG_COMPILER_OPTIMIZATION_SIZE is selected on ESP32 (#9025, #10322, 4f8b2be)
- MCPWM: Fixed legacy MCPWM driver that will return the incorrect value if input with wrong parameters. (00c68c7)
- MCPWM: Fixed multiplication overflow in mcpwm_set_duty_in_us (#9648, 82f2ad9)
- MCPWM: Fixed the duty cycle only gets updated on TEZ event (#9904, f89b68e)
- MMU: Fixed g0 build needs CONFIG_MMU_PAGE_SIZE issue (aeaf119)
- MSPI: Fixed timing tuning issue for 80MHz Octal PSRAM on ESP32S3, which would lead to system stall at early stage. (34e5a80)
- MSPI: Fixed timing turning issue on high frequency lead to crash when entering sleep on ESP32-S3 (3b62bf5)
- PSRAM: Fixed 40MHz PSRAM CS signal glitch issue on ESP32 (6c35aa6)
- PSRAM: Fixed ID cannot be detected issue under ESP32 2T mode (4cb6f36)
- PSRAM: Fixed a build issue when SPIRAM_2T_MODE is enabled. (#10546, 41ef718)
- PSRAM: Fixed incorrect returned out_ptr when calling esp_himem_map with non-zero range_offset (#5639) (c2887c2)
- PSRAM: Fixed wrongly detecting Octal PSRAM issue on ESP32-S3. Now an error will be returned. (cee025c)
- RMT: Avoid auto light sleep if RMT clock source is XTAL (bcc307c)
- RMT: Fixed incorrect check on the mem_block_symbols parameter. (76ac9b0)
- RMT: Fixed memory leak in the legacy driver (#10173, dcaa753)
- RMT: Fixed wrong buffer memory allocation in the legacy RMT driver (#9487, 10d0cc6)
- RMT: Fixed some LL functions not always inlined (Closes #9487, e51aee4)
- rtc time: Reenabled esp_rtc_get_time_us for esp32c2 (409804f)
- RTCIO: Fixed the bug that prevents the users from using the RTC function on ESP32-S3 pin 19 and 20.
- SDIO Slave: Fixed crash caused by incorrect return value check in host example. (03d8059)
- SDIO Slave: Fixed crash issue when using release config and GCC11 (8e361d3)
- SDMMC: Fixed sdmmc_card_t::real_freq_khz field being not updated if sdmmc_host_t::max_freq_khz is set to SDMMC_FREQ_PROBING (5854472)
- SDMMC: Fixed the issue that card clock is disabled before ACMD41 is completed, which prevented certain cards from initializing properly. (da6041e)
- SDSPI: Allows CS line to be set to GPIO_NUM_NC (-1) in SDSPI (CS on SD card has to be pulled down) (d7e3072)
- SPI: Fixed micro SPI_HOST_MAX error on target ESP32-C2/ESP32-C3 (#10349, 419544a)
- SPI Bus Lock: Fixed a concurrency issue leading to spi_device_polling_end assertion fail (#8179, 2c2384e)
- SPI Master: Fixed Rx DMA buffer size calculation more correctly (#10224, 226870d)
- SPI Master: Fixed SPI Master ISR IRAM safe issue (cf146d4)
- SPI Master: Fixed an issue on ESP32-S2, ESP32-S3, ESP32-C3 that more than 3 devices can't be added to the SPI2 Host (#8876, f7748be)
- SPI Slave: Fixed CS signal mapping issue when other bus signals are routed via IOMUX and CS is routed via GPOIO Matrix (6cc9380)
- SPI Slave: Fixed SPI Slave ISR IRAM safe issue (7472146)
- SPI Slave: Fixed SPI slave IO pin not released after deinitialization. (40ca803)
- SPI_FLASH: Fixed compute size wrongly for > 256MBit (#9566, 54d9da9)
- SPI FLASH: Put some bootloader_flash functions into IRAM to prevent some crash issues (Sending HPM command, etc.). (f8c3d09)
- System: Fixed chip revision of ESP32-C2 ECO2 (cfef248)
- Timer: Propagated interrupt service allocation error (#9651, 82f2ad9)
- Touch Sensor: Fixed Timer callback is called after it is deleted. (e55464c)
- TWAI: Fixed a HW errata where the TWAI controller could still send dominant bits when placed into listen only mode. The errata workaround is enabled by default via the CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM option. (57b6be2)
- UART: Fix line driver name in the uart_echo_rs485 example readme (#8132, d1dee58)
- UART: Fix uart_param_config fail if source_clk parameter omitted, regression caused by 746f4b8 (934f047)
- UART: Fixed concurrency which could cause ESP_ERR_TIMEOUT when calling uart_wait_tx_done due to the TX_DONE interrupt bit being wrongly cleared in the task instead of triggering the ISR. (1addacb)
- UART: Fixed concurrency which could cause RTS line being mis-reset while tx transmission is not done in RS485 mode. (1addacb)
- UART: test_rs485 change percentage of allowed fails, increase synchronization timeout (c755869)
- USB Host: Fixed a bug in usb_host_transfer_submit_control() where the internal control transfer argument checking would always assume control transfers were OUT transfers. (9cce584)
- USB Host: Fixed a race condition in USB Host Stack HAL where halting a pipe/channel right when it completes a transfer could result in the pipe/channel not being halted. (9cce584)
- USB Host: Fixed bug where calling usb_host_device_open() would sometimes not be able open a device if the device was already opened by another client. (598dd5f)
- USB Host: Fixed bug where calling usb_host_interface_claim() would sometimes allocate an IN EP as a OUT EP. (598dd5f)
- USB Host: Fixed interface descriptor parsing for interface numbers >= bNumInterfaces (bc314e1)
- USB Host: Fixed issue where the Hub driver would attempt to fetch Manufacturer/Product/Serial string descriptors even if the device does not support them, leading to a STALL on the control endpoint. Hub driver will now only fetch string descriptors if they exist. (770961d)
- USB Host: Fixed issue where the Hub driver would fail at GET_SHORT_LANGID_TABLE on some devices. Fixed by ensuring that a LANGID of 0 was used when fetching the LANGID table itself. (770961d)
- USB Device: Fixed out of boundaries access to string descriptor array. (df13918)
- USB Serial JTAG: Fixed the docs which tells it's possible to use usb serial jtag in sleep modes (#8507, #8884, eb290ec)
- I2S STD: Fixed the check of mclk_multiple, mclk_multiple should be a multiple of 3 only when the slot_bit_width equals 24. (190e9e7)
- I2S TDM: Fixed the calculation of half_sample_rate in HAL. (190e9e7)
- MCPWM: Reset the MCPWM peripheral if restart or panic happens (#11324) (6f459d4)
- MCPWM: Fixed the BLDC example of wrong force level setting (b7199e8)
- MCPWM: Don't allow to apply the same delay module to multiple generators (#11327, cf5e2c3)
- Analog Comparator: Fixed bug in ana_cmpr_del_unit() which would attempt to delete a unit even if the provided ana_cmpr_handle_t was invalid. (242713c)
- RMT: Fixed the issue that the filter and idle value set by the user can be out of the range (#11262, de5a9ac)
- RMT: Define RMT_ENCODING_RESET in the rmt_encode_state_t (#11200, 0fb6316)
- RMT: Fixed RMT 1-Wire example unstable issue, and refactor to use component manager (#10790, 2004bf4)
- SDMMC: Fixed SD combo cards not detected as memory cards (#9822, #10280, c0c9227)
- UART: Fixed uart_param_config fail if source_clk parameter omitted, regression caused by 746f4b8 (934f047)
- SPI_LCD: Fixed the issue that the maximum SPI transfer size is not correct (f608431)
- I2C: Fixed a bug in the SDA sample timing calculation resulting in the SCL staying low after a NACK (#9777, 78d88af)
- USB Host: Fixed bug in enumeration where a device would always be configured to bConfigurationValue = 1 instead of the bConfigurationValue of the first configuration descriptor found (#11113, 2117b7a)
- I2S: Fixed a concurrency issue while doing disable and writing/reading in different threads. (be8727c)
- SDMMC: Fixed incorrect clock phase settings (#8521) (aedcec9)
- MSPI: Fixed Octal PSRAM timing tuning failure under low temperature on ESP32-S3 (1d89e24)
- GDMA: Fixed crash from logging when using newlib nano (#9631, #10366, d4a3427)
- RMT: Fixed RMT 1-Wire example unstable issue, and refactor to use component manager (#10790, 2004bf4)
Removed
- ADC: No longer support ADC2 continuous (DMA) mode on ESP32S3 and ESP32C3, search for errata on espressif website to know more details. Users can force use it by enabling ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 (6569be4)
- ADC: No longer support ADC2 oneshot mode on ESP32-C3, search for errata on Espressif website to know more details. Users can force use it by enabling ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 (6569be4)
- efuse: Removed dependency on bootloader component headers (dbbc1ba)
- ESP_ROM: Deprecated STATUS type in favor of ESP_STATUS (dbbc1ba)
- ESP_ROM: Remove lldesc_xxx definitions since no actual function bodies. (#10204, 0c4d5cf)
- ESSL: The esp_serial_slave_link is removed from the esp-idf components. (03d8059)
- GPIO: Removed declarations in the ROM headers which do not exist in the ROM. (#10205, 947c112)
- PSRAM: Removed unused CS and CLK IO kconfig options on ESP32-S2 and ESP32-S3. (66b1c34)
- TinyUSB: Removed sample_descriptor example (71566c4)
- tjpgd: Removed tjpgd patch for chips, that don't have tjpg in ROM. It is handled in esp_jpeg component now. (5b48a33)
Core System
Added
- Added a new chip version logic (major * 100 + minor) (c546de8)
- Added kconfig option for using parts of SRAM1 for IRAM on ESP32 (#9824, 92965cd)
- bootloader_support: Added API to detect that Factory reset has happened (#10753) (f1465c6)
- efuse: Added a logging feature to print prepared for writing eFuses (#10536, bfd2f6e)
- esp_app_desc structure is now defined as a "weak" symbol and can be overridden by the application (#9899, 87ea314)
- esp_hw_support: Added an API to get MAC len (#9531, 5557829)
- esp_hw_support: Added APIs to define user's own MAC addresses without generation from the base MAC address (#7261, 5557829)
- esp_hw_support: Supported 8MD256 as RTC slow clock work properly ESP32-S2/ESP32-C3/ESP32-C2/ESP32 (cfcb573)
- esp_rom: Added ROM API esp_rom_uart_set_as_console for all riscv chips. (435e055)
- esp_timer: Added esp_timer_restart to atomically stop and start a timer, periodic or not (009d15e)
- esp_timer: ISR handler can now run on both cores (#10457, cf68a4c)
- esp_timer: Added IRAM_ATTR for esp_timer_restart and esp_timer_is_active (#10522, #10859, 5736694)
- GDB Stub: Added support for GDB Stub on ESP32-C2 (6020bb0)
- Heap: Added hash map mechanism to improve heap trace performance (f94bbe1)
- Heap: Added heap_trace_summary, heap_trace_dump_caps functions (#10141, a74ae7f)
- heap: Added implementation of function hook called from tlsf_check() to check for memory corruption on the free blocks of memory. (33b5156)
- Heap: Added memory allocation and free user callbacks. (55fd7d4)
- Heap: Added size and capabilities information to the log printed during system abort when an allocation fails (#10650, a630f06)
- Heap: Added configuration to force the heap implementation to be placed in flash (e35897d)
- Linux-target: Added support for building esp_hw_support, soc and hal components for linux target (b36c0e8)
- Linux-target: Added support for the heap component (2f348d9)
- Linux-target: Made esp_system partially buildable on Linux (c381fee)
- MMU: Added "Memory Management for MMU Supported Memory" chapter to programming guide (7905961)
- panic: Added configurable reboot delay (#9962, 102b501)
- pthreads: Added POSIX semaphore implementation (6382fc3)
- Sleep: Added wake stub example to show how to implement a deep-sleep wake stub(#8208, a6f7035).
- ULP-FSM: Added ESP32-S3 support for ulp-fsm ADC example (#7963, cb48a7b)
- ULP-RISC-V: Added a new ulp_riscv_reset() API to reset the ULP core. (27be8a1)
- ULP-RISC-V: Added lock API to provide mutual exclusion when sharing variables between the main CPU and the ULP. (f54972d)
- ULP RISC-V I2C: Added a Kconfig option to configure the read/write timeout values. (#11154, 0edb7ee)
- ULP: Added a mechanism to handle wake up from ULP when the main CPU is not in sleep-mode. (#8341, #5254, e9ef5e9)
- ULP: Added interrupt handling on the main core for ULP signals. (#10737, b464933)
- ULP: Added support for RTC I2C to ULP RISC-V on ESP32-S2 and ESP32-S3. (867745a)
- WDT: Support Interrupt WDT and Task WDT on ESP32-C2 (4f1a9e4)
Changed
- Console: Upgraded argtable3 library to version 3.2.2 (#9907, #10016, 2d9e75b)
- Console: Changed ESP_CONSOLE_DEV_UART_CONFIG_DEFAULT to be defined only when CONFIG_ESP_CONSOLE_UART_DEFAULT or CONFIG_ESP_CONSOLE_UART_CUSTOM is defined (#10707, 8adb48c)
- cxx: experimental components moved to a separate repository (50ad61c)
- esp_event: event base definitions are now immutable (#10509, a8b830c)
- esp_hw_support (esp32): If the MAC_FACTORY CRC check fails, then esp_efuse_mac_get_default returns INVALID_CRC instead of abort (#10401, ffea490)
- esp_partition: Linux partition emulation now places its working file in the build directory (ab5d8d0)
- esp_ringbuf: Config option CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH now depends on CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH. (9d607c0)
- Heap: Decreased utilization of the IRAM section by the heap component binary by ~1000 bytes. (1d16ca6)
- Heap: Moved TLSF implementation to a separate submodule (16c2cb3)
- Heap: Replaced calls to bzero() with memset(). (4757099)
- rtc: Decreased RTC Fast Frequency to make it stable on ESP32-C2 (f11de46)
- rtc: Improved XTAL stability during sleep (ESP32) (f191b2f)
- ULP: Updated the CMakeLists.txt to output ULP ELF binary with the .elf file extension. (522a216)
- ULP: Updated ULP FSM Instruction Set for shift operations. (#8831, 751bca4)
- esp-system: Moved some esp-system functions that were previously placed in IRAM to flash, freeing up IRAM space. (9d114e3)
- RISC-V: Moved some riscv functions that were previously placed in IRAM to flash, freeing up IRAM space. (9d114e3)
Fixed
- Fixed ESP32 chip info not listing ESP32-PICO-V3-02 as having embedded spiram (#11233, e104fa1)
- Bootloader: Fixed super watchdog not enabled issue on ESP32-C3, ESP32-S3 (1b6461b)
- Console: Fixed a crash when calling esp_console_new_repl_usb_serial_jtag (#9662, 4daa044)
- cxx/pthread example: Fixed typo in comment (#10730, 1842be3)
- eFuse: Fixed the efuse virt mode, load efuses from flash when FE is on (#10929) (!22793)
- eFuse: Explicit setting of efuse time settings (aed737b)
- eFuse: Fixed byte order in MAC_EXT for C6 and H2 (e44a688)
- eFuse: Fixed efuse summary description containing semi-colon breaking efuse-summary (7b09d12)
- esp_hw_support: Fixed failing tests for interrupt allocation on RTC memory for esp32c2 target. (ebbe24a)
- esp_hw_support: Fixed xtal32k error detect when configured but doesn't actually exist (a0908b1)
- esp_hw_support/esp_intr_alloc: Fixed missing call to portEXIT_CRITICAL_SAFE() when esp_intr_enable() returns early (#9867, e925a14)
- esp-hw-support: Fixed missing header include in esp_cpu.h (#11388, b311a3f)
- esp_hw_support: Fixed POWER ON reset when using RTC IO as input in deepsleep on ESP32-S2/ESP32-C3/ESP32-C2 (cfcb573)
- esp_hw_support: Fixed RTC memory lost in high temperature in deepsleep on ESP32-S2/ESP32-C3 (cfcb573)
- esp_hw_support: Fixed dangerous power parameters in sleep modes on ESP32-S2 (cfcb573)
- esp_hw_support: Updated the memory ptr location/property checks to acknowledge the unused DCACHE added to DRAM for ESP32-S3 as internal memory (c49dce4)
- esp_log: Fixed function name esp_log_impl_lock_timeout in components/log/log_noos.c (dbbc1ba)
- esp_system: Fixed bug where calling putchar as the first print would cause a system crash (due to stack corruption). The stack corruption was due the toolchain using 64-bit time_t (CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS) but ROM functions continuing to use 32-bit time_t. (1de6f96)
- esp_system: Fixed case where multicore app can not be run if bootloader is unicore, related to ESP32 and ESP32-S3. (#10714) (6c5a7da)
- esp_system: Fixed issue with incorrect MMU configuration during CPU startup. (86b6f87)
- esp_system: Fixed placement of __stack_chk_fail() from flash to IRAM when stack check is enabled. (c92f239)
- esp_system: Fixed RAM APP not being able to access external memory (948a895)
- esp_system: Fixed the bug that the reboot is stuck after the esp32s3 core1 enters the panic (#10320, 46917a8)
- esp_system: Fixed time jump after reboot (#9448, b027332)
- esp_system: Fixed USE_FIXED_STATIC_RAM_SIZE option not working properly and updated values for S3 (#10271, #10270, fdea528)
- esp_system: Fixed wrong watchpoint setting in shared stack function (#10414, 7dbe968)
- esp-system: Fixed int WDT reset reason being reported as task WDT on ESP32-C2 (e86b813)
- esp_timer: Fixed the stop alarm triggering when the timer list is empty (related to chips that power down the digital domain with systimer) (167d5ae)
- esp_timer: Fixed a race condition in esp_timer which resulted in linked list corruption (#11215) (9f7475d)
- esp-rom: Fixed error in miniz header documentation for tdefl_init (#8435, 0a31319)
- esp-rom: Fixed the wrong baud rate when 2nd bootloader use custom uart1 as console (ab20e3e)
- Fixed panic handler output not being printed to USB_SERIAL_JTAG when it was selected as a secondary console (#10027, 65ecbb1)
- gdbstub: Fixed build-error due to potentially uninitialized variable on -O2 (#9706, 0ecf0af)
- Heap: Fixed allocation failure when allocating memory as IRAM in the startup stack region when memory protection is enabled (b44b889)
- Heap: Fixed excessive heap allocator overhead introduced in v4.3 release, which increased heap size by ~8KB (#7822, ce895b8)
- Heap: Fixed heap trace leaks performance on large number of records by using doubly linked list. (b1f9d7a)
- Heap: Fixed heap_caps_get_allocated_size() return value when poisoning is active to not account for canary head and tail (cba1095)
- Heap: Fixed memory boundary check when adding a new heap (1bbd524)
- Heap: malloc(0) and calloc(0) won't call heap_caps_alloc_failed() callback anymore (d622bcf)
- intr_alloc: Fixed freed interrupt sources not being able to be allocated again with different flags (94c0e3b)
- linux-target: Fixed driver mock being broken due to changes in driver folder structure (#10749, eb40fc9)
- MMU: Fixed stale data being read on memory mapped instruction page (4bff4ed)
- MMU: Fixed wrong MMAP_ALIGNED_MASK macro on ESP32-C2 (f54df61)
- Panic: Fixed infinite panic loop after an interrupt watchdog (68e1e7d)
- Partition table: Fixed mixing usage between spi_flash_mmap_handle_t and esp_partition_mmap_handle_t, SPI_FLASH_MMAP_DATA and ESP_PARTITION_MMAP_DATA, spi_flash_munmap and esp_partition_munmap. (5edff33)
- Power Management: Fixed string formatting build error if CONFIG_PM_PROFILING is enabled (#10347, 14394ed)
- pthread: Avoid heap alloc in pthread_cond_timedwait if possible (#8987, 0769298)
- Sleep: Fixed build errors regarding the usage of the ESP_PD_DOMAIN_RTC_PERIPH on targets that don't support selective RTC power control. (14394ed)
- spi_flash: Fixed clobbering RTOS base priority in spi_flash_disable_interrupts_caches_and_other_cpu() (15ec31e)
- ULP-FSM: Fixed incorrect description for ULP FSM JUMPR and JUMPS instructions. (#10923, 1559b63)
- ULP-RISC-V I2C: Fixed a bug where the RTC I2C failed to initialise after esp_restart() (#10468, 28ccb3b)
- ULP-RISC-V I2C: Fixed an issue where the ULP RISC-V I2C example caused a spurious wakeup of the main CPU on ESP32-S2 and got stuck thereafter. (#10301, 4c98bee)
- ULP-RISC-V: Fixed spurious cocpu trap wakeups on ESP32-S3 by always forcing COCPU clock on. (4a56758)
- ULP-RISC-V: enabled adc support for ulp riscv on ESP32-S2 (#11052, #11040, e1b89ee)
- ULP: Fixed a bug where-in the incorrect bit-width was used to read the RTC_CNTL_MAIN_STATE_IDLE bit of the RTC_CNTL_LOW_POWER_ST_REG register on ESP32. (b0ae3dd)
- ULP: Made ESP32 FSM ULP GPIO example C++ compatible (#11028) (39087f3)
- xtensa: xt_utils.h now compiles with -Wsign-conversion without warning in C++ (#10895, b1c85cc)
Removed
- esp_system: Removed unused ESP32-C2 MMU page size kconfig option (e44f4d3)
- esp-rom: Removed functions from the ROM headers which were missing a function definition. (43c899b)
- esp-rom: Removed undefined spi_flash functions (92a44af)
- Heap: Removed misleading info about malloc being equivalent to heap_caps_malloc(p, MALLOC_CAP_8BIT) (#7659, 5e47c7c)
Debugging
Added
- espcoredump: Added ESP32-C2 target support (47fa643)
- espcoredump: Added support for stacks in external RAM for all targets. (5eb8def)
- espcoredump: Fixed coredump not being able to be used together with gdbstub at panic (#10017, 89190fa)
Fixed
- espcoredump: Fixed a bug on Xtensa targets that triggered an exception when using coredump custom stack. (1ff8a68)
- espcoredump: Fixed coredump chip-id for ESP32-C2 (6b8be56)
FreeRTOS
Added
- linux-target: Added POSIX port for running on Linux (f33ac0a)
- linux-target: Added missing sources for linux target (a995c83)
- Added support for indexed task notifications larger than 1. Number of indexes are can be configured via the CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES option. (#9349, cce1f9d)
- RISC-V targets can now wrap Tasks' function to detect if one of them mistakenly returns without deleting itself. This option can be activated in the menuconfig (5495451)
- Added missing header include for esp_chip_info.h to port.c (#10310, 6bd0be3)
- Added a wrapper implementation for the FreeRTOS heap. All dynamic memory allocated by FreeRTOS is now guaranteed to be in internal memory (daf4150)
- Added various ...GetStaticBuffer() functions to obtain pointers to the memory buffers of statically created FreeRTOS task/objects. See this upstream FreeRTOS PR for more details (4a35536)
- Added various ...CreateWithCaps() helper functions to create FreeRTOS task/objects with specific memory capabilities (e.g., in PSRAM). (#11216) (4a35536)
Changed
- Enabled configUSE_PORT_OPTIMISED_TASK_SELECTION config option for RISC-V targets (7a58ffa)
- Updated the FreeRTOS-IDF suspension behaviour to schedule tasks unblocked by an interrupt on another core with the scheduler running if the task's core affinity allows it (c77b575)
- Refactored FreeRTOSConfig.h so that common configurations of different FreeRTOS implementations and architectures are placed in the same file (c71025d)
Fixed
- esp_ringbuf: Fixed bug where internal RX semaphore was not taken when calling xRingbufferAddToQueueSetRead()/xRingbufferRemoveFromQueueSetRead() if CONFIG_FREERTOS_ASSERT_DISABLE was enabled (#9497, c0f5e12)
- Fixed bug where if an unpinned task that gets interrupted by an ISR, and that ISR uses the FPU, the unpinned task will get automatically pinned to the the current core. (54d286d)
- Fixed ORIG_INCLUDE_PATH cmake property having the wrong path (e219510)
- Functions in vanilla FreeRTOS that called vTaskSuspendAll() or portSET_INTERRUPT_MASK_FROM_ISR() would call taskENTER_CRITICAL() instead (due to SMP thread safety). The vanilla behavior has now been restored when building for single core (74ed2aa)
- Restored vanilla task selection algorithm when building for single-core (configNUM_CORES = 1) with optimized task selection disabled (configUSE_PORT_OPTIMISED_TASK_SELECTION == 0). The vanilla algorithm is slightly faster and uses less IRAM (1e953e3)
- vTaskDelete() and the Idle tasks can now delete/free tasks that were pinned to the other core. (b223baf)
- SMP: Fixed a bug with the portDISABLE_INTERRUPTS() macro on the Xtensa port of Amazon SMP FreeRTOS where the macro would entire PS register instead of the INTLEVEL field of the PS register (i.e., previous interrupt level) (4c1ff60)
- SMP: Fixed bug where deleting a task that used the FPU would lead to their FPU contexts not being properly freed, and possible memory corruption or illegal load/store on the next tasks that uses the FPU on the same core. (b223baf)
- SMP: Fixed the portTRY_ENTER_CRITICAL() macro of the RISC-V SMP FreeRTOS port to use the correct GCC statement expression macro syntax (eb837bb)
- Fixed a bug wherein the xTaskRemoveFromEvenetList() did not account for nested scheduler suspension when checking for scheduler state (f5020d3)
Removed
- Removed CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION KConfig option (ac99c0a)
- Removed use of queue locks for multi-core/single-core builds in IDF FreeRTOS. Queue functions on multi-core builds are now slightly faster as queue locks are no longer used. Queue functions in single-core builds now properly used queue locks (with scheduler suspension) thus are properly deterministic (matching Vanilla behavior) (056d72e)
- Removed bad assert check for inheritance in xQueueSemaphoreTake() that could be falsely triggered when running with multiple cores (#10199, 2976703)
Power Management
Added
- Support ESP32-C6 PMP and PMA sleep retention (0d13f6f)
Changed
- Kconfig: Refactored xtal freq kconfig to common configuration item (c25c254)
- Allow using touch/ULP with RTC_PERIPH domain (including EXT0 wakeup source) (bc0ccd9)
- Unified esp_pm_config_t is used to replace the deprecated esp_pm_config_esp32xx_t (a529771)
- current would increase 2 ~ 3uA when in deepsleep by default config (cfcb573)
- current would increase when 8MD256 used as RTC slow clock in sleep (cfcb573)
Fixed
- Fixed the issue of sleeping time error because external 32kHz xtal does not exist (33f1747)
- Fixed Wi-Fi does not know that Bluetooth has modified the lpclk source (33f1747)
- Fixed issue where entering light/deep sleep could trigger a deadlock, thus leading to an interrupt watchdog timeout (236d910)
- Fixed current leakage when hold digital IO during deep sleep (dd2f861)
- HAL/GPIO: Fixed digital GPIO can not disable hold during deep sleep (ESP32-C2/ESP32-C3/ESP32-S2/ESP32-S3) (dd2f861)
- HAL/GPIO: Fixed digital GPIO can not enable hold during deep sleep when force_unhold set (ESP32/ESP32-S2/ESP32-S3) (dd2f861)
- Fixed that the backup_dma in the ROM code did not clear the reset signal, and the RTC_WDT_RST was triggered when the system continued to use the backup_dma after RTC_SW_CPU_RST (c2fba4b)
- Fixed sleep time inaccurate bug when select 8MD256 as rtc slow clock on ESP32 (#6687, 84a6c6f)
- Fixed GPIO wakeup not working properly in some cases (3592638)
- Fixed the incorrect RTOS tick when XTAL PU during sleep on ESP32-C3 (3f3a2cf)
- Fixed sleep current issue caused by SAR ADC (73c06b5)
- Fixed the issue of failure of receiving beacons in modem state caused by enabling light sleep in wifi min/max modem sleep mode (796250c)
- sleep: Fixed ESP32-C2's 8md256 configured as rtc slow clk can not work properly during deep sleep (409804f)
- Fixed deepsleep abnormal base current when goto deepsleep from SoftAP mode on esp32s2 (8cecbaf)
- Fixed abnormal deepsleep base current of ULP ADC on esp32s2/esp32s3 chips (ed32d7a)
- Fixed potential light sleep wakeup failure with ESP_SLEEP_POWER_DOWN_FLASH enabled (cb88d20)
newlib libc
Fixed
- Fixed issue where errno was not set properly in adjtime (#10334, ff23012)
- Fixed wrong mutex types being used for env and tz (#10649, #9441, #10626, #10686, 2e55775)
LWIP
- esp_netif: Added API to enable or disable NAPT on an esp_netif
Added
- Added linux target support for tcp_client example (fbc32c0)
- Added TCP Fin2 timeout configuration (f51e5d6)
- Added support for linux target (dba0718)
- iperf: Added multi-unit for iperf result printing (f90183a)
- iperf: Support iperf break after TCP sending timeout (d4b9989)
- Added menuconfig option to enable NAPT debugging and updated dependency (627d031)
- sntp: Added SNTP thread-safe API to esp_sntp.h, fixed usage in examples (2f1d30d)
- esp-netif: Added API to return default esp-netif (b44f9d6)
- Added support for IPv6 only mode (956e62c)
- Added api to enable/disable napt based on lwip netif (f3a32bc)
- Added on demand timers for several modules to improve power efficiency (updated DNS timer, IPv4/IPv6 reassembly timer and DHCP fine timer) (4beea93, 5f440ec, 4bd1e3f)
- esp-netif: Added a config option for periodic MLDV6 reporting to fix multicast issues with some routers (that do not forward multicast packets) (2f7aa5a)
Changed
- examples: Extended Bridge example by interactive console to manage FDB entries (4ded1ea)
Fixed
- Fixed potential close() socket deadlock when SO_LINGER is enabled (7df49f0)
- Bugfix for increase ping task stack size (c941691)
- Fixed long time to get IP (ed36caa)
- esp-netif: Fixed minor issue in Bridge FDB add function (4ded1ea)
- Fixed DHCP server's bug allowing the assigned IP addresses to exceed the configured subnet range (#10024, be94097)
- Fixed PPPoS re-connection issues, causing esp-modem applications failing to connect again after disconnection (#10308, bef3f2c)
- Fixed esp_netif_set_dns_info() to support PPP interfaces (#8648, a786676)
- esp-netif: Fixed thread-safety violations when accessing TCP/IP core functionality (2f1d30d)
- Fixed TCP Out of Sequence segment incorrect trim issue that might trigger an assert (f3a32bc)
- Fixed addrtype and length in gethostbyname (f3a32bc)
- Fixed an issue where the getaddrinfo() was returning NULL when using an IPv4 mapped address (#9693, 057cf2b)
OTA
Added
- Added support for esp_events for diagnostic purpose (f727494)
- Set user configurable ota authorization retries (7fb16bc)
Fixed
- Fixed memory leak in pre_encrypted_ota example (21db02c)
- Fixed esp_https_ota_begin() to call http_client_init_cb before esp_http_client_perform() (bc2334d)
Removed
- app_update: The app image metadata accessor APIs (esp_ota_get_app_description and esp_ota_get_app_elf_sha256) from app_update component are now deprecated and are replaced by corresponding alternatives (esp_app_get_description and esp_app_get_elf_sha256) from the new esp_app_format component (a2f028a)
HTTP Client
Added
- Allow option to set the TLS server hostname. (f684ab6)
- secure_element can be used for the TLS connection in esp_http_client. (96585ab)
- Added a function esp_http_client_cancel_request for cancelling HTTP requests (#9892, 26e3f0b)
- Added support for linux target (21c5c50)
- protocol_examples_common: Added URI encode/decode helper APIs (#10566, 0e64ef6)
- Added support for esp_events for diagnostic purpose (361f682)
- Added getter and setter function for user_data field in esp_http_client_handle_t (#10715, bdf8f1c)
Fixed
- Fixed issue with cached data from previous connection in case of URL redirection (d539b2d)
- example: Fixed potential buffer overflow in esp_http_client_example (#10436, 8db02b3)
- Prevent infinite loop with the disable_auto_redirect case (#10629, 190f4c7)
HTTP Server
Added
- Added support to configure SO_LINGER option in httpd_config_t (787c69a)
- Added support to enable TCP keepalive config (a6b9304)
- Accept ALPN protos as part of the configuration parameters (#10130, 5ac2bb7)
- Added support for esp_events for diagnostic purpose (9a7dd9a)
- esp_local_ctrl: Allow component to build and work with CONFIG_ESP_HTTPS_SERVER_ENABLE disabled case (58530ae)
- Added support for Linux target (4ee6eda)
Changed
- esp-cryptoauthlib: Pushed out component to IDF component manager link (6c2c05e)
- Updated https_request example to fail when time is not synced (13a34af)
Fixed
- Fixed issue with default initialization in HTTPD_SSL_CONFIG_DEFAULT (#9653, 83d15ff)
- Use different control ports between HTTP and HTTPS default configs (#10160, 2c9eb26)
- Fixed initializers missing in esp_https_server (#10306, a46223b)
- Fixed wrong context pointer in httpd_req_cleanup function (35d2a82)
- Fixed return values for httpd_socket_send() and httpd_socket_recv() APIs (a176bff)
Provisioning
Added
- wifi_provisioning: Added support to re-provision device for new credentials without rebooting (#5978, 1fc3db2)
- Added support for newer "security2" in protocomm layer and enabled it as default scheme in the provisioning manager example (5fffe4b)
- wifi_provisioning: Exposed event for BLE transport pairing and disconnection (#10007, 9957962)
- wifi_provisioning: Added new wifi_ctrl endpoint with support for reset and reprov commands (f1dcb19)
- wifi_provisioning: Added CONFIG_WIFI_PROV_STA_SCAN_METHOD to set scan policy and default has been updated to "all channel scan" from "fast scan" for more reliability in connecting to AP (9c99080)
- protocomm: Added a new ble_link_encryption flag in protocomm_ble_config_t to enable users to consume the protocomm component independently of any other component (#9443, 7943a92)
Changed
- wifi_provisioning: Changed API wifi_prov_mgr_is_provisioned() to not depend on provisioning manager initialization state (ec5df3e)
- wifi_provisioning: Disabled by default the Forcing of BLE encryption requirement on provisioning characteristics (0394284)
Fixed
- wifi_prov_mgr: Fixed prov_ctx_lock in deinit API of provisioning manager (0a93ee1)
- wifi_prov_mgr: Fixed maximum BLE advertising device name length. (7e57cdf)
- wifi_prov_mgr: Fixed return value of characteristic read operation in nimble (#10888, da10eff)
- wifi_provisioning: Fixed provisioning manager to retry when error code is WIFI_REASON_ASSOC_EXPIRE (836dc4a)
- wifi_provisioning: Stop provisioning service in the default event loop rather than a separate task (#10378, 68a3bb2)
- wifi_prov_mgr: Fixed memory leak after bluetooth stack was stopping (5bba395)
mbedTLS
Added
- Added support for linux target (21c5c50)
Changed
- Updated to upstream release v3.3.0 (4f67662)
- Updated the default root certificate bundle (cacrt_all.pem) (d8af042)
- Updated the common cert authorities csv (cmn_crt_authorities.csv) (85b1efc)
- Updated GCM implementation with CTR-based calculation which utilizes AES-DMA to improve efficiency. (8437c0d)
- mbedtls: Updated to use default GDMA psram_alignment to avoid data inconsistency. Now the GDMA psram_alignment will be the same as the data cache size (a9ce760)
- Updated to v3.4.0 (8c11edb)
Fixed
- ecc_accelerator: Fixed ECC point multiplication in case of short scalar values (91c25b5)
- Fixed data corruption issue in the MPI H/W peripheral for ESP32 when COMPILER_OPTIMIZATION_PERF is enabled (#10403, b6588eb)
Bootloader
Added
- Added warning about loader segment in bootloader override example README (#9599, 2e298bf)
- Add chip revision check based on the configured REV_MIN_FULL and the REV_MAX_FULL associated with IDF version (c546de8)
Changed
- Banner now prints both build date and time (3ffa2ad)
- Increased iram_loader_seg segment size for ESP32-S2 (0443865)
Fixed
- Bootloader will now consider (appended) signature length while verifying image for allocated partition length (b1e1411)
- Fixed not being able to compile with BOOTLOADER_SKIP_VALIDATE_ALWAYS on ESP32-C2 (572e795)
- User's data in rtc_retain_mem are now ignored when determining whether to erase the structure or not. (779d880)
- Fixed bootloader printing an assert message even if CONFIG_OPTIMIZATION_ASSERTIONS_SILENT was set (#7518, 326b6a9)
- Fixed ESP32-S3 esp_rom_printf not being able to print anything when ROM log was disabled by efuse or RTC store register (3b0354a)
ESP-TLS
Added
- Added support of certificate selection callback for mbedTLS stack. (#9833, 4b6d9c8)
- Added support for linux target (21c5c50)
- Added addr_family option to esp_tls_cfg_t (#10967, 8d90249)
- Added the getter/setter function to set the connection sockfd value (eeea0a7) and for the esp_tls conn_state (eeea0a7)
Fixed
- Fixed memory leaks (a9f15d1, f4773d6)
- Fixed setting the default timeout of sockets before a connection when a timeout value was not given in the esp-tls config structure (81932a2)
- Fixed build issue when server session tickets have been enabled (#10765, 2c8c8bf)
- Fixed issue in the DS peripheral case to release mutex from the owner task only (#11402) (d345beb)
ESP-MQTT
Added
Changed
- ssl_ds example: DS data partition renamed to esp_secure_cert (187d3c2)
- Updated MQTT_EVENT_SUBSCRIBED to include error code on failure (aaeaefc)
Fixed
- Fixed restart on network error (espressif/esp-mqtt#239, aaeaefc)
TCP Transport
Added
- Added support for linux target (21c5c50)
- Added HTTP authorization header in websocket client. (f6b0d04)
- Added new API esp_transport_ws_get_upgrade_request_status to get http status code from server (496843b)
- Added support for SOCKS4 proxy connection. (98b7572)
Fixed
Storage
Added
- Semihosting: VFS semihost additional syscalls implemented. (38acc3f)
- VFS: VFS semihost additional syscalls implemented. (38acc3f)
- SDMMC/SDSPI: Added a support for setting SD card custom frequency (7d28aba)
- Added a new component 'esp_partition' for the partition APIs separation (b14116f)
- SPI Flash: Added yield capability to spi2 and spi3 (external) flash (204f420)
- FATFS: Added APIs to format FAT filesystem on SD card (c58a84f) and SPI Flash (c58a84f)
- ESP Partition/Linux: Added support for non default file emulating flash memory (6987526)
- SDMMC: Functions sdmmc_write_sectors, sdmmc_read_sectors and sdmmc_erase_sectors will return ESP_OK if sector_count (block_count) is equal to 0. (cd74716)
- VFS/FatFS/SDMMC: Added an option to set a custom default st_blksize value via CONFIG_FATFS_VFS_FSTAT_BLKSIZE (f8383f4)
- Added NVS partition binary parser (
components/nvs_flash/nvs_partition_parser/nvs_read.py
) (4799cc1) - Added free page checking to integrity check (40d1eff)
- Added JSON output (40d1eff)
- FATFS: Fixed open failure with O_CREAT|O_WRONLY flags (#1817, bba2581)
- SDMMC: Added an SDMMC Host example to communicate with an eMMC chip on ESP32-S3 (aedcec9)
Changed
- SPIFFS: Host test for spiffs was migrated to use CMake instead of make (d6d8324)
- FATFS: Determine the sector size and sector count by parsing the FatFS boot sector (non-WL partitions only) (a38c63b)
- nvs_flash/host_test: Host tests migrated to CMake build system (aad600c)
- NVS: Made all object allocations "noexcept" (00f721f)
- Updated FATFS to 0.15 w/patch2 (679d973)
Fixed
- nvs_flash: Fixed potential memory leak in nvs::Storage::init() (52cfc01)
- SPI Flash: Fixed watchdog timeout when erasing external flash chip via esp_flash_erase_region() and esp_flash_erase_chip() (204f420)
- VFS: Fixed usb_serial_jtag console block issue when no data to transfer(#10208, b184b9a)
- SDMMC: fixed infinite loop when SD card is not responsive (#10532) (9310ed6)
- SDMMC: Added vTaskDelay yields to prevent WDT triggers (9310ed6)
Tools
Added
- Added FreeRTOS SMP port for sysview (1a006cb)
idf.py openocd
now uses USB_SERIAL_JTAG interface on ESP32-C3 and ESP32-S3 by default (311ab42)- A new
--output-file
argument was added for theidf.py size
command for writing the output to a file (40b48a5) - Added git-lfs into the docker image (#9563, 4533004)
- Added support for templates for defining idf.py hints (1669a5d)
- Added QEMU with Xtensa chip support to the Docker image (ccc7846)
- Added CSV output format (
--format=csv
) foridf.py size
(bcec9c8) - Added newlib nano support for clang builds (9ac90ac)
- For more user-friendly interaction, the
idf.py coredump-debug
andidf.py coredump-info
commands were added to replace theespcoredump.py
command. (89d2c22) - Support using ESP-IDF installed in system-wide shared directory for all users (#9328, #9329, c658d09)
- Support build app binary that can be loaded into RAM for execution (04987ac)
- Replaced xtensa-clang toolchain with universal esp-clang toolchain release esp-15.0.0-20221014 which has "all-in-one" support for the most of Espressif chips: ESP32, ESP32-S2, ESP32-S3 and ESP32-C3. (8c2ae2f)
- Enabled idf.py hints for debug targets (648b1a4)
- partition_table/gen_esp32part: Allow 4K aligned app partition size for secure boot v2 case. This allows to use remaining space after signature block (worth 60K) for other data partitions. (3850e93)
- Added the
--outdated
argument to theidf_tools.py list
command to list outdated tools only (383710f) - Added documentation how to access serial port inside container via RFC2217 protocol (#10617, b26800e)
- docker: Added
build-essentials
into the docker image, required by Linux targets (#10772, 140e6be) - Allow to use LicenseRef-[idstring] in SPDX-License-Identifier (1dc3d5e)
- Added additional arguments to esptool while flashing the application. New options include
idf.py flash --force
andidf.py flash --extra-args="..."
(4e73cb7)
Changed
- Upgraded gdb version to 12.1_20221002 (e3ff53d)
- Upgraded toolchain version to esp-12.2.0_20230208 (1484f2d)
- Upgraded esp32ulp toolchain version to 2.35_20220830, adding support for macOS and linux ARM64 hosts (#6432, 16dbb8f)
- Upgraded OpenOCD version to v0.12.0-esp32-20230419 (70feed1)
- Upgraded esp-clang version to 'esp-15.0.0-20221201' (9ac90ac)
- Upgraded ESP ROM ELFs to version 20230320 (51772f4)
- Upgraded ccache installed version to 4.6.2 on Windows (#9656, 9d75833)
- Upgreaded dfu-util version to 0.11 (https://sourceforge.net/p/dfu-util/dfu-util/ci/v0.11/tree, d29e53d)
- Upgraded ccache to 4.8 (https://ccache.dev/releasenotes.html#_ccache_4_8) (83469dd)
- app_trace: sys_view upgraded to version 3.42 (236fa5e)
- idf_tools.py: upgrade pip and setuptools in Python 3.7 and 3.8 virtual environments as well (8bfec98)
- export.fish should not change the current working directory (#9637, 0aef812)
- Enabled automatic detection of long file names (99f836e)
- fatfsparse.py: Enabled automatic detection of wear levelling (1146b83)
- fatfsgen.py: Multiple bugfixes and improvements (e9d7340, 72de7c5, 2dcb195, 1b3fed3, e82adaa, a38c63b, dd3cf25, 95c4749)
- Improve download error messages coming from "idf_tools.py" with hints on how to resolve them (#9618, #4081, 02605f1)
- Improved venv check and avoid failure in Windows systems setup with older installers (for ESP-IDF v4.4) (cd8f4c7)
- Improved addr2line lookup for IDF Monitor by printing information only about addresses from executable ELF segments (ec0466e)
- Improved idf.py error message when the argument value collides with the environment variable (#10475, 73366d9)
- Refactored NVS partition binary parser and split into multiple files (components/nvs_flash/nvs_partition_tool/nvs_tool.py, 40d1eff)
- idf_monitor: Moved IDF Monitor to a separate package: https://pypi.org/project/esp-idf-monitor/ (4bd5ebb)
- test_apps: Secure boot test app now uses pytest framework (8894fae)
- idf_size: The idf_size.py tool was moved into a separate Python package that is installed as a dependency. (891f9a9)
Fixed
- ESP32-H2: Fixed esp32h2beta2 erase_flash after esp32h2beta2 supports stub (819880a)
- Detect missing component manager and print a proper error message (c896a62)
- Fixed idf.py hints to be enabled all the time and being able to disable them (f8bcec0)
- Fixed multi-byte characters appearance in the idf.py monitor (55b7b42)
- Handled I/O error in idf.py output capturing (for example for disconnected chip while the monitor is running) (#9649, a565f06)
- fatfsparse.py: Limit the file content size to correct number (890a84d)
- fatfsgen.py: Fixed missing NULL terminator for long file names with a specific size (f644d71)
- fatfsparse.py: Fixed the missing first file in the parsed folder (952c0f7)
- Export script should not fail if "python" is not available (#9749, 201dbb0)
- 'idf.py gdb' loads ROM and bootloader symbols in addition to app symbols (d08898a)
- 'idf.py gdb' loads necessary symbols in case '--gdbinit' option is present (d08898a)
- The export scripts are working offline now and not updating the constraint file (#9328, e2d275a)
- Detect if the project is configured for a different Python (#9993, 818a186)
- Fixed esptool wrappers by avoiding importing the module (#9861, c51a14b)
- export scripts offer to remove old toolchains versions and keep the last version of any toolchain (6b1d0f9)
- Fixed idf.py monitor read on Linux target (7504755)
- gdbgui is not supported on Python 3.11 (#10116, e5de975)
- An issue was fixed where DIRAM size in idf.py size and idf_size.py output was half the actual size (#9960, 2eabf60)
- Fixed riscv32-esp-elf-gdb not installed if only ESP32-C2 target was requested (espressif/idf-installer#158, e48b8ee)
- Detect port only once when multiple targets are run (9d9860b)
- idf_size: A bug in archive diff display with CSV as output format not showing some values was fixed (1731007)
- Allow to interrupt port detection (fda3cf5)
- Fixed an issue where on Windows
--build-dir
and other directory related options would result in created folders having all lowercase names (#10282, abf5022) - Fixed idf.py gdb memory access before remote target is connected (2c794ea)
- Allow custom Python installation path set with IDF_PYTHON_ENV_PATH environment variable (#10489, 2237847)
- Fixed usage of sdkconfig with custom path name (4bf1208)
- Fixed export.fish return code (#10828, 786c68b)
- export.sh script supports
set -u
bash option (#10935, a686db8) - Fixed missing build progress lines when running in Docker with redirected output (05a8d0b)
- Don't add the esptool directory with wrappers to the PATH (#10926) (45bfc25)
- Fixed hints processing in interactive mode (82c6c81)
- Set uninitialized
IDF_ADD_PATHS_EXTRAS
variable in UNIX-based export scripts (#11296, 1111fd2) - Enable hints for IDF Monitor and fix ANSI color issues on Windows (83a682c)
Removed
- Removed libpython2.7 from the Docker image (ae256e9)
Build System
Added
- Enabled color output from the compiler by default (#416, 02a19c6)
- Added an example to showing how to wrap existing IDF functions (4c6c170)
- Added build property DEPENDENCIES_LOCK to specify the lock-file location (#9394, dabb16c)
- Added new build system function idf_component_add_link_dependency (3275486)
- esptool_py: Added Cmake functions to read eFuses at the build stage (#10311, 708a904)
Changed
- Changed C++ standard to C++23 (#11025, 689db30)
- Replaced
ADDITIONAL_MAKE_CLEAN_FILES
withADDITIONAL_CLEAN_FILES
(670996f)
Fixed
- Fixed EXCLUDE_COMPONENTS not excluding the component from consideration of idf_component_manager (afc6fba)
- Set SDKCONFIG_DEFAULTS environment variable to specify custom sdkconfig defaults properly (fbef416)
- Fixed compiler errors and warnings produced by esp-clang toolchain (8c2ae2f)
- Examples: Fixed format types in hello_world example (#10304, 9a1f2b9)
External Libraries
Changed
- Console: Changed vt100 terminal detection timeout from 300 to 500 ms (83a682c)
Removed
- Removed CBOR example from IDF and moved to idf-extra-components (d193521)
Documentation
Added
- Added CN translation for gcc.rst and provisioning.rst (46ab579), bluetooth-low-enery and bluetooth-classic (ad80046), dac.rst (986678c), networking.rst and storage.rst (ebb900c), migration guides/peripherals (cedd3e7), esp_http_client.rst (bcbb6d2), api-reference/peripherals/uart.rst (bc56ae4), migration-guides/release-5.x/5.1/peripherals.rst (6ec92de), api-reference/kconfig.rst (e9ab97e), i2s.rst (5a353ab)
- Added the flashing procedure using the embedded USB peripheral on the getting started guide (fe2bd5c)
- Added an error log to migration guides > GCC (f9be661)
- Added notes about GPIO36/39 issue workaround and updated CN translation for several documents (3ca44d4)
- Added commands to update esp-idf versions in the windows system (56a8b17)
- Added pin information of touch sensors of two versions (ee8c845)
- Added the link of Xtensa ISA documentation to hlinterrupts.rst (7c770a9)
- Added API guides chapter on C++ support (0459596)
- Added section about DRAM limitations on ESP32 (#3497)
- Added a new chapter about the overall "security" area guide (175e5fc)
- Added a warning to not use IO 35, 36, 37 on S3 modules with Octal SPI flash/PSRAM (#10605, 375aaf8)
- Added the link to Configuration for Visual Studio Code Debug (268a662)
- Added a note about configuring panic/system reset for task WDT (#10995, 8f26d66)
- Added FreeRTOS GDB extension info to the user guide (5c1044d)
- ESP_LCD: Added a chapter in the programming guide for how to use the RGB LCD bounce buffer with PSRAM XIP feature. (3d09cc3)
- PSRAM: Added an example illustrating the XIP (Execute-in-Place) from PSRAM feature (by enabling CONFIG_SPIRAM_RODATA and CONFIG_SPIRAM_FETCH_INSTRUCTIONS, 1005c3b)
- DOC: Added documentation for Flash content moved to PSRAM feature (f98a37f)
Changed
- I2S: Updated the FSM diagram of I2S (6da89eb)
- Updated CN translation for ulp-risc-v, fatfs and sleep_modes (954c1b9)
- Updated user-guide-devkitm-1.rst (a93ba27)
- Updated name length of partition tables (d20a4da)
- Updated pin layout diagram in the user guide of ESP32-PICO-KIT (60ff8e5)
- Updated wifi application examples (409e424)
- Updated Figure: Touch pad - relationship between measurement parameters and related description for ESP32-S2 and ESP32-S3. (c7696fb)
- Updated link for ESP ROM ELF releases (3c5c47e)
- Updated ESP32-C2 BLE related documentation (631cef4)
- Updated BLE enum with the long form of value IR and ER (71bc1a2)
- Updated the JTAG channel for ESP-WROVER-KIT and ESP-S2-Kaluga-1 (991ba22)
- Updated the GPIO numbers serving as wakeup source in ESP32-S2 and ESP32-S3 (a2c132c)
- Updated instructions for building openocd from sources for mac on how to resolve the issue with 'raggedright' (0cc6fef)
- Updated ESP32-S2-DevKitM-1 User Guide to include new variants (1eea24c)
- Updated ESP32-S2-DevKitC-1 User Guide to include new variants (1f9626f)
- Rearranged lines in the build-system API guide to where they logically belong (#9943, d0e2a8d)
- Updated the folder structure of the migration guide (e6b7f4c)
- Updated provisioning.rst and removed-components.rst for migration-guides (b1b93c2)
- Updated ble mesh index and translated mqtt (e6c641c)
- Updated the usage description of MALLOC_CAP_32BIT on ESP32 chips (ae2ad18)
- Updated descriptions of JTAG pins for ESP32-S3 and ESP32-C3 in Tips and Quirks/JTAG Debugging (1d82bcd)
- Updated related information about USB_OTG in dfu.rst, usb_device.rst and secure-boot-v2.rst (ae639f6)
- Updated the description of the initial load on development boards (8956987)
- Updated mqtt.rst, wifi.rst, and coexist.rst (bf6dc6f)
- Updated ESP-MQTT by including the mqtt5 example (4b1ea70)
- Updated the description of gpio_hold_en() (738600d)
- Updated a broken link in mDNS.rst (86b8ef4)
- Updated custom bootloader example readme to better match program output (#11163, 75002dc)
- Updated the ESP-NOW frame length in docs (a0df46d)
- Synchronised contribution agreement to match the one in CLA Assistant (05c98d8)
- FreeRTOS: Updated documentation so it clearly indicates that ESP-IDF FreeRTOS and Amazon SMP FreeRTOS are two separate FreeRTOS implementations supported by ESP-IDF (c94e0a9)
- Updated brief of uart_set_wakeup_threshold (5d70620)
- Updated CN translation for multiple files (120daa6, 6a24f63, 93d99eb, cdcb493, b97a98a, 242d0a7, a8fc7e9, 29be390)
- Enforced that SPI Flash pins are not for regular usage (#10356, c01f71c)
- Moved the api-reference of SPI Flash into the peripherals section, leaving partition APIs in storage section (c42fe67)
Fixed
- Fixed documentation wrongly stating ESP_SLEEP_WAKEUP_GPIO is light sleep only (#9567, 7cbc1b3)
- Fixed a broken link in API Reference > Peripherals > MCPWM for ESP32 (fb5c710)
- Fixed the description of idf.py --warn-uninitalized argument (ba663ac)
- Fixed broken link to the console API reference (#10087, 84be4db)
- Fixed Secure DL mode documentation about flash read being unsupported (14d392b)
- Tools: Customer fixed reference to check_kconfigs.py, it now lives in tools/ci (#10922, b5b062a)
- Fixed typos (#11046, abe9fe1) (#11394, 24ae831)
- Fixed wrong link in migration guide (#11326) (dd747bd)
Removed