Skip to content

ESP-IDF Release v4.4.3

Compare
Choose a tag to compare
@github-actions github-actions released this 09 Nov 09:28
· 19818 commits to master since this release
v4.4.3

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

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

Obtaining v4.4.3

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

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

Download an archive with submodules included

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

Major changes

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

Major Bug Fixes

  • Fixed deadlock due to wrong parameter when calling btc_transfer_context() after calling esp_bluedroid_disable() (#9672)

Breaking Changes

  • FreeRTOS: esp_ringbuf function placement in flash is no longer controlled by CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH. New options have been introduced to control esp_ringbuf placement: CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH, CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH.

Changelog

Bluetooth

Controller

Added

  • Added support to use main crystal as Bluetooth lowe power clock in light sleep bluetooth support on ESP32-C3 and ESP32-S3

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
  • Fixed the issue that FreeRTOS semaphores and queues used in Blueotooth ISRs can be allocated in SPIRAM which causes crash

Bluetooth Low Energy

Added

  • Added ADV mode error check in ADV RX interrupt handler function on ESP32-C3 and ESP32-S3

Changed

  • Updated BLE TX power level mapping on ESP32-C3 and ESP32-S3

Fixed

  • Fixed BLE sch_arb assert on ESP32-C3 and ESP32-S3
  • Fixed the performance issue of BLE sync scan in coexistence scenario when PLL track is enabled on ESP32-C3 and ESP32-S3
  • Fixed BLE connection failed due to sync found was triggered incorrectly
  • Fixed BLE disconnect failed due to LL_TERMINATE_IND have sent but no ACK is received
  • Fixed BLE RAL_UNDERRUN and TX_CRYPT_ERR assert
  • Fixed BLE disconnection issue when channel map instant passed due to bad channels on ESP32-C3 and ESP32-S3

Classic Bluetooth

Fixed

  • Fixed that link key is not sent to host after re-pairing in legacy pairing mode on ESP32
  • Fixed the exhaustion of ACL buffer in case of connection-disconnection stress test
  • Fixed the duplicated reports of HCI_Connection_Request event from the same Bluetooth device

Bluedroid

Added

  • Added new OSI utility "osi_event" to avoid duplicated message posting and thus reducing the workqueue size for HCI thread
  • Added new OSI utilities "pkt_queue" and "fixed_pkt_queue" to for data buffer management and reduce the frequent allocation/free of small memory fragments compared with previous "fixed_queue"

Changed

  • Modified the implementation of the workqueue of osi_thread using freeRTOS queue instead of fixed_queue, to reduce the use of system heap, and thus becoming more robust against memory allocation failure, and achieving better execution performance, with an increase of memory footprint by about 1600 Bytes during Bluedroid inititalization.

Fixed

  • Fixed the linker error of functions not defined when enable memory debuging functionality
  • Fixed deadlock due to wrong parameter when calling btc_transfer_context() after calling esp_bluedroid_disable().(#9672)
  • Fixed the build warning in using strncpy after toolchain is upgraded

Classic Bluetooth

Fixed

  • HFP: fixed the failure of 'connect audio' operation in HFP examples with default SDK configuration
  • A2DP: fixed sink device not being able to accept and decode mono channel audio stream

Bluetooth Low Energy

Added

  • Support BLE Micro definition in a header file

Changed

  • Optimized BLE legacy advertising report datapath and advertising report flow control mechanism, make it more robust in case of heap exahustion.
  • Modified the bluetooth device name length limits
  • Updated BLE enum with the long form of value IR and ER

Fixed

  • Fixed bluedroid host memory overflow
  • Fixed set extend advertising parameters failed when stop extend advertising
  • Fixed extend advertising set remove failed
  • Fixed calling esp_ble_get_cur_sendable_packets_num() sometimes crashes when bluetooth is disconnecting
  • Fixed extend ADV TX power range error
  • Fixed repeatedly data length set error
  • Fixed second bonding fail issue

NimBLE

Added

  • Added check to deregister stack callback with controller during stack deinit

Changed

  • Enable ANS service by default in nimble peripheral example
  • Updated debug level for a print to avoid unwanted console log

Fixed

  • Fixed memory corruption introduced in reconnection attempt code

ESP-BLE-Mesh

  • Added an option for LPN to subscribe all-nodes-address automatically
  • Fixed Friend not relay LPN message when relay feature is disabled
  • Fixed handling continuously received secure update in friend queue
  • Fixed using wrong range for Heartbeat Publication Period Log value
  • Fixed using wrong count_log when Heartbeat Subscription Status is sent
  • Fixed not ignoring connectable PB-ADV PDU containing a Link Open message
  • Fixed ignoring KR flag within Secure Network Beacon from non-primary subnet
  • Fixed the sequence of checking invalid Provisioning PDU type
  • Fixed not checking invalid link flag during PB-GATT provisioning
  • Fixed wrongly overwritten the expect_ack_for flag after send_pub_key
  • Fixed not checking if AppKey is bound to model during model publication set
  • Fixed the regression introduced in the btc_transfer_context changes

Wi-Fi

Added

  • Added support for SAE H2E for station

Changed

  • Optimized station power save when beacon loss happens
  • Optimized noise check timer process, align it to TBTT time
  • Updated wifi country code docs

Fixed

  • Fixed crash by calling API esp_wifi_set_ant_gpio on esp32s2/esp32c3/esp32c3.
  • Fixed write to null pointer if malloc failed
  • Fixed possible memory leak if log level not set
  • Fixed pairwise cipher tkip pmf compability issue
  • Installed gtk before send group key handshake message 2
  • Fixed disconnection when set country
  • Fixed set country code before wifi start issue
  • Fixed repeated scans causing bss overwrite in connect process
  • Fixed fail to scan after recv disassoc/deauth for ESP32-S2.
  • Fixed deinit return wrong value.
  • Fixed get wrong channel value when use esp_wifi_get_config.
  • Fixed bug of missing unlock when wifi stop in fail case.
  • Fixed annotation error of api esp_wifi_connect.

Security

Fixed

  • esp_rsa_sign_alt: Fixed the behaviour of esp_ds_init_data_ctx API when ds_data is provided directly from the flash.

Peripheral Drivers

Added

  • ESP_LCD: Added SPI read support into the esp_lcd component
  • ESP_LCD: Write I2C can send without param (when it is -1)
  • RGB_LCD: Support PCLK fractional divisor for RGB LCD

Fixed

  • ADC: Fixed wrong ADC continuous mode sampling frequency issue on ESP32
  • ADC: Fixed wrong ADC bytes per conversion on ESP32-S2
  • ADC: Fixed wrong ADC output resolution issue on ESP32-S3
  • I2C: Reduced the delay between transactions
  • I2C: Correct I2C clock frequency on ESP32-C3, ESP32-S3
  • I2S: Fixed the bugs in only_right format and left_right format on ESP32.
  • I2S: Fixed PDM RX sample rate doubled issue (#8660)
  • I2S: Fixed the i2s event queue Q_OVF event condition
  • I2S: Fixed the gap in the i2s_adc_dac example (#9389)
  • RTC I2C: Corrected the register base addr reference for RTC I2C on esp32s3
  • PSRAM: Fixed 40MHz PSRAM CS signal glitch issue on ESP32
  • PSRAM: Fixed heap pool reservation for DMA/internal usage fail issue
  • esp_hw_support: Fixed wrong RC_FAST and RC_SLOW clock frequency values on ESP32-C3 and ESP32-S3
  • esp_hw_support: Auto-adjust LDO voltage to reduce the power consumption of ESP32S3 chips
  • GPIO: Fixed the issue on ESP32 that GPIO can't hold on after deep sleep
  • GPIO: Fixed the bug that ESP32-S3 GPIO48 does not support hold function
  • GPIO: Fixed the issue that USB DP pullup can't be disabled when it's used as a normal GPIO (#9495)
  • Timer: Propagate interrupt service allocation error (#9651)
  • MCPWM: Fixed multiplication overflow in mcpwm_set_duty_in_us (#9648)
  • Temperature Sensor: Fixed the issue that the value is not accurate on ESP32-S3
  • ESP LCD: Fixed incorrect bpp size of RGB666 color format (#9729)
  • 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)
  • SPI Bus: Fixed a concurrency issue leading to spi_device_polling_end assertion fail (#8179)
  • SPI Slave: Fixed Quad SPI wrong dummy cycle issue on ESP32-C3 and ESP32-S3
  • LEDC: Fixed PWM signal glitch when calling ledc_set_freq to change PWM frequency
  • TWAI: Fixed the issue that CONFIG_TWAI_ISR_IN_IRAM not working for ESP32-C3
  • UART: Fixed unreliable uart_wait_tx_done caused by the wrong handling to legacy UART_INTR_TX_DONE event
  • SDIO Slave: Fixed crash caused by incorrect return value check in host example

Core System

Added

  • ULP: Added support and example for using the RTC ADC from ULP-RISC-V on ESP32-S3
  • heap: Added implementation of function hook called from tlsf_check() to check for memory corruption on the free blocks of memory
  • Added support for placing FreeRTOS stacks in PSRAM for ESP32-S2 and ESP32-S3

Changed

  • Substract rtc_iram_seg memory region size from ESP_BOOTLOADER_RESERVE_RTC
  • esp-ringbuf: function placement is now controlled by its own configs: CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH and CONFIG_RINGBUF_PLACE_ISR_FUNCTIONS_INTO_FLASH instead of CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH
  • ULP: Updated ULP FSM Instruction Set for shift operations. (#8831)

Fixed

  • Fixed format of PC and SP registers in the backtrace for easier parsing (#9138)
  • heap: heap_caps_*_prefer functions now only call heap_caps_alloc_failed callback once, in case all attempts failed.
  • heap: malloc(0) and calloc(0) won't call heap_caps_alloc_failed() callback anymore (#9517)
  • Moved placement of disable ROM log eFuse later in startup flow to allow logging (#9457).
  • 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.
  • esp-rom: Fixed error in miniz header documentation for tdefl_init (#8435)
  • Xtensa: Fixed SET_SP potentially causing invalid access exceptions after updating SP
  • spi_flash: Fixed clobbering RTOS base priority in spi_flash_disable_interrupts_caches_and_other_cpu()
  • Fixed xtal32k error detect when configured but doesn't actually exist
  • Fixed suppress CPU crashes and memory issues under extreme temperatures occuring on a small amount of ESP32C3 chips.

Removed

  • heap: Removed misleading info about malloc being equivalent to heap_caps_malloc(p, MALLOC_CAP_8BIT) (#7659)
  • soc: Deleted obsolete soc/cpu.h for ESP32-S3

FreeRTOS

Changed

  • Changed documentation of the ulBitsToClearOnEntry parameter in xTaskGenericNotifyWait() function to match implementation (#7207)

Fixed

  • Fixed bug in event group functions where the blocked task list was being accessed without acquiring the task list spinlock
  • esp_ringbuf: Fixed bug where internal RX semaphore was not taken when calling xRingbufferAddToQueueSetRead()/xRingbufferRemoveFromQueueSetRead() if CONFIG_FREERTOS_ASSERT_DISABLE was enabled (#9497)

Power Management

Fixed

  • Fixed mspi current leakage during light sleep
  • Fixed docs of power down flash
  • Fixed the issue of sleeping time error because external 32kHz xtal does not exist
  • Fixed Wi-Fi does not know that Bluetooth has modified the lpclk source
  • Fixed issue where entering light/deep sleep could trigger a deadlock, thus leading to an interrupt watchdog timeout
  • Fixed the backup DMA operation failure caused by RTC_SW_CPU_RST

LWIP

Fixed

  • Fixed esp_netif_set_dns_info() to work with IPv6 addresses

mDNS

Fixed

  • Fixed add_service() to report error if no hostname has been set

OTA

Fixed

  • esp_https_ota: Fixed esp_https_ota_begin() to call http_client_init_cb before esp_http_client_perform() (#9581)

HTTP Server

Added

  • Added linger option in httpd_config_t

Provisioning

Added

  • wifi_prov_mgr: Added configurable BT option after provisioning is completed.

Fixed

  • wifi_prov_mgr: Fixed maximum BLE advertising device name length

Bootloader

Fixed

  • Consider (appended) signature length while verifying image for allocated partition length
  • Fixed bootloader printing an assert message even if CONFIG_OPTIMIZATION_ASSERTIONS_SILENT was set (#7518)

ESP-TLS

Fixed

  • Fixed socket leak in esp-tls. (#9847)

Storage

Fixed

  • nvs_flash: Fixed nvs_flash_init_partition_ptr() to pass correct arguments to NVSPartitionManager::init_custom()

Tools

Added

  • idf.py: Added DFU support for ESP32-S3
  • Manufacturing Utility: Support blank lines in configuration and values file (#8421)
  • Added git-lfs into the docker image (#9563)
  • Added support for macOS and Linux ARM64 hosts (#6432)

Changed

Fixed

  • nvs_partition_gen: Allow strings up-to 4000 bytes with NVS V2 format
  • Fix "KeyError: 'idfSelectedId'" when running the install scripts (#9837)
  • Removed undefined variable from install.ps1 (#9556)

Build System

Fixed

  • Fixed an issue where disassembly of ELF files built with ESP-IDF would sometimes be incorrect. The issue was related to .xt.prop sections missing from the final ELF file
  • Fixed EXCLUDE_COMPONENTS not excluding the component from consideration of idf_component_manager

External Libraries

Changed

  • expat: Updated to R_2_4_8 release

Documentation

Fixed

  • Fixed documentation wrongly stating ESP_SLEEP_WAKEUP_GPIO is light sleep only (#9567)
  • Updated the docs to make it clear that it's impossible to use USB Serial JTAG in sleep modes (#8507, #8884)