github espressif/esp-idf v4.4.2
ESP-IDF Release v4.4.2

latest releases: v5.4-beta1, v5.1.5, v5.2.3...
2 years ago

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

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

Obtaining v4.4.2

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

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

Download an archive with submodules included

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

Major changes

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

Major Bug Fixes

Breaking Changes

  • esp_crt_bundle: esp_crt_bundle_set API now has additional argument bundle_size and now returns esp_err_t (#8397)
  • Storage/VFS: 2nd parameter (absolute path) removed from the esp_vfs_semihost_register
  • FreeRTOS: vTaskGetSnapshot now returns BaseType_t to indicate status

Known Issues

  • On ESP32-S3, BLE may disconnect in extremely low temperature.

Changelog

This is the list of changes since release v4.4.1.

Bluetooth

Controller

Added

  • Added critical protection for the operations on interrupt status of VHCI environment variables to avoid miss interrupt events.

Changed

  • Reset Bluetooth baseband and MAC to fix the task watchdog triggered during controller initialization due to invalid hardware state after system reset on ESP32-C3 and ESP32-S3

Fixed

  • Initialize all elements of esp_bt_controller_config_t
  • Fixed BLE got disconnected when when modem sleep is disabled and Bluetooth is initialized after Wi-Fi on ESP32-C3 and ESP32-S3

Bluetooth Low Energy

Fixed

  • Fixed the issue in libphy.a that Wi-Fi gets disconnected after Bluetooth is de-initialized
  • Fixed BLE duplicate scan check error for mesh advertising report on ESP32-C3 and ESP32-S3
  • Fixed BLE ke_mem.c assert on ESP32-C3 and ESP32-S3
  • Fixed BLE ke_mem.c assert on ESP32

Classic Bluetooth

Fixed

  • Fixed race condition when accessing bt_util_buf_env buffers in the context of both controller task and interrupt
  • Fixed the EDR mode wrongly cleared by a successful role switch which caused that the 2M/3M package type can not be selected for use.
  • Allow max supported feature page lower than current feature page when handle with the respond of extend features to support for some devices which generate wrongly LMP respond.
  • Safely ignore the assert_err in em_bt_clkoff1_setf when the clock overflow

Bluedroid

Classic Bluetooth

Changed

  • Updated HFP_AG version to 1.7.2
  • Added bd_addr field to read_rmt_name_param

Fixed

  • SPP: Fixed that SPP initiator can not free resources when the connection is failed
  • A2DP: Fixed the failure of being reconnected in A2DP sink example due to the issue in using i2s driver
  • HFP: Fixed the error in HFP(HF) example when performing audio disconnection (#7911)
  • SPP: Fixed SPP crash after calling esp_spp_deinit
  • SPP: Fixed SPP initialization failure without free mutex
  • A2DP: Fixed AVDTP general reject format error
  • A2DP: Fixed A2DP Sink wrong sniff parameters which caused by HID Porting
  • A2DP: Fixed in A2DP sink example that audio playback is clogged due to higher priority of application task in case of heavy workload from the task
  • Resolved type redefinitions in btc_spp.h and btc_hd.h/btc_hh.h
  • HID: Fixed wrong parameter of get_report_by_id_and_type in bt_hidd.c
  • Fixed the linker error of functions not defined when enable memory debug. The according function definitions is included by a macro but the .c file has no access to the macro. Solve the problem by including the macro definition.
  • Fixed memory leak in esp_bt_hidh_dev_report_write and esp_bt_hidh_dev_set_report in bt_hidh.c
  • Added status protection on the processing of inquiry scan result to avoid repeat discovery cancellation which may raise incorrect discovery

Bluetooth Low Energy

Added

  • Added link role parameter for GATT disconnection event
  • Added description for de-initialize bluetooth controller API

Fixed

  • Fixed bluedroid BLE extend advertising parameters detection
  • Fixed BLE extended advertising params check on bluedroid
  • Fixed bluedroid host memory overflow
  • Fixed BLE periodic advertising report will lose data
  • Fixed compilation error when BLE v5.0 is enabled

NimBLE

Added

  • Added check to free keypair if already allocated to avoid memory leak

Fixed

  • Fixed bond not saved properly after re-pairing
  • Sync sending Host Number of Completed Packets command

Blufi

Fixed

  • Fixed an issue that SoftAP mode does not assign ip
  • Fixed an issue that SoftAP current connection always shows 0

ESP-BLE-Mesh

  • Added menuconfig for filtering packets with old SeqAuth
  • Fixed not handling oversized SegN during provisioning

Wi-Fi

Added

  • Added PMF disable API
  • Added HT40 support for espnow & 80211_tx
  • Added changes for unicast key renew for TKIP mic failure
  • Added APIs to check for BTM, RRM support of connected AP

Changed

  • Optimized PHY calibration time for ESP32-C3 and ESP32-S3
  • Updated wpa2 enterprise certificates
  • Enabled GCMP, GMAC for 192 bit configuration
  • Updated wifi doc for espnow/LR/fix rate/disable 11b/multiple antennas
  • Optimized example of wifi station
  • esp_netif: Optimized the null pointer judgment of eb
  • Updated regdomain max channel according to country info from nvs and/or AP
  • Channel 14 is allowed only 11b mode
  • Updated phy mode nvs when softap channel from 14 to other
  • Updated wifi CSI docs
  • Updated wifi beacon timeout docs

Fixed

  • Added some BTM fixes
  • Fixed issue reported by static analyser
  • Fixed build warning for unused variables
  • Fixed phy tx power limit for ESP32-S2/ESP32-C3/ESP32-S3
  • Fixed scanning of AP's with mixed key management
  • Fixed clearing default wifi netif procedure
  • Fixed issue of default AP ssid not set
  • Fixed data loose when WiFi power-save is enabled with Wi-Fi API being called
  • Ignore unauthenticated encrypted EAPOL-Key data
  • Fixed handling of key RSC
  • Fixed smartconfig v2 bssid is zero issue
  • Fixed static analysis issues
  • Fixed the wrong suggestion of method in NAK for all the methods (#7769)
  • Fixed memory leak in phy
  • Fixed some issues related to SoftAP mode change and STA PMF
  • Fixed stale PMF config in NVS issue
  • Fixed linker script issue where noflash scheme was applied to wifi_apb80m_request() and wifi_apb80m_release() even when CONFIG_PM_ENABLE was not enabled
  • Bugfix for close sniffer mode when wifi stop
  • Fixed deep sleep can't reconnect to ap when pmf enable.
  • Fixed some ap will ignore auth when rx deauth for a while
  • Fixed espnow recv unencrypted packets issue
  • Fixed not update phy according to country code
  • Fixed an issue that check whether channel parameter is valid
  • Reset beacon timeout timer when keep alive null works or hw drop beacon
  • Bugfix for qos null update ba ssn
  • Bugfix for wrong configuration of static txbuf
  • Clear old keys before going for new connection
  • Fixed sta reset beacon timeout timer trigger assert issue.
  • Bugfix for optimize beacon timeout issue

Removed

  • Removed group cipher check for PMF connection
  • Remove CSA when switch channel from/to 14 channel

Security

Fixed

  • Flash Encryption: Fixed issue that 4-line flash encryption cannot work normally when 8-line psram enabled (#9244; #9287)

Peripheral Drivers

Added

  • esp_lcd: Support LSB first SPI LCD (#8790)
  • Freemodbus: Add support of freemodbus component on ESP32-S2, ESP32-S3 and ESP32-C3.
  • I80 LCD: Supports frame buffer in PSRAM (#8085)
  • RGB LCD: Support the LCD mode of I2S1 on ESP32
  • SPI_LCD: SPI LCD support trunked color data transfer (#8496)
  • SPI_FLASH: Added support for 16MB octal flash MX25UW12345G (#7996)
  • UART: Added new uart_get_tx_buffer_free_size API to get the free space size of tx ring buffer (#8932, #3078)
  • Temperature Sensor: Added support on ESP32-S3 (#8086)

Changed

  • ESP_LCD: Enabled read rx_param in esp_lcd with I2C transport

Fixed

  • Fixed bbpll calibration fail bug in high temperature on ESP32-S3
  • ADC Calibration: Fixed the assertion failure or returning wrong error code when ADC2 failed the arbitration
  • freemodbus: Fixed uart_set_pin() check error in modbus master serial example
  • GDMA: Fixed the issue that channel object was not allocated from internal memory when CONFIG_GDMA_CTRL_FUNC_IN_IRAM is true but CONFIG_GDMA_ISR_IRAM_SAFE is false
  • GDMA: Fixed thread-safety of channel operations
  • GPIO: Fixed wrong GPIO_IS_DEEP_SLEEP_WAKEUP_VALID_GPIO macro (#8733)
  • HAL: Forced cpu_ll_get_cycle_count to always be placed in IRAM if not inlined
  • I2C: Corrected some I2C functions IRAM usage and placement (#8422)
  • I2C: Read transactions not followed by a STOP won't trigger a panic anymore. (#8548)
  • I2C Master: Fixed watchdog timeout issue (#8543, #8120, #7281)
  • I2C Master: Output frequency is now more accurate on ESP32 (#8770)
  • I2S: Fixed the issue that I2S_CHANNEL_FMT_ONLY_RIGHT not take effect. Fixed switching back to stereo issue
  • I2S: Fixed write timeout while setting the clock
  • RMT: Fixed undetermined idle level of RMT TX channel (#8864)
  • RTC regulator: Fixed occasional rtc mem load err
  • RGB_LCD: Fixed RGB LCD drift issue
  • RGB_LCD: Fixed error in rgb_panel_set_gap (#9279)
  • SOC: Fixed error in the rmt_reg.h for ESP32-S3 and ESP32-S2 (#9100)
  • SOC: Fixed wrong USB external PHY GPIO pads for ESP32-S3 (#9302)
  • SPI: Fixed wrong bus flag check for SPI driver Octal mode (#9133)
  • SPI: Fixed crash calling spi_bus_free when not initialized (#8642)
  • SPI Slave: Fixed an issue with placing the interrupt handler into IRAM (#3870)
  • SPI Slave: Fixed example ccount issue
  • Systimer: Fixed bug with systimer_counter_value_t where a bad counter value could be returned when compiling with -O0 optimization
  • Touch_sensor: Fixed the touch measurement interval becomes longer after wake-up from sleep on ESP32-S3
  • UART: Fixes RTS mis-reset before sending caused by context switch (#4178)
  • USB Host: Fixed interface descriptor printing (#9000)
  • TinyUSB: Fixed TX buffer incorrectly overwritten (#9040)
  • TinyUSB: Fixed dangling pointer when tinyusb using external USB PHY (#9264)
  • TinyUSB: Fixed lost packet after USB reconnection

Removed

  • LEDC: Removed REF_TICK choice for ESP32-C3 (as it is not supported)

Core System

Added

  • Added support for ESP32-C3 ECO4
  • efuse: Added ERR_RST_ENABLE efuse for ESP32-C3
  • ULP: Added ULP RISC-V support for ESP32-S3
  • ULP: Added ULP FSM support for ESP32-S3

Changed

  • efuse: Changed to validate written data after burning and re-burn it if necessary
  • efuse: Renamed ERR_RST_ENABLE to DIS_USB_OTG_DOWNLOAD_MODE
  • efuse: Renamed DIS_USB_DOWNLOAD_MODE to DIS_USB_SERIAL_JTAG_DOWNLOAD_MODE
  • efuse: Renamed DIS_LEGACY_SPI_BOOT to DIS_DIRECT_BOOT
  • efuse: Renamed UART_PRINT_CHANNEL to DIS_USB_SERIAL_JTAG_ROM_PRINT
  • console: Improved structure of console examples, added USB_SERIAL_JTAG support
  • Modified the memory layout to increase the space available for static allocation on ESP32-S3 by 78 kB. Previously this space was only usable as heap

Fixed

  • esp_hw_support: Fixed spinlocks not working on ESP32-S3 if placed in PSRAM (#9120)
  • sleep: Fixed cpu crash bug caused by memory lost after woken up from lightsleep on ESP32-C3/ESP32-S3
  • console: Fixed linenoiseProbe blocking forever on terminals without ANSI escape codes support when USB_SERIAL_JTAG is used (#8839)
  • console: Fixed potential usage of an uninitialized buffer (#6440)
  • esp_ipc: Fixed a case when ipc_task() can wake up blocking task early (#8559)
  • Fixed brownout not working after waking up from deepsleep
  • soc: Fixed efuse fail bits having the wrong address
  • PSRAM: Fixed startup crash when CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0
  • bootloader: Fixed startup crash when bootloader with 40Mhz and app with 80Mhz (ESPTOOLPY_FLASHFREQ) (#9156)
  • ULP: Fixed chip waking up from ULP-RISC-V trap signal when running with ULP-FSM
  • esp_system: Fixed garbled UART output on startup on ESP32-S2 (#9168)
  • esp_system: Fixed srodata being mistakenly placed in TLS section on ESP32-C3/ESP32-H2 TLS, increasing its size (#9203)
  • apptrace: Moved all apptrace related functions to IRAM to avoid issues if called when cache is disabled (#9131)
  • heap: Fixed a bug in memory free bytes calculation causing esp_get_minimum_free_heap_size() to return a wrong value (#8270)
  • heap: Fixed wrong arg passed to assert_valid_block

Debugging

Fixed

  • riscv: Fixed GDB backtrace of interrupted threads
  • riscv: Fixed GDB backtrace end function to point to prvTaskExitError
  • riscv: Fixed handling exceptions when running under debugger

FreeRTOS

Changed

  • Modified API vTaskGetSnapshot to return success or failure status

Fixed

  • Fixed stack and TCB allocation order for idle and FreeRTOS Timer tasks
  • Fixed a bug in Xtensa FreeRTOS port where extra threadptr CPU register was not being saved on solicited context switches
  • Fixed application startup issue with ESP_MAIN_TASK_AFFINITY_CPU1 config enabled

Power Management

Added

  • Examples: Added the usage of wakeup source EXT0, and how to use internal pullups if necessary
  • Added support for using touch sensor in sleep modes on ESP32-S3

Changed

  • Increase lightsleep current on ESP32-C3/ESP32-S3, to avoid memory lost

Fixed

  • pm_impl: Fixed neither enter light sleep nor enter "waiti" state in idle task
  • Fixed RTC8M domain power down issue when used as RTC source (#8007, #8089)
  • Fixed cannot lightsleep again after a wakeup from ULP (#6229)
  • Fixed 8MD256 can't be used as RTC slow src in deepsleep on ESP32 (#8007, #8089)
  • Fixed POWER ON reset when using RTC IO as input in deepsleep on ESP32-S3
  • Fixed RTC memory lost in high temperature in deepsleep on ESP32-S3
  • Reduce power consumption in lightsleep when using 8MD256 as RTC slow clock, but not using LEDC clock source on ESP32-S3
  • Decreased power consumption in different use cases on ESP32-S3
  • Fixed dangerous power parameters in sleep modes on ESP32-S3
  • esp_hw_support: Fixed time spent in light sleep when RTC is used for gettimeofday
  • Fixed cannot pd cpu and rc fast at the same time during light sleep
  • Improved flash power down logic
  • Fixed expressions evaluating _rtc_slow_length being incorrectly optimized by compiler, causing RTC slow memory to never be powered down(#6514)

newlib libc

Changed

  • Changed ESHUTDOWN value to 110 to avoid overlap with ENOTSOCK (108)

Fixed

  • Fixed the definition of struct dirent::d_ino. It is now defined as ino_t (2 bytes), instead of an int (4 bytes) (esp-rs/rust#117)

LWIP

Added

  • esp_netif: Added NETIF_FLAG_MLD6 flag for ethernet netif interface (#8602)
  • Added support for TTL option in ping API
  • Added option to route LWIP logs through ESP_LOG interface (#8785)

Changed

  • Optimized UDP Server example with recv_msg to retrieve destination address from an UDP packet (#7146)

Fixed

  • Added security fixes from upstream (CVE-2020-22283, CVE-2020-22284)
  • Fixed potential null-dereference when processing valid PPPoS packet containing zero characters (#8300)
  • Fixed NAPT forwarding of reference type pbufs, used by the default Ethernet interface

mDNS

Fixed

  • Fixed potential null dereference when querying null-instance (#8307)

OTA

Fixed

  • Fixed redirection handling for HTTP 303 and 308 status code

HTTP Client

Added

  • Added HTTP 303 and 308 status code parsing support

Fixed

  • Fixed location field for multiple redirects

HTTP Server

Fixed

  • Fixed websocket server to handle multiple connections when client send CLOSE frame
  • Fixed websocket server to handle PING and CLOSE frame when handle_ws_control_frames is set to true
  • Fixed wss_server_example to appropriately close the socket

Provisioning

Added

  • wifi_provisioning: Added a section explaining pairing pop during provisioning
  • wifi_provisioning/Bluedroid: Added support to configure link encryption during characteristic read /write
  • wifi_prov: Added support for WPA3_PSK and WPA2_WPA3_PSK APs

Changed

  • wifi_provisioning: Optimized the number of AP for wifi scan

Fixed

  • wifi_prov_mgr: Fixed device disconnection issue after pairing
  • wifi_prov_mgr: Simplified application by not using raw adv data which remote application was not able to scan

mbedTLS

Changed

  • Updated the default root certificate bundle (cacrt_all.pem)
  • Updated to latest bugfix release v2.28.1

Fixed

  • Fixed ssl server memory leak when enable mbedtls dynamic buffer function
  • Fixed ssl server crash for rsa key exchange methods when enable mbedtls dynamic buffer function

Bootloader

Added

  • Partition table: Added support for 32MB, 64MB, 128 MB flash sizes (#7688)
  • Added option for toggling memory region protection, CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE

Changed

  • SPI Flash: QIO implementation in bootloader could be overrided

ESP-TLS

Added

  • Added an API to free client session

Fixed

  • Fixed integration of I2C address related menuconfig option from esp-cryptoauthlib

ESP-MQTT

Fixed

  • Fixed publishing message longer than Tx buffer size (espressif/esp-mqtt#214)
  • Fixed esp_mqtt_client_enqueue() API to send data with correct dup flag
  • Fixed read malfunction and error propagation if transport read returns negative value (indicating errors)

Storage

Added

  • SDSPI: Added support for ESP32-S3 to SDSPI related examples
  • SDMMC: Added support for ESP32-S3 to SDMMC example
  • Added support for semihosting on ESP32-C3
  • VFS: Added ftruncate function support (#8279)
  • VFS: Added truncate/ftruncate VFS support for spiffs (#2234)
  • NVS: Added menuconfig option to turn assertions into function return codes (#8271)

Changed

  • Semihosting: User defined sys call numbers aligned with the ARM standard
  • Semihosting: Xtensa syscall instruction changed from break 1, 1 to break 1, 14

Fixed

  • SPIFFS: Added built-in checks for partition size, alignment and page size
  • FatFS: Fixed ff.c compilation warning in putc_bfd() (#5870)
  • VFS: Bugfix vfs_fat_write/pwrite errno and return value upon disk-full (#5027)
  • VFS: Fixed a race condition in select() if both socket-fd and non-socket fd trigger simultaneously (#8896)
  • FATFS: Fixed incorrect mtime reported for files created during daylight savings time (#9039)
  • SPIFFS: Fixed errno value set to EIO when readdir reached the end of the directory (pellepl/spiffs#288)

Removed

  • VFS: Absolute path support removed from VFS semihosting registration

Tools

Added

  • esptool_py: Support ESP32-S3 USB OTG compressed flashing with stub
  • Allow to specify port and baud rate for otadata commands (#8317)
  • Added macos-arm64 platform definition and binary links
  • Added idf.py clang-check and idf.py clang-html-report commands to run clang-tidy check for the project and generate HTML report, respectively
  • mkdfu.py supports setting flash parameters and partitions over 2 MiB
  • Docker: Added build arguments to reduce the image size: IDF_CLONE_SHALLOW and IDF_INSTALL_TARGETS

Changed

  • Updated OpenOCD version to v0.11.0-esp32-20220411
  • Updated CMake version to 3.23.1 (#8821)
  • Docker images for linux/arm64 platform are now also built and uploaded

Fixed

  • idf_monitor.py: Change integer comparison of ESP_MONITOR_DECODE to string
  • IDF Monitor should flash with the same and unmodified port it was invoked with (#8432)
  • Fixed installing by install.ps1
  • Fixed AttributeError in IDF Monitor (#8651)
  • Don't use f-string in idf_tools.py (#8890)
  • Fixed an issue with handling multiline strings in NVS partition generator (#7175)

Build System

Added

  • Added IDF_COMPONENT_MANAGER build property

Changed

  • Enable the component manager for pure CMake builds by default

Fixed

  • CMake build can now be called from another project, regardless on previously defined CMAKE_*_FLAGS (#7507).
  • Fixed bug where the -mlongcalls flag was not being passed to assembly (.S) source files when building for Xtensa targets

Documentation

Added

  • Added chip target and link to gpio.h

Changed

  • Updated USB pins in api-guides/usb-serial-jtag-console
  • I2C Master: Marked i2c_master_cmd_begin() function as thread-safe (#1997)
  • Improved documentation about flash power-down
  • Updated Condition Checking in Linker Script Generation

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.