Skip to content

ESP-IDF Release v4.2.3

Compare
Choose a tag to compare
@github-actions github-actions released this 11 Mar 17:06
· 23416 commits to master since this release

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

ESP-IDF v4.2.3 is a bugfix update for ESP-IDF v4.2. At the time of writing, ESP-IDF v4.4 is the latest stable release.

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

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

Download an archive with submodules included

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

Major changes

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

Major Bug Fixes

Breaking Changes

  • In previous versions of ESP-IDF, it was possible to omit the subtype field in the partition table CSV file. This could result in unexpected behavior, since empty subtype value was treated as 0. At the same time, 0 was the numerical value for the otadata partition subtype. This version of ESP-IDF adds new sanity checks for partition tables:

    • App partitions can not have empty subtypes.
    • Only one otadata partition can exist in the partition table, and its size must be 0x2000.

    Data partitions with a empty subtypes will now have a subtype ESP_PARTITION_SUBTYPE_DATA_UNDEFINED = 0x06. Previously when an empty subtype was encountered, the value was assumed to be 0.

    This may result in build errors for applications which relied on the previously unchecked behavior. This may also result in compatibility issues, if the application used empty partition subtypes.

Changelog

Bluetooth

Controller

  • No changes

Bluetooth Low Energy

  • Added change to free resources in deinit that were allocated during controller init procedure
  • Fixed BLE ACL tx flush issue during Reset/Reboot
  • Fixed the scan timeout report
  • Fixed missing the sleep time
  • Fixed BLE scan failed issue
  • Fixed connection failed with LG 5.0 phone
  • Fixed crash when shutdown Bluetooth
  • Fixed modem sleep hardware error

Classic Bluetooth

Added

  • Added README.md for demo controller_hci_uart_demo

Fixed

  • Fixed crash when lmp flooding
  • Fixed the start scan crash issue
  • Removed duplicate events in r_lld_evt_end
  • Fixed unable to initiate SCO connection when peer device not accept sniff mode.
  • Fixed the default sdkconfig options for controller_hci_uart example
  • Fixed crash after inquiry has finished
  • Fixed the issue create Connection request is not properly terminated which blocks BlueZ from reconnecting
  • Fixed the issue bt_spp_acceptor example fails when SPP is initiated on a windows machine using Realtek Bluetooth adapter
  • Fixed the issue HCI_Read_Clock failed read local Bluetooth Clock
  • Fixed cs event for rd_rem_ext_feats delayed issue.
  • Check only for same X component of public key in BR/EDR

Bluedroid

Fixed

  • Fixed some code logic errors

Classic Bluetooth

Added

  • SPP: Added some common FAQs in SPP Demo README
  • Added hci command to set coexistence status

Fixed

  • A2DP: Fixed a2dp sink blocked bugs.
  • SPP: Fixed SPP acceptor deadlock
  • A2DP: Fixed a2dp deinit crash
  • A2DP: Fixed a2dp source audio data packet congestion causing choppy audio in a2dp sink
  • A2DP: Fixed the crash caused by calling esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_START) after stream started
  • SPP: Fixed SPP memory leak
  • SPP: Fixed SPP cannot malloc slot bugs
  • SPP: Fixed SPP acceptor open with wrong remote address
  • Fixed a bug that ACL can't disconnect when hfp_client disconnect.
  • Fixed the timer collision in function bta_sys_start_timer() used by role switch
  • Fixed hfp_ag demo not create sine audio
  • Fixed output report char declaration (#5369)
  • Fixed left right key confusion in comments (#4670)
  • Fixed crash in failure of memory allocation after erasing flash (#6170)

Bluetooth Low Energy

  • Added new function esp_ble_gap_clear_whitelist() to clear all white list.
  • Support low duty cycle directed advertising
  • Fixed the bug when BLE setting scan parameters
  • Fixed data length update failed
  • Fixed no data length update callback when the value being used is the same as the value to be set
  • Fixed Bluedroid Host auto update PPCP after exchange connection parameters
  • Fixed some BLE document description error
  • Fixed the the code analysis report error reported by customer
  • Fixed high duty cycle directed advertising will not be stopped when timeout

NimBLE

Added

  • Check stack initialization status before executing stack commands

Changed

  • Modified ble_gap_wl_set function to clear complete whitelist

Fixed

  • Include NimBLE upstream fix to remove build error when NIMBLE_ROLE_BROADCASTER is disabled.
  • Added fix while deleting peer_dev_records entry in NVS

Blufi

  • Fixed blufi encryption interrupted unexpectedly lead to unable encryption again

ESP-BLE-Mesh

  • Check Provisioning Random & Confirmation sent and received by Provisioner(CVE-2020-26556 & CVE-2020-26560)
  • Apply the errata E16350 of BLE Mesh from Bluetooth SIG
  • Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
  • Recommend to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
  • Make Unprovisioned Device Beacon interval configurable
  • Updated the SIG recommendations for BLE Mesh CVE issues
  • Fixed filtering error when Provisioner receives heartbeat messages

Wi-Fi

Added

  • Added support for EAP-FAST authentication
  • Added config option for WPS strict
  • Added SHA384/SHA512 support for internal client
  • Added beacon timeout event
  • Allow for minimal scope of wifi_init_config_t
  • Added support of SHA256 AKM without PMF enabled
  • Added station based check for auth frame formation
  • Modified connect example to add scan mode config
  • Store PHY digital registers before disabling PHY and load them after enabling PHY
  • Added WPS PIN fixes

Changed

  • Refactored PHY access
  • Updated ESP32-S2 phy lib to support ESP32-S2 eco1 chip

Fixed

  • Fixed amsdu and fragment vulnerabilities
  • wpa_supplicant: Fixed supplicant logs crashing
  • Fixed Enterprise connection issue with windows server
  • Fixed interoperability issue with Windows 2008
  • Fixed airkiss and esptouch find channel crash issue
  • Fixed RF signal test without 9M rate issue
  • Fixed issue of setting invalid size to nvs misc log even after erasing it
  • Fixed WEP connection and crash issue
  • Fixed verbosity of supplicant logs
  • Fixed fragment plt loss when 2nd pn is compared with 1st pn
  • PMF: Allow keyindex in big endian format to workaround faulty APs
  • Updated miswritten and abbreviated words and syntax errors for "initialize WiFi section" in esp_wifi.h header file
  • Fixed memory leak in WPA3 connection
  • Fixed smartconfig set socket option fail
  • Fixed sniffer fcs error crash issue
  • Fixed the issue of restart in espnow blocking system
  • Init phy data to default if invalid in flash partition to avoid bootloops
  • Fixed the issue that no tbtt is generated in station+softap mode when maximum modem sleep is enabled
  • Fixed issue "ca md too weak" for certificates in wifi_enterprise example
  • Fixed memory corruption in WiFi Enterprise

ESP-WIFI-MESH

Fixed

  • esp_mesh_send is blocked in nodes(layer>=3), when a FIXED-ROOT root is duty master
  • Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
  • Fixed the device can not receive IP_EVENT_STA_GOT_IP when the router restarted

Ethernet

Changed

  • Increased LAN8720 ETH-PHY reset assertion time

Fixed

  • Fixed eth2ap example crash issue (#7260)
  • Fixed driver to only warn about negotiation timeout when link is up
  • Fixed driver to configure EMAC data interface before resetting PHY chip (#7227)

Security

Added

  • Added fault injection protection for secure version check in anti-rollback scheme
  • local_ctrl: Added support for protocomm security1 and custom security

Fixed

  • AES: Removed potential unaligned access to buffers in AES HAL/LL which could be a problem for certain cache mappings to external PSRAM on ESP32-S2 and later chips.
  • Secure boot/ESP32-S2: Disabled the ability to read protect efuses containing public key digest
  • Secure boot: Fixed warning when UART ROM DL mode is disabled
  • Fixed esp_ota_revoke_secure_boot_public_key API documentation not appearing correctly in the docs
  • esp_ds: Fixed memory leak identified by cppcheck

Peripheral Drivers

Added

  • GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
  • PSRAM: Add support on ESP32-D0WDR2-V3
  • SPI Flash: Added support for TH Flash chips TH25Q

Changed

  • freemodbus: Increased the maximum modbus tasks priority

Fixed

  • Fixed all direct 8/16 bit-width access to peripherals on ESP32-S2
  • ADC: Fixed ADC coexist with WiFi issue on ESP32-S2 by using FSM to control ADC power
  • freemodbus: Fixed error handling in mbc_master_get(set)_parameter() for duplicate parameter key in parameter descriptor list (#7362)
  • freemodbus: Fixed rs485 rts de-assert fail when tx delayed (#6728)
  • GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (#5571)
  • I2C: Delete i2c cmd_mux semaphore more cleanly (#6848)
  • I2S: Fixed driver uninstall can't disable the module
  • MCPWM: Fixed wrong deadtime preset modes (#7321)
  • RMT: Fixed wrong RMT register for ESP2-S2, RMT doesn't have RX wrap mode (#8354)
  • SDIO Slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area
  • SPI Flash: Increase the CS line setup used by the driver to make it more stable
  • SPI Master: Fixed driver cs_ena_posttrans wrong issue (#7758)
  • SPI Master: Fixed the crash when using interrupt mode when cache is disabled (#6529, #6781, #7368)
  • Timer Group: Fixed auto reload problem in default isr callback
  • Timer Group: Fixed the issue that timer group can't re-alarm if auto-reload is disabled (#8095)
  • Touch_sensor: Fixed the touch measurement interval becomes longer after wake-up from sleep on ESP32-S2
  • Touch_sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (#6895)
  • TWAI: Fixed incorrect timing configuration initializers for the 1K, 5K and 10K bit rates.
  • UART: Add missing critical section wrappers around rx_buffered_len (#6396)
  • UART: Ensure the driver object is in SRAM even PSRAM is malloc-able (#7044)
  • UART: Fixed a typo in the error message of invalid rx_thresh_xoff
  • USB: Fixed incorrect setting of D- pull down resistor
  • wave_gen example: Remove the ESP_INTR_FLAG_IRAM flag when register the ISR

Core System

Added

  • ESP32-S2: Added support for BROWNOUT reset

Fixed

  • Fixed longjump function to be context switch-safe
  • Fixed possible deadlock when using pthread_join() and log level set to Debug or higher
  • C++: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore.
  • SoC: Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end
  • Fixed incorrect address definition of ROM functions
  • esp_event: Fixed and improved docs
  • Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock
  • Fixed the sizes of .text and .rodata segments on ESP32-S2
  • rtc clock calibration: Fixed multi-calibration process protection logic
  • rtc clock calibration: Fixed bootup time increase when using usb-serial-jtag
  • partition_table: Fixed case when a few similar to otadata partitions are in the table
  • efuse: Fixed a bug related to the non-sequential way of describing eFuses in efuse_table when such fields go together sequentially
  • Fixed RTC_WDT protection in esp_restart_noos. App is compatible with 3.1 bootloader
  • Watchdog Timers: Fixed literal overflow issue when calculating Task WDT timeout
  • Fixed app crash when running OTA and OTA related task's stack is in RTC fast memory at the same time

Removed

  • Disabled ESP32-S2 option "Allow .bss segment placed in external memory", this option is currently only supported on ESP32

Debugging

Added

  • gcov: Added ESP32S2 support

Fixed

  • gcov: Fixed using on-the-fly (non-hardcoded) gcov dumping
  • coredump: Fixed EPC and EPS register values printed by espcoredump.py
  • gcov: Fixed ESP32 gcov dump issue
  • coredump: Fixed ESP-specific panic reasons handling

FreeRTOS

Fixed

  • esp_ringbuf: Fixed a bug where the Rx and Tx semaphore release sequence was incorrect in xRingbufferSend and xRingbufferSendFromISR functions.
  • esp_ringbuf: Fixed a bug where comparison between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers (#7344)

Power Management

Fixed

  • Fixed esp32s2 not awaken when deep-sleep time is set to 0

newlib libc

Fixed

  • Fix for FD_ISSET macro when n==-1

LWIP

Added

  • Documented lwIP not supporting deletion of a task while it is actively waiting on select() or poll()
  • Added macro to disable DHCP client's vendor class option
  • Added configuration to disable DHCP client identification (#7912)

Fixed

  • esp_netif: Fixed state transition of DHCP server (if stopped before setting the interface up)
  • ping_sock: Fixed an issue that esp_ping_new_session could return ESP_OK on error.
  • Fixed ICMP ping on a specific network interface (#7397)
  • Fixed DNS server index to overflow to DNS_MAX_SERVERS causing LWIP_ASSERT (to enable local queries when no DNS server is set, #6878)
  • Added missing extern "C" directive in DHCP server header file.

mDNS

Added

  • Added support for simple mDNS responders (closes #7124)

Fixed

  • Fixed potential crash if WiFi interface gets deleted and mdns continues to receive packets (closes #6973)

OTA

Fixed

  • app_update: Fixed incorrect first byte from esp_ota_get_app_elf_sha256 for -O2 optimization level.
  • otatool: Fixed read_ota_partition cmd, required output arg
  • otatool: Fixed a crash when imported as external python lib

HTTP Client

Changed

  • Updated the root certificate of https examples

Fixed

  • Fixed truncated headers issue when response header length goes over buffer size
  • Fixed memory leak identified by cppcheck
  • Fixed wrong handling of an EAGAIN case
  • Fixed HEAD request will affect the all next HTTP requests unless we close the HTTP request

HTTP Server

Fixed

  • Fixed ws server handling messages with length over 1440(MTU) incorrectly.

Provisioning

Added

  • BLE: Added API support to set manufacturer data in advertisement packets.

Fixed

  • Fixed wifi warning in wifi_prov_mgr application

mbedTLS

Changed

  • Upgraded to latest bugfix release v2.16.12

Bootloader

Changed

  • Changed range of the factory reset pin in Kconfig for ESP32-S2

Fixed

  • Fixed support for QIO & QOUT modes on ESP32-U4WDH chip and default configuration (#6191)
  • Fixed psram cache issue work-arounds also being applied to the bootloader
  • Fixed the issue that SPI Flash ROM functions are not correctly linked when CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not enabled (#7508)
  • Fixed and re-enabled bootloader_debug_buffer function for logging relevant Bootloader buffers.

ESP-TLS

Fixed

  • Fixed esp_mbedtls_write API when 0 bytes are written.

ESP-MQTT

Added

  • Added a new API to enqueue publish messages with qos>0

Changed

  • Updated certificates used in MQTT examples on ssl and wss.

Storage

Fixed

  • fatfs: fix SPIRAM allocation not used due to Kconfig option name error
  • vfs/uart: Fixed memory leak identified by cppcheck
  • vfs: timeout of select function is now POSIX compliant.

Tools

Added

  • Allow installation on arm64 macOS
  • Added possibility to install tools for selected chip targets only

Changed

  • Upgrade OpenOCD version to v0.11.0-esp32-20211220
  • idf_size.py: --archive_details output was re-formatted
  • idf_tools.py: Change AppData seeder to pip seeder
  • Constrain the cryptography package version in order to avoid breaking changes
  • Constrain version of the cffi package for Pythons older than 3.6
  • Create the ".espressif" directory on the first run on clean system (#7848)
  • idf_tools.py: Check if the PIP_USER environment variable exists and if exists, set to value "no"

Fixed

  • Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
  • GDB Stub: Fixed GDB assertion when listing threads
  • Catch the correct exception raised when the external tool is not available (#7140)
  • Reinstall virtualenv if it is broken
  • Fixed crash of idf_monitor.py in case processing input with Unicode character
  • idf_size.py: Fixed calculation size for ESP32-S2
  • idf_size.py: Fixed appearing NaN value when calling idf_size.py --json
  • idf_size.py: Fixed bug with --archive_details that always runs like with --diff label
  • idf_size: Fixed bug with wrong memory calculation in ESP32-C3, ESP32-H2, ESP32-S3, ESP32
  • Fixed the docker build for ARM (#6730)
  • Fixed export.bat "/tools/idf.py not found" issue (#7605, #7927)
  • Use delay between rename attempts on Windows in the installer (https://esp32.com/viewtopic.php?f=13&t=25962)
  • test_utils: Added missing "extern C" guard to ccomp timer

Build System

Changed

  • Improved error message if the Python dependency check completely fails to run due to an issue with the Python interpreter

Fixed

  • Fixed overriding Python path with -DPYTHON when building IDF as CMake library (#6285)
  • Fixed CMake build system to correctly pass the -Wwrite-string compiler flag if configured
  • IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables are now defined during the early expansion phase of component CMakeLists.txt files.

External Libraries

Changed

  • libsodium: Updated third party libsodium library to 1.0.18
  • cJSON: Updated cJSON submodule to v1.7.15
  • expat: Updated library from 2.2.9 to 2.4.1.
  • nghttp2: upgrade to v1.41.0 release

Documentation

Added

  • Added ESP32-S2-DevKitC-1 and ESP32-S2-DevKitM-1(U) User Guide
  • Added pin layout diagram and header block description to ESP32-S2-Saola-1 User Guide
  • Added pin layout diagram and updated external antenna connector name in ESP32-S2-DevKitM-1 User Guide
  • Added description of power management logic for ESP32-S2

Changed

  • Updated NVS documentation
  • Linked to https://idf.espressif.com/ to help navigate to documentation for specific ESP32-x chip
  • Updated docs/en/api-reference/protocols/icmp_echo.rst
  • Updated docs/en/get-started/windows-setup.rst
  • Updated ESP32-C3 ROM elf download link

Fixed

  • Corrected UART default pin names and provided more information about ESP-Prog board
  • Fixed broken links to ESP-IDF VS Code Extension documentation
  • Fixed ADC pad number error, and MOSI error
  • Fixed ESP32-S2 specific commands appearing in ESP32 flash encryption docs
  • Fixed peripheral channel Doxygen documentation for ESP32-S2
  • SPI: Fixed the default maximum transaction length.

Removed

  • Removed a deprecated macro: SPI_TRANS_SET_CD