Documentation for v4.3.1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3.1/
ESP-IDF v4.3.1 is a bugfix update for ESP-IDF v4.3. ESP-IDF v4.3.1 is the latest stable release at the time of writing.
Obtaining v4.3.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 v4.3.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.1
cd esp-idf-v4.3.1
This is the recommended way of obtaining v4.3.1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.3.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/dl/esp-idf/releases/esp-idf-v4.3.1.zip
Changelog
This is the list of changes since release v4.3:
Major Bug Fixes
- Fixes for CVE-2020-26556, CVE-2020-26557, CVE-2020-26559 CVE-2020-26560, CVE-2021-27926.
Breaking Changes
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1".
Known Issues
- Infrequent crash happens on ESP32 during BLE remove bond list stress test.
- Nimble resolvable private address does not work properly in some use scenarios.
- When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet.
- On ESP32-C3, AES/SHA may reset the wrong DMA RX channel if it shares the same ID as the TX. This issue may occur if ADC-DMA driver is initialized before the Wi-Fi, because ADC-DMA only uses one RX channel, and Wi-Fi uses AES/SHA module. Try to initialize the ADC-DMA or anything that will use a single DMA channel after the Wi-Fi may be a temporary workaround before next bugfix version.
Bluetooth Controller
- Fixed missing sleep time
- Fixed assert in checking hardware sleep state during wake-up
- Fixed that when EXT CRYS is configured but not detected, light sleep is still allowed to be used
Bluetooth Low Energy
- Deleted the Kconfig option: BLE ADV priority high
- Fixed RX interrupt flooding during BLE scan event in the case that no Rx buffer is available
- Fixed start scan crash issue
- Removed duplicate events in r_lld_evt_end() function
- Fixed disconnection due to MIC failure (error code:0x3D) during pairing on ESP32-C3
- Fixed no adv report in scan when using HW recorrect on ESP32-C3
- Fixed BLE ACL Tx Flush issue during Reset/Reboot
- Fixed the scan timeout report
- Added local IRK to BLE Controller RPA list
- To get a better performance of multi-connection, the minimum connection interval of coded PHY on ESP32-C3 is changed from 7.5ms to 12.5ms
Classic Bluetooth
- Fixed unexpected LMP timeout problem when rejecting remote device
- Fixed unable to initiate SCO connection when peer device does not accept sniff mode
- Fixed handling of invalid feature page response
Bluedroid
Classic Bluetooth
- HFP: Fixed build error for HFP-HF when Bluedroid dynamic memory allocation is enabled (#7145)
- Fixed A2DP sink blocked issues (#6712, #7100)
- SPP: Fixed SPP acceptor deadlock
Bluetooth Low Energy
- Fixed assert when updating exception list on ESP32-C3
- Fixed data length update rejected when controller is updating data length
- Supported HID examples for ESP32-C3 and ESP32-S3
- Fixed issue of option not being set due to incorrect macro name
- Fixed ESP32 BLE can't resolve the peer address when white list is enabled
- Fixed Enable Gattc NVS Cache lead to Crash
NimBLE
- Added support for NimBLE host to Blufi (#6904)
- Added support to use ESP timer that has higher priority than FreeRTOS timer
ESP-BLE-Mesh
- Recommend to use randomly generated AuthValue for each provisioning (CVE-2020-26556 & CVE-2020-26557)
- Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- Added check of Provisioning Random & Confirmation sent/received by Provisioner (CVE-2020-26560)
- Update the SIG recommendations for BLE Mesh CVE issues
- Make Unprovisioned Device Beacon interval configurable
- Added sdkconfig.defaults.esp32s3 for ESP32-S3 to some of the example.
Wi-Fi Coexistence
- Fixed performance issue for extended active scan in coexistence scenario: use the same priority for Rx of AUX_ADV_IND and AUX_SCAN_RSP
Wi-Fi
- Fixed crashes when CSI is enabled
- Fixed PM state error when CSI callback function is called
- Fixed amsdu and fragmentation vulnerabilities
- Refactored Wi-Fi ioctl functions
- Compile Wi-Fi library with -Os instead of -Og
- Support for saving phy calibration data to NVS for ESP32-S2, ESP32-C3 & ESP32-S3
- Added RF calibration docs for ESP32-S2 and ESP32-C3
- Added WPS strict config option
- Restructured wpa_supplicant's crypto code
- Added support for FTM ASAP, multiple FTM Initiators, ESP32-C3 calibration
- Move unused Wi-Fi log to noload section to save binary size
- Fixed RM capability missing for open mode AP
- Fixed memory leak under 11kv macro
- Added support of regdomain database
- Fixed connection failure caused by sleep
- Synchronized IDF menuconfig NVS status to lib
- Disabled AMPDU+AMSDU bit
- Fixed 802.11 TX crash issue
- Added support of config 802.11 TX rate
- Fixed memory leak in esp_issue_scan error path (#7240)
- Clear WLAN_FC_STYPE_ACTION bit in esp_register_action_frame (#7252)
- esp_supplicant: Make esp_rrm_send_neighbor_rep_request return proper error (#7233)
- wpa_supplicant: Trivial typo fix for setting spp_sup.require (#7366)
- Fixed some PMF and FTM issues
- Fixed crash issue of airkiss and esptouch in finding channel
ESP-WIFI-MESH
- esp_mesh_send is blocked in nodes(layer>=3), when a FIXED-ROOT root is duty master
- Added non mesh connections access
Ethernet
- Speed up Ethernet start up process
- Fixed bug in w5500-mac which could corrupt memory or cause infinite looping while reading registers (#6579)
- Fixed eth2ap example crash issue (#7260)
Security
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
- ESP32-C3/memprot: Fixed get_split_addr calculation and incorrect access to DRAM split address register
- Secure Boot V2: Fixed compiler warning and possible ignoring of DRBG internal failure when verifying Secure Boot signature during OTA. This bug had no security impact
- Digital_Signature: Fixed memory leak identified by cppcheck
- memprot: Fixed IRAM section alignment to avoid CPU prefetch overflowing to DRAM (causes PMS violation interrupt)
Peripheral Drivers
- I2S: Fixed driver uninstall can't disable the module
- I2C: Delete i2c cmd_mux semaphore more cleanly (#6848)
- TWAI: Fixed incorrect timing configuration initializers for the 1K, 5K and 10K bit rates
- UART: Fixed the garbage output when resetting the peripheral on ESP32-C3
- UART: Fixed a race condition and wrong interrupt flag setting
Core System
- Fixed possible deadlock when using pthread_join() and log level set to Debug or higher
- ULP-RISC-V: Fixed ULP-RISCV unintended waking up due to RTC interrupt not being cleared
- Partition Table: The partition table MD5 checksum is now checked when the partition table is loaded by the app, in addition to the existing check in the bootloader
- ULP: Fixed build system bug where linker script wasn't updated if memory reserved for ULP changed
- ULP-RISC-V: Fixed stack pointer not always being 16-byte aligned
- heap: Fixed ESP32-C3 build issue with heap tracing enabled
- C++: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore
- Fixed wrong exception emergency pool allocation
- Esp-Timer: Helper function to identify the status of timer
- Disable ESP32-S2 option "Allow .bss segment placed in external memory", this option is currently only supported on ESP32
- Fixed auto adjust voltage issue on ESP32-C3
Bootloader
- Fixed support for QIO & QOUT modes on ESP32-U4WDH chip and default configuration (#6191)
- Fixed bootloader_common_get_sha256_of_partition when RSA CHECK_SIGNATURE is on (#6873)
Power Management
- Fixed deep sleep issue caused by the mixed use of deep sleep and light sleep
- Fixed the Xtensa series SoC SysTick frequency error when DFS is enabled
LWIP
- esp_netif: Fixed failing ppp_set_auth() due to wrong argument check (#7047)
(#6935) - esp_netif: Fixed state transition of DHCP server if it's stopped before setting the interface up
- ppp: Fixed esp_netif_lwip_ppp build failure when IPv6 is disabled (#6935)
- 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 configuration to disable DHCP client identification
- Added configuration option CONFIG_LWIP_DHCPS to disable DHCP server if not needed
- Added configuration option CONFIG_LWIP_ICMP to disable ICMP if not needed
- Added configuration options that could disable SLIP and PPP support if not used
mDNS
- Fixed crash issue when WiFi interface get deleted and mDNS continues to receive the packets (#6973)
- Added support for simple mDNS responders, fixed Avahi compatibility (#7124)
OTA
- otatool: Fixed incorrect using otadata.seq&crc in switch_ota_partition cmd (#6773)
- Fixed read_ota_partition cmd, required output arg (#6559)
- Fixed a crash when imported as external python lib (#6733)
HTTP Client
- Fix header truncated when responded header length over buffer_size (#6370)
- Fixed memory leak identified by cppcheck
HTTP Server
- Fixed WS server handle length over 1440(MTU) messages incorrectly (#7202)
Provisioning
- Provisioning BLE: Added API support to set manufacturer data in advertisement packets
- wifi_provisioning: Added API to erase credentials and reset provisioning state
mbedTLS
- Upgrade mbedTLS to release v2.16.11
- Added support for external memory policy for ESP32-S2
- Added config option for key elements and key element extension for SSL connection
ESP-TLS
- secure_element: Updated esp-cryptoauthlib submodule to cryptoauthlib-v3.3.1.
ESP-MQTT
- Added support for ESP x509 Certificate Bundle (#7040, #7041)
- Added NULL pointer checks for public APIs
TCP Transport
- Added configuration option CONFI_WS_TRANSPORT to disable Websocket transport if not used
Storage
- VFS/UART: Fixed memory leak identified by cppcheck
Debugging
- gcov: Fixed using on-the-fly (non-hardcoded) gcov dumping
- coredump: core dump check can now be parametrized in menuconfig
- coredump: esp_core_dump_image_get() is now available again when core dump is not activated in menuconfig (#6631)
newlib libc
- Added definition of MAXNAMLEN
Tools
- Updated toolchain to esp-2021r1 version
- Remove dependency on idf-python and idf-python-wheels from tools.json. The dependency is handled by idf-installer for Windows. (#6881)
- Split up large binaries into smaller chunks in the DFU binary (#6999)
- idf.py: Fixed unpredictable order of global_action_callbacks with python < 3.7
- test_utils: Added extern C decl to ccomp timer (#7121)
- Catch the correct exception raised when the external tool is not available (#7140)
- export.sh: Added temporary change of LANG to English while activating bash autocompletion
- export.sh: Added type and version of the used shell into the warning log
Build System
- Fixed overriding Python path with -DPYTHON when building IDF as CMake library (#6285)
- Improved error message if the Python dependency check completely fails to run due to an issue with the Python interpreter
- CMake: Fixed CMake warning when compiling mbedtls component
- Any alignment is now permitted for .flash.rodata section as (custom) application version information is now in a separate section
- Fixed .flash.text alignment causing cache issue
- Modifying the linker script file triggers now a relink
External Libraries
- Updated third party libsodium library to 1.0.18
Documentation
- Updated NVS documentation
- Linked to a page to help navigate to documentation for specific ESP32-x chip
- Updated Strapping Pins in ESP32-C3-DevKitM-1 User Guide
- Updated Strapping Pins in ESP32-C3-DevKitC-02 User Guide
- Fixed broken links to ESP-IDF VS Code Extension documentation
- Suggest how to use JTAG for ESP32-C3 on Windows
- Provided a link to PCB layout for ESP32-Ethernet-Kit v1.2 development board
- Corrected UART default pin names and provided more information about ESP-Prog board
- Updated the GPIO API reference of ESP32-C3