Documentation for IDF v4.3.4 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3.4/
ESP-IDF v4.3.4 is a bugfix update for ESP-IDF v4.3. ESP-IDF v4.4.2 is the latest stable release at the time of writing.
Obtaining v4.3.4
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.4 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.4
cd esp-idf-v4.3.4/
This is the recommended way of obtaining v4.3.4 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.3.4.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.4/esp-idf-v4.3.4.zip
Major changes
This is the list of changes since release v4.3.3:
Major Bug Fixes
- efuse (ESP32): Fixed burn operation when data was written directly to regs. This was regression from v4.3.3 release and it was causing secure boot workflow to fail. Please see #9290 and #9333 for more details.
Breaking Changes
- esp_crt_bundle: "esp_crt_bundle_set" API now has additional argument bundle_size and now returns esp_err_t.
Changelog
This is the list of changes since release v4.3.3.
Bluetooth
Controller
Added
- Added UHCI example to ESP32-C3, used for Bluetooth Controller only mode through HCI UART transport
- Added support to use main crystal as Bluetooth sleep clock to be used in SoC light sleep on ESP32-C3
- Power down Bluetooth module upon de-initializaing Bluetooth controller for ESP32-C3 and ESP32-S3
Changed
- Initialize all elements of esp_bt_controller_config_t. (#9073)
Fixed
- Fixed that functions used in light sleep wake-up procedure are not put in IRAM, which causes RTC watchdog timeout on ESP32-C3
- Fixed that FreeRTOS semaphores and queues used by Bluetooth Controller are created in SPIRAM, which causes software crash when handling ISRs
- Fixed missing in processing VHCI interrupt caused by lack of protection against race conditions in accessing VHCI environment variables on ESP32
- 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
Bluetooth Low Energy
Added
- Add description for de-initialize bt controller API
Fixed
- Fixed BLE got disconnected when when modem sleep is disabled and Bluetooth is initialized after Wi-Fi on ESP32-C3 and ESP32-S3
- Fixed BLE ke_mem.c assert on ESP32
- Fixed BLE ke_mem.c assert on ESP32-C3
- Fixed BLE advertising report on ESP32-C3
Classic Bluetooth
Fixed
- Fixed the issue during legacy pairing procedure that controller does not report link key to Host on ESP32
- Fixed the task watchdog issue during controller initialization due to invalid hardware state after system reset on ESP32-C3
- Fixed the assertion in function em_bt_clkoff1_setf when clock overflow happened, the overflow can be safely ignored
- 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.
- 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.
- Fixed the crash in accessing bt_util_buf_env buffer list due to lack of protection against race condition when operating on the linked list in context of both task and interrupt service routine
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 memory debug is enabled
Classic Bluetooth
Added
- Added Bluetooth device address field in the parameter structure of ESP_BT_GAP_READ_REMOTE_NAME_EVT callback event
Changed
- Updated HFP_AG version to 1.7.2
Fixed
- A2DP: Fixed AVDTP general reject format error
- A2DP: Fixed the A2DP source example application state machine in the processing of inquiry response, which can result in the failure of stopping device discovery
- A2DP: Fixed A2DP sink example that audio playback is clogged due to higher priority of application task in case of heavy workload from the task
- Fixed the default sdkconfig file for HFP examples that causes failure of 'connect audio' operation
- Fixed type redefinitions in btc_spp.h and btc_hd.h/btc_hh.h
Bluetooth Low Energy
Changed
- Optimized BLE legacy advertising report datapath and advertising report flow control mechanism, make it more robust in case of heap exahustion.
Fixed
- Fixed BLE sync periodic advertising report will lose data
- Fixed bluedroid BLE extend advertising parameters detection
- Fixed bluedroid host memory overflow
- Fixed compilation error when BLE5.0 is enabled
- 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
NimBLE
Added
- Added changes for mbedTLS v3.1.0
Fixed
- Added check to free keypair if already allocated to avoid memory leak
- Corrected function declaration in crypto header.
- Fixed rep-airing issue by clearing device record.
- Sync sending Host Number of Completed Packets command
Blufi
Fixed
- Fixed an issue that Softap mode do not assign ip
- Fixed an issue that SoftAP current connection always show 0
ESP-BLE-Mesh
- Fixed continuously putting secure update into friend queue
- Fixed friend relay lpn message when relay feature is disable
- Fixed the count_log field should be 0 when HBS is sent
- Fixed not ignoring connectable PB-ADV PDU with Link Open
- Fixed key refresh from non-primary subnet been ignored
- Fixed the sequence of invalid provisioning pdu type check
- Fixed not checking invalid link flag during PB-GATT
- Fixed overwriting the expect_ack_for after sending Public Key
- Added a check if AppKey is bound to model while setting publication
- Fixed the Heartbeat Publication Period Log value range
PHY
Fixed
- Fixed memory leak in phy
- Init phy data to default if invalid in flash partition to avoid bootloops
Wi-Fi
Added
- Added APIs to check for BTM, RRM support of connected AP
- Added changes for unicast key renew for TKIP mic failure
- Added ht40 support for esp_wifi_80211_tx.
- Connect example: Add scan mode config
Changed
- Optimized example of wifi station
- Updated Wi-Fi CSI docs
- Updated Wi-Fi beacon timeout docs
- Updated Wi-Fi multiple antennas docs
- Updated wpa2_enterprise certificates
Fixed
- Fixed a possible packet miss caused PTK install delay
- Fixed a bug that if sniffer not closed wifi stop will fail
- Fixed a bug that QoS Null updated the BA SSN which cause some packets lost
- Fixed wrong default static TX buffer number when not configured
- Clear old keys before going for new connection
- Do not use pmkid caching when SSID is changed
- Fixed a bug when ftm used with ps enabled
- Fixed a potential issue to allocate PSRAM to wifi stack where internal RAM is required
- Fixed crashed when esp_wifi_set_ant_gpio() called on chip esp32s2/esp32c3
- Fixed deep sleep can't reconnect to ap when pmf enable
- Fixed esp-now recv unencrypted packets issue
- Fixed the wrong suggestion of method in NAK for all the methods (#7769)
- Fixed handling of key RSC
- Fixed issue of default ap ssid is not getting set
- 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
- Fixed not update phy according to country code.
- Fixed possible memory leak if report level not set
- Fixed potential fail to scan AP after receiving disassoc/deauth from AP on ESP32-S2
- Fixed phy init failure when wifi deinit
- Fixed smartconfig esptouch v2 found none fail issue
- Fixed some ap will ignore auth when rx deauth for a while
- Fixed static analysis issues
- Fixed WAPI Key mgmt compatible issue
- Fixed Wi-Fi and bt power domain leakage current in light sleep
- Fixed write to null pointer if malloc failed
- Ignore unauthenticated encrypted EAPOL-Key data
- Multiple bugfixes in SoftAP and Station PMF
- Reset beacon timeout timer when keep alive null works or hw drop beacon
Peripheral Drivers
Changed
- I2C_MASTER: Output clock frequency calculation is optimized to be more accurate (#8770)
- I2C_MASTER: Optimized the interrupt handler, and decreased the delay between transactions by a lot (#8770)
Fixed
- esp_hw_support: Fixed wrong RC_SLOW clock frequency values on ESP32-C3
- HAL: Forced cpu_ll_get_cycle_count to always be placed in IRAM if not inlined
- I2C_MASTER: Fixed watchdog timeout issue in I2C master driver
- PSRAM: Fixed the heap pool that reserved for DMA/internal use
- PSRAM: Fixed startup crash when CONFIG_SPIRAM_MALLOC_ALWAYSINTERNAL=0
- SOC: Fixed error in the rmt_reg.h for ESP32-S2 (#9100)
- Systimer: Fixed bug with systimer_counter_value_t where a bad counter value could be returned when compiling with -O0 optimization
Core System
Added
- efuse: Added ERR_RST_ENABLE eFuse for ESP32-C3
Changed
- apptrace: Moved all apptrace related functions to IRAM
- Substract rtc_iram_seg memory region size from ESP_BOOTLOADER_RESERVE_RTC
Fixed
- app: Fixed app startup stuck when bootloader with 40Mhz and app with 80Mhz (ESPTOOLPY_FLASHFREQ)
- esp_ipc: Fixed a case when ipc_task() can wake up blocking task early
- efuse (esp32): Fixed burn operation when data was written directly to regs
- Fixed eFuse fail bits
- Fixed ESP32-C3 TLS size
- Fixed garbled UART output on startup on ESP32-S2 (#9168)
- heap: Fixed wrong arg passed to assert_valid_block
FreeRTOS
Fixed
- Fixed application startup issue when ESP_MAIN_TASK_AFFINITY_CPU1 config enabled
- Fixed bug in FreeRTOS Xtensa port where extra threadptr CPU was not being saved on solicited context switches
- Fixed bug in event group functions where the blocked task list was being accessed without acquiring the task list spinlock
Power Management
Added
- Added a note for deep sleep crc check
Fixed
- esp_hw_support: Fixed time spent in light sleep when RTC is used for gettimeofday
- Fixed cannot lightsleep again after a wakeup from ULP (#6229)
- Fixed the issue of deep sleep wakeup failure caused by using light sleep and deep sleep at the same time
- Fixed the issue of sleeping time error beacause external 32kHz xtal does not exist
- Fixed Wi-Fi does not know that Bluetooth has modified the lpclk source
LWIP
Added
- Added function for deinit lwip timers
- Added option to route LWIP logs through ESP_LOG interface
- Added support for TTL option in ping API
Changed
- Examples: Updated UDP socket example to use recv_msg
Fixed
- Fixed esp_netif_set_dns_info_api() to work with IPv6 addresses
OTA
Changed
- Enabled option of using global_ca_store and esp_crt_bundle
HTTP Client
Added
- Added support to enable ESP certificate bundle for the https connection.
Provisioning
Changed
- WiFi Prov Mgr: Simplified application by not using raw adv data which remote application was not able to scan
mbedTLS
Changed
- Updated mbedtls to release v2.28.1
- Updated the default root certificate bundle (cacrt_all.pem)
Fixed
- Fixed ssl server crash for rsa key exchange methods when enable mbedtls dynamic buffer function
- Fixed ssl server memory leak when enable mbedtls dynamic buffer function
- Fixed the behavior of esp_ds_init_data_ctx API when ds_data is provided directly from flash
Bootloader
Added
- SPI_FLASH: QIO Flash driver implementation (bootloader version) can be overridden from the user's side
ESP-TLS
Fixed
- Fixed integration of I2C address related menuconfig option from esp-cryptoauthlib.
ESP-MQTT
Fixed
- Fixed read malfunction and error propagation if transport read returns negative value (indicating errors)
- Added support to enable ESP certificate bundle for the https connection.
Storage
Fixed
- nvs_flash: Fixed nvs_flash_init_partition_ptr() to pass correct arguments to NVSPartitionManager::init_custom()
- VFS: Fixed a race condition in select() if both socket-fd and non-socket fd trigger simultaneously
Tools
Added
- mkdfu.py supports setting flash parameters and partitions over 2 MiB
Changed
- Upgraded OpenOCD version to v0.11.0-esp32-20220706
Fixed
- Docker: Don't build docker images for linux/arm64 platform
- idf_monitor.py: change integer comparison of ESP_MONITOR_DECODE to string
- Fixed an issue with handling multi-line strings in NVS partition generator (#7175)
Removed
- Removed undefined variable from install.ps1 (#9556)
Build System
Changed
- Enable the component manager for pure CMake builds by default
Examples
Changed
- coap_client_example: Updated the target domain URL
Documentation
Added
- ESP-NOW: Added documents on esp-now config rate
Changed
- Updated 404.rst page
- Updated Wi-Fi noise floor unit
- Updated sp_wifi_internal_set_fix_rate usage
Fixed
- Fixed the name of the IP_EVENT_STA_LOST_IP event