Skip to content

ESP-IDF Release v4.4.5

Compare
Choose a tag to compare
@github-actions github-actions released this 08 Jun 06:47
· 16807 commits to master since this release
v4.4.5

Documentation for IDF v4.4.5 is available at https://docs.espressif.com/projects/esp-idf/en/v4.4.5/

ESP-IDF v4.4.5 is a bugfix update for ESP-IDF v4.4.

Obtaining v4.4.5

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 v4.4.5 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.4.5
cd esp-idf-v4.4.5/

This is the recommended way of obtaining v4.4.5 of ESP-IDF.

Download an archive with submodules included

Attached to this release is an esp-idf-v4.4.5.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/v4.4.5/esp-idf-v4.4.5.zip

Major changes

This is the list of changes since release v4.4.4:

Major Changes

  • Bootloader: Added chip revision check based on the configured REV_MIN_FULL and the REV_MAX_FULL associated with IDF version (8232f23)

Major Bugfix

  • efuse: Prevent burning XTS_AES and ECDSA keys into BLOCK9 (BLOCK_KEY5) because HW bug, (related to ESP32-C3, ESP32-S3 chips)(62a9966)
  • PHY: Fixed iPhone disconnects immediately after connecting when BLE and wifi coexist on ESP32-C3 and ESP32-S3 (1071b13)

Breaking Changes

  • esp_chip_info() returns the chip version in the format = 100 * major eFuse version + minor eFuse version. (8232f23)
  • ADC: ADC2 continuous (DMA) mode on ESP32-S3 and ESP32-C3 is not supported by default, 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 (028f483)
  • ADC: ADC2 oneshot mode on ESP32-C3 is not supported by default. Search for errata on espressif website to know more details. Users can force use it by enabling ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 (028f483)

Changelog

Bluetooth

Controller

Bluetooth Low Energy

Added

  • Added config to set duplicate scan list refresh period on ESP32, ESP32-C3 and ESP32-S3 (3208949)
  • Support ESP32C3 and ESP32-S3 new BLE lib (c0efc25)

Changed

  • Changed default TX power to 9 dBm on ESP32 (3208949)
  • Optimized the coexist under BLE initiation on ESP32 (7eba5f8)
  • Improved scan performance when scan and sync coexist on ESP32-C3 and ESP32-S3 (fd5e03b)

Fixed

  • Fixed duplicate scan refresh cycle is not accurate after restarting scan on ESP32 (7eba5f8)
  • Set default instance value to 6 on ESP32-C3 and ESP32-S3 (c0efc25)
  • Merge ESP32C3 and ESP32S3 BLE bt.c, esp_bt.h and kconfig files to one (c0efc25)
  • Disable controller 5.0 feature bits if host 5.0 feature is not enabled ESP32-C3 and ESP32-S3 (c0efc25)
  • Fixed extend ADV parameters check for ADV_DIRECT_HI ESP32-C3 and ESP32-S3 (c0efc25)
  • Fixed BLE disconnect due to channel map update instant passed on ESP32 (17a0cda)
  • Overwrite the oldest device infor if the list is full on ESP32, ESP32-C3 and ESP32-S3 (3208949)
  • Fixed duplicate scan period is not accurate on ESP32, ESP32-C3 and ESP32-S3 (3208949)
  • Fixed some memory was not released after Bluetooth controller initialization failed on ESP32, ESP32-C3 and ESP32-S3 (3208949)
  • Fixed privacy error for directed advertising on ESP32-C3 and ESP32-S3 (3208949)
  • Fixed multiple periodic advertising sync failed in air on ESP32-C3 and ESP32-S3 (3208949)
  • Fixed disconnect reason 0x1f (unspecified error) on ESP32 (3208949)
  • Fixed connection timeout due to LL_TERMINATE_IND has not been acknowledged on ESP32 (3208949)
  • Fixed BLE connection terminated due to MIC failure during encryption procedure on ESP32-C3 and ESP32-S3 (fd5e03b)
  • Fixed BLE connection failed to be established when disabled 5.0 feature on ESP32-C3 and ESP32-S3 (fd5e03b)
  • Fixed non-connectable and non-scannable directed adv can't be scanned on ESP32-C3 and ESP32-S3 (fd5e03b)
  • Disabled controller 5.0 feature bits if host 5.0 feature is not enabled (fd5e03b)

Classic Bluetooth

Added

  • Optimized the wireless coexistence in the conditions of Bluetooth sniff, inquiry scan or page scan on ESP32 (7eba5f8)

Fixed

  • Fixed that functions "coex_enable" and "coex_disable" are not used in pairs on ESP32-C3 and ESP32-S3 (a60b89b)
  • Fixed BR/EDR connection failure in case of wireless coexistence on ESP32 (7eba5f8)
  • Fixed disconnection due to unhandled LMP_UNSNIFF_REQ during the specific state LC_WAIT_SNIFF_SUB_RSP on ESP32 (7eba5f8)
  • Fixed the crash on ESP32 when link supervision timeout is less than sniff subrating interval (7eba5f8)
  • Fixed the crash caused by processing the HCI_Read_Remote_Extented_Features command in the non-connected state on ESP32 (7eba5f8)
  • Fixed the crash after controller disable and re-enable resulted from incorrect hardware settings on esp32 (7eba5f8)

Bluedroid

Fixed

  • Fixed Bluedroid compile errors after setting CONFIG_ESP_SYSTEM_USE_EH_FRAME=y on RISC-V SoCs (778b806)

Classic Bluetooth

Added

  • Added report of response code for AVRCP passthrough command (11e20bb)
  • Added report of ACL link connected and disconnected event to upper layer for GAP (202e1c1)

Changed

  • Updated the API documentation of esp_bt_gap_set_cod (df8c0f2)

Fixed

  • Fixed the issue for HID Host in handling the two consecutive connection request (9f8f60d)
  • Fixed build errors when sniff subrating is enabled. (23ec5e1)
  • Fixed the issue for A2DP in the use of invalid configuration when the peer device configures the stream, resulting in an incorrect error code (f46b03f)
  • Fixed out-of-bound array access in HFP-AG (7894f03)
  • Fixed missing documents for Bluetooth HID Device API reference and fixed the typos for HID device exmaple (7cfc1a7)
  • Fixed LoadProhibited issue caused by invalid operation on list node in handling hci_hardware_error event (8e55945)

Bluetooth Low Energy

Added

  • Support BLE privacy by controller (17a0cda)
  • Added parameters for GATT connect event (17a0cda)
  • Added API to get the name of Bluetooth device. (f31b5c3)

Fixed

  • Examples: support BLE notify and write throughput test at the same time (!23234)
  • Examples: Fixed BLE address type of advertising and scan parameters (17a0cda)
  • Examples: Fixed BLE HID LED output report (b818abb)
  • Fixed bluedroid host ATT Ignore wrong response error sometimes (c0efc25)
  • Enable BT_BLE_RPA_SUPPORTED If target is not ESP32 (c0efc25)
  • Correct the length of ATT_READ_BY_TYPE_REQ PDU (b818abb)
  • Fixed encrypt keysize of GATT characteristic permission (b818abb)
  • Fixed BLE connection update with the same parameters (b818abb)
  • Fixed saving GATTC cache with the same device address. (f31b5c3)
  • Fixed state conflict between advertising and scanning. (f31b5c3)
  • Report status when clearing the BLE whitelist is complete. (f31b5c3)
  • Fixed battery profile wrong condition in bluedroid host (fd5e03b)
  • Fixed no error report when own address type is rpa_random and no random address setting (fd5e03b)
  • PHY: Fixed the iPhone disconnects immediately after connecting when BLE and wifi coexist on ESP32-C3 and ESP32-S3 (1071b13)

NimBLE

Added

  • Added debug related code under debug flag to improve throughput (188bb8d)
  • Added configurable option for resolving peer address in bleprph example (f67cb1d)
  • Added Encryption support (4ceb928)
  • Added GATT notify and subscribe support (4ceb928)

Changed

  • Update Mesh example documentation (bd54673)
  • Updated functions related to adding and clearing peer_dec_rec table (5360833)

Fixed

  • Fixed README of SPP server (712f6cb)

Blufi

Fixed

  • Fixed hdr getting freed twice while using blufi (f89eedd)
  • Fixed vulnerability attacks that could cause heap overflow in fragmented Blufi packet processing (c0efc25)
  • Fixed Blufi document description errors (fd5e03b)

ESP-BLE-Mesh

Fixed

  • Fixed filtering error when Provisioner receives heartbeat messages (424ddb3)
  • Fixed not transmit Transaction ACK before closing provisioning link by Provisioner (3c25ecb)
  • Fixed not send Link Close message before resetting provisioning link by Provisioner (3c25ecb)

Wi-Fi

Added

  • Stored some missed station config parameters into NVS (b7ddd82)
  • Added APIs to get Associate ID and negotiated phymode. (8df9bbd)
  • Added validations during Suite B Enterprise connections. (f3fc6f7)

Changed

  • Added changes to use SHA256 size ciphers for WPA2 enterprise for cert size > 2048 (cdb87a5)
  • Changed abnormal beacon log level to debug (4a4227a)
  • Improved ESP32 connection success rate at some coexistence scene (0e9c393)
  • Updated TX rate when phymode change from LR to 11N (7534dac)
  • Updated Wi-Fi AMSDU docs (bf4a710)
  • Updated esp_wifi_wps_start() API documentation (#10407, fa3c3a8).
  • SA Query and assoc comeback related improvements in STA (#9428, 0c8ec2a)

Fixed

  • 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, 0c8dd57)
  • Fixed beacon TX process when softAP interface is stopped (5999775)
  • Fixed the incorrect RTOS tick when XTAL PU during sleep on ESP32-C3 (0e9c393)
  • Fixed the issue that sometimes fail to enter modem sleep after scan (0e9c393)
  • Fixed typo in wifi_enterprise example README (#10042, d56a3b5)
  • Fixed the bug that wpa_supplicant sends two M1 of WPS EAP with different enrollee nonce as a reply to request expanded WPS (c97db91)
  • Fixed SoftAP QoS null issue. (3cec3a0)
  • Fixed set inactive time crash issue. (3cec3a0)
  • Fixed ESP-NOW example add peer with other channel fail(#9592, e5a41d9)
  • Fixed potential issue when TX fragment packets. (60c57ad)
  • Fixed ESP32-C3/ESP32-S3 rate control issue to improve TX robust (4531322)
  • Fixed initialization of EAP methods during reassoc. (f3fc6f7)
  • Fixed the issue that receive data frame with more data bit set from AP cause not go to modem sleep. (012b500)
  • Fixed the issue that station connects slowly to some AP. (43a38fc)
  • Fixed FTM procedure with peer failure status 4 issue. (43a38fc)
  • Fixed STA auth failed but SoftAP shows it connected issue. (43a38fc)

ESP-WIFI-MESH

Changed

  • Updated mesh doc (90d6e45)
  • Updated discard context condition and process disconnect condition (90d6e45)

Fixed

  • Fixed the heap corrupt issue (7534dac)
  • Fixed the bug that esp_mesh_is_root() return error when set root type (90d6e45)
  • Fixed the bug that user can't set inactive time on mesh root (90d6e45)
  • Fixed the bug in set idle type (90d6e45)
  • Fixed bug for stop DHCP server before set dns (#10762, 534ec69)

Ethernet

Changed

  • Updated DM9051 configuration to receive multicast packets (a3f285d)

Fixed

  • Fixed DM9051 issue when it was not possible to start it after it was stopped (a3f285d)

Security

Fixed

  • efuse: Prevent burning XTS_AES and ECDSA keys into BLOCK9 (BLOCK_KEY5) because HW bug, (related to ESP32-C3, ESP32-S3 chips)(62a9966)

Peripheral Drivers

Added

  • all: Added a new chip version logic (major * 100 + minor)(8232f23)
  • i80_lcd: Allow to skip command phase for i80 LCD driver (#10794, a6c7d78)
  • UART: Supported UART wake-up interrupt on ESP32-C3 and ESP32-S3. (3c8bc22)
  • USB Host: Added SetAddress() recovery time. Added possibility to configure Root Hub Configuration (delay values) via menuconfig. (647cc43)

Changed

  • GDMA: Changed the UHCI GDMA trigger ID from SOC_GDMA_TRIG_PERIPH_UART0 to SOC_GDMA_TRIG_PERIPH_UHCI0 (cc423c3)
  • LEDC: Moved the callback in ledc_fade example to IRAM (#10402, 48b3f23)
  • UART: Increased default stack size for the NMEA example (#11044, 9b4ccdc)

Fixed

  • ADC: Fixed ADC Oneshot driver clock gating issue on ESP32-C3 (6e950ad)
  • freemodbus: Fixed build error when the component manager is disabled but the freemodbus component is present in the build (fee50c2)
  • GDMA: Fixed SPI2 DMA can't work with async memory copy (#10575, cc423c3)
  • GPIO: Fixed the issue that deep sleep wake-up IO keeps staying in the holding state after waking up. (#10921, 9516e80)
  • I2C: Fixed a bug in the SDA sample timing calculation resulting in the SCL staying low after a NACK. (#9777, c49e8d3)
  • I2S: Fixed incorrect channel format on ESP32 (#9635, d337d9d)
  • I2S: Fixed I2S tx/rx configuration update failure issue (969569d)
  • MSPI: Fixed the timing tuning issue of high frequency that could lead ESP32-S3 to crash when entering sleep. (e34f063)
  • MSPI: Fixed timing tuning issue for 80MHz Octal PSRAM on ESP32-S3, which would lead to system stall at early stage. (3ecf906)
  • PSRAM: Fixed incorrect returned out_ptr when calling esp_himem_map with non-zero range_offset (#5639) (e383d14)
  • PSRAM: Fixed wrongly detecting Octal PSRAM issue on ESP32-S3. (7d727ff)
  • RMT: Fixed some RMT LL functions not being inlined (Closes #9487, 7b41d6c)
  • SDMMC: Fixed incorrect clock phase settings (#8521, f87bdd4)
  • SPI: Fixed the wrong SPI_HOST_MAX on target ESP32-C2/ESP32-C3 (#10349, b58d463)
  • SPI Slave: Fixed SPI slave IO pin not released after deinitialize. (61521da)
  • spi_flash: Fixed compute size wrongly for > 256MBit (#9566, f8c2f62)
  • SPI_LCD: Fixed the issue that the maximum SPI transfer size is not correct (2b47977)
  • SPI_LCD: Check the return value of spi_device_acquire_bus and not release the bus if it's acquired failed (#10952, 6852aaa)
  • TWAI: Fixed an HW errata where the TWAI controller could still send dominant bits when placed into listen-only mode. The errata workaround can be enabled via the CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM option. (97c23f2)
  • UART: Fixed UART LL functions can't compile with cxx on ESP32-S3 (#10640, c3172de)
  • 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. (2a052f0)
  • UART: Fixed concurrency which could cause the RTS line to be mis-reset while tx transmission is not done in RS485 mode. (2a052f0)
  • USB Serial JTAG: Fixed usb_serial_jtag console block issue when there's no data to transfer. (#10208, 2dc6c95)
  • 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. (ae77cd6)
  • 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. (ae77cd6)
  • USB Host: Fixed interface descriptor parsing for interface numbers >= bNumInterfaces (ae77cd6)
  • 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. (3cf24d8)
  • 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. (3cf24d8)

Removed

  • ADC: ADC2 continuous (DMA) mode on ESP32-S3 and ESP32-C3 is not supported by default. Users can force use it by enabling ADC_CONTINUOUS_FORCE_USE_ADC2_ON_C3_S3 (028f483)
  • ADC: ADC2 oneshot mode on ESP32-C3 is not supported by default. Users can force use it by enabling ADC_ONESHOT_FORCE_USE_ADC2_ON_C3 (028f483)
  • TinyUSB: Removed sample_descriptor example (3cf24d8)

Core System

Added

  • esp_timer: Added IRAM_ATTR for esp_timer_restart and esp_timer_is_active (#10522, #10859, 4232e24)
  • heap: Added size and capabilities information to the log printed during system abort when an allocation fails (#10650, e62eceb)

Changed

  • Cache is no longer disabled when CONFIG_SPIRAM_RODATA and CONFIG_SPIRAM_FETCH_INSTRUCTIONS are both enabled (43b9f6d)
  • soc: Updated the memory ptr location/property checks to acknowledge the unused DCACHE added to DRAM for ESP32-S3 as internal memory (749a07b)
  • heap: Decreased utilization of the IRAM / DRAM sections by the heap component binary by ~40%. (2dec69f)

Fixed

  • Forced __stack_chk_fail() to be placed in IRAM to prevent issues if called when cache is disabled. (2dec69f)
  • Fixed FLAG_ATTR operator (#7754, 39afb1e)
  • Fixed potential bootloader and app overlap issue on ESP32-C3 (4b498e8)
  • efuse: Fixed virtual efuses not working when flash encryption was enabled before enabling virtual efuses (#10929, 4b40411)
  • efuse: Fixed issue where psram init function would read virtual efuses before they were initialized (#10925, 1500d70)
  • ULP-RISC-V: Fixed an issue where the ULP RISC-V I2C example caused a spurious wakeup of the main CPU on esp32s2 and got stuck thereafter. (#10301, 80d81c6)
  • heap: Fixed allocation failure when allocating memory as IRAM in the startup stack region when memory protection is enabled (7923960)
  • heap: Fixed heap_caps_get_allocated_size() return value when poisoning is active to not account for canary head and tail. (66bc129)
  • MMU: Fixed IRAM/DRAM address range in ext_mem_defs.h (5d5a5f8)
  • If the MAC_FACTORY CRC check fails, then esp_efuse_mac_get_default returns INVALID_CRC instead of abort (#10401, a83c40e)

Debugging

Added

  • espcoredump: Added support for stacks in external RAM for all targets. (a73ba52)

Fixed

  • espcoredump: Fixed the missing chip type in esp-coredump when the board is not connected (#10361, 4c2afac)
  • espcoredump: Fixed a bug on Xtensa targets that triggered an exception when using coredump custom stack. (dd2c7f8)

Power Management

Fixed

  • Fixed sleep time inaccurate bug when select 8MD256 as rtc slow clock on ESP32 (#6687, e1e9e10)
  • sleep: Fixed gpio wakeup not working properly in some cases (a75a624)

newlib libc

Fixed

  • Fixed that errno was not set properly in adjtime (#10334, a6473f1)
  • Fixed wrong mutex types being used for env and tz (#10649, #9441, #10626, #10686, 896d16b)
  • Fixed newlib time ROM functions being regardless of CONFIG_SPIRAM_CACHE_WORKAROUND (173676e)

LWIP

Changed

  • DHCP: optimization dhcp coarse timer (38ec6aa)

Fixed

  • esp-netif: Fixed thread-safety violations when accessing TCP/IP core functionality (4ffc7c6)
  • Fixed forwarding multicast packets on some routers (0c0d7bb)
  • Fixed DHCP server's bug allowing the assigned IP addresses to exceed the configured subnet range (0c0d7bb)
  • Fixed TCP (Out of order segments) to incorrectly trim a segment when FIN flag was moved (0c0d7bb)

mDNS

Added

  • Fixed to use semaphore internally instead of task notification bits (#10754, 2951d6e)

HTTP Server

Fixed

  • Fixed return values for httpd_socket_send() and httpd_socket_recv() APIs (62340ef)
  • Fixed wrong context pointer in httpd_req_cleanup function (d708ee2)

Provisioning

Fixed

  • wifi_prov_mgr: Fixed return value of characteristic read operation in nimble (#10888, 3b54c90)

mbedTLS

Added

  • Added and refactored AES port layer for sanity checks and their return values (0e4c086)

Changed

  • Updated to upstream release v2.28.3 (599bc24)

Fixed

  • Fixed esp_aes_crypt_ctr writing to null stream block (0e4c086)

ESP-TLS

Fixed

  • Fixed setting the default timeout of sockets before a connection when a timeout value was not given in the esp-tls config structure (637dc39)

Storage

Changed

  • NVS: made all object allocations "noexcept" (39a4ec2)

Fixed

  • SDMMC: Fixed sdmmc_card_init fail issue in sd card (SDMMC) example for ESP32-S3 in V4.4 by addind SOC_SDMMC_USE_GPIO_MATRIX config in Kconfig . (8cea383)

Tools

Added

  • partition_table: Support 4K aligned application partition size for secure boot v2. This allows to use remaining space after signature block (worth 60K) for other data partitions. (a971c13)
  • Fix the export.sh script to use with the set -u bash option (#10935, e47aaa7)
  • Docker: Added ruby and libbsd-dev dependencies (#9342, 82f1014)

Changed

  • Improved idf.py error message when the argument value collides with the environment variable (#10475, 3e1f704)

Fixed

  • Fixed an issue where on Windows --build-dir and other directory related options would result in created folders having all lowercase names (#10282, 0e2db09)
  • Fixed export.fish return code (#10828, e619c17)
  • Fixed D/IRAM size in the idf.py size output (#9960, ff86fa0)

Build System

Changed

  • Moved inclusion of common requirements from early expansion to later stage (bff43a1)

Fixed

  • Fixed special treatment of 'main' with managed components (bff43a1)
  • Set SDKCONFIG_DEFAULTS environment variable to specify custom sdkconfig defaults properly (43ad48e)

Documentation

Added

  • Updated custom bootloader example readme to better match program output (#11163, 3f08fd4)

Changed

  • Updated the ESP-NOW frame length in documentation (7534dac)
  • Format api-reference/peripherals/temp_sensor.rst (6d09159)
  • ULP: Updated incorrect description for ULP FSM JUMPR and JUMPS instructions. (#10923, 63f78a8)
  • Updated link for ESP ROM ELF releases (b60d596)

Fixed

  • Fixed the link to ESP Product Selector (2222ca4)