Documentation for v4.3.2 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3.2/
ESP-IDF v4.3.2 is a minor update for ESP-IDF v4.3.1.
Obtaining v4.3.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.3.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.2
cd esp-idf-v4.3.2/
This is the recommended way of obtaining v4.3.2 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.3.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.3.2/esp-idf-v4.3.2.zip
Changelog
This is the list of changes since release v4.3.1:
Major New Features
- Added support for console output via USB_SERIAL_JTAG port on ESP32-C3
- SPI Flash: Added support for 32-bit address (>= 16MB) GD flash.
- The toolchain was upgraded to
esp-2021r2
version. This version includes the following changes:- Backtraces with Xtensa GDB are no longer interrupted on
abort()
and othernoreturn
functions (#6124). rv32imc
multilib configuration was added for the RISC-V target. Previouslyrv32im
was silently used as the closest compatible configuration torv32imc
. This resulted in increased code size for ESP32-C3. The new toolchain reduces the code size by at least 10kB for most applications which rely on libc.- Added
fnmatch
,iconv
functions (#3264, #2484). - The toolchain is now available for aarch64 hosts (part of #6432).
- Backtraces with Xtensa GDB are no longer interrupted on
- Added support for placing .bss segment into SPI RAM for ESP32-S2 (
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY
) - Added an option for installing tools only for selected chip targets (#5113)
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 theotadata
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.
Known Issues
- Infrequent crash happens on ESP32-C3 during BLE remove bond list stress test.
Bluetooth
Controller
- Added change to free resources in deinit that were allocated during controller init procedure.
Bluetooth Low Energy
- Fixed BLE connection will crash during erasing flash
- Fixed controller default LE event mask error for ESP32-C3
- Fixed no ADV report after scan for a while
- Fixed connection failed with LG 5.0 phone
- Fixed modem sleep HW deep sleep state error
- Added hci command to set coexistence status
- Fixed crash sometimes when shutdown bluetooth
Classic Bluetooth
- Fixed the use of deprecated sdkconfig options in the example and rename the example
- Check only for same X component of public key in BR/EDR
- Fixed issue in handling of HCI_Create_Connection_Cancel command that no HCI_Connection_Complete_Event is generated
- Fixed failure of reading Bluetooth local clock using HCI_Read_Clock command
- Fixed crash after inquiry is finished
Bluedroid
Classic Bluetooth
- A2DP: Fixed A2DP deinit crash
- A2DP: Fixed wrong clock_id in function time_now_us
- SPP: Added some common FAQs in SPP Demo README
- SPP: Fixed SPP memory leak
- Fixed the timer collision in function bta_sys_start_timer() used by role switch
- Fixed the crash when using legacy pairing with wrong pin code
- HFP: Fixed bug that acl link is not disconnected when hfp_client disconnect
- HFP: Fixed hfp_ag example not create sine audio (#7792)
- Added README.md for controller_hci_uart example
Bluetooth Low Energy
- Fixed Bluedroid Host automatically update PPCP after connection parameters are updated.
- Fixed some BLE document description error
- Updated simple_ble_start for ESP32-C3
- Modify the bluetooth device name length limits
- Fixed set extend ADV parameters failed when stop extend ADV
- Fixed data length update failed
- Check if the BLE extend connection parameter is valid
- Fixed some code logic errors
- Fixed the code analysis report error reported by customer
NimBLE
- Make LE data length set API public
- Fixed logging level mismatch
- Sync packet length API and whitelist API changes with upstream NimBLE
- Check stack initialization status before executing stack commands
- Compare only X component of public key to avoid impersonation attack
- Updated timer related prints to make them more readable.
- Fixed issue of wifi_prov_mgr crash after provisioning
- Added change to clear timer handle during deinitialization
Blufi
- Blufi on Nimble: Added fix for crash issue on ESP32-C3 during application init.
ESP-BLE-Mesh
- Fixed filtering error when Provisioner receives heartbeat messages
- Apply the errata E16350 of BLE Mesh from Bluetooth SIG
Wi-Fi
- Fixed Enterprise connection issue with windows server
- Added support for embedding multiple phy init data bin to app bin
- Fixed Tx issue for 9M rate
- Fixed interoperability issue with Windows 2008
- Added SHA384/SHA512 support for internal client
- Fixed ESP32-C3 phy issue related to no USB log
- Fixed ESP32-C3 RSSI change with bandwidth issue
- Removed scan done event for internal scans
- Modify Mexico channel range refer to FCC
- Fixed wrong allocation for coex funcs
ESP-WiFi-MESH
- Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
Ethernet
- Fixed driver to only warn about negotiation timeout when link is up
- Fixed driver to configure EMAC data interface before resetting PHY chip (#7227)
- Fixed KSZ8041 driver send link event at wrong time (Closes #7570)
- DM9051: Fixed potential missing Rx interrupts causing the Ethernet interface not responding (#6414)
Security
- Secure boot/ESP32 (ESP32-S2, ESP32-C3): - Disabled the ability to read protect efuses containing public key digest
- AES/SHA: Fixed driver resetting the wrong DMA channel
- HMAC: Added Downstream JTAG enable mode for ESP32-C3
- Secure Boot V2: Confirm if the running app is signed by a valid non-revoked key before revocation
- Memprot: Fixed voltage glitching detection logic
- Fixed the Memprot feature check in esp_restart()/panic_restart()
- AES: Removed potential unaligned access to buffers in AES HAL/LL which could be a problem for certain cache mappings to external PSRAM on S2 and later chips (#7236)
Peripheral Drivers
- Fixed all direct 8/16 bit-width access to peripherals on ESP32-S2, ESP32-C3
- freemodbus: Fixed incorrect reading of register outside of defined area descriptor
- freemodbus: Increased the maximum modbus tasks priority
- freemodbus: Added the FMB_PORT_TASK_AFFINITY kconfig option for modbus tasks (#6700)
- freemodbus: Changed the default value of FMB_TIMER_PORT_ENABLED to disabled
- freemodbus: Fixed TCP master, slave examples reinitialization sequence
- freemodbus: Fixed modbus TCP master, slave stack start - destroy issue
- freemodbus: Fixed slave destroy bug when master and slave init simultaneously
- freemodbus: Fixed master and slave use the same timer group index (#4699)
- freemodbus: Fixed compilation error when FMB_COMM_MODE_TCP_EN is disabled
- freemodbus: Fixed error handling in
mbc_master_get(set)_parameter()
for duplicate parameter key in parameter descriptor list (#7362) - GPIO: Fixed issue that gpio cannot hold during deep-sleep on ESP32-C3 (#7455)
- GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
- I2S: Fixed the write failure issue in 32bit slave mode
- I2S: Fixed the wrong value of I2S_COMM_FORMAT_STAND_MSB
- MCPWM: Fixed wrong deadtime preset modes (#7321)
- SPI: Fixed wrong target register for interrupt disable on ESP32-C3 and ESP32-S3
- SPI Master: Fixed the crash when using interrupt mode when cache is disabled (#6529, #6781, #7368)
- SPI Slave: Restrict MOSI/MISO enable on transaction preparation only for ESP32
- SPI Slave: Fixed TX/RX maximum bit length HW register configuration for ESP32
- SPI Slave: Remove Slave TX/RX set bitlen not effective for ESP32-S2/ESP32-C3/ESP32-S3
- SPI Slave: Ensure DMA In-Link EOF is generated by trans_done on SPI Slave
- SPI: Updated essl_spi driver to support synchronized data read/writes with a ESP SPI Slave working in append mode
- SPI Flash: Added support for 32-bit address (>= 16MB) GD flash.
- Timer Group: Re-enable alarm interrupt only when auto reload is selected (#7001)
- Touch_sensor: Fixed the touch measurement interval becomes longer after wake-up from sleep on ESP32-S2
- 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)
- usb_serial_jtag: Support usb_serial_jtag port on ESP32-C3
Core System
- ULP-RISC-V: Forced co-CPU clock on to prevent spurious co-CPU trap resets
- ULP: Updated CONFIG_ULP_COPROC_RESERVE_MEM max value to reflect the max available memory
- Fixed the sizes of .text and .rodata segments on ESP32-S2
- esp_event: Fixed and improved docs
- CXX: Fixed I2C master timeout
- CXX: Added virtual destructor in I2C class (#7435)
- Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock
- Console: Fixed a bug preventing REPL from being launched on another UART than default one
- efuse: Fixed len of SOFT_DIS_JTAG eFuse from 2 to 3 for ESP32-C3
- Support placing .bss segment into SPI RAM for ESP32-S2 (
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY
) - Fixed peripheral clock being undesirably disabled during CPU reset for ESP32-S2, ESP32-C3, and ESP32-S3
- Fixed regression of cache access error not getting detected for APP CPU core on ESP32
- RTC calibration: Fixed multi-calibration process protection logic
- Added sync of FRC & RTC counters in esp_restart
- Fixed app crash when running OTA and OTA related task's stack is in RTC fast memory at the same time
- partition_table: App partitions can not have empty subtypes (need to define them)
- partition_table: Data partitions with a empty subtypes will be ESP_PARTITION_SUBTYPE_DATA_UNDEFINED = 0x06 instead of 0
- partition_table: otadata partition can be only with size 0x2000 and be only one in the partition table
- heap: Fixed
multi_heap_get_info_impl
returning incorrectlargest_free_block
value (#7808)
FreeRTOS
- Fixed uninitialized uxTaskNumber at task initialization
Build System
- Fixed CMake build system to correctly pass the -Wwrite-string compiler flag if configured
- gdbstub: added xtensa, esp32 as public includes in component.mk
Bootloader
- Fixed bootloader considering a load end address invalid if it was at the end of a memory area
- Enabled clock glitch detection
- Improved XMC flash stabilities as main flash
newlib libc
- Add missing C++ header guards to <sys/dirent.h> (#7204)
Power Management
- Fixed SPIRAM leakage current when its CS pin has no hardware pullup
- Fixed Flash leakage current when its CS pin has no hardware pullup
- Added support of RTC8M (Internal 8MHz OSC) power domain
- Added support of XTAL (External 40MHz XTAL) power domain
- Fixed ESP32-S2 will not be awoken when deep-sleep time is set to 0
- Fixed driver using wrong print function in a critical section (#7942)
LWIP
- ping_sock: Fixed esp_ping_new_session may return ESP_OK when the error occurred
- Fixed ICMP ping on a specific network interface (#7397)
- dhcpserver: Add extern "C" directive in dhcpserver head file
HTTP Client
- Added support of client_key_password for HTTPS connection
- 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 ws server handle length over 1440(MTU) messages incorrectly
Provisioning
- Fixed WiFi scan configuration related warning in wifi_prov_mgr application
Protocols
- local_ctrl: Added support for protocom security1 and custom security
ESP-TLS
- Fixed esp_mbedtls_write API when 0 bytes are written
Storage
- NVS: Add NVS partitions "encrypted" flag related backward compatibility config (#7833)
- NVS: Fixed nvs page host test, added it to CI tests
Tools
- Added target option for installing tools only for selected chip targets (#5113)
- idf_size.py: Fixed calculation size for ESP32-C3 and ESP32-S2
- idf_size.py: Make idf_size work with overflow (#6914, #4234)
- idf_size: Fixed bug with --archive_details that always runs like with --diff label
- idf_size: Changed --archive_details output
- Change AppData seeder to pip seeder in the installer script
- idf_size.py: Fixed appearing NaN value when calling idf_size.py --json
- Constrain the cryptography package version in order to avoid breaking changes
- ldgen: The order of ld file section entries would be a fixed value
- Fixed the docker build for ARM (#6730)
- Constrain version of the cffi package for older pythons <3.6
- Updated toolchains to
esp-2021r2
version - Create the ".espressif" directory on the first run on clean system (#7848)
- PowerShell export script: Initialize
$envvars_array
to an empty list (#7819) - PowerShell export script: Define
$IsWindows
if not defined (#7858 fixes #7820) - Fixed export.bat "/tools/idf.py not found" issue (#7605, #7927)
Debugging
- Upgraded OpenOCD version to v0.10.0-esp32-20211111
- coredump: Fixed EPC and EPS register values printed by espcoredump.py
- coredump: Fixed a bug in esp_core_dump_image_erase when flash encryption is enabled.
- Gcov: Fixed ESP32 gcov dump issue.
- Gcov: Added ESP32-S2 support.
- esp_gdbstub: Fixed compilation for ESP32-C3.
External Libraries
- expat: Updated library from 2.2.9 to 2.4.1.
- cJSON: Updated cJSON submodule to v1.7.15
- coap: Fixed coap implementation with cxx
Examples
- Updated certificates of https examples
- Fixed compilation of protocols examples with CONFIG_EXAMPLE_USE_OPENETH=y
- SPI Master: Fixed DMA channel allocation in SPI master examples for ESP32-C3
- PCNT: Install PCNT interrupt for only once in the rotary encoder example. (#6889)
Documentation
- Added ESP32-S2-DevKitC-1 user guide
- Added new module variants: ESP32-MINI-1U for ESP32-DevKitM-1 board, and ESP32-PICO-MINI-02U for ESP32-PICO-DevKitM-02 board
- Fixed ADC pad number error, and MOSI error
- Added a note to ESP32-DevKitM-1 User Guide, to remind users to enable single-code mode when flashing applications
- Updated strapping pin descriptions in ESP32-C3-DevKitM-1 and ESP32-C3-DevKitC-02 User Guide
- Updated the assignment type of i2s .bit_per_sample from
16
toI2S_BITS_PER_SAMPLE_16BIT
- Fixed link errors in examples/bluetooth/hci/README.md
- Updated ESP32-C3 rom elf download link
- Make Classic BT Documents only visible for ESP32
- Fixed esp_ota_revoke_secure_boot_public_key API documentation not appearing in the appropriate docs
- Updated Chinese/English translation api-guides/jtag-debugging/index.rst and get-started section
- Added Google analytics and warning for outdated docs
- Added new target and version selector and fixed several function rendering errors
- SPI: Fixed the default maximum transaction length