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

latest releases: v5.3.1, v5.0.7, v5.3...
2 years ago

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

ESP-IDF v4.3.3 is a bugfix update for ESP-IDF v4.3. At the time of writing, ESP-IDF v4.4.1 is the latest stable release.

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

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

Download an archive with submodules included

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

Major changes

This is the list of major changes since release v4.3.2:

Major Bug Fixes

  • Heap: Fixed a bug in the TLSF allocator returning a chunk of memory smaller than requested
  • efuse: Fixed eFuse time settings issue on ESP32-C3

Breaking Changes

  • http2_request/sh2lib: The sh2lib_connect API now now takes sh2lib configuration (sh2lib_config_t) as input instead of connection URI.
  • The following config options have been renamed -
    • MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLEDMBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED
    • MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLEDMBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED
  • Disabling PMF in Station configuration by menuconfig no longer possible. Station will connect in PMF Mode by default if AP advertises PMF support. API esp_wifi_disable_pmf_config is provided to disable PMF for testing purposes.

Changelog

Bluetooth

Bluetooth Low Energy

Fixed

  • Fixed BLE scannable extended adv performance issue in case of Wi-Fi coexistence
  • Fixed the BLE task watchdog timeout issue
  • Fixed BLE LLCP collision for channel map update
  • Fixed BLE controller BLE_ADV_UNDERRUN error
  • Fixed Link error of Bluetooth Kconfig
  • Fixed the issue in libphy.a that Wi-Fi gets disconnected after Bluetooth is de-initialized

Classic Bluetooth

Fixed

  • Fixed the delayed response of HCI Command Status Event for HCI_Read_Remote_Extended_Features command
  • Fixed the crash issue in handling HCI_Exit_Sniff_Mode command from Host when controller just switches to active mode

Bluedroid

Classic Bluetooth

Changed

  • Updated HFP_HF version to 1.7.2
  • Improved HFP example README document
  • Improved bt discovery document
  • Improved SPP examples and documents
  • Improved A2DP examples and documents

Fixed

  • SPP: Fixed SPP cannot malloc slot bugs
  • SPP: Fixed memory leak for SPP initiator when the connection is failed
  • SPP: Fixed SPP crash after calling esp_spp_deinit
  • SPP: Fixed SPP initialization failure without free mutex
  • SPP: Fixed SPP acceptor open with wrong remote address
  • HID: Fixed esp_hidh report map length checking function (#7586)
  • HID: Fixed output report char declaration (#5369)
  • HID: Fixed left right key confusion in comments (#4670)
  • A2DP: Fixed for congestion of source audio data packets which causes choppy audio in A2DP sink
  • A2DP: Fixed the crash caused by calling esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_START) after stream started
  • A2DP: Fixed A2DP sink example which fails to get re-connected due to inapproper use of I2S driver
  • HFP: Fixed error during disconnecting audio in HFP example

Bluetooth Low Energy

Added

  • Support low duty cycle directed advertising
  • Added README files for the Bluetooth Bluedroid BLE 5.0 examples
  • Added Walkthrough tutorial files for the Bluetooth Bluedroid BLE 5.0 examples
  • Support HW CCA threshold value setting

Fixed

  • Fixed high duty cycle directed advertising will not be stopped when timeout
  • Fixed issue that can not find mac address error
  • Fixed BLE data length of periodic advertising check issue
  • Fixed bluedroid compile failed if both enable BT_MULTI_CONNECTION_ENABLE and SMP_SLAVE_CON_PARAMS_UPD_ENABLE
  • Fixed the null pointer deference issue reported by BLE dos
  • Fixed crash in failure of memory allocation after erasing flash (#6170)

NimBLE

Added

  • Added BLE SPP service

Changed

  • Changed write api call in throughput demo example to write without response

Fixed

  • Fixed memory leak of timer during NimBLE Host start-stop process
  • Fixed BLE SPP build fail on Windows
  • Corrected stack initialisation dependency function checks
  • Added esp-timer guard check in porting layer.

Blufi

Fixed

  • Fixed blufi encryption interrupted unexpectedly lead to unable encryption again

ESP-BLE-Mesh

  • Added proxy server connect and disconnect events
  • Fixed the abnormal disconnection of proxy client
  • Fixed that the oversized SegN may be used during provisioning

Wi-Fi

Added

  • Added new documentation page for Wi-Fi Security, DPP
  • Added support of EAP-FAST authentication
  • Updated ESP32-S2 phy lib to support ESP32-S2 revision 1 (ECO1) chip
  • Added PMF disable API

Changed

  • Added changes for scan resumption in PBC mode
  • Allow for minimal scope of wifi_init_config_t.
  • Updated miswritten and abbreviated words and syntax errors for initializing WiFi section in esp_wifi.h header file
  • PMF: Allow keyindex in big endian format to workaround faulty APs

Fixed

  • Added WPS PIN fixes
  • Fixed verbosity of supplicant logs
  • smartconfig: Fixed smartconfig set socket option failure
  • Fixed memory leak in WPA3 connection
  • Fixed failure during data transmission and getting stuck in Wi-Fi sleep if running WiFi and BT with modem-sleep together
  • Fixed "ca md too weak" issue for certificates in wifi_enterprise example
  • Fixed memory corruption in Wi-Fi Enterprise
  • Fixed Assoc comeback causing invalid state bug and cleanup in some FTM failure cases
  • Fixed fragment loss when 2td pn compare with 1th pn
  • Fixed sniffer FCS error crash issue
  • Fixed stale FTM report issue (#7773)
  • Fixed repeated FTM failures and other minor issues (#7702, #7753)
  • Always connect Station in PMF mode if possible
  • Fixed build warning for unused variables
  • Fixed scanning of AP's with mixed key management
  • Added some BTM fixes
  • Fixed issue reported by static analyser
  • Fixed phy tx power limit for ESP32-S2/ESP32-C3
  • Fixed clearing default wifi netif procedure
  • Fixed issue of data loss when WiFi power-save is enabled with WiFi API being called
  • Remove group cipher check for PMF connection

ESP-WIFI-MESH

Fixed

  • Fixed the device can not receive IP_EVENT_STA_GOT_IP when the router restarted

Ethernet

Changed

  • Increased LAN8720 ETH-PHY reset assertion time
  • DM9051: Improved Tx throughput rate (when sending large amount of data, the TCR_TXREQ bit is not cleared in time, causing packet loss and retransmission, which greatly reduces the throughput rate)
  • Using the blocking method, when it is judged that the TCR_TXREQ bit is automatically cleared to zero before sending, the measured blocking time is up to 77us, and the iperf tx throughput rate can reach 7.3Mbps(12MHz)

Fixed

  • Fixed ESP32 EMAC stop/start sequence

Security

Added

  • secure_boot: Added missing #include "esp_flash_encrypt.h"

Fixed

  • secure_boot: Fixed warning when UART ROM DL mode is disabled.
  • AES/SHA: Fixed issue with descriptors and buffer potentially being placed in RTC ram
  • AES/SHA: Fixed cache writeback/invalidate not being applied for CONFIG_SPIRAM_USE_MEMMAP
  • ssl_ds/configure_ds.py: Fixed error regarding verification for production mode

Peripheral Drivers

Added

  • PSRAM: Added support on ESP32-D0WDR2-V3
  • SPI Flash: Added support for TH Flash chips
  • SPI Flash: Support unlock for MXIC chips
  • USB_SERIAL_JTAG: Added blocking driver for supporting VFS
  • USB_SERIAL_JTAG: Can print through USB_SERIAL_JTAG port without changing the config option from UART
  • SOC: Added support to specify the maximum descriptor length when setting up the DMA descriptor link

Changed

  • ADC: Upgraded ADC calibration algorithm on ESP32-C3
  • GPIO: Changed gpio_hal_iomux_func_sel() to be always inlined to avoid access issues when cache disabled
  • SPI flash: Changed ID_DEV_MASK() to be always inlined to avoid access issues when cache disabled
  • Timer Group: Reset timer group peripheral in timer_init() function (#6466)

Fixed

  • Fixed brownout not working issue after deepsleep
  • ADC: Fixed ADC calibration error after waking up from light sleep
  • ADC: Fixed issue where ADC digital part not disabled by RNG, and not reset by driver
  • Freemodbus: Fixed the example mb_tcp_master to resolve slave IP address correctly when address gaps exist in data dictionary
  • Freemodbus: Fixed the modbus controller and port layer to resolve slave IP addresses correctly
  • Freemodbus: Fixed the setting of UID field in MBAP frame according to a data dictionary
  • Freemodbus/tcp_slave: Fixed memory leak in port_tcp_slave.c
  • Freemodbus: Fixed crash issue when start tcp_slave after (mbs_interface_ptr!=NULL) in mbc_tcp_slave_destroy()
  • Freemodbus: Fixed uart_set_pin() check error in modbus master serial example
  • GPIO: Fixed some gpio pin num errors on ESP32-S2 and ESP32-C3
  • GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (#5571)
  • GPIO: Fixed the issue that config struct is not properly initialized
  • GPIO: Fixed wrong GPIO_IS_DEEP_SLEEP_WAKEUP_VALID_GPIO macro (#8733)
  • HAL/ESP32-C3: Fixed SBA access from debugger in WFI mode
  • I2C: Fixed typo in timing macro name
  • I2C: Corrected some I2C functions IRAM usage and placement (#8422, #7249)
  • LEDC: Fixed ledc_set_duty failed to take effect when called frequently (#7288)
  • LEDC: Fixed incorrect fading behaviour with LEDC_FADE_NO_WAIT fade mode (#6710)
  • RMT: Fixed wrong RMT register for ESP32-S2, RMT doesn't have RX wrap mode (#8354)
  • SDIO Slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area
  • SDIO Slave: Fixed the issue that interrupt may be cleared with finished trans unhandled
  • SPI: Fixed crash calling spi_bus_free when not initialized (#8642)
  • SPI: Fixed SPI Master driver cs_ena_posttrans wrong issue (#7758)
  • SPI: Fixed SPI Master Fullduplex DMA mode single-direction-transaction bug
  • SPI SLAVE: Fixed an issue with placing the interrupt handler into IRAM (#3870)
  • SPI SLAVE HD: Fixed stack variable bug in seg_slave example (#7163)
  • SPI Flash: Fixed behavior of esp_partition_get_sha256() in case the image is invalid.
  • SPI Flash: Fixed esp_flash_erase_region function over-erasing when requested size is 0 (#7314, #7272).
  • Timer Group: Fixed the issue that timer group can't re-alarm if auto-reload is disabled (#8095)
  • Touch Sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (#6895)
  • UART: Fixed a bug which prevented RX interrupts to be enabled after filling the RX buffer
  • UART: Fixed the incorrect channel num on ESP32-S2, ESP32-C3, ESP32-S3
  • UART: Fixed reset logic on ESP32-S3
  • UART: Fixed issue to free a registered custom ISR (#8150)
  • UART: Fixed uart_enable_tx_intr can't disable the interrupt (fixes #8150)
  • UART: Fixed RTS mis-reset before sending caused by context switch
  • USB: Fixed incorrect setting of D- pull down resistor
  • USB_SERIAL_JTAG: Fixed issue that cannot print with wifi by default (#8131)
  • USB_SERIAL_JTAG: Fixed the issue that there is no rom log when restarting

Removed

  • Removed a deprecated macro: SPI_TRANS_SET_CD

Core System

Added

  • Added support for ESP32-C3 ECO4

Fixed

  • RISC-V: Fixed usage of mcause within the interrupt handler
  • RISC-V: Fixed GDB backtrace of interrupted threads
  • RISC-V: Fixed GDB backtrace end function to point to prvTaskExitError
  • RISC-V: Fixed handling exceptions when running under debugger
  • Pthread thread-local destructor functions are now called with the ordering required by the specification (#6643)
  • rtc clock calibration: Fixed bootup time increase when using usb-serial-jtag
  • efuse: Fixed a bug related to the non-sequential way of describing eFuses in efuse_table when such fields go together sequentially.
  • efuse: Validate written data after burning and re-burns it if necessary
  • Heap: Fixed a bug in the TLSF allocator returning a chunk of memory smaller than requested
  • Heap: Fixed a bug in memory free bytes calculation causing esp_get_minimum_free_heap_size() to return a wrong value
  • 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 system unable to start up when a toolchain with 64-bit time_t is used (#7980)
  • Fixed cpu crash bug caused by memory lost after woken up from lightsleep on ESP32-C3

Removed

  • eFuse: Free some unused eFuse fields (ESP32-C3)

Debugging

Added

  • apptrace: Added ESP32-C3 support
  • coredump: Added ESP32-C3 support
  • coredump: Added API to get core dump summary
  • coredump: Added on device core dump parsing support for ELF file

Changed

  • apptrace: Refactored apptrace for better support of various tracing HW

FreeRTOS

Added

  • Added Best Effort Round Scheduling. Replaces old behavior where tasks can be skipped indefinitely when time slicing. (#7256)

Changed

  • Changed freertos xtensa port to always inline xPortSetInterruptMaskFromISR and vPortClearInterruptMaskFromISR (#8301)

Fixed

  • Fixed thread safety issue with configASSERT
  • Fixed xStreamBufferReset function always crashing
  • 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 comparision between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers (#7344)
  • Fixed prvTaskIsTaskSuspended() where a task pending ready can be mistaken as suspended

Power Management

Changed

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

Fixed

  • Fixed ext1 cannot wakeup via RTCIO >= 18 issue
  • Fixed pm lock issue in dual core mode
  • Fixed _rtc_slow_length being incorrectly optimized by compiler
  • Fixed neither enter light sleep nor enter "waiti" state in idle task

newlib libc

Added

  • Added missing atomic load/store operations when building with Clang.
  • Added missing atomic libcalls SYNC_LOCK_TEST_AND_SET & SYNC_LOCK_RELEASE for supported integer types.
  • Additional atomic builtins were implemented: __atomic_OP_fetch_n, __sync_OP_and_fetch_n, all nand related builtins (espressif/arduino-esp32#5948)

Fixed

  • Fixed flushing console output when CONFIG_VFS_SUPPORT_IO is disabled
  • Console: Fixed potential usage of an uninitialized buffer (#6440)

LWIP

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
  • Fixed potential DHCP memory issues by disabling vendor class option (option 60)

mDNS

Fixed

  • Fixed parsing queries containing non-standard domains

OTA

Fixed

  • Fixed esp_https_ota_begin memory leak in some scenarios
  • Fixed the component to check chip id at start of ota
  • Fixed handling of HTTP 303 redirection status code

HTTP Client

Added

  • Added caching mechanism to fix data corruption in http_on_body
  • Added HTTP 303 redirection status code handling

Fixed

  • Fixed that parsing invalid url (with empty hostname) causing crash
  • Fixed memory leak in esp_http_client_example
  • Fixed location header field for multiple redirects

HTTP Server

Added

  • WebSocket CLOSE frame can support callback function

Fixed

  • Fix websocket server to support handling multiple connections when client send CLOSE frame

Provisioning

Changed

  • wifi_provisioning: Optimized the number of AP for wifi scan operation

Fixed

  • wifi_provisioning: Fixed provisioning not stopping in (compiler release mode
  • Fixed device disconnection issue after pairing

mbedTLS

Changed

  • Upgraded to v2.28.0 LTS series
  • Decrease SSL peak heap cost by around 30% in dynamic buffer configuration feature
  • Disable MBEDTLS_DYNAMIC_BUFFER feature when MBEDTLS_SSL_PROTO_DTLS is selected

Fixed

  • Fixed issue where hardware MPI was not being used in some cases for ESP32-C3

Bootloader

Added

  • Add fault injection protection for checking secure version in anti rollback use-case

Fixed

  • 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-enable bootloader_debug_buffer function for logging relevant Bootloader buffers.
  • Fixed psram cache issue work-arounds also being applied to the bootloader
  • Fixed the issue custom uart gpio doesn't take effect

ESP-MQTT

Added

  • Added config option to configure custom retransmission interval

Changed

  • Updated MQTT example test broker url and doc

Fixed

  • Fixed build issue if certificate bundle or websocket transport disabled
  • 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

Storage

Added

  • SPIFFS: Added built-in checks for partition size, alignment and page size (#8593)

Changed

  • VFS: timeout of select function is now POSIX compliant (#7514)

Fixed

  • VFS: Fixed errno value reported by open function (#8036)
  • VFS: Bugfix vfs_fat_write/pwrite errno and return value upon disk-full (#5027)
  • NVS: Fixed issues found by Coverity
  • FatFS: Fixed ff.c compilation warning in putc_bfd() (#5870)

Tools

Added

  • Added support for IDF component manager. Dependencies listed in idf_component.yml manifest are downloaded automatically.

Changed

  • Upgrade OpenOCD version to v0.11.0-esp32-20211220
  • idf_tools.py: Check if the PIP_USER environment variable exists and if exists, set to value "no"
  • idf_tools.py: Diagnostics have been improved in install scripts when creating virtual environment

Fixed

  • Allow to specify port and baud rate for otadata commands (#8317)
  • IDF Monitor flashes with the same and unmodified port it was invoked with (#8432)
  • Fixed ldgen not allowing '+' sign in archive names (#8073)
  • Avoid shell autocomplete initialization for bash version lower than 4
  • Use delay between rename attempts on Windows in the installer (https://esp32.com/viewtopic.php?f=13&t=25962)
  • idf_size: Fixed bug with wrong memory calculation in ESP32-C3, ESP32-H2, ESP32-S3, ESP32
  • idf_size.py: Identify objects without extensions (*.{o,obj}) in MAP files
  • idf_size.py: Support .noinit section names (#8428)
  • Fixed core dump decoding failure in IDF Monitor (#8099)
  • Fixed incompatible package dependencies of gdbgui (#8760)

External Libraries

Changed

  • expat: Upgraded to release version v2.4.3

Documentation

Added

  • 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 a user-friendly guide about how to use ws_server_example_test.py
  • Added an example list to ESP-WROVER-KIT Getting Started Guide

Changed

  • Updated CN translation for console.rst and ota.rst
  • Updated CN translation for esp32-devkitc and esp32-s2-kaluga-1-kit user guides
  • Updated CN translation for ledc.rst for ESP32-C3
  • Updated CN translation for sdmmc.rst ad vfs.rst in api-reference/storage.rst
  • Updated wifi.rst and nvs_flash.rst documents
  • Updated a statement, specifying the heap_caps_malloc usage regarding PSRAM and DMA

Fixed

  • Fixed typos in ESP32-S2-Saola-1 User Guide
  • Fixed broken links in queue.h

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.