Skip to content

@projectgus projectgus released this May 3, 2021

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

ESP-IDF v4.2.1 is a minor update for ESP-IDF v4.2.

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

This is the recommended way of obtaining v4.2.1.

Download an archive with submodules included

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

Changelog

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

Major Bug Fixes

  • Secure Boot V2: Fixed the manual enablement of Secure Boot V2 (#6050)
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Breaking Changes

  • esp_tls_wolfssl: Previously an API named wolfssl_tlsext_host_name was inappropriately used for domain (host) name check.
    In earlier case if the domain name was different than the ISSUER field in the peer's server certificate, then the connection might have succeeded (provided skip_common_name = false). The old API is now replaced with wolfSSL_check_domain_name, which makes wolfSSL to check if the domain name provided matches with the ISSUER name on the peer's server certificate. With this API change, wolfSSL_connect should return a fatal error in case of a domain name mismatch.

Bluetooth Controller

  • Reduced IRAM consumption about 300kbytes
  • Fixed assert without SW coexist enabled
  • Fixed bt controller task watchdog in Wi-Fi test
  • Fixed crash in Bluetooth caused by calling esp_restart() function
  • Fixed IRAM_ATTR missing in coex mode
  • Fixed for C2H flow control parameter check in Bluetooth controller. Required for NimBLE Host flow control to work.
  • Modified E8192 ELx200 ELx40 log level to LOGD
  • Synchronized multiple branches of bt lib

Bluetooth Low Energy

  • No updated fixes

Classic Bluetooth

  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory
  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
  • Added protection for ACL-U packet type exchange procedure
  • Fixed crash caused by dividing zero
  • Fixed bug of modem sleep which may lead to the crash issue "assert(-218959118,0)"

Bluedroid

  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol'

Classic Bluetooth

  • SPP: Fixed SPP vfs demo crash when use dynamic memory
  • SPP: Fixed SPP vfs memory leaks when exception occurs
  • Added API to config QoS for Classic Bluetooth ACL link
  • Rejected connection request if BD_ADDR of peer is same as ours (CVE-2020-26555)
  • A2DP: Added Init & Deinit Event for A2DP
  • A2DP: Fixed data stream underrun for A2DP sink
  • A2DP: Added Init & Deinit Event for A2DP
  • AVRC: Fixed the issue that target unhandles set_player_app_value cmd
  • HFP: Fixed the crash issue when bta_hf_client_sco_co_out_data is called
  • SPP: Add API esp_spp_stop_srv_scn to stop a specific server
  • SPP: Add parameter service_name with event ESP_SPP_DISCOVERY_COMP_EVT
  • SPP: Add parameter scn with event ESP_SPP_START_EVT
  • SPP: Add parameter scn with event ESP_SPP_SRV_STOP_EVT
  • HFP: Fixed crash in btc_hf_arg_deep_copy when name or number is NULL
  • Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability

Bluetooth Low Energy

  • Support BLE Authorization
  • Support BLE Application Layer Encryption key size check
  • Support BLE Read Attribute value by UUID
  • Support BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Fixed a potential double free error
  • Fixed exl200
  • Added btdm_disable_adv_delay() function to enable/disable advertising delay
  • Fixed RPA address update error
  • Fixed the problem of early release of pointer(p_ccb) in function
  • Added connection parameter check
  • Fixed ble connection maximum latency is 499
  • Disable bluedroid congest error log print
  • Fixed add white list failed
  • Fixed bluedroid repair faild if the two most significant bits of public address is '01'
  • Fixed congest return value
  • Fixed BLE read multiple characteristic error when the number of handles is more than 10
  • Fixed scan response report length error sometimes
  • Fixed vendor hci memory leak

NimBLE

  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Removed recursive call (apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition (#5825)

Blufi

  • Fixed an error caused by incorrect conn_id parameters
  • Added a macro to control the compilation of blufi
  • Fixed the issue that sending longer customer data will cause congestion

ESP-BLE-Mesh

  • New Kconfig options introduced to reduce code size
  • Updated connection parameters used by central
  • Fixed wrong description of BLE Mesh server model autorsp flag
  • Persistent storage miscellaneous fixes
  • Need uuid when adding device for provisioning
  • Fixed Node ID adv with wrong timeout
  • Added node local netkey/appkey get/add and bind AppKey functions
  • Added support of receiving heartbeat messages for Provisioner
  • Support using multiple NVS namespaces to store information by Provisioner
  • Updated the definition of the macro ARRAY_SIZE
  • Use a separate callback for BLE coexistence operations
  • Support scanning normal BLE advertising packet
  • Enable updating lighting HSL state
  • Use different random for each provisioning procedure
  • Fixed Proxy Client may fail to resend messages
  • Fixed deinit server models with no matching model id
  • Synchronized a few Zephyr BLE Mesh updates
    • Fix rpl not check by proxy configuration
    • Store kr phase after value changed
    • Replace the Zephyr integer types with C99 types

Wi-Fi Coexistence

  • Changed wifi scan duration from 120ms to 100ms

Wi-Fi

  • Reduced image size of Wi-Fi and Bluetooth by not linking coexistence code
  • Optimization AP_STAIPASSIGNED now passes the IP through 'event_data'
  • Fixed the issue when PMF packets are not sent after mode change
  • Added support for 802.1x sha256 auth key mode
  • Disabling Menuconfig option "Enable WPA3-Personal" now disables WPA3 code, reduces code size by around 7.7kB
  • Replaced internal RSA APIs by mbedtls APIs
  • Updated the description for WiFi APIs
  • Fixed system crash on scan failure
  • Do not check the return value of esp_wifi_connect()
  • Fixed smartconfig issue when router replies to arp late
  • Updated exception handling for iperf example's scan when no ap was found
  • Fixed return type of esp_wifi_deinit when Wi-Fi is not stopped
  • Fixed CSA and BAR crash issue
  • Used DPORT bus instead of AHB bus to access Wi-Fi MAC and BB register
  • Revert to report specific reason code on receiving deauth during 4-way-handshake
  • Fixed the issue that Tx A-MPDU parameter is not from peer device
  • Changed country code last byte to space instead of \0
  • Fixed the issue that Soft-AP cannot forward A-MSDU
  • Improved faster WiFi STA connect, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Adjusted max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can't get country
  • Updated PHY version
  • Fixed the issue that PHY version log could not be disabled
  • Added exception handling for iperf example when scan doesn't find any AP
  • Fixed resources leaks detected in static analysis
  • Unlock mutex for esp_wifi_80211_tx when out of memory.
  • Fixed issue that esp_wifi_80211_tx can't be used in ap mode
  • Clear hotspot bss when auth timeout happens
  • Fixed PMK not saved in NVS for SoftAP for PSK mode
  • Fixed the bug for esptouch find hidden AP fail
  • Fixed not connect to open AP when WPA3 auth fail
  • Fixed issue with hidden AP scans after connecting AP
  • Fixed watchdog issue when receiving action frame
  • Fixed issue that parameters obtained form RAM cannot be saved to NVS
  • Modify not to store the default value in NVS
  • Fixed issue of reason code change from 15 to 204 when wrong password is provided
  • Fixed esp_wifi_set_config return value error
  • Fixed ampdu age timer memory leak

ESP-WIFI-MESH

  • Fixed MESH Internal IP example to use esp_netif transmit_wrap functionality per recent WiFi Tx optimisation
  • Chain topology: Added chain topology networking IE mesh_chain_assoc_t to esp_mesh_internal.h
  • Mesh power save: add esp_mesh_ps_duty_signaling to signal the new duty in the mesh network

Security

  • Secure Boot V2: Fixed the manual enablement of Secure Boot V2 (#6050)
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)
  • Secure Boot: Fixed the issue when the bootloader image size is exactly equal to the size between the bootloader offset and partitions offset when secure boot V2 and flash encryption are enabled (#6236)
  • Secure Boot: Fixed the issue which checks the signature block digest instead of the flash digest during OTA validation
  • flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)

Peripheral Drivers

  • TWAI: Added support for running ISR when cache is disabled
  • TWAI: Fixed bug where BRP divider is not zero initialized on the ESP32 ECO3 chip leading to baud rate being halved. (#5442)
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • I2C: Fixed PM lock release in case of a timeout
  • PCNT: Fixed issue where only 4 pcnt units (out of 8) could be used on ESP32 (#6366)
  • MCPWM: Fixed MCPWM second fault line broken (#6053)
  • Freemodbus: Added MB_PORT_PARITY_GET() to propagate UART parity options from mb controller to serial port layer (#6377)
  • Freemodbus: Fixed event processing failure after driver destroy
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • SPI Flash: Added config option to override inherited flash size from bootloader header
  • I2S: Fixed PDM clock incorrect issue when using APLL (#5127, #5386)
  • ADC: Fixed issue of crashing when verbose logs are enabled
  • UART: Fixed uart module reset issue (#1202)
  • UART: Fixed UART FIFO read on ESP32 with -O2 optimization
  • Freemodbus: Added processing of events in one poll cycle
  • touch_sensor: Fixed the last touch interrupt state will wake up the next deep sleep process
  • touch_sensor: Fixed touch sensor false trigger in sleep mode

Core System

  • Fixed default values for all RTC sources in the CONFIG_ESP32xx_RTC_CLK_CAL_CYCLES option
  • pthread: Fixed the issue that pthread_mutex_lock_internal is used when pthread_mutex_destroy is used to release mutex, which results in incorrect release of priority inheritance
  • Fixed error in reserved PSRAM region if set to 8MB PSRAM size (#5373)
  • panic: don't interrupt the backtrace for InstrFetchProhibited exceptions ?
  • ESP32-S2: Fixed lightsleep wakeup fail bug when power down rtc_peripheral on
  • ESP32-S2: Improved 32k xtal startup time on ESP32-S2
  • esp_log: Correct timestamp formatting to unsigned integer type (#6226)
  • Fixed possible failure to boot if Stack Smashing Protection was set to Overall mode (#6403)

Power Management

  • ESP32-S2: Decreased deepsleep current on ESP32-S2
  • Deep sleep: Fixed issue calculating CRC for deep sleep wake stub on ESP32-S2 or ESP32 single core, if RTC is available for dynamic allocation as heap memory
  • Deep Sleep: Disabled brownout detector before entering deep sleep on ESP32-S2 (#6179)

LWIP

  • Fixed issue for TCP recv assert
  • Fixed missing C++ header guards in netdb.h (#5900)
  • Enable TCP initial sequence number (ISN) randomization hook
  • esp_netif: Fixed PPP netif event posting to correctly include the esp_netif instance pointer (#6009)
  • Fixed potential crash of ping when zero ping interval supplied

mDNS

  • Fixed wrong mdns source address if lwIP zoning disabled
  • Added support for queries in responses, so the mDNS responder works correctly with lwIP resolver (#5521)
  • Fixed query ID in responses (#5574)
  • Fixed the resolver to accept non-strict answers (allowing non empty question field within answers)
  • Fixed length calculation of mDNS text field (#6114)

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string
  • Fixed buffer overread when esp_http_client_read is called after esp_http_client_perform (#6146)

mbedTLS

  • Upgraded to release v2.16.9
  • esp_crt_bundle: Allow verifying of trusted certificates with a weak signature hash algorithm (#6117)

Provisioning

  • wifi_provisioning_manager: Fixed issue faced while adding 2 or more endpoints in wifi_provisioning_manager
  • Fixed enable CONFIG_EXAMPLE_RESET_PROVISIONED will cause device crash
  • Update README.md to explain QR code format (#6629)

Bootloader

  • Fixed SECURE_ENABLE_SECURE_ROM_DL_MODE cannot be y when SECURE_DISABLE_ROM_DL_MODE=y (#6442)

ESP-TLS

  • Update "tls->sockfd" after the socket is freed internally
  • esp_tls_wolfssl: Use correct API to validate domain name with peer's server certificate
  • Fixed memory leak in esp-tls
  • Prevent freeing of global ca_store when mbedtls dynamic cert free is enabled
  • esp_tls: Fixed misplaced parenthesis found during static analysis
  • protocomm: Fixed NULL pointer check found during static analysis

Websocket

  • Fixed posting the disconnect event twice on read error
  • Fixed the client to skip reconnection when set disable_auto_connect
  • Added options to support keepalive

ESP-MQTT

  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • mqtt_outbox: Removed unused retry_count field from outbox_item_t
  • config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism

TCP Transport

  • Fixed issue in SSL mode: if esp_transport_poll_read function is used, the cache data in mebdtls will block
  • Enable TCP keep-alive function in transport level

Storage

  • NVS: Fixed string comparison in nvs_api.cpp
  • NVS: ensuring default partition (#5347)
  • Examples/SPI Flash Fatfs: Fixed ext flash fatfs cannot connect to external flash issue

Tools

  • Fixed path handling errors in gen_esp_err_to_name.py for Windows
  • ldgen: Added support for paths with Unicode characters in archive files parsed by ldgen (#5996)
  • ldgen: Fix parsing of sections names on Windows (regression from 792087d)
  • Added deprecation warning for Python 2 and Python 3.5 and older
  • parttool.py: Add parameter out to save the output from the esptool
  • Added check for existence build directory ?
  • Fix requirements incompatible with Python 2
  • docker: Add libpython2.7 in order to satisfy GDB dependencies (#5817, #5284)
  • idf.py: Fixed gdb target to exit cleanly when no openocd watch task ?
  • Fixed exception when specifying baudrate argument for IDF-Monitor
  • Specify UTF-8 encoding for Eclipse Make build which is not the default value under Python 2 (#6505)
  • Prefer python3 during install and export (#6471)
  • Simpler installation by not requiring to set up manually an alias for python on Unix systems where it doesn't exist by default
  • Don't count BSS into the total image size in the report of idf_size.py. Revert the behavior to ESP-IDF v4.1 and earlier
  • CXX: Fixed extern "C" declarations (#6634)

Build System

  • idf_as_lib example now places sdkconfig file outside the build directory
  • Now always logs the sdkconfig file path from CMake

Examples

  • esp-cryptoauthlib: Update submodule pointer to add a new feature (10830)
  • flash_encryption example: Fixed the partition table - The partition_example.csv should not have fixed offsets for partitions because we want to move the whole table. The fixed offsets in the table were cleared
  • Fixed socket examples to use sockaddr_storage for both IPv4 and IPv6 addresses
  • Common connect component: Added unregister shutdown handler on disconnection
  • pppos_client: Fixed a race condition on closing the PPP mode
  • pppos_client: Remove esp-netif destroy from modem network glue code (#5486)
  • pppos_client: Fixed esp_modem switch mode timeout and RX timeout interrupt (#3506, #4324)
  • esp-ble-mesh: Delete local variables to avoid null global variables in coexistence example

Documentation

  • Removed potentially confusing links to building the toolchain from scratch from the Getting Started guide
  • Updated 32 kHz oscillator input signal from 32K_XP to 32K_XN as described in Hardware Design Guidelines
  • Updated Chinese translation for get-started/index.rst and vscode-setup.rst
  • Fixed typos for the English version of get-started/index.rst
  • Removed link to PDF version of documentation hosted on Read the Docs server
  • Updated ESP32-S2 related flash encryption information
Assets 3

@projectgus projectgus released this Apr 23, 2021

Documentation for pre-release v4.3-beta3 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3-beta3/

ESP-IDF v4.3 is a minor update for ESP-IDF v4.2.

Obtaining v4.3-beta3

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

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

Download an archive with submodules included

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

Changelog

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

Major New Features

  • Support for ESP32-C3 SoC
    • Wi-Fi
      • 802.11 bgn mode
      • 802.11 LR mode
      • Station, SoftAP, sniffer mode
      • ESP-NOW
      • CSI support
      • TX/RX A-MPDU, RX A-MSDU
      • TX Fragment, TXOP
      • WEP/TKIP/CCMP
      • WPA/WPA2-PSK/WPA2-ENT/WPA3-PSK/WPA3-ENT
      • WAPI-PSK
      • ESP-Touch v1/v2
      • Fine Time Measurement (FTM)
      • Device Provisioning Protocol(DPP)
      • Network-assisted roaming using 802.11k (Radio Measurements) and 802.11v (BTM) specifications
      • Wi-Fi Modem/Light Sleep
      • Wi-Fi Mesh support
    • Bluetooth
      • BLE 5.0 Controller support
      • BLE Modem/Light sleep support
      • UHCI support
      • Bluedroid host support with BLE5.0
      • NimBLE host support with BLE5.0
      • BLE-Mesh support
    • Wi-Fi & BLE coexistence
      • hardware switch based coexistence
    • Security
      • Secure boot
      • Flash encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • HMAC peripheral
      • RNG
      • Digital signature
      • Memory protection
      • mbedtls integration of Digital Signature
    • Peripherals
      • UART
      • Timer group
      • GPIO — Supported, except IO19
      • SPI Master
      • SPI Slave
      • I2C
      • LEDC
      • SigmaDelta
      • RMT
      • ADC
      • ADC DMA
      • SD card over SPI
      • Ethernet over SPI
      • Brownout detector
      • TWAI
      • GDMA
    • System features
      • Cache
      • esp_timer
      • SPI Flash auto suspend and auto resume
      • RTC Slow clock selection
      • Task, interrupt watchdogs
      • Efuse API
      • espefuse.py
      • Stack overflow "canary" detection
      • RISC-V architecture support
      • Watchpoint stack protection
      • Brownout reset
    • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
      • Light sleep MAC/BB power down
      • Light sleep CPU power down
    • Debugging
      • Core dump
      • OpenOCD
    • Protocols
      • Provisioning
      • Other protocols on top of TCP/IP
    • Added more support for ESP32-S2 SoC
      • Touch Element library for touch sensor
      • Waterproof
      • USB Host HAL layer
        • TX A-MSDU
        • FTM
        • DPP
        • WAPI-PSK
        • ESP-Touch v2 support
        • 802.11k and 802.11v support
        • SPI Slave HD Append Mode
      • ADC calibration scheme v2
        • TinyUSB CDC Device class
        • Async memcpy driver
    • New Wi-Fi features for ESP32 SoC
      • TX A-MSDU
      • DPP
      • WAPI-PSK
      • ESP-Touch v2 support
      • 802.11k and 802.11v support
  • Updated FreeRTOS, based on upstream version v10.2.0
  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • Light sleep: Added new options to reduce average current in light sleep: PM_SLP_IRAM_OPT, PM_RTOS_IDLE_OPT, WIFI_SLP_IRAM_OPT
  • Security: Support for "verify app image on update" (with Secure Boot disabled) is added for ESP32-S2, ESP32-C3, and ESP32 ECO 3 (Secure Boot V2)
  • Preview support for the "ESP32-S3 Beta 2" SoC is provided in v4.3. This SoC is different from the ESP32-S3 production SoC which will be supported in ESP-IDF v4.4, and ESP-IDF v4.3 will not work on the production ESP32-S3. After ESP32-S3 is released, support for "ESP32-S3 Beta 2" is planned to be removed in a future v4.3 bugfix release.
  • Added LWIP_IPV6 macro to strip IPv6 function

Major Bug Fixes

  • Secure Boot: Fixed crash in app if signature verification fails (#6210)
  • newly added from here
  • Default supported ESP32-C3 Revision ECO3

Breaking Changes

  • BLE_Mesh: Previously if starting/stopping BLE advertising when BLE Mesh is enabled, the corresponding events will be notified through the callback registered by esp_ble_mesh_register_prov_callback(). With this MR, the function esp_ble_mesh_register_ble_callback() need to be invoked for registering the callback used for BLE coexistence related functionalities (i.e. ADV/SCAN)
  • esp_tls_wolfssl: Previously an API named wolfssl_tlsext_host_name was inappropriately used for domain (host) name check.
    In earlier case if the domain name was different than the ISSUER field in the peer's server certificate, then the connection might have succeeded (provided skip_common_name = false).
    The old API is now replaced with wolfSSL_check_domain_name, which makes wolfSSL to check if the domain name provided matches with the ISSUER name on the peer's server certificate. With this API change, wolfSSL_connect should return a fatal error in case of a domain name mismatch
  • esp-tls: esp-tls client connection will now return error by default in the absence of server verification option
  • tinyusb: The return value of tusb_init has changed from tusb_error_t to bool in the upstream tinyusb (hathach/tinyusb@d887829)
  • NVS Encryption: "NVS Encryption" feature is now automatically enabled whenever the Flash Encryption feature is enabled.
  • bootloader: If anti-rollback is enabled, the partition table should not have a test app and the config option to use a GPIO to boot the test app is no longer supported. If OTA updating an existing installation, the bootloader is not updated so the test app will still be available. If you wish to disable the test app following a secure update, use the partition API to erase the first flash sector of the test app in the flash.
  • newly added from here
  • ESP32 ECO3: UART ROM download mode is no longer permanently disabled by default when security features (Flash Encryption, Secure Boot) are enabled. To have equivalent behaviour in v4.3, this option must be specifically selected in the project configuration.

Future Breaking Changes

  • Python: Python versions 3.5 and earlier are now deprecated and a warning is printed if used for ESP-IDF. All users are encouraged to move to Python 3.6 or newer, as soon as possible. Python 3.6 or newer will be required in the future to use ESP-IDF v4.4. Python 2.7 has been End of Life since January 2020, and Python 3.5 has been End of Life since September 2020.

Known Issues

  • ESP32-C3: Programming efuses (for example, to enable security features) may appear to fail in this version, although the efuse is burned successfully.
  • ESP32-C3: Bootloader does not log an error message if the minimum revision check fails. The default configuration now requires "miniumum ESP32-C3 revision ECO3", but some ESP32-C3 samples are revision ECO2 or earlier. Change this configuration item in order to boot the firmware on earlier ESP32-C3 chip revisions. The bootloader error message will be fixed in the v4.3 final release, but the default minimum revision will still be ECO3.
  • ESP32-C3 does not support BLE multiple connections.
  • ESP32-S2/ESP32-C3 do not support Wi-Fi Mesh power save.
  • Infrequent crash happens on ESP32 and ESP32-S2 during TCP stress test.
  • Auto-suspend feature of SPI Flash will not work on all kinds of flash, the default value will be set to no.

Known issues are planned to be fixed before the final v4.3 release.

Bluetooth Controller

  • Reduce IRAM consumption about 300 bytes
  • Fixed bt controller task watchdog in Wi-Fi test
  • Fixed crash in Bluetooth when esp_restart
  • newly added from here
  • Modified ambiguous descriptions for BT_CTRL_BLE_MAX_ACT
  • Fixed the issue of modem sleep which may lead to the crash issue "assert(-218959118,0)"
  • Modified log level of messages E8192 ELx200 ELx40 to debugging, to prevent same issue occur repetitively due to too much logging

Bluetooth Low Energy

  • Fixed error message exl200
  • Added btdm_disable_adv_delay() function to disable advertising delay
  • Fixed RPA address update error
  • newly added from here
  • Fixed Spelling mistakes

Classic Bluetooth

  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory

Bluedroid

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: -26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: -26555
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Disabled Bluetooth before esp_restart()
  • Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
  • Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability

Classic Bluetooth

  • Fixed crash caused by dividing zero
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • Added protection for ACL-U packet type exchange procedure
  • Rejected connection request if BD_ADDR of peer is same as ours (-26555)
  • Added API to config QoS for Classic Bluetooth ACL link
  • HFP: modified hfp console style by using esp console
  • HFP: first atuomatic connection of HFP
  • HFP: fixed the crash issue when bta_hf_client_sco_co_out_data is called
  • AVRC: fixed the issue that target unhandles set_player_app_value cmd
  • A2DP: added Init & Deinit Event for A2DP
  • A2DP: fixed A2DP sink audio crash
  • A2DP: fixed data stream underrun for A2DP sink
  • Added SPP input module to help users understand secure simple pair
  • Added ESP32 Secure Simple Pair document in SPP examples
  • Improved the documentations of Classic BT API
  • SPP: Fixed a crash caused by pairing cancel
  • SPP: Added API esp_spp_stop_srv_scn to stop a specific server
  • SPP: Added parameter service_name with event ESP_SPP_DISCOVERY_COMP_EVT
  • SPP: Added parameter scn with event ESP_SPP_START_EVT
  • SPP: Added parameter scn with event ESP_SPP_SRV_STOP_EVT
  • newly added from here
  • L2CAP: Fixed L2CAP channel ID duplicated
  • HFP: Fixed crash in btc_hf_arg_deep_copy when name or number is NULL
  • Shortened some log messages in bluedroid

Bluetooth Low Energy

  • Fixed a potential double free error (#5701)
  • Added support of BLE Authorization
  • Added support of BLE Application Layer Encryption key size check
  • Added support of BLE Read Attribute value by UUID
  • Added support of BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Added connection parameter check
  • Fixed read multiple characteristic failed
  • Fixed multi-connection crash
  • Fixed bluedroid repair faild if the two most significant bits of public address is '01'
  • Fixed scan rsponse length error
  • Fixed vendor hci memory leak
  • Added connection parameter check
  • Fixed BLE throughput example build error
  • Fixed bluedroid host report connection address error when remote device used RPA address
  • newly added from here
  • Modified parameter description for esp_ble_gattc_open()
  • Fixed multi-connection pair failed
  • Added an option to enable/disable ESP32 controller RPA

NimBLE

  • Updated NimBLE submodule to latest upstream release 1.3.0
  • Added an example to run ICMP echo-reply (PING) and BLE peripheral simultaneously
  • Added API to remove address from whitelist
  • Made set packet length API public
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Removed recursive call(apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition(#5825)

Blufi

  • Fixed an error caused by incorrect conn_id parameters
  • Added a macro to control the compilation of blufi
  • Fixed the issue that sending longer customer data will cause congestion

ESP-BLE-Mesh

  • Updated connection parameters used by GAP Central
  • Added support of receiving heartbeat messages for Provisioner
  • Always need device uuid when adding a device for provisioning
  • Added support of using multiple NVS namespaces to store information by Provisioner
  • Updated the definition of the macro ARRAY_SIZE
  • Use a separate callback for BLE coexistence operations
  • Added support for scanning normal BLE advertising packets
  • Replaced the Zephyr integer types with C99 types
  • Fixed Node ID adv with wrong timeout
  • Enabled updating lighting hsl state
  • Fixed Proxy Client may fail to resend messages
  • Now uses different random for each provisioning
  • Fixed deinit server models with no matching model id

Wi-Fi & BT Coexistence

  • Fixed IRAM_ATTR missing in coex mode
  • Changed wifi scan duration from 120ms to 100ms
  • Decouple Wi-Fi and bluetooth for coexist in order to reduce binary file size

Wi-Fi Mesh

  • Mesh power save: add esp_mesh_ps_duty_signaling to accelerate the broadcast of new network duty
  • Mesh power save: modify the default network duty from 12 to 10
  • Mesh power save: remove the support of MESH_PS_NETWORK_DUTY_APPLIED_UPLINK
  • Mesh power save: remove ps duty info from the ADD announcement packets
  • Mesh power save: modify beacon interval to 300ms when ps is enabled
  • add esp_mesh_send_block_time to set blocking time of esp_mesh_send
  • Chain topology: add chain topology networking IE mesh_chain_assoc_t to esp_mesh_internal.h

Wi-Fi

  • WPA2-Enterprise: Added documentation for WPA2-Enterprise
  • WPA2-Enterprise: Updated README.md file for wpa2-enterprise example
  • WPA3: Fixed the issue that WPA3 code cannot be disabled by disabling WPA3 flag in Menuconfig (#5971)
  • PMF: Fixed an issue that PMF stops working after dynamic mode change
  • ESP-NOW: Fixed the bug that esp-now channel config range is not correct(#6276)
  • wpa_supplicant: Fixed sending of encrypted mgmt frames for PMF connection in supplicant
  • Added support of SHA256 AKM without PMF enabled
  • Fixed EAP Client issue
  • Adjusted max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can't get country
  • Added CSA state check before CSA timer processing
  • Used DPORT bus instead of AHB bus to access Wi-Fi MAC and BB register
  • Fixed the crash caused by receiving BAR with TID >=8
  • Revert to report specific reason code when receiving deauth during 4-way-handshake
  • Fixed the issue that tx A-MPDU parameter is not from peer device
  • Fixed the issue that ESP32-S2 fails to get CSI info
  • Fixed the issue that PHY version log could not be disable
  • Fixed the issue of phyqueue in psram
  • Updated PHY version
  • Refactored wifi_interface_t
  • Improved faster WiFi STA connect, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Changed country code last byte to space instead of \0
  • Fixed the issue that Soft-AP cannot forward A-MSDU
  • Fixed the issue that no TBTT is generated in STA+Soft-AP mode when maximum modem sleep is enabled (#6006)
  • Added support of TX A-MSDU
  • Unlock mutex for esp_wifi_80211_tx when out of memory
  • Fixed an issue that esp_wifi_80211_tx can't be used in ap mode
  • Added pairwise cipher configuration support for Soft-AP mode
  • Fixed a crash issue caused by receiving CSA IE with wrong channel
  • Fixed the issue that STA fails to connect open AP after it failed to connect to a WPA3 AP
  • Fixed PMK not saved in NVS for Soft-AP with PSK mode
  • Cleared hotspot bss when auth timeout happens
  • Fixed the MIC comparison logic -CMAC decryption
  • Fixed issue of setting incorrect log_length of NVS misc log
  • Added exception handling for iperf example when scan doesn't find any AP
  • Fixed data length bug when CSI is enabled
  • Fixed a crash when an AMSDU larger than 3200 Bytes is received
  • Fixed crash issue in presence of WEP AP with SSID same as connected WPA2/WPA3 SSID
  • Fixed smartconfig issue when router reply arp late
  • Updated wifi docs (#6448)
  • Added support for disabling 11b rate
  • Added support for configuring esp-now rate
  • Fixed the issue that connect scan may crash the device
  • Fixed potential crash or watchdog during FTM
  • Fixed miss-overwrite of some PHY registers when Wi-Fi modem sleep is enabled
  • Added encrypt option for ESPTouch v1
  • Fixed issue of reason code change from 15 to 200 when provided password is wrong
  • Fixed return type of esp_wifi_deinit when Wi-Fi is not stopped
  • Fixed the issue that the parameters obtained from RAM cannot be saved to NVS
  • Modified code to not store the default value in NVS
  • Fixed an issue with hidden AP scans after connecting AP
  • Fixed issue of reason code change from 15 to 204 when wrong password is provided
  • Fixed esp_wifi_set_config return value error
  • Fixed ampdu age timer memory leak
  • Optimized Wi-Fi DTIM sleep current consumption
  • Added support for station to sleep when in disconnected state
  • Added support to adjust wake-up ratio for esp-now at disconnected status
  • Keep wakeup state during csa
  • Add beacon timeout event
  • Updated TBTT when probe response is received after beacon timeout
  • Fixed a bug that ESP32S2 current too high on light sleep mode when using gpio to wake up

Smartconfig

  • Added support of ESP-Touch v2
  • Fixed the issue when router reply arp late
  • Fixed the issue that ESP-TOUCH failed to find hidden APs

Ethernet

  • Added W5500 Ethernet driver (MAC RAW mode only)
  • Added ETH_CMD_G_DUPLEX_MODE for getting duplex mode (#6436)
  • Deprecated esp_eth_receive

Security

  • Fixed the manual enabling of Secure Boot V2 via espefuse (#6050)
  • efuse: Added convenience APIs to work with keys, protection/purpose bits
  • efuse: Improved the batch mode that efuse fields can be read inside this mode
  • efuse: Batch mode can be called recursively
  • Added HAL and LL for AES accelerator and refactor driver
  • Added support for doing AES-GCM fully in hardware on ESP32-S2 with mbedtls_gcm_crypt_and_tag()
  • Secure Boot V2: Fixed padding issue when the bootloader image size is exactly equal to the size between the bootloader offset and partitions offset when secure boot v2 and flash encryption are enabled
  • Secure Boot V2: Fixed the issue which checks the signature block digest instead of the flash digest during app OTA validation (bootloader validation is not affected).
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)
  • flash_encryption_example: Updated the example to showcase NVS encryption
  • flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)
  • newly added from here
  • Secure Boot V2 verify app signature on update
  • Digital Signature: Fixed invalidating Digital Signature key in HMAC peripheral if assertions are disabled

Peripheral Drivers

  • periph_ctrl: Add support for PHY clock control
  • Extract independent HAL component
  • Fix xtal 32k not oscillate or oscillate too slowly issue for esp32
  • ADC: support API adc2_vref_to_gpio on ESP32-S2
  • ADC: Support adc calibration scheme on ESP32-S2
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • ADC: remove ESP_LOGD from adc_set_init_code (#6091)
  • ADC_DMA: Fixed IO not initialized properly bug on ESP32
  • Async memcpy: Added new driver async_memcpy
  • DAC: Fix DAC influenced by ADC bug by disabling the synchronization operation from ADC1 to DAC
  • Dedicated GPIO: Added Dedicated GPIO driver for ESP32-S2
  • GPIO: Provided API gpio_slp_sel_en, gpio_slp_sel_dis, gpio_slp_set_direction, gpio_slp_set_pull_mode to control GPIO state during sleep.
  • GPIO: Fix the problem that : IF you failed to use a RTC GPIO to wakeup lightsleep, especially when you used low level to trigger it.
  • I2C: Added allocator for clock source choice.
  • I2C: Fixed PM lock release in case of a timeout
  • I2C: Add const to signature of data in master_write function
  • I2C_CXX: Added C++ wrapper for I2C driver (Experimental)
  • I2S: Fixed PDM clock incorrect issue when using APLL.
  • I2S: Fix I2S word-order issue caused by incomplete reset
  • LEDC: Fix the bug that ledc low-sleep channel can not work when chip in light-sleep mode
  • MCPWM: Fixed MCPWM second fault line broken (#6053)
  • MCPWM: add an option to do mcpwm capture on both edges
  • MCPWM: Fix fault pin initialization issue
  • PCNT: Fixed pcnt driver doesn't clear interrupt status properly (#5929)
  • PCNT: Added new example to parse rotary encoder signals in 4x mode
  • RMT: Supported setting loop count at runtime
  • RMT: Support passing user context to RMT translator (#6002)
  • ROM: Extracted UART rom functions into esp_rom_uart.h
  • ROM: Extracted GPIO rom functions into esp_rom_gpio.h
  • SPI: Fixed master HD DMA mode cannot correctly receive data when a TX (no RX) transaction is done
  • SPI Master: Fixed the error log when using SPI_TRANS_USE_TXDATA or SPI_TRANS_USE_RXDATA with data longer than expect
  • SPI_Master: Added dummy check when both mosi and miso are set
  • SPI: Fixed CS polarity configuration issue (#4726, #5490)
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset
  • SPI: Fixed crash issue when cs is set to -1 (#5784)
  • SPI: Refactored HAL context and related codes in SPI Master driver
  • SPI: Refactored DMA related functions in SPI drivers
  • SPI: Fixed duplex mode switch issue when switching multiple devices (#4641)
  • SPI Slave: New driver for the half duplex mode
  • SPI_Slave_HD: Added feature of SPI Slave HD Append Mode
  • SPI_SLAVE_HD: Check if callback is defined before calling the callback
  • SDSPI: Fix the probe issue that forbid sdspi working in highspeed mode
  • Touch: Allow interrupt enable/disable API being called in the ISR on ESP32-S2
  • Touch_sensor: Fixed touch sensor false trigger in sleep mode
  • TWAI: Initialize brp_div field to zero, fixed register field name
  • TWAI: Fixed issue that code in asserts will not be executed in release builds
  • TWAI: Fix size of RX msg count field on the esp32
  • TWAI: Support on ESP32-S2
  • TWAI: Allow TWAI driver to continue to operate whilst the cache is disabled (e.g., during and OTA operation)
  • UART: Fixed UART FIFO read on ESP32 with -O2 optimization
  • UART: Changed buffer argument type of read/write functions void* to be consistent
  • UART: Fix RXFIFO_CNT bug on ESP32
  • UART: Fixed uart module reset issue
  • UART: Fixed issue that uart_wait_tx_done return ESP_OK when failed
  • USB: Fix issue that CLK always reset and swapped pins not working through HAL
  • Tinyusb: Support Tinyusb CDC
  • TinyUSB: fixed a typo in configure_pins (#5355 (comment))
  • TinyUSB: Fixed configure_pins issue when setting pin to fixed level (#5588)
  • TinyUSB: Fixed a strncpy-related warning caused by a wrong argument
  • TinyUSB: Update to the latest upstream version
  • SPI Flash: Fixed issues of cs support and slow read on ESP32-S2
  • SPI Flash: Fix regression in encrypted flash write on ESP32 (#5467)
  • SPI Flash: Added configuration option to select flash write chunk size
  • SPI Flash: Add config option to override inherited flash size from bootloader header
  • SPI Flash: Fixed the incorrect check_idle logic in LL and chip_driver
  • SPI Flash: Patched unlock ROM function, clearing the WEL bit to improve reliability
  • SPI Flash: Fixed failure when initialize external flash on non-SPI1 bus with PSRAM enabled
  • SPI Flash: Fixed ID/size check in spi_flash_chip_generic_detect_size() is too strict (#4248)
  • SPI Flash: Fixed issue that WEL is possibly left uncleared after some actions
  • SPI Flash: Modified flash timeout threshold for GD chips
  • SPI Flash: Added a config option to disable timeout checking
  • SPI Flash: esp_partition API can be mocked now
  • SPI: Applied GDMA allocator to SPI. DMA channel is now selected using an enum (spi_dma_chan_t) not an integer. Specifying the exact DMA channel number is no longer required on any chip target, the driver can select it automatically. This API is still compatible with previous code that specified the channel number using an integer (and a typedef is used to avoid the API change breaking on C++, this argument is still treated as an int when compiling C++ code)
  • newly added from here
  • touch_sensor: Fixed the last touch interrupt state will wake up the next deep sleep process
  • touch_sensor: Fixed high current consumption of the touch sensor during deep sleep (see example sleep/deep_sleep for how to apply this fix)
  • ADC: Fixed issue of crashing when verbose logs are enabled
  • UART: Apply FORCE_INLINE_ATTR to all UART LL functions to inline them correctly with "-O2" option (#5694)
  • cxx: fixed extern "C" declarations in touch_sensor.h and esp_adc_cal.h (#6633, #6634)

Core System

  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • efuse: Fixed the order of writing eFuse blocks in batch mode
  • console: added helper function to install console REPL environment easily
  • pthread: fixed priority inheritance in pthread_mutex_destroy
  • esp_event: AP_STAIPASSIGNED now passes the IP through 'event_data'
  • Correctly detect ESP32-S2FH16/S2FH32 embedded flash in feature flags (#5774)
  • esp_event: fixed misuse of recursive semaphore take/give calls for profiling_mutex (#6102)
  • linker_fragment: added scheme to redirect BSS to external SPIRAM
  • esp_timer: added an option to skip unhandled events
  • esp_timer: added C++ wrapper for esp_timer
  • esp_log: correct timestamp formatting to unsigned integer type (#6226)
  • esp_system: specify esp_gdbstub as a dependency (#6274)
  • cxx: fixed init priority ordering on RISC-V
  • Added debug log for init array functions
  • Fixed lightsleep wakeup failure when power down rtc_peripheral on ESP32-S2
  • Improved 32k xtal startup time on ESP32-S2
  • ULP: fixed a issue where wakeup from ULP only triggers once
  • SOC: fixed incorrect address definition of ROM functions
  • PSRAM: support for esp32-pico-v3-02
  • PSRAM: Fixed 16mbit psram id read error
  • console: Added USB CDC as a console option
  • newly added from here
  • Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end
  • Fixed possible failure to boot if Stack Smashing Protection was set to Overall mode (#6403)
  • VDD_SDIO power domain can now be configured to remain on during light sleep
  • Fixed some inaccuracies calling gettimeofday() on wake from deep sleep

Debugging

  • core dump: Fixed core dump feature with encrypted flash (#2932)
  • core dump: Non-encrypted core dump partition will always hold plain text data
  • newly added from here
  • espcoredump: Add support for RISC-V based boards

FreeRTOS

  • Updated FreeRTOS, based on upstream version v10.2.0
  • Placed some additional freertos functions into flash memory to increase free IRAM
  • freertos_hooks: Fix unbalance lock in deregistration for cpu functions (#6275)
  • FreeRTOS static allocation support is now always enabled (previously this was a config option)
  • Fixed a sign conversion warning in a header file (#5838)
  • esp_ringbuf: fixed the linker.lf file to place ringbuffer functions into flash when FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is active
  • Fixed delay between interrupt request and interrupt trigger
  • newly added from here
  • Disabling asserts for the entire project (or setting silent) now applies to the FreeRTOS assert configuration

Power Management

  • Added two options named PM_SLP_IRAM_OPT and PM_RTOS_IDLE_OPT to reduce current in light sleep:
  • If you enabled PM_SLP_IRAM_OPT, IRAM size increases by 1427 bytes but possible to sleep longer in light sleep and decrease current
  • If you enabled PM_RTOS_IDLE_OPT, IRAM size increases by 263 bytes but possible to sleep longer in light sleep and decrease current
  • Added new esp_sleep_is_valid_wakeup_gpio() function to check GPIOs available as wake sources
  • Made lightsleep overhead time as accurate as possible to make it wake up more precisely
  • Enabled sleep reject feature, to return from light sleep quicker if the wakeup trigger is set.
  • Fixed issue with garbled UART output in light sleep
  • Fixed issue with crashes entering light sleep under some conditions
  • Provided an option in Menuconfig named PM_SLP_DISABLE_GPIO, which would disable all pins at sleep and recovered them on wakeup
  • Wi-Fi: Made it more accurately to respond TBTT interrupt
  • Wi-Fi: Provided an option in Menuconfig named WIFI_SLP_IRAM_OPT to reduce pover saving active current.
  • Decreased deep sleep current on ESP32-S2
  • Fixed the issue that light/modem sleep current is too high because ADC power is kept enabled after calibration
  • UART: suspend output using XOFF before entering light sleep
  • Disable brownout detector before entering deep sleep on ESP32-S2 (#6179)
  • Fixed some issues during light sleep and DFS
  • newly added from here
  • Provide an interface to get pm_configuration

newlib libc

  • Reduced RAM usage by combining multiple rarely taken locks into 2 mutexes
  • Fixed for FD_ISSET macro when n==-1
  • Keep esp_rtc_get_time_us can get correct time even when RTC_SLOW_CLK_CAL_REG has been rewritten

LWIP

  • Enabled TCP initial sequence number (ISN) randomization hook
  • Fixed issue of assert "tcp_receive: ooseq tcplen > rcv_wnd"
  • esp_netif: fixed possible use of hostname pointer after its freed (#6048)
  • Added support for configurable LwIP hooks (#6034)
  • Added Kconfig options to enable/disable checksum validation for IP/UDP/ICMP protocols (#6187)
  • pppos_client: fixed a race condition on closing the PPP mode
  • esp-modem: Fixed PPP stack smashing protect failure in OVERALL mode
  • esp-modem: Added access technology used by the modem
  • esp-modem: Added get operator functionality for BG96 and SIM800L (#5750)
  • Added support for dhcp MTU judgement
  • Added DHCP key state transition log
  • Added DHCP option 61
  • Fixed potential crash of ping when zero ping interval supplied
  • Documented that lwIP does not support delete of a task while it is actively waiting on select() or poll()
  • esp_netif: Added methods for conversion IP4/IP6 addresses from their string interpretation
  • esp-netif: Added support for SLIP interface (#4985)
  • newly added from here
  • Fixed a thread safe issue which leads to assert in LWIP
  • Silent assert option now works with LWIP asserts, also
  • Added LWIP_IPV6 macro to strip IPv6 function

mDNS

  • Fixed wrong mdns source address if lwIP zoning disabled (#6055)
  • Fixed length calculation of mDNS text field (#6114)
  • Fixed the resolver to accept non-strict answers (allowing non empty question field within answers) (#6190)

OTA

  • app_update: Added definition for esp_ota_abort() API (#5331)
  • app_update: Fixed incorrect first byte from esp_ota_get_app_elf_sha256 for -O2 optimization level (#6389)
  • esp_https_ota: Added definition for esp_https_ota_abort() API

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string
  • Fixed buffer overread when esp_http_client_read is called after esp_http_client_perform

HTTP Server

  • Fixed expired x509 certificate in esp_local_ctrl_example
  • Added support for setting websocket subprotocol
  • Fixed ssl_ctx not being freed in case of error (#6143)
  • Added 401, 403 response error code for HTTP server (#5466)
  • httpd/websocket server: Fixed wrong length calculation for longer packets (#6196)

mbedTLS

  • Upgrade to release v2.16.9
  • esp_crt_bundle: Allow verifying of trusted certificates with a weak signature hash algorithm
  • Added software support for Modular Exponentiation for larger MPI values
  • newly added from here
  • Fixed ESP32-S2 AES DMA could return before all bytes completed writing back to RAM

Bootloader

  • Now prints segment load addresses without 0x prefix to avoid unnecessary decoding by IDF Monitor
  • ESP32-S2: Switched to use of efuse APIs for keys, purposes, wr/rd-protection bits for flash encryption, secure boot
  • Fixed SECURE_ENABLE_SECURE_ROM_DL_MODE cannot be y when SECURE_DISABLE_ROM_DL_MODE=y (#6442)
  • If anti-rollback is enabled, the partition table should not have a test app and the config option to use a GPIO to boot the test app is no longer supported. If OTA updating an existing installation, the bootloader is not updated so the test app will still be available. If you wish to disable the test app following a secure update, use the partition API to erase the first flash sector of the test app in the flash
  • Added config options to bypass app validation for minimum boot-time overhead
  • newly added from here
  • ESP32_ECO3 - UART ROM download mode is no longer disabled by default when security features are enabled
  • Silent assert option now applies when building bootloader
  • Fixed bootloader "skip validate on exiting deep sleep" option if "use RTC memory as heap" is enabled

ESP-TLS

  • Updated "tls->sockfd" after the socket is freed internally (#6163)
  • esp_tls_wolfssl: Use correct API to validate domain name with peer's server certificate.
  • Added a menuconfig option to allow users to skip server cert verification for testing purpose
  • Fixed memory leak in esp-tls
  • tcp_transport: enabled TCP keep-alive function in transport level
  • Prevent freeing of global ca_store when mbedtls dynamic cert free is enabled
  • esp_tls: Fixed misplaced parenthesis found during static analysis
  • protocomm: Fixed NULL pointer check found during static analysis

Websocket

  • Added mutual TLS authentication for websocket (#6059)
  • Added option to propagate control packets to the application (#6307)
  • Added configurable ping interval (#6399)

ESP-MQTT

  • Restore default MQTT_OUTBOX_EXPIRED_TIMEOUT_MS to 30 sec (#6080)
  • tcp_transport: extended error handle to capture socket's errno from tcp_transport
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT, which now includes socket errno (#5906)
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • mqtt_outbox: Removed unused retry_count field from outbox_item_t
  • config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism
  • Added a new event to report deleted messages from outbox if enabled
  • Added a new config option to disable publishing when disconnected (espressif/esp-mqtt#177)
  • Added a new API to enqueue publish messages with qos>0 (espressif/esp-mqtt#155)
  • Added a new config option to use incremental message id instead of random (espressif/esp-mqtt#176)
  • configure_ds.py: Added support to read and parse the efuse summary from ESP32-S2
  • configure_ds.py: Added option for the user to save DS parameters on host machine in ESP32-S2

Storage

  • FATFS: added option FATFS_USE_FAST_SEEK in menuconfig to enable fast seek algorithm (#5625)
  • NVS: fixed partition de-intialization function to only close its own handles
  • NVS: fixed coverage report in Makefile
  • NVS: fixed string comparison in nvs_api.cpp
  • mmap: fixed the issue mmap cannot be called with pointers to psram
  • mmap: Fixed the issue cache not restored after mmap failure.
  • Fixed minor documentation issue in the header file "sdmmc_cmd.h" (#6192)
  • VFS: Return EINVAL when truncate length is less than zero
  • partiton_table: Added two standard partition tables for NVS encryption
  • nvs_flash: Updated "nvs_flash_init" API to encrypt the default NVS partition when "NVS_ENCRYPTION" is enabled
  • newly added from here
  • VFS: Fixed build errors in esp_vfs.h when included in C++ files with target esp32-c3

FreeModbus

  • Added tcp master and slave support
  • freemodbus: added support for list of area descriptors for each register area
  • freemodbus: moved register read/write callback functions into common slave and support to override in concrete controller port
  • Fixed comm fail when optimization for performance option is active (#4499)
  • Fixed event processing failure after driver destroy
  • Added MB_PORT_PARITY_GET() to propagate UART parity options from mb controller to serial port layer (#6377)
  • newly added from here
  • Removed duplicated event post line added after automatic merge of TCP stack
  • Added processing of events in one poll cycle

Tools

  • idf.py on Windows handles Ctrl+C event
  • Added support for generating default and range values of the Kconfig options for the documentation
  • Kconfig documentation page updated with default and range values
  • tools: fix python requirement for click?
  • Windows: documented limitation for installation on path which contains white space or parentheses
  • Windows: documented solution for installation on path with Unicode characters
  • Added deprecation warning for Python 2 and Python 3.5 and older
  • Can now set a mirror for all GitHub asset URLs downloaded as part of IDF Tools install process
  • Added pre-installation system check screen to Windows installer for validation of installed Python environment and Windows Defender
  • Clean the state of ESP-IDF git repository after installation (#6182)
  • Added support for Python installed from Microsoft Store
  • Fixed requirements incompatible with Python 2
  • Allow decoding a stack trace in idf_monitor by running gdb in the background
  • Wrap flash binaries into a UF2 file for flashing through USB MSC
  • idf.py: modified port detection to find the port with esp device connected by default (#5125)
  • Allow installation on arm64 macOS (#6113)
  • Added ability to disable address decoding using env variable or cmd option (#1679)
  • idf_tools.py: fixed deprecation warnings during tools installation with python 3.8 and newer (#6200)
  • Windows Installer added support for Embedded Python 3.9 which simplifies installation in environments with existing Python from Windows Store or Anaconda
  • Windows Installer and idf_tools.py added support for Espressif PyPI repo to resolve Python Wheels
  • Windows Installer added support for unattended installation
    Added PowerShell shortcut
  • Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
  • Refactor espcoredump.py. Add dependency construct==2.10.54
  • Update to Ninja 1.10.12 - Solves problem with writing to build files
  • Specify UTF-8 encoding for Eclipse Make build which is not the default value under Python 2
  • Prefer python3 during install and export (#6471)
  • Simpler installation by not requiring to set up manually an alias for python on Unix systems where it doesn't exist by default (#6532)
  • Fixed c++ include usage for esp_core_dump.h (#6585)
  • newly added from here
  • Don't count BSS into the total image size in the report of idf_size.py. Revert the behavior to ESP-IDF v4.1 and earlier
  • Reinstall virtualenv if it is broken

Build System

  • Added esptool_py_flash_to_partition CMake function to flash a given binary flash to a partition. idf.py encrypted-flash can now flash encrypted and non-encrypted images at the same time if necessary. (for example, spiffs images must be flashed as non-encrypted)
  • Added possibility to choose Linux target to run on host
  • Now defines IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables during the early expansion phase of component CMakeLists.txt files
  • Added support for honoring ESPPORT and ESPBAUD environment variables when doing idf.py read_otadata and idf.py erase_otadata (#5280)
  • Added loadable elf support for ESP32-S2 and ESP32-C3

External Libraries

  • cJSON: upgraded to release v1.7.14, new feature additions and small bug-fixes

Examples

  • Fixed socket examples to use sockaddr_storage for both IPv4 and IPv6 addresses
  • Fixed expired x509 certificate in esp_local_ctrl_example
  • SMTP Client: fixed missing newline causing incorrect attachment issue (#6098)
  • SMTP Client: fixed content type of the attachment
  • IPERF: fixed issue that iperf example parameter opt isn't initialized (#5681)
  • Fix invalid clock source in i2c_self_test example (#6216)
  • ble_mesh: Added Aligenie BLE Mesh example
  • ble_mesh: Delete local variables to avoid null global variables in coexistence example
  • esp_http_client: updated esp_http_client example to demonstrate partial HTTP downloads
  • RMT: added musical buzzer example, based on RMT loop mode
  • Updated the https_request_example to showcase cacert_buf, global ca_store
  • Fixed the issue of restart in esp-now blocking system
  • Power Management: Added power consumption graphs for wifi/power_save and ulp examples
  • Do not check the return value of esp_wifi_connect()
  • Do not check the return value of Wi-Fi scan
  • Allow access SD card though file_server example
  • MCPWM: Fix period calculation bug when frequency too high
  • UART: fixed echo example crash when UART ISR not disabled with cache (placed in IRAM)
  • Matrix Keyboard: Added matrix keyboard example, based on Dedicated GPIO driver
  • Fixed enable CONFIG_EXAMPLE_RESET_PROVISIONED will cause device crash
  • Added QR code support for provisioning examples
  • Added touch element lib examples
  • newly added from here
  • provisioning: Updated README.md to explain QR code format

Documentation

  • Provided comparison of key features of ESP32, ESP32-S2 and ESP32-C3 chips
  • Wi-Fi: Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
  • Wi-Fi: Updated description to avoid using WiFi modem sleep for WiFi/BT coexistence
  • Wi-Fi: Fixed description of unusable API esp_wifi_restart()
  • Wi-Fi: Updated esp_now_fetch_peer description
  • Wi-Fi: Updated table format for esp_wifi_set_max_tx_power()
  • Wi-Fi Driver: added Chinese translation of Wi-Fi Driver and fixed formatting issues in the original English text
  • Updated Getting Started section to get English and Chinese documentation in sync
  • Updated Chinese translation of some documents in the API Guides section: index.rst, ulp, bootloader, external-ram, ulp-risc-v, partition-table, tips-and-quirks
  • SPI: added explanation for the modes
  • SPI Flash: added documents for the 32-bit address support of flash chips
  • SPI_FLASH: updated document to reflect the restrictions of mmap/cache, and modified SPI Flash driver definitions
  • SPI_FLASH: fixed documentation errors in esp_partition.h
  • Updated docs/en/api-reference/protocols/icmp_echo.rst
  • Added libusb linux dependencies to prevent error about running openocd (#4095)
  • Updated the usage of DAC digital controller on ESP32-S2 (#6333)
  • Increase cairo2svg version (#6365)
  • Corrected suggested voltages for ADC of ESP32-S2 and removed full scale voltages for both ESP32 and ESP32-S2 chips
  • Tools: Kconfig documentation page updated with default and range values
  • Tools: Sorted order of menu items in the Kconfig option reference
  • Added User Guide for ESP32-PICO development board
  • Added User Guide for ESP32-PICO-DevKitM-2 development board
  • Added User Guide for ESP32-DevKitM-1 development board
  • Added User Guide for ESP32-C3-DevKitM-1 development board
  • Added layout of ESP-WROVER-KIT board in DXF format
  • Updated Power Management logic for ESP32-S2
  • Added API reference documentation for touch element library
  • Updated "Fatal Errors" chapter
Assets 3

@projectgus projectgus released this Mar 26, 2021

Documentation for release v3.3.5 is available at https://docs.espressif.com/projects/esp-idf/en/v3.3.5/

ESP-IDF v3.3.5 is a bugfix update for ESP-IDF v3.3. IDF v4.2 is the latest stable release of ESP-IDF at time of writing.

Obtaining v3.3.5

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 v3.3.5 --recursive https://github.com/espressif/esp-idf.git esp-idf-v3.3.5
cd esp-idf-v3.3.5/

This is the recommended way of obtaining v3.3.5 of ESP-IDF.

Download an archive with submodules included

Attached to this release is an esp-idf-v3.3.5.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-v3.3.5.zip

Change Log

This is the list of changes since release v3.3.4

Major Changes

  • Added soft solution for ESP32 ECO3 live lock issue
  • NVS: if a user erases a partition which has been initialized, and then uses that partition without re-initializing it, this fails from now on. Hence, it's technically a breaking change. But before, this has been undefined behaviour anyway.

Known Issues

  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP

Wi-Fi

  • Fixed spin lock allocation in PSRAM bug
  • Optimized some debug logs for probe response
  • Optimized phy and soc files
  • Fixed the no event bug for connect
  • Fixed the bug that set_channel doesn't work for softAP
  • Drop packets received from the device itself.
  • Fixed an issue of timestamp check that didn't disconnect AP when AP's timestamp decreased abnormally
  • Update WiFi toolchain to 1.22.0-97-gc752ad5
  • Fixed the parameter "opt" not initialised bug in iperf example
  • Fixed links to example directories for fast_scan and scan (#5186)
  • Optimised TCP timer interval
  • Added wpa_supplicant debug logging as a configurable option
  • Optimized wifi log
  • Optimized 4-way handshake failure time
  • Fixed eapol frames encryption during reauth
  • Set softap beacon DTIM count according to TSF timer
  • Removed wifi tx buffer limits
  • Optimized WiFi TX performance
  • Added limitation for setting maximum WiFi TX power
  • Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
  • Updated description to avoid using WiFi modem sleep for WiFi/BT coexistence
  • Fixed description of unusable API esp_wifi_restart()
  • Updated esp_now_fetch_peer description
  • Updated table format problem for esp_wifi_set_max_tx_power()
  • Reduced image size of Wi-Fi and Bluetooth by not linking coexist code
  • Fixed inconsistency of log levels
  • Added support for setting log-level while wifi_init for smartconfig and esp-now
  • Added check CSA state before CSA timer process
  • Use deport register instead of ahb
  • Check TID in ieee80211_recv_bar()
  • Revert to report specific reason code when receiving deauth during 4-way-handshark
  • Fixed the bug that tx ampdu parameter is not from peer device
  • Fixed csa timer issue
  • Changed country code last byte to space instead of \0
  • Fixed softap cannot forward A-MSDU
  • WiFi station connect improvement, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Updated ESP32 phy lib to v4660
  • Fixed max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can not get country
  • Fixed phy version log could not disable issue
  • Scan failure should not cause system crash
  • Do not check the return value of esp_wifi_connect()
  • Fixed espnow receive fail

Bluetooth

Controller

  • Added protection for ACL-U packet type exchange procedure
  • Reduce IRAM consumption about 300kbytes
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed the crash after controller disable and re-enable
  • Fixed BT controller dead issue caused by clk overflow
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Fixed an issue that BT may use memory already freed when initializing bt controller

Bluetooth Low Energy

  • Fixed a crash when cache disabled
  • Fixed an HCI timeout issue caused by BLE scan
  • Fixed two BLE assert issues
  • Fixed a watchdog timeout issue of btu task during multi-connection
  • Fixed tx_prog insert error
  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed exl200
  • Added btdm_disable_adv_delay function to disable adv random delay
  • Fixed RPA addr update error

Bluetooth Classic

  • Workaround for a hardware bug when entering sniff mode
  • Removed dummy assert when ESP32 receives a passkey request
  • Fixed HCI Timeout of 0x40F or 0x41C opcode by freeing ACL RX Buffer in Exchange Memory
  • Added protection for ACL-U packet type exchange procedure
  • Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
  • Rewrite ld_acl_frm_isr to make clock read more precise and use less IRAM

Bluedroid

Bluetooth Classic

  • Added protection for btc_init
  • A2DP: fixed Sink send ESP_A2D_MEDIA_CTRL_CHECK_SRC_RDY command return success
  • A2DP: Fixed sending the ESP_A2D_MEDIA_CTRL_STOP or ESP_A2D_MEDIA_CTRL_SUSPEND command when disconnected will return success
  • Separated AVRC and A2DP
  • GAP: added remove bond device complete event in GAP module
  • GAP: fixed Read Rssi Delta Bug in Bredr (#5660)
  • Fixed bugs in esp_bt_gap_get_bond_device_list (#5395)
  • Fixed limit of devices which have more than 2 extend feature pages (#5470)
  • SPP: Optimize the function bta_jv_free_rfc_cb to make sure the server has a listening port after reaching the maximum RFCOMM session number and then closing the one of session
  • SPP: Fixed the error parameter in example_spp_initiator_demo.c at line 119(#5409)
  • SPP: Added API esp_spp_stop_srv to stop an SPP server and release the listening slot
  • SPP: Transfer ESP_SPP_CLOSE_EVT in BTU layer not just in BTC layer
  • SPP: Fixed API esp_spp_start_srv
  • SPP: fixed SPP using NULL point with dynamic memory
  • SPP: fixed SPP init dynamic memory bugs
  • SPP: fixed SPP flow control and vfs write
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • SPP: fixed SPP connect failed or discovery failed after the first connection release
  • SPP: Add protection for RFCOMM port
  • Fixed an issue that bluedroid enable takes long time sometimes

Bluetooth Low Energy

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Optimized the ble_spp_server_demo example
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: (CVE-2020-26555)
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Fix added to not accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555)
  • Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability
  • Fixed the problem of incomplete data packets caused by disordered acl data packets
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Support BLE Authorization
  • Support BLE Application Layer Encryption key size check
  • Support BLE Read Attribute value by UUID
  • Support BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Fixed the issue that L2CAP link disconnect timeout in host too short
  • Fixed a potential double free error

NimBLE

  • Check for received buffer size less than configured event buffer size
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone

ESP-BLE-Mesh

  • Added support of receiving heartbeat messages for Provisioner
  • Optimized Provisioner delete device function
  • Fixed storing the allocated next net_idx and app_idx
  • Continued restoring info even if failure happens
  • Split model settings store/clear operations
  • Added clearing heartbeat publication in settings
  • Added mutex for protecting settings operation
  • Added restored role check before enabling device
  • Fixed node info is not erased when deinit mesh stack
  • Optimized Provisioner related erase operations
  • No pending timeout when erasing mesh information
  • Update mesh device property to v2
  • Make mesh stack net buf debug option invisible
  • Fixed wrong description of BLE Mesh server model autorsp flag
  • New Kconfig options introduced to reduce code size
  • Added node local netkey/appkey get/add and bind AppKey functions
  • Updated connection parameters used by central
  • Need uuid when adding device for provisioning
  • Fixed Node ID adv with wrong timeout
  • Synchronized a few Zephyr BLE Mesh updates
    • Fix rpl not check by proxy configuration
    • Store kr phase after value changed

Blufi

  • Fixed an issue that sending longer customer data will lead to congestion
  • Fixed an issue that the sequence still increases when Blufi is sending data on disconnection

Wi-Fi Coexistence

  • Fixed three small issues in BLE dynamic priority
  • Fixed an issue that BLE failed to disconnect sometimes
  • Changed wifi scan duration from 120ms to 100ms

Wi-Fi Mesh

  • Fix FIX-ROOT does not reconnect to router when disconnect reason is too many
  • Added API esp_mesh_print_scan_result
  • Modified not to reset mesh_xonseq of self and children when flush_upstream_packets
  • Fixed not switch to a parent candidate which has the same layer and assoc as current parent
  • Fixed not arm parent monitor when a parent candidate is cleared without sending an event to mesh layer
  • Fixed the new voted root does not reconnect to router if rssi is weak
  • mesh: Removed coexist warnings in ESP_WIFI_MESH

LWIP

  • Fixed endless loop in DHCP parse reply
  • Fixed double-free of pbuf in ip4_reass
  • Fixed the issue in IPv6 ND6 queuing too many packets caused no memory issue
  • Fixed the IPv6 address status to invalid on setting an interface down
  • Fixed the UDPv6 issue of failing to receive data for the first time
  • Fixed DHCP routing issue when sending too many UDP packets
  • Enabled TCP initial sequence number (ISN) randomization hook
  • Fixed missing C++ header guards in netdb.h (#5900)
  • Fixed TCP OOSEQ (Out of sequence Queue) issue causing tcp recv assert
  • Fixed ICMP specify length issue

Peripheral Drivers

  • SPI: Fixed setting CS polarity correctly
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset
  • SDSPI: Fixed the probe issue that forbid sdspi working in highspeed mode
  • MCPWM: Fixed fault pin initialization issue
  • MCPWM: Fixed inaccurate period
  • CAN: Added support for running ISR when cache is disabled
  • CAN: Fixed a bug where log functions were called from within critical sections leading a crash
  • CAN: Fixed a bug where semaphores were taken from within a critical section
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • ADC: Disabled the synchronization operation function of ADC1 and DAC
  • I2C: Fixed PM lock release in case of a timeout
  • I2S: Fix I2S word-order issue caused by incomplete reset

Core System & FreeRTOS

  • Added soft solution for ESP32 ECO3 live lock issue
  • PSRAM: Fixed 16mbit PSRAM id read error
  • Added PSRAM stack check in backtrace
  • pthreads: Fixed priority inheritance in pthread_mutex_destroy
  • Fixed flash mmap failing when there are enough free MMU pages

Build System & Tooling

  • Fixed C identifier generation from embedded file in CMake
  • Core Dump: Fixed error if core dump partition is uninitialized
  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'
  • Fixed path handling errors in gen_esp_err_to_name.py for Windows
  • ldgen: added support for paths with Unicode characters in archive files parsed by ldgen (#5996)
  • ldgen: fixed parsing of sections names on Windows
  • Brought a toolchain version 1.22.0-97-gc752ad5. Reverted a part of the PSRAM workaround because of regression. Added a C++ locale fix for multithreading
  • idf.py: removed broken defconfig from the list of idf.py commands
  • Added deprecation warning for Python 2 and Python 3.5 and older (in both Chinese and English)
  • esptool: updated to latest release/v2
  • Fixed xtensa-esp32-elf-gdb not working in espressif/idf Docker image (#5817)
  • Installation of 3.3 works on Windows

Storage

  • NVS: if a user erases a partition which has been initialized, and then uses that partition without re-initializing it, this fails from now on. Hence, it's technically a breaking change. But before, this has been undefined behaviour anyway.
  • SPI_FLASH: fixed issue that WEL is possibly left uncleared after some actions
  • SPI_FLASH: Don't call vTaskDelay in non-os context, fixing situation when coredump is triggered from an interrupt handler
  • vfs: Support setting UART line endings for specified UART number

Third Party Libraries

  • mbedTLS: Updated to mbedTLS release v2.16.7

Provisioning

  • wifi_provisioning_manager: Fixed issue faced while adding 2 or more endpoints in wifi_provisioning_manager ( #6121)

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string

ESP-TLS

  • Fixed incorrect closing of fd 0 on connection failure

ESP HTTPS OTA

  • Add fix to return failure if (-1) is returned from esp_http_client_read (#4960)

Security

  • Fixed openssl port to correctly convert between openssl and mbedTLS verification modes
  • Added config option to disable UART download mode entirely on ESP32 V3
  • Disabling plaintext flashing is now implemented by setting FLASH_CRYPT_CNT efuse to max value, to avoid also write-protecting the UART_DL_DISABLE efuse on ESP32 V3

Bootloader

  • Fixed anti-rollback feature memory map bug for partition size greater than 3.2MB (#5911)
  • Fixed bootloader_common_get_sha256_of_partition(), can handle a long image

WebSocket Client

  • Fixed potential deadlock if stop called from event handler
  • Fixed posting disconnect event twice when read error
  • Avoid timeout reconnection when set disable_auto_connect

MQTT

  • Added a config option for skipping common name check (espressif/esp-mqtt#158)
  • Websocket: Allow the query part of the uri to be a part of the path (espressif/esp-mqtt#161)
  • Added check for consistency between config settings
  • Added IDF version check for secure element feature
  • Fixed esp_mqtt_client_stop deadlock (espressif/esp-mqtt#163)
  • Added dispatch error event for read errors (#5704)
  • Cleanup expired messages when offline (#5668)
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • Removed unused retry_count field from outbox_item_t
  • Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism

TCP Transport

  • Fixed issue in SSL mode: if esp_transport_poll_read function is used, the cache data in mebdtls will block

Documentation

  • Specified that sleep wakeup source restrictions apply to all current ESP32 revisions (#4681)
  • Added information about Python 2 deprecation
Assets 3
Pre-release

@projectgus projectgus released this Mar 26, 2021

Documentation for pre-release v4.3-beta2 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3-beta2/

ESP-IDF v4.3 is a minor update for ESP-IDF v4.2.

Obtaining v4.3-beta2

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

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

Download an archive with submodules included

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

Changelog

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

Major New Features

  • Support for ESP32-C3 SoC
    • Wi-Fi
      • 802.11 bgn mode
      • 802.11 LR mode
      • Station, SoftAP, sniffer mode
      • ESP-NOW
      • CSI support
      • TX/RX A-MPDU, RX A-MSDU
      • TX Fragment, TXOP
      • WEP/TKIP/CCMP
      • WPA/WPA2-PSK/WPA2-ENT/WPA3-PSK
      • WAPI-PSK
      • ESP-Touch v1/v2
      • Fine Time Measurement (FTM)
      • Device Provisioning Protocol(DPP)
      • WAPI-PSK
      • Network-assisted roaming using 802.11k (Radio Measurements) and 802.11v (BTM) specifications
      • Wi-Fi Modem/Light Sleep
      • Wi-Fi Mesh support
    • Bluetooth
      • BLE 5.0 Controller support
      • BLE Modem/Light sleep support
      • UHCI support
      • Bluedroid host support with BLE5.0
      • NimBLE host support with BLE5.0
      • BLE-Mesh support
    • Security
      • Secure boot
      • Flash encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • HMAC peripheral
      • RNG
      • Digital signature
      • Memory protection
      • mbedtls integration of Digital Signature
    • Peripherals
      • UART
      • Timer group
      • GPIO — Supported, except IO19
      • SPI Master
      • SPI Slave
      • I2C
      • LEDC
      • SigmaDelta
      • RMT
      • ADC
      • ADC DMA
      • SD card over SPI
      • Ethernet over SPI
      • Brownout detector
      • TWAI
      • GDMA
    • System features
      • Cache
      • esp_timer
      • SPI Flash auto suspend and auto resume
      • RTC Slow clock selection
      • Task, interrupt watchdogs
      • Efuse API
      • espefuse.py
      • Stack overflow "canary" detection
      • RISC-V architecture support
      • Watchpoint stack protection
      • Brownout reset
    • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
      • Light sleep MAC/BB power down
      • Light sleep CPU power down
    • Debugging
      • Core dump
      • OpenOCD
    • Protocols
      • Provisioning
      • Other protocols on top of TCP/IP
    • Added more support for ESP32-S2 SoC
      • Touch Element library for touch sensor
      • Waterproof
      • USB Host HAL layer
        • TX A-MSDU
        • FTM
        • DPP
        • WAPI-PSK
        • ESP-Touch v2 support
        • 802.11k and 802.11v support
        • SPI Slave HD Append Mode
      • ADC calibration scheme v2
        • TinyUSB CDC Device class
        • Async memcpy driver
    • New Wi-Fi features for ESP32 SoC
      • TX A-MSDU
      • FTM
      • DPP
      • WAPI-PSK
      • ESP-Touch v2 support
      • 802.11k and 802.11v support
  • Updated FreeRTOS, based on upstream version v10.2.0
  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • Light sleep: Added new options to reduce average current in light sleep: PM_SLP_IRAM_OPT, PM_RTOS_IDLE_OPT, WIFI_SLP_IRAM_OPT
  • Security: Support for "verify app image on update" (with Secure Boot disabled) is added for ESP32-S2, ESP32-C3, and ESP32 ECO 3 (Secure Boot V2)
  • Preview support for the "ESP32-S3 Beta 2" SoC is provided in v4.3. This SoC is different from the ESP32-S3 production SoC which will be supported in ESP-IDF v4.4, and ESP-IDF v4.3 will not work on the production ESP32-S3. After ESP32-S3 is released, support for "ESP32-S3 Beta 2" is planned to be removed in a future v4.3 bugfix release.

Major Bug Fixes

  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Breaking Changes

  • BLE_Mesh: Previously if starting/stopping BLE advertising when BLE Mesh is enabled, the corresponding events will be notified through the callback registered by esp_ble_mesh_register_prov_callback(). With this MR, the function esp_ble_mesh_register_ble_callback() need to be invoked for registering the callback used for BLE coexistence related functionalities (i.e. ADV/SCAN)
  • esp_tls_wolfssl: Previously an API named wolfssl_tlsext_host_name was inappropriately used for domain (host) name check.
    In earlier case if the domain name was different than the ISSUER field in the peer's server certificate, then the connection might have succeeded (provided skip_common_name = false).
    The old API is now replaced with wolfSSL_check_domain_name, which makes wolfSSL to check if the domain name provided matches with the ISSUER name on the peer's server certificate. With this API change, wolfSSL_connect should return a fatal error in case of a domain name mismatch
  • esp-tls: esp-tls client connection will now return error by default in the absence of server verification option
  • tinyusb: The return value of tusb_init has changed from tusb_error_t to bool in the upstream tinyusb (hathach/tinyusb@d887829)
  • NVS Encryption: "NVS Encryption" feature is now automatically enabled whenever the Flash Encryption feature is enabled.
  • newly added from here
  • bootloader: If anti-rollback is enabled, the partition table should not have a test app and the config option to use a GPIO to boot the test app is no longer supported. If OTA updating an existing installation, the bootloader is not updated so the test app will still be available. If you wish to disable the test app following a secure update, use the partition API to erase the first flash sector of the test app in the flash
  • Touch element event callback function. (Only in CALLBACK dispatch method)

Future Breaking Changes

  • Python: Python versions 3.5 and earlier are now deprecated and a warning is printed if used for ESP-IDF. All users are encouraged to move to Python 3.6 or newer, as soon as possible. Python 3.6 or newer will be required in the future to use ESP-IDF v4.4. Python 2.7 has been End of Life since January 2020, and Python 3.5 has been End of Life since September 2020.

Known Issues

  • "verify app image on update" is supported for ESP32 ECO3, ESP32-S2 and ESP32-C3 using RSA but there is a bug where more than one signature is trusted that can allow a verification bypass. The issue will be fixed in the next beta.
  • ESP32-C3 does not support BLE multiple connections.
  • Nimble pairing may trigger task watchdog. We can disable CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS in menuconfig to workaround this issue.
  • Infrequently not return from Wi-Fi Mesh esp_mesh_deinit function.
  • ESP32-C3 does not support Wi-Fi Mesh power save.
  • Skip image validation when exiting deep sleep doesn't work in ESP32-S2 or single core ESP32 unless the option Enable RTC fast memory for dynamic allocations is disabled.
  • Infrequently beacon timeout happens on ESP32C3 When running Wi-Fi and BLE together.
  • Infrequently crash happens on ESP32 and ESP32S2 during TCP stress test.

Known issues are planned to be fixed before the final v4.3 release.

Bluetooth Controller

  • Reduce IRAM consumption about 300 bytes
  • Added support of Bluetooth 5.0
  • newly added from here
  • Fixed IRAM_ATTR missing in coex mode
  • Fixed bt controller task watchdog in Wi-Fi test
  • Fix crash in Bluetooth when esp_restart
  • ESP32-C3: Fixed wrong Tx Power level mapping and implemented Tx power set/get APIs

Bluetooth Low Energy

  • Fixed exl200
  • Added btdm_disable_adv_delay() to disable advertising delay
  • Fixed RPA addr update error

Classic Bluetooth

  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory

Bluedroid

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: -26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: -26555
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Disabled Bluetooth before esp_restart
  • newly added from here
  • Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
  • Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability

Classic Bluetooth

  • Fixed crash caused by dividing zero
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • Added protection for ACL-U packet type exchange procedure
  • Rejected connection request if BD_ADDR of peer is same as ours (-26555)
  • Added API to config QoS for Classic Bluetooth ACL link
  • HFP: modified hfp console style by using esp console
  • HFP: first atuomatic connection of HFP
  • HFP: fixed the crash issue when bta_hf_client_sco_co_out_data is called
  • AVRC: fixed the issue that target unhandles set_player_app_value cmd
  • A2DP: added Init & Deinit Event for A2DP
  • A2DP: fixed A2DP sink audio crash
  • A2DP: fixed data stream underrun for A2DP sink
  • Added SPP input module to help users understand secure simple pair
  • Added ESP32 Secure Simple Pair document in SPP examples
  • Improved the documentations of Classic BT API
  • newly added from here
  • SPP: Fixed a crash caused by pairing cancel
  • SPP: Add API esp_spp_stop_srv_scn to stop a specific server
  • SPP: Add parameter service_name with event ESP_SPP_DISCOVERY_COMP_EVT
  • SPP: Add parameter scn with event ESP_SPP_START_EVT
  • SPP: Add parameter scn with event ESP_SPP_SRV_STOP_EVT

Bluetooth Low Energy

  • Fixed a potential double free error (#5701)
  • Added support of BLE Authorization
  • Added support of BLE Application Layer Encryption key size check
  • Added support of BLE Read Attribute value by UUID
  • Added support of BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Added connection parameter check
  • Fixed read multi char failed
  • Fixed multi-connection crash
  • Fixed bluedroid repair faild if the two most significant bits of public address is '01'
  • Fixed scan rsp length error
  • Fixed vendor hci memory leak
  • newly added from here
  • Added connection parameter check
  • Fixed BLE throughput example build error
  • Fixed bluedroid host report connection address error when remote device used RPA address

NimBLE

  • Updated NimBLE submodule to latest upstream release 1.3.0
  • Added an example to run ICMP echo-reply (PING) and BLE peripheral simultaneously
  • Added API to remove address from whitelist
  • Made set packet length API public
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Removed recursive call(apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition(#5825)

Blufi

  • Fixed an error caused by incorrect conn_id parameters
  • Added a macro to control the compilation of blufi
  • Fixed the issue that sending longer customer data will cause congestion

ESP-BLE-Mesh

  • Updated connection parameters used by GAP Central
  • Added support of receiving heartbeat messages for Provisioner
  • Always need device uuid when adding a device for provisioning
  • Added support of using multiple NVS namespaces to store information by Provisioner
  • Updated the definition of the macro ARRAY_SIZE
  • Use a separate callback for BLE coexistence operations
  • Added support for scanning normal BLE advertising packets
  • Replaced the Zephyr integer types with C99 types
  • Fixed Node ID adv with wrong timeout
  • Enabled updating lighting hsl state
  • Fixed Proxy Client may fail to resend messages
  • Now uses different random for each provisioning
  • newly added from here
  • Fixed deinit server models with no matching model id

Wi-Fi Coexistence

  • Changed wifi scan duration from 120ms to 100ms

Wi-Fi Mesh

  • Mesh power save: add esp_mesh_ps_duty_signaling to signal the new duty in the mesh network
  • Chain topology: add chain topology networking IE mesh_chain_assoc_t to esp_mesh_internal.h

Wi-Fi

  • WPA2-Enterprise: Added documentation for WPA2-Enterprise
  • WPA2-Enterprise: Updated README.md file for wpa2-enterprise example
  • WPA3: Fixed the issue that WPA3 code cannot be disabled by disabling WPA3 flag in Menuconfig (#5971)
  • PMF: Fixed an issue that PMF stops working after dynamic mode change
  • ESP-NOW: Fixed the bug that esp-now channel config range is not correct(#6276)
  • wpa_supplicant: Fixed sending of encrypted mgmt frames for PMF connection in supplicant
  • Added support of SHA256 AKM without PMF enabled
  • Fixed EAP Client issue
  • Adjusted max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can't get country
  • Added CSA state check before CSA timer processing
  • Used DPORT bus instead of AHB bus to access Wi-Fi MAC and BB register
  • Fixed the crash caused by receiving BAR with TID >=8
  • Revert to report specific reason code when receiving deauth during 4-way-handshake
  • Fixed the issue that tx A-MPDU parameter is not from peer device
  • Fixed the issue that ESP32-S2 fails to get CSI info
  • Fixed the issue that PHY version log could not be disable
  • Fixed the issue of phyqueue in psram
  • Updated PHY version
  • Refactored wifi_interface_t
  • Improved faster WiFi STA connect, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Changed country code last byte to space instead of \0
  • Fixed the issue that Soft-AP cannot forward A-MSDU
  • Fixed the issue that no TBTT is generated in STA+Soft-AP mode when maximum modem sleep is enabled (#6006)
  • Added support of TX A-MSDU
  • Unlock mutex for esp_wifi_80211_tx when out of memory
  • Fixed an issue that esp_wifi_80211_tx can't be used in ap mode
  • Added pairwise cipher configuration support for Soft-AP mode
  • Fixed a crash issue caused by receiving CSA IE with wrong channel
  • Fixed the issue that STA fails to connect open AP after it failed to connect to a WPA3 AP
  • Fixed PMK not saved in NVS for Soft-AP with PSK mode
  • Cleared hotspot bss when auth timeout happens
  • Fixed the MIC comparison logic -CMAC decryption
  • Fixed issue of setting incorrect log_length of NVS misc log
  • Added exception handling for iperf example when scan doesn't find any AP
  • Fixed data length bug when CSI is enabled
  • Fixed a crash when an AMSDU larger than 3200 Bytes is received
  • Fixed crash issue in presence of WEP AP with SSID same as connected WPA2/WPA3 SSID.
  • newly added from here
  • Fixed smartconfig issue when router reply arp late
  • Updated wifi docs (#6448)
  • Fixed an issue that Wi-Fi stack may crash when AMSDU length bigger then 3200 is received
  • Added support for disabling 11b rate
  • Added support for configuring esp-now rate
  • Fixed the issue that connect scan may crash the device
  • Fixed potential crash or watchdog during FTM
  • Fixed miss-overwrite of some PHY registers when Wi-Fi modem sleep is enabled
  • Added encrypt option for ESPTouch v1
  • Fixed issue of reason code change from 15 to 200 when provided password is wrong
  • Fixed return type of esp_wifi_deinit when Wi-Fi is not stopped
  • Fixed the issue that the parameters obtained from RAM cannot be saved to NVS
  • Modified code to not store the default value in NVS
  • Fixed an issue with hidden AP scans after connecting AP
  • Fixed watchdog issue when receiving action frame
  • Fixed issue of reason code change from 15 to 204 when wrong password is provided
  • Fixed esp_wifi_set_config return value error
  • Fixed ampdu age timer memory leak
  • Fixed the second distribution network failure of ESPTouch v2
  • Optimized Wi-Fi DTIM sleep current consumption
  • Added support for station to sleep when in disconnected state
  • Added support to adjust wake-up ratio for esp-now at disconnected status

Smartconfig

  • Added support of ESP-Touch v2
  • Fixed the issue when router reply arp late
  • Fixed the issue that ESP-TOUCH failed to find hidden APs

Ethernet

  • Added W5500 Ethernet driver (MAC RAW mode only)
  • Added ETH_CMD_G_DUPLEX_MODE for getting duplex mode (#6436)
  • Deprecated esp_eth_receive

Security

  • Fixed the manual enabling of Secure Boot V2 via espefuse (#6050)
  • efuse: added convenience APIs to work with keys, protection/purpose bits
  • efuse: improved the batch mode that efuse fields can be read inside this mode
  • efuse: batch mode can be called recursively
  • Added HAL and LL for AES accelerator and refactor driver
  • Added support for doing AES-GCM fully in hardware on ESP32-S2 with mbedtls_gcm_crypt_and_tag()
  • Secure Boot V2: Fixed padding issue when the bootloader image size is exactly equal to the size between the bootloader offset and partitions offset when secure boot v2 and flash encryption are enabled
  • Secure Boot V2: Fixed the issue which checks the signature block digest instead of the flash digest during app OTA validation (bootloader validation is not affected).
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)
  • flash_encryption_example: Updated the example to showcase NVS encryption
  • flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)

Peripheral Drivers

  • periph_ctrl: Add support for PHY clock control
  • Extract independent HAL component
  • Fix xtal 32k not oscillate or oscillate too slowly issue for esp32
  • ADC: support API adc2_vref_to_gpio on ESP32-S2
  • ADC: Support adc calibration scheme on ESP32-S2
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • ADC calibration: Added support for calibration scheme v2 on ESP32-S2
  • ADC: remove ESP_LOGD from adc_set_init_code (#6091)
  • ADC_DMA: Fixed IO not initialized properly bug on ESP32
  • Async memcpy: Added new driver async_memcpy
  • Async_memcpy: Support async memory copy on ESP32-S2
  • DAC: Fix DAC influenced by ADC bug by disabling the synchronization operation from ADC1 to DAC
  • Dedicated GPIO: Added Dedicated GPIO driver for ESP32-S2
  • GPIO: Provided API gpio_slp_sel_en, gpio_slp_sel_dis, gpio_slp_set_direction, gpio_slp_set_pull_mode to control GPIO state during sleep.
  • GPIO: Fix the problem that : IF you failed to use a RTC GPIO to wakeup lightsleep, especially when you used low level to trigger it.
  • I2C: Added allocator for clock source choice.
  • I2C: Fixed PM lock release in case of a timeout
  • I2C: Add const to signature of data in master_write function
  • I2C_CXX: Added C++ wrapper for I2C driver (Experimental)
  • I2S: Fixed PDM clock incorrect issue when using APLL.
  • I2S: Fix I2S word-order issue caused by incomplete reset
  • LEDC: Fix the bug that ledc low-sleep channel can not work when chip in light-sleep mode
  • MCPWM: Fixed MCPWM second fault line broken (#6053)
  • MCPWM: add an option to do mcpwm capture on both edges
  • MCPWM: Fix fault pin initialization issue
  • PCNT: Fixed pcnt driver doesn't clear interrupt status properly (#5929)
  • PCNT: Added new example to parse rotary encoder signals in 4x mode
  • RMT: Supported setting loop count at runtime
  • RMT: Support passing user context to RMT translator (#6002)
  • ROM: Extracted UART rom functions into esp_rom_uart.h
  • ROM: Extracted GPIO rom functions into esp_rom_gpio.h
  • SPI: Fixed master HD DMA mode cannot correctly receive data when a TX (no RX) transaction is done
  • SPI Master: Fixed the error log when using SPI_TRANS_USE_TXDATA or SPI_TRANS_USE_RXDATA with data longer than expect
  • SPI_Master: Added dummy check when both mosi and miso are set
  • SPI: Fixed CS polarity configuration issue
  • SPI: Set CS polarity correctly
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset
  • SPI: Fixed crash issue when cs is set to -1 (#5784)
  • SPI: Refactored HAL context and related codes in SPI Master driver
  • SPI: Refactored DMA related functions in SPI drivers
  • SPI: Fixed duplex mode switch issue when switching multiple devices
  • SPI Slave: New driver for the half duplex mode
  • SPI_Slave_HD: Added feature of SPI Slave HD Append Mode
  • SPI_SLAVE_HD: Check if callback is defined before calling the callback
  • SDSPI: Fix the probe issue that forbid sdspi working in highspeed mode
  • Touch: Allow interrupt enable/disable API being called in the ISR on ESP32-S2
  • Touch_sensor: Fixed touch sensor false trigger in sleep mode
  • TWAI: Initialize brp_div field to zero, fixed register field name
  • TWAI: Fixed issue that code in asserts will not be executed in release builds
  • TWAI: Fix size of RX msg count field on the esp32
  • TWAI: Support on ESP32-S2
  • TWAI: Allow TWAI driver to continue to operate whilst the cache is disabled (e.g., during and OTA operation)
  • UART: Fixed UART FIFO read on ESP32 with -O2 optimization
  • UART: Changed buffer argument type of read/write functions void* to be consistent
  • UART: Fix RXFIFO_CNT bug on ESP32
  • UART: Fixed uart module reset issue
  • UART: Fixed issue that uart_wait_tx_done return ESP_OK when failed
  • USB: Fix issue that CLK always reset and swapped pins not working through HAL
  • Tinyusb: Support Tinyusb CDC
  • TinyUSB: fixed a typo in configure_pins (#5355 (comment))
  • TinyUSB: Fixed configure_pins issue when setting pin to fixed level (#5588)
  • TinyUSB: Fixed a strncpy-related warning caused by a wrong argument
  • TinyUSB: Update to the latest upstream version
  • SPI Flash: Fixed issues of cs support and slow read on ESP32-S2
  • SPI Flash: Fix regression in encrypted flash write on ESP32 (#5467)
  • SPI Flash: Added configuration option to select flash write chunk size
  • SPI Flash: Add config option to override inherited flash size from bootloader header
  • SPI Flash: Fixed the incorrect check_idle logic in LL and chip_driver
  • SPI Flash: Patched unlock ROM function, clearing the WEL bit to improve reliability
  • SPI Flash: Fixed failure when initialize external flash on non-SPI1 bus with PSRAM enabled
  • SPI Flash: Fixed ID/size check in spi_flash_chip_generic_detect_size() is too strict (#4248)
  • SPI Flash: added a new feature for supporting spi_flash auto suspend and auto resume
  • SPI Flash: Fixed issue that WEL is possibly left uncleared after some actions
  • SPI Flash: Modified flash timeout threshold for GD chips
  • SPI Flash: Added a config option to disable timeout checking
  • SPI Flash: esp_partition API can be mocked now
  • newly added from here
  • Docs/SPI: Added explaination for the modes
  • SPI: Applied GDMA allocator to SPI
  • DMA channel is now selected using an enum (spi_dma_chan_t) not an integer. Specifying the exact DMA channel number is no longer required on any chip target, the driver can select it automatically. This API is still compatible with previous code that specified the channel number using an integer (and a typedef is used to avoid the API change breaking on C++, this argument is still treated as an int when compiling C++ code)
  • ADC: Applied GDMA API to ADC driver on ESP32-C3

Core System

  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • efuse: Fixed the order of writing eFuse blocks in batch mode
  • console: added helper function to install console REPL environment easily
  • pthread: fixed priority inheritance in pthread_mutex_destroy
  • esp_event: AP_STAIPASSIGNED now passes the IP through 'event_data'
  • Correctly detect ESP32-S2FH16/S2FH32 embedded flash in feature flags (#5774)
  • esp_event: fixed misuse of recursive semaphore take/give calls for profiling_mutex (#6102)
  • linker_fragment: added scheme to redirect BSS to external SPIRAM
  • esp_timer: added an option to skip unhandled events
  • esp_timer: added C++ wrapper for esp_timer
  • esp_log: correct timestamp formatting to unsigned integer type (#6226)
  • esp_system: specify esp_gdbstub as a dependency (#6274)
  • cxx: fixed init priority ordering on RISC-V
  • Added debug log for init array functions
  • Fixed lightsleep wakeup failure when power down rtc_peripheral on ESP32-S2
  • Improved 32k xtal startup time on ESP32-S2
  • ULP: fixed a issue where wakeup from ULP only triggers once
  • SOC: fixed incorrect address definition of ROM functions
  • PSRAM: support for esp32-pico-v3-02
  • PSRAM: Fixed 16mbit psram id read error
  • console: Added USB CDC as a console option

Debugging

  • core dump: Fixed core dump feature with encrypted flash (#2932)
  • core dump: Non-encrypted core dump partition will always hold plain text data

FreeRTOS

  • Updated FreeRTOS, based on upstream version v10.2.0
  • Placed some additional freertos functions into flash memory to increase free IRAM
  • freertos_hooks: Fix unbalance lock in deregistration for cpu functions (#6275)
  • FreeRTOS static allocation support is now always enabled (previously this was a config option)
  • Fixed a sign conversion warning in a header file (#5838)
  • esp_ringbuf: fixed the linker.lf file to place ringbuffer functions into flash when FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is active
  • newly added from here
  • Fixed delay between interrupt request and interrupt trigger

Power Management

  • Added two options named PM_SLP_IRAM_OPT and PM_RTOS_IDLE_OPT to reduce current in light sleep:
  • If you enabled PM_SLP_IRAM_OPT, IRAM size increases by 1427 bytes but possible to sleep longer in light sleep and decrease current
  • If you enabled PM_RTOS_IDLE_OPT, IRAM size increases by 263 bytes but possible to sleep longer in light sleep and decrease current
  • Added new esp_sleep_is_valid_wakeup_gpio() function to check GPIOs available as wake sources
  • Made lightsleep overhead time as accurate as possible to make it wake up more precisely
  • Enabled sleep reject feature, to return from light sleep quicker if the wakeup trigger is set.
  • Fixed issue with garbled UART output in light sleep
  • Fixed issue with crashes entering light sleep under some conditions
  • Provided an option in Menuconfig named PM_SLP_DISABLE_GPIO, which would disable all pins at sleep and recovered them on wakeup
  • Wi-Fi: Made it more accurately to respond TBTT interrupt
  • Wi-Fi: Provided an option in Menuconfig named WIFI_SLP_IRAM_OPT to reduce pover saving active current.
  • Decreased deep sleep current on ESP32-S2
  • Fixed the issue that light/modem sleep current is too high because ADC power is kept enabled after calibration
  • UART: suspend output using XOFF before entering light sleep
  • newly added from here
  • Disable brownout detector before entering deep sleep on ESP32-S2 (#6179)
  • Fixed some issues during light sleep and DFS

newlib libc

  • Reduced RAM usage by combining multiple rarely taken locks into 2 mutexes
  • Fixed for FD_ISSET macro when n==-1
  • Keep esp_rtc_get_time_us can get correct time even when RTC_SLOW_CLK_CAL_REG has been rewritten

LWIP

  • Enabled TCP initial sequence number (ISN) randomization hook
  • Fixed issue of assert "tcp_receive: ooseq tcplen > rcv_wnd"
  • esp_netif: fixed possible use of hostname pointer after its freed (#6048)
  • Added support for configurable LwIP hooks (#6034)
  • Added Kconfig options to enable/disable checksum validation for IP/UDP/ICMP protocols (#6187)
  • pppos_client: fixed a race condition on closing the PPP mode
  • esp-modem: Fixed PPP stack smashing protect failure in OVERALL mode
  • esp-modem: Added access technology used by the modem
  • esp-modem: Added get operator functionality for BG96 and SIM800L (#5750)
  • Added support for dhcp MTU judgement
  • Added DHCP key state transition log
  • Added DHCP option 61
  • Fixed potential crash of ping when zero ping interval supplied
  • Documented that lwIP does not support delete of a task while it is actively waiting on select() or poll()
  • esp_netif: Added methods for conversion IP4/IP6 addresses from their string interpretation
  • esp-netif: Added support for SLIP interface (#4985)

mDNS

  • Fixed wrong mdns source address if lwIP zoning disabled (#6055)
  • Fixed length calculation of mDNS text field (#6114)
  • Fixed the resolver to accept non-strict answers (allowing non empty question field within answers) (#6190)

OTA

  • app_update: Added definition for esp_ota_abort() API (#5331)
  • app_update: Fixed incorrect first byte from esp_ota_get_app_elf_sha256 for -O2 optimization level (#6389)
  • esp_https_ota: Added definition for esp_https_ota_abort() API

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string
  • Fixed buffer overread when esp_http_client_read is called after esp_http_client_perform

HTTP Server

  • Fixed expired x509 certificate in esp_local_ctrl_example
  • Added support for setting websocket subprotocol
  • Fixed ssl_ctx not being freed in case of error (#6143)
  • Added 401, 403 response error code for HTTP server (#5466)
  • httpd/websocket server: Fixed wrong length calculation for longer packets (#6196)

mbedTLS

  • Upgrade to release v2.16.9
  • esp_crt_bundle: Allow verifying of trusted certificates with a weak signature hash algorithm
  • Added software support for Modular Exponentiation for larger MPI values

Bootloader

  • Now prints segment load addresses without 0x prefix to avoid unnecessary decoding by IDF Monitor
  • ESP32-S2: Switched to use of efuse APIs for keys, purposes, wr/rd-protection bits for flash encryption, secure boot
  • newly added from here
  • Fixed SECURE_ENABLE_SECURE_ROM_DL_MODE cannot be y when SECURE_DISABLE_ROM_DL_MODE=y (#6442)
  • If anti-rollback is enabled, the partition table should not have a test app and the config option to use a GPIO to boot the test app is no longer supported. If OTA updating an existing installation, the bootloader is not updated so the test app will still be available. If you wish to disable the test app following a secure update, use the partition API to erase the first flash sector of the test app in the flash
  • Added config options to bypass app validation for minimum boot-time overhead

ESP-TLS

  • Updated "tls->sockfd" after the socket is freed internally (#6163)
  • esp_tls_wolfssl: Use correct API to validate domain name with peer's server certificate.
  • Added a menuconfig option to allow users to skip server cert verification for testing purpose
  • Fixed memory leak in esp-tls
  • tcp_transport: enabled TCP keep-alive function in transport level
  • newly added from here
  • Prevent freeing of global ca_store when mbedtls dynamic cert free is enabled
  • esp_tls: Fixed misplaced parenthesis found during static analysis
  • protocomm: Fixed NULL pointer check found during static analysis

Websocket

  • Added mutual TLS authentication for websocket (#6059)
  • Added option to propagate control packets to the application (#6307)
  • Added configurable ping interval (#6399)

ESP-MQTT

  • Restore default MQTT_OUTBOX_EXPIRED_TIMEOUT_MS to 30 sec (#6080)
  • tcp_transport: extended error handle to capture socket's errno from tcp_transport
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT, which now includes socket errno (#5906)
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • mqtt_outbox: Removed unused retry_count field from outbox_item_t
  • config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism
  • Added a new event to report deleted messages from outbox if enabled
  • Added a new config option to disable publishing when disconnected (espressif/esp-mqtt#177)
  • Added a new API to enqueue publish messages with qos>0 (espressif/esp-mqtt#155)
  • Added a new config option to use incremental message id instead of random (espressif/esp-mqtt#176)
  • configure_ds.py: Added support to read and parse the efuse summary from ESP32-S2
  • configure_ds.py: Added option for the user to save DS parameters on host machine in ESP32-S2

Storage

  • FATFS: added option FATFS_USE_FAST_SEEK in menuconfig to enable fast seek algorithm (#5625)
  • NVS: fixed partition de-intialization function to only close its own handles
  • NVS: fixed coverage report in Makefile
  • NVS: fixed string comparison in nvs_api.cpp
  • mmap: fixed the issue mmap cannot be called with pointers to psram
  • mmap: Fixed the issue cache not restored after mmap failure.
  • Fixed minor documentation issue in the header file "sdmmc_cmd.h" (#6192)
  • VFS: Return EINVAL when truncate length is less than zero
  • partiton_table: Added two standard partition tables for NVS encryption
  • nvs_flash: Updated "nvs_flash_init" API to encrypt the default NVS partition when "NVS_ENCRYPTION" is enabled

FreeModbus

  • Added tcp master and slave support
  • freemodbus: added support for list of area descriptors for each register area
  • freemodbus: moved register read/write callback functions into common slave and support to override in concrete controller port
  • Fixed comm fail when optimization for performance option is active (#4499)
  • Fixed event processing failure after driver destroy
  • newly added from here
  • Added MB_PORT_PARITY_GET() to propagate UART parity options from mb controller to serial port layer (#6377)

Tools

  • idf.py on Windows handles Ctrl+C event
  • Added support for generating default and range values of the Kconfig options for the documentation
  • Kconfig documentation page updated with default and range values
  • tools: fix python requirement for click?
  • Windows: documented limitation for installation on path which contains white space or parentheses
  • Windows: documented solution for installation on path with Unicode characters
  • Added deprecation warning for Python 2 and Python 3.5 and older
  • Can now set a mirror for all GitHub asset URLs downloaded as part of IDF Tools install process
  • Added pre-installation system check screen to Windows installer for validation of installed Python environment and Windows Defender
  • Clean the state of ESP-IDF git repository after installation (#6182)
  • Added support for Python installed from Microsoft Store
  • Fixed requirements incompatible with Python 2
  • Allow decoding a stack trace in idf_monitor by running gdb in the background
  • Wrap flash binaries into a UF2 file for flashing through USB MSC
  • Added support for C3 target
  • idf.py: modified port detection to find the port with esp device connected by default (#5125)
  • Allow installation on arm64 macOS (#6113)
  • Added ability to disable address decoding using env variable or cmd option (#1679)
  • idf_tools.py: fixed deprecation warnings during tools installation with python 3.8 and newer (#6200)
  • Windows Installer added support for Embedded Python 3.9 which simplifies installation in environments with existing Python from Windows Store or Anaconda
  • Windows Installer and idf_tools.py added support for Espressif PyPI repo to resolve Python Wheels
  • Windows Installer added support for unattended installation
    Added PowerShell shortcut
  • Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
  • Refactor espcoredump.py. Add dependency construct==2.10.54
  • Update to Ninja 1.10.12 - Solves problem with writing to build files
  • newly added from here
  • Specify UTF-8 encoding for Eclipse Make build which is not the default value under Python 2
  • Prefer python3 during install and export (#6471)
  • Simpler installation by not requiring to set up manually an alias for python on Unix systems where it doesn't exist by default (#6532)
  • Fixed c++ include usage for esp_core_dump.h (#6585)

Build System

  • Add esptool_py_flash_to_partition function to flash a given binary flash to a partition. idf.py encrypted-flash can now flash encrypted and non-encrypted images at the same time if necessary. (for example, spiffs images must be flashed as non-encrypted)
  • Added possibility to choose Linux target to run on host
  • Define IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables during the early expansion phase of component CMakeLists.txt files
  • Added support for honoring ESPPORT and ESPBAUD environment variables when doing idf.py read_otadata and idf.py erase_otadata (#5280)
  • Added loadable elf support for ESP32-S2 and ESP32-C3
  • newly added from here
  • Changes to ldgen internal data structure

External Libraries

  • cJSON: upgraded to release v1.7.14, new feature additions and small bug-fixes

Examples

  • Fixed socket examples to use sockaddr_storage for both IPv4 and IPv6 addresses
  • Fixed expired x509 certificate in esp_local_ctrl_example
  • SMTP Client: fixed missing newline causing incorrect attachment issue (#6098)
  • SMTP Client: fixed content type of the attachment
  • IPERF: fixed issue that iperf example parameter opt isn't initialized (#5681)
  • Fix invalid clock source in i2c_self_test example (#6216)
  • ble_mesh: Added Aligenie BLE Mesh example
  • ble_mesh: Delete local variables to avoid null global variables in coexistence example
  • esp_http_client: updated esp_http_client example to demonstrate partial HTTP downloads
  • RMT: added musical buzzer example, based on RMT loop mode
  • Updated the https_request_example to showcase cacert_buf, global ca_store
  • Fixed the issue of restart in esp-now blocking system
  • Power Management: Added power consumption graphs for wifi/power_save and ulp examples
  • Do not check the return value of esp_wifi_connect()
  • Do not check the return value of Wi-Fi scan
  • Allow access SD card though file_server example
  • MCPWM: Fix period calculation bug when frequency too high
  • UART: fixed echo example crash when UART ISR not disabled with cache (placed in IRAM)
  • Matrix Keyboard: Added matrix keyboard example, based on Dedicated GPIO driver
  • newly added from here
  • Fixed enable CONFIG_EXAMPLE_RESET_PROVISIONED will cause device crash
  • Added QR code support for provisioning examples
  • Added touch element lib examples

Documentation

  • Provided comparison of key features of ESP32, ESP32-S2 and ESP32-C3 chips
  • Wi-Fi: Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
  • Wi-Fi: Updated description to avoid using WiFi modem sleep for WiFi/BT coexistence
  • Wi-Fi: Fixed description of unusable API esp_wifi_restart()
  • Wi-Fi: Updated esp_now_fetch_peer description
  • Wi-Fi: Updated table format for esp_wifi_set_max_tx_power()
  • Wi-Fi Driver: added Chinese translation of Wi-Fi Driver and fixed formatting issues in the original English text
  • Updated Getting Started section to get English and Chinese documentation in sync
  • Updated Chinese translation of some documents in the API Guides section: index.rst, ulp, bootloader, external-ram, ulp-risc-v, partition-table, tips-and-quirks
  • SPI: added explanation for the modes
  • SPI Flash: added documents for the 32-bit address support of flash chips
  • SPI_FLASH: updated document to reflect the restrictions of mmap/cache, and modified SPI Flash driver definitions
  • SPI_FLASH: fixed documentation errors in esp_partition.h
  • Updated docs/en/api-reference/protocols/icmp_echo.rst
  • Added libusb linux dependencies to prevent error about running openocd (#4095)
  • Updated the usage of DAC digital controller on ESP32-S2 (#6333)
  • Increase cairo2svg version (#6365)
  • Corrected suggested voltages for ADC of ESP32-S2 and removed full scale voltages for both ESP32 and ESP32-S2 chips
  • Tools: Kconfig documentation page updated with default and range values
  • Tools: Sorted order of menu items in the Kconfig option reference
  • Added User Guide for ESP32-PICO development board
  • Added User Guide for ESP32-PICO-DevKitM-2 development board
  • Added User Guide for ESP32-DevKitM-1 development board
  • Added User Guide for ESP32-C3-DevKitM-1 development board
  • Added layout of ESP-WROVER-KIT board in DXF format
  • Updated Power Management logic for ESP32-S2
  • Added API reference documentation for touch element library
  • Updated "Fatal Errors" chapter
Assets 3
Feb 10, 2021
git v4.4-dev
Pre-release

@projectgus projectgus released this Feb 10, 2021

Documentation for pre-release v4.3-beta1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3-beta1/

ESP-IDF v4.3 is a minor update for ESP-IDF v4.2.

Obtaining v4.3-beta1

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

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

Download an archive with submodules included

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

Changelog

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

Major New Features

  • Support for ESP32-C3 SoC
    • Wi-Fi
      • 802.11 bgn mode
      • 802.11 LR mode
      • Station, SoftAP, sniffer mode
      • ESP-NOW
      • CSI support
      • TX/RX A-MPDU, RX A-MSDU
      • TX Fragment, TXOP
      • WEP/TKIP/CCMP
      • WPA/WPA2-PSK/WPA2-ENT/WPA3-PSK
      • WAPI-PSK
      • ESP-Touch v1/v2
      • Fine Time Measurement(FTM)
      • Device Provisioning Protocol(DPP)
      • WAPI-PSK
      • Network-assisted roaming using 802.11k (Radio Measurements) and 802.11v (BTM) specifications
      • Wi-Fi Modem/Light Sleep
      • Wi-Fi Mesh support
    • Bluetooth
      • BLE 5.0 Controller support
      • BLE Modem/Light sleep support
      • UHCI support
      • Bluedroid host support with BLE5.0
      • NimBLE host support with BLE5.0
      • BLE-Mesh support
    • Security
      • Secure boot
      • Flash encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • HMAC peripheral
      • RNG
      • Digital signature
      • Memory protection
      • mbedtls integration of Digital Signature
    • Peripherals
      • UART
      • Timer group
      • GPIO — Supported, except IO19
      • SPI Master
      • SPI Slave
      • I2C
      • LEDC
      • SigmaDelta
      • RMT
      • ADC
      • ADC DMA
      • SD card over SPI
      • Ethernet over SPI
      • Brownout detector
      • TWAI
      • GDMA
    • System features
      • Cache
      • esp_timer
      • SPI Flash auto suspend and auto resume
      • RTC Slow clock selection
      • Task, interrupt watchdogs
      • Efuse API
      • espefuse.py
      • Stack overflow "canary" detection
      • RISC-V architecture support
      • Watchpoint stack protection
      • Brownout reset
    • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
      • Light sleep MAC/BB power down
      • Light sleep CPU power down
    • Debugging
      • Core dump
      • OpenOCD
    • Protocols
      • Provisioning
      • Other protocols on top of TCP/IP
  • Added more support for ESP32-S2 SoC
    • Touch Element library for touch sensor
    • Waterproof
    • USB Host HAL layer
      • TX A-MSDU
      • FTM
      • DPP
      • WAPI-PSK
      • ESP-Touch v2 support
      • 11kv
      • SPI Slave HD Append Mode
    • ADC calibration scheme v2
      • TinyUSB CDC Device class
      • Async memcpy driver
  • New Wi-Fi features for ESP32 SoC
    * TX A-MSDU
    * FTM
    * DPP
    * WAPI-PSK
    * ESP-Touch v2 support
    * 11kv
  • Updated FreeRTOS, based on upstream version v10.2.0
  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • Light sleep: Added new options to reduce average current in light sleep: PM_SLP_IRAM_OPT, PM_RTOS_IDLE_OPT, WIFI_SLP_IRAM_OPT
  • Preview support for the "ESP32-S3 Beta 2" SoC is provided in v4.3. This SoC is different from the ESP32-S3 production SoC which will be supported in ESP-IDF v4.4, and ESP-IDF v4.3 will not work on the production ESP32-S3. After ESP32-S3 is released, support for "ESP32-S3 Beta 2" is planned to be removed in a future v4.3 bugfix release.

Major Bug Fixes

  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Breaking Changes

  • BLE_Mesh: Previously if starting/stopping BLE advertising when BLE Mesh is enabled, the corresponding events will be notified through the callback registered by esp_ble_mesh_register_prov_callback(). With this MR, the function esp_ble_mesh_register_ble_callback() need to be invoked for registering the callback used for BLE coexistence related functionalities (i.e. ADV/SCAN)
  • esp_tls_wolfssl: Previously an API named wolfssl_tlsext_host_name was inappropriately used for domain (host) name check.
    In earlier case if the domain name was different than the ISSUER field in the peer's server certificate, then the connection might have succeeded (provided skip_common_name = false).
    The old API is now replaced with wolfSSL_check_domain_name, which makes wolfSSL to check if the domain name provided matches with the ISSUER name on the peer's server certificate. With this API change, wolfSSL_connect should return a fatal error in case of a domain name mismatch
  • esp-tls: esp-tls client connection will now return error by default in the absence of server verification option
  • tinyusb: The return value of tusb_init has changed from tusb_error_t to bool in the upstream tinyusb (hathach/tinyusb@d887829)
  • NVS Encryption: "NVS Encryption" feature is now automatically enabled whenever the Flash Encryption feature is enabled.

Future Breaking Changes

Known Issues

  • ESP32-C3 does not support BLE multiple connections.
  • Deep sleep power consumption on ESP32-C3 is higher than expected (currently 0.5mA).
  • Nimble pairing may trigger task watchdog. We can disable CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS in menuconfig to workaround this issue.
  • Occasionally not return from Wi-Fi Mesh esp_mesh_deinit function.
  • ESP32-C3 Bluetooth modem sleep using external crystal cannot work in the condition of 80MHz mininum CPU frequency when Dynamic Frequency Scaling or Automatic Light Sleep is enabled.
  • Skip image validation when exiting deep sleep doesn't work in ESP32-S2 or single core ESP32 unless the option Enable RTC fast memory for dynamic allocations is disabled

Known issues are planned to be fixed before the final v4.3 release.

Bluetooth

Controller

  • Reduce IRAM consumption about 300 bytes
  • Added support of Bluetooth 5.0

Bluetooth Low Energy

  • Fixed exl200, add btdm_disable_adv_delay, fix RPA addr update error

Classic Bluetooth

  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory

Bluedroid

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: -26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: -26555
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Disabled Bluetooth before esp_restart

Classic Bluetooth

  • Fixed crash caused by dividing zero
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • Added protection for ACL-U packet type exchange procedure
  • Rejected connection request if BD_ADDR of peer is same as ours (-26555)
  • Added API to config QoS for Classic Bluetooth ACL link
  • HFP: modified hfp console style by using esp console
  • HFP: first atuomatic connection of HFP
  • HFP: fixed the crash issue when bta_hf_client_sco_co_out_data is called
  • AVRC: fixed the issue that target unhandles set_player_app_value cmd
  • A2DP: added Init & Deinit Event for A2DP
  • A2DP: fixed A2DP sink audio crash
  • A2DP: fixed data stream underrun for A2DP sink
  • Added SPP input module to help users understand secure simple pair
  • Added ESP32 Secure Simple Pair document in SPP examples
  • Improved the documentations of Classic BT API

Bluetooth Low Energy

  • Fixed a potential double free error (#5701)
  • Added support of BLE Authorization
  • Added support of BLE Application Layer Encryption key size check
  • Added support of BLE Read Attribute value by UUID
  • Added support of BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Added connection parameter check
  • Fixed read multi char failed
  • Fixed multi-connection crash
  • Fixed bluedroid repair faild if the two most significant bits of public address is '01'
  • Fixed scan rsp length error
  • Fixed vendor hci memory leak

NimBLE

  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Removed recursive call(apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition(#5825)
  • Added an example to run ICMP echo-reply (PING) and BLE peripheral simultaneously
  • Updated NimBLE submodule to latest upstream release 1.3.0
  • Added API to remove address from whitelist
  • Made set packet length API public

Blufi

  • Fixed an error caused by incorrect conn_id parameters
  • Added a macro to control the compilation of blufi
  • Fixed the issue that sending longer customer data will cause congestion

ESP-BLE-Mesh

  • Updated connection parameters used by GAP Central
  • Added support of receiving heartbeat messages for Provisioner
  • Always need device uuid when adding a device for provisioning
  • Added support of using multiple NVS namespaces to store information by Provisioner
  • Updated the definition of the macro ARRAY_SIZE
  • Use a separate callback for BLE coexistence operations
  • Added support for scanning normal BLE advertising packets
  • Replaced the Zephyr integer types with C99 types
  • Fixed Node ID adv with wrong timeout
  • Enabled updating lighting hsl state
  • Fixed Proxy Client may fail to resend messages
  • Now uses different random for each provisioning

Wi-Fi Coexistence

  • Changed wifi scan duration from 120ms to 100ms

Wi-Fi

  • WPA2-Enterprise: added documentation for WPA2-Enterprise
  • WPA2-Enterprise: updated README.md file for wpa2-enterprise example
  • WPA3: Fixed issue that WPA3 code cannot be disabled by disabling WPA3 flag in Menuconfig (#5971)
  • PMF: fixed an issue that PMF stop working after dynamic mode change
  • ESP-NOW: fixed the bug that esp-now channel config range not correct(#6276)
  • wpa_supplicant: fixed sending of encrypted mgmt frames in PMF connection from supplicant
  • Added support of SHA256 AKM without PMF enabled
  • Fixed EAP Client issue
  • Adjusted max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can't get country
  • Added CSA state check before CSA timer process
  • Used DPORT bus instead of AHB bus to access Wi-Fi MAC and BB register
  • Fixed the crash caused by receiving BAR with TID >=8
  • Revert to report specific reason code when receiving deauth during 4-way-handshake
  • Fixed the issue that tx A-MPDU parameter is not from peer device
  • Fixed the issue that ESP32-S2 fails to get CSI info
  • Fixed the issue that PHY version log could not be disable
  • Fixed the issue of phyqueue in psram
  • Updated PHY version
  • Refactored wifi_interface_t
  • Improved faster WiFi STA connect, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Changed country code last byte to space instead of \0
  • Fixed the issue that Soft-AP cannot forward A-MSDU
  • Fixed the issue that no TBTT is generated in STA+Soft-AP mode when maximum modem sleep is enabled (#6006)
  • Added support of TX A-MSDU
  • Unlock mutex for esp_wifi_80211_tx when out of memory
  • Fixed an issue that esp_wifi_80211_tx can't be used in ap mode
  • Added pairwise cipher configuration support for Soft-AP mode
  • Fixed a crash issue caused by receiving CSA IE with wrong channel
  • Fixed the issue that STA fail to connect open AP after it failed to connect to a WPA3 AP
  • Fixed PMK not saved in NVS for Soft-AP with PSK mode
  • Cleared hotspot bss when auth timeout happens
  • Fixed the MIC comparison logic -CMAC decryption
  • Fixed issue of setting incorrect log_length of NVS misc log
  • Added exception handling for iperf example when scan doesn't find any AP
  • Fixed data length bug when CSI is enabled
  • Fixed a crash when receive an AMSDU larger than 3200 Bytes
  • Fixed crash issue in presence of WEP AP with same SSID

Smartconfig

  • Added support of ESP-Touch v2
  • Fixed the issue when router reply arp late
  • Fixed the issue that ESP-TOUCH failed to find hidden APs

Ethernet

  • Added W5500 Ethernet driver (MAC RAW mode only)
  • Added ETH_CMD_G_DUPLEX_MODE for getting duplex mode (#6436)
  • Deprecated esp_eth_receive

Security

  • Fixed the manual enabling of Secure Boot V2 via espefuse (#6050)
  • efuse: added convenience APIs to work with keys, protection/purpose bits
  • efuse: improved the batch mode that efuse fields can be read inside this mode
  • efuse: batch mode can be called recursively
  • Added HAL and LL for AES accelerator and refactor driver
  • Added support for doing AES-GCM fully in hardware on ESP32-S2 with mbedtls_gcm_crypt_and_tag()
  • Secure Boot V2: Fixed padding issue when the bootloader image size is exactly equal to the size between the bootloader offset and partitions offset when secure boot v2 and flash encryption are enabled
  • Secure Boot V2: Fixed the issue which checks the signature block digest instead of the flash digest during app OTA validation (bootloader validation is not affected).
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)
  • flash_encryption_example: Updated the example to showcase NVS encryption
  • flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)

Peripheral Drivers

  • periph_ctrl: Add support for PHY clock control
  • Extract independent HAL component
  • Fix xtal 32k not oscillate or oscillate too slowly issue for esp32
  • ADC: support API adc2_vref_to_gpio on ESP32-S2
  • ADC: Support adc calibration scheme on ESP32-S2
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • ADC calibration: Added support for calibration scheme v2 on ESP32-S2
  • ADC: remove ESP_LOGD from adc_set_init_code (#6091)
  • ADC_DMA: Fixed IO not initialized properly bug on ESP32
  • Async memcpy: Added new driver async_memcpy
  • Async_memcpy: Support async memory copy on ESP32-S2
  • DAC: Fix DAC influenced by ADC bug by disabling the synchronization operation from ADC1 to DAC
  • Dedicated GPIO: Added Dedicated GPIO driver for ESP32-S2
  • GPIO: Provided API gpio_slp_sel_en, gpio_slp_sel_dis, gpio_slp_set_direction, gpio_slp_set_pull_mode to control GPIO state during sleep.
  • GPIO: Fix the problem that : IF you failed to use a RTC GPIO to wakeup lightsleep, especially when you used low level to trigger it.
  • I2C: Added allocator for clock source choice.
  • I2C: Fixed PM lock release in case of a timeout
  • I2C: Add const to signature of data in master_write function
  • I2C_CXX: Added C++ wrapper for I2C driver (Experimental)
  • I2S: Fixed PDM clock incorrect issue when using APLL.
  • I2S: Fix I2S word-order issue caused by incomplete reset
  • LEDC: Fix the bug that ledc low-sleep channel can not work when chip in light-sleep mode
  • MCPWM: Fixed MCPWM second fault line broken (#6053)
  • MCPWM: add an option to do mcpwm capture on both edges
  • MCPWM: Fix fault pin initialization issue
  • PCNT: Fixed pcnt driver doesn't clear interrupt status properly (#5929)
  • PCNT: Added new example to parse rotary encoder signals in 4x mode
  • RMT: Supported setting loop count at runtime
  • RMT: Support passing user context to RMT translator (#6002)
  • ROM: Extracted UART rom functions into esp_rom_uart.h
  • ROM: Extracted GPIO rom functions into esp_rom_gpio.h
  • SPI: Fixed master HD DMA mode cannot correctly receive data when a TX (no RX) transaction is done
  • SPI Master: Fixed the error log when using SPI_TRANS_USE_TXDATA or SPI_TRANS_USE_RXDATA with data longer than expect
  • SPI_Master: Added dummy check when both mosi and miso are set
  • SPI: Fixed CS polarity configuration issue
  • SPI: Set CS polarity correctly
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset
  • SPI: Fixed crash issue when cs is set to -1 (#5784)
  • SPI: Refactored HAL context and related codes in SPI Master driver
  • SPI: Refactored DMA related functions in SPI drivers
  • SPI: Fixed duplex mode switch issue when switching multiple devices
  • SPI Slave: New driver for the half duplex mode
  • SPI_Slave_HD: Added feature of SPI Slave HD Append Mode
  • SPI_SLAVE_HD: Check if callback is defined before calling the callback
  • SDSPI: Fix the probe issue that forbid sdspi working in highspeed mode
  • Touch: Allow interrupt enable/disable API being called in the ISR on ESP32-S2
  • Touch_sensor: Fixed touch sensor false trigger in sleep mode
  • TWAI: Initialize brp_div field to zero, fixed register field name
  • TWAI: Fixed issue that code in asserts will not be executed in release builds
  • TWAI: Fix size of RX msg count field on the esp32
  • TWAI: Support on ESP32-S2
  • TWAI: Allow TWAI driver to continue to operate whilst the cache is disabled (e.g., during and OTA operation)
  • UART: Fixed UART FIFO read on ESP32 with -O2 optimization
  • UART: Changed buffer argument type of read/write functions void* to be consistent
  • UART: Fix RXFIFO_CNT bug on ESP32
  • UART: Fixed uart module reset issue
  • UART: Fixed issue that uart_wait_tx_done return ESP_OK when failed
  • USB: Fix issue that CLK always reset and swapped pins not working through HAL
  • Tinyusb: Support Tinyusb CDC
  • TinyUSB: fixed a typo in configure_pins (#5355 (comment))
  • TinyUSB: Fixed configure_pins issue when setting pin to fixed level (#5588)
  • TinyUSB: Fixed a strncpy-related warning caused by a wrong argument
  • TinyUSB: Update to the latest upstream version
  • SPI Flash: Fixed issues of cs support and slow read on ESP32-S2
  • SPI Flash: Fix regression in encrypted flash write on ESP32 (#5467)
  • SPI Flash: Added configuration option to select flash write chunk size
  • SPI Flash: Add config option to override inherited flash size from bootloader header
  • SPI Flash: Fixed the incorrect check_idle logic in LL and chip_driver
  • SPI Flash: Patched unlock ROM function, clearing the WEL bit to improve reliability
  • SPI Flash: Fixed failure when initialize external flash on non-SPI1 bus with PSRAM enabled
  • SPI Flash: Fixed ID/size check in spi_flash_chip_generic_detect_size() is too strict (#4248)
  • SPI Flash: added a new feature for supporting spi_flash auto suspend and auto resume
  • SPI Flash: Fixed issue that WEL is possibly left uncleared after some actions
  • SPI Flash: Modified flash timeout threshold for GD chips
  • SPI Flash: Added a config option to disable timeout checking
  • SPI Flash: esp_partition API can be mocked now

Core System

  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • efuse: Fixed the order of writing eFuse blocks in batch mode
  • console: added helper function to install console REPL environment easily
  • pthread: fixed priority inheritance in pthread_mutex_destroy
  • esp_event: AP_STAIPASSIGNED now passes the IP through 'event_data'
  • Correctly detect ESP32-S2FH16/S2FH32 embedded flash in feature flags (#5774)
  • esp_event: fixed misuse of recursive semaphore take/give calls for profiling_mutex (#6102)
  • linker_fragment: added scheme to redirect BSS to external SPIRAM
  • esp_timer: added an option to skip unhandled events
  • esp_timer: added C++ wrapper for esp_timer
  • esp_log: correct timestamp formatting to unsigned integer type (#6226)
  • esp_system: specify esp_gdbstub as a dependency (#6274)
  • cxx: fixed init priority ordering on RISC-V
  • Added debug log for init array functions
  • Fixed lightsleep wakeup failure when power down rtc_peripheral on ESP32-S2
  • Improved 32k xtal startup time on ESP32-S2
  • ULP: fixed a issue where wakeup from ULP only triggers once
  • SOC: fixed incorrect address definition of ROM functions
  • PSRAM: support for esp32-pico-v3-02
  • PSRAM: Fixed 16mbit psram id read error

Debugging

  • core dump: Fixed core dump feature with encrypted flash (#2932)
  • core dump: Non-encrypted core dump partition will always hold plain text data

FreeRTOS

  • Updated FreeRTOS, based on upstream version v10.2.0
  • Placed some additional freertos functions into flash memory to increase free IRAM
  • freertos_hooks: Fix unbalance lock in deregistration for cpu functions (#6275)
  • FreeRTOS static allocation support is now always enabled (previously this was a config option)
  • Fixed a sign conversion warning in a header file (#5838)
  • esp_ringbuf: fixed the linker.lf file to place ringbuffer functions into flash when FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is active

Power Management

  • Added two options named PM_SLP_IRAM_OPT and PM_RTOS_IDLE_OPT to reduce current in light sleep:
    • If you enabled PM_SLP_IRAM_OPT, IRAM size increases by 1427 bytes but possible to sleep longer in light sleep and decrease current
    • If you enabled PM_RTOS_IDLE_OPT, IRAM size increases by 263 bytes but possible to sleep longer in light sleep and decrease current
  • Added new esp_sleep_is_valid_wakeup_gpio() function to check GPIOs available as wake sources
  • Made lightsleep overhead time as accurate as possible to make it wake up more precisely
  • Enabled sleep reject feature, to return from light sleep quicker if the wakeup trigger is set.
  • Fixed issue with garbled UART output in light sleep
  • Fixed issue with crashes entering light sleep under some conditions
  • Provided an option in Menuconfig named PM_SLP_DISABLE_GPIO, which would disable all pins at sleep and recovered them on wakeup
  • Wi-Fi: Made it more accurately to respond TBTT interrupt
  • Wi-Fi: Provided an option in Menuconfig named WIFI_SLP_IRAM_OPT to reduce pover saving active current.
  • Decreased deep sleep current on ESP32-S2
  • Fixed the issue that light/modem sleep current is too high because ADC power is kept enabled after calibration
  • UART: suspend output using XOFF before entering light sleep

newlib libc

  • Reduced RAM usage by combining multiple rarely taken locks into 2 mutexes
  • Fixed for FD_ISSET macro when n==-1
  • Keep esp_rtc_get_time_us can get correct time even when RTC_SLOW_CLK_CAL_REG has been rewritten

LWIP

  • Enabled TCP initial sequence number (ISN) randomization hook
  • Fixed issue of assert "tcp_receive: ooseq tcplen > rcv_wnd"
  • esp_netif: fixed possible use of hostname pointer after its freed (#6048)
  • Added support for configurable LwIP hooks (#6034)
  • Added Kconfig options to enable/disable checksum validation for IP/UDP/ICMP protocols (#6187)
  • pppos_client: fixed a race condition on closing the PPP mode
  • esp-modem: Fixed PPP stack smashing protect failure in OVERALL mode
  • esp-modem: Added access technology used by the modem
  • esp-modem: Added get operator functionality for BG96 and SIM800L (#5750)
  • Added support for dhcp MTU judgement
  • Added DHCP key state transition log
  • Added DHCP option 61
  • Fixed potential crash of ping when zero ping interval supplied
  • Documented that lwIP does not support delete of a task while it is actively waiting on select() or poll()
  • esp_netif: Added methods for conversion IP4/IP6 addresses from their string interpretation
  • esp-netif: Added support for SLIP interface (#4985)

mDNS

  • Fixed wrong mdns source address if lwIP zoning disabled (#6055)
  • Fixed length calculation of mDNS text field (#6114)
  • Fixed the resolver to accept non-strict answers (allowing non empty question field within answers) (#6190)

OTA

  • app_update: Added definition for esp_ota_abort() API (#5331)
  • app_update: Fixed incorrect first byte from esp_ota_get_app_elf_sha256 for -O2 optimization level (#6389)
  • esp_https_ota: Added definition for esp_https_ota_abort() API

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string
  • Fixed buffer overread when esp_http_client_read is called after esp_http_client_perform

HTTP Server

  • Fixed expired x509 certificate in esp_local_ctrl_example
  • Added support for setting websocket subprotocol
  • Fixed ssl_ctx not being freed in case of error (#6143)
  • Added 401, 403 response error code for HTTP server (#5466)
  • httpd/websocket server: Fixed wrong length calculation for longer packets (#6196)

mbedTLS

  • Upgrade to release v2.16.9
  • esp_crt_bundle: Allow verifying of trusted certificates with a weak signature hash algorithm
  • Added software support for Modular Exponentiation for larger MPI values

Bootloader

  • Now prints segment load addresses without 0x prefix to avoid unnecessary decoding by IDF Monitor
  • ESP32-S2: Switched to use of efuse APIs for keys, purposes, wr/rd-protection bits for flash encryption, secure boot

ESP-TLS

  • Updated "tls->sockfd" after the socket is freed internally (#6163)
  • esp_tls_wolfssl: Use correct API to validate domain name with peer's server certificate.
  • Added a menuconfig option to allow users to skip server cert verification for testing purpose
  • Fixed memory leak in esp-tls
  • tcp_transport: enabled TCP keep-alive function in transport level

Websocket

  • Added mutual TLS authentication for websocket (#6059)
  • Added option to propagate control packets to the application (#6307)
  • Added configurable ping interval (#6399)

ESP-MQTT

  • Restore default MQTT_OUTBOX_EXPIRED_TIMEOUT_MS to 30 sec (#6080)
  • tcp_transport: extended error handle to capture socket's errno from tcp_transport
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT, which now includes socket errno (#5906)
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • mqtt_outbox: Removed unused retry_count field from outbox_item_t
  • config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism
  • Added a new event to report deleted messages from outbox if enabled
  • Added a new config option to disable publishing when disconnected (espressif/esp-mqtt#177)
  • Added a new API to enqueue publish messages with qos>0 (espressif/esp-mqtt#155)
  • Added a new config option to use incremental message id instead of random (espressif/esp-mqtt#176)
  • configure_ds.py: Added support to read and parse the efuse summary from ESP32-S2
  • configure_ds.py: Added option for the user to save DS parameters on host machine in ESP32-S2

Storage

  • FATFS: added option FATFS_USE_FAST_SEEK in menuconfig to enable fast seek algorithm (#5625)
  • NVS: fixed partition de-intialization function to only close its own handles
  • NVS: fixed coverage report in Makefile
  • NVS: fixed string comparison in nvs_api.cpp
  • mmap: fixed the issue mmap cannot be called with pointers to psram
  • mmap: Fixed the issue cache not restored after mmap failure.
  • Fixed minor documentation issue in the header file "sdmmc_cmd.h" (#6192)
  • VFS: Return EINVAL when truncate length is less than zero
  • partiton_table: Added two standard partition tables for NVS encryption
  • nvs_flash: Updated "nvs_flash_init" API to encrypt the default NVS partition when "NVS_ENCRYPTION" is enabled

FreeModbus

  • add tcp master and slave support
  • freemodbus: added support for list of area descriptors for each register area
  • freemodbus: moved register read/write callback functions into common slave and support to override in concrete controller port
  • Fixed comm fail when optimization for performance option is active (#4499)
  • Fixed event processing failure after driver destroy

Tools

  • idf.py on Windows handles Ctrl+C event
  • Added support for generating default and range values of the Kconfig options for the documentation
  • Kconfig documentation page updated with default and range values
  • tools: fix python requirement for click?
  • Windows: documented limitation for installation on path which contains white space or parentheses
  • Windows: documented solution for installation on path with Unicode characters
  • Added deprecation warning for Python 2 and Python 3.5 and older
  • Can now set a mirror for all GitHub asset URLs downloaded as part of IDF Tools install process
  • Added pre-installation system check screen to Windows installer for validation of installed Python environment and Windows Defender
  • Clean the state of ESP-IDF git repository after installation (#6182)
  • Added support for Python installed from Microsoft Store
  • Fixed requirements incompatible with Python 2
  • Allow decoding a stack trace in idf_monitor by running gdb in the background
  • Wrap flash binaries into a UF2 file for flashing through USB MSC
  • Added support for C3 target
  • idf.py: modified port detection to find the port with esp device connected by default (#5125)
  • Allow installation on arm64 macOS (#6113)
  • Added ability to disable address decoding using env variable or cmd option (#1679)
  • idf_tools.py: fixed deprecation warnings during tools installation with python 3.8 and newer (#6200)
  • Windows Installer added support for Embedded Python 3.9 which simplifies installation in environments with existing Python from Windows Store or Anaconda
  • Windows Installer and idf_tools.py added support for Espressif PyPI repo to resolve Python Wheels
  • Windows Installer added support for unattended installation
  • Added PowerShell shortcut
  • Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
  • Refactor espcoredump.py. Add dependency construct==2.10.54
  • Update to Ninja 1.10.12 - Solves problem with writing to build files

Build System

  • Add esptool_py_flash_to_partition function to flash a given binary flash to a partition. idf.py encrypted-flash can now flash encrypted and non-encrypted images at the same time if necessary. (for example, spiffs images must be flashed as non-encrypted)
  • Added possibility to choose Linux target to run on host
  • Define IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables during the early expansion phase of component CMakeLists.txt files
  • Added support for honoring ESPPORT and ESPBAUD environment variables when doing idf.py read_otadata and idf.py erase_otadata (#5280)
  • Added loadable elf support for ESP32-S2 and ESP32-C3

External Libraries

  • cJSON: upgraded to release v1.7.14, new feature additions and small bug-fixes

Examples

  • Fixed socket examples to use sockaddr_storage for both IPv4 and IPv6 addresses
  • Fixed expired x509 certificate in esp_local_ctrl_example
  • SMTP Client: fixed missing newline causing incorrect attachment issue (#6098)
  • SMTP Client: fixed content type of the attachment
  • IPERF: fixed issue that iperf example parameter opt isn't initialized (#5681)
  • Fix invalid clock source in i2c_self_test example (#6216)
  • ble_mesh: Added Aligenie BLE Mesh example
  • ble_mesh: Delete local variables to avoid null global variables in coexistence example
  • esp_http_client: updated esp_http_client example to demonstrate partial HTTP downloads
  • RMT: added musical buzzer example, based on RMT loop mode
  • Updated the https_request_example to showcase cacert_buf, global ca_store
  • Fixed the issue of restart in esp-now blocking system
  • Power Management: Added power consumption graphs for wifi/power_save and ulp examples
  • Do not check the return value of esp_wifi_connect()
  • Do not check the return value of Wi-Fi scan
  • Allow access SD card though file_server example
  • MCPWM: Fix period calculation bug when frequency too high
  • UART: fixed echo example crash when UART ISR not disabled with cache (placed in IRAM)
  • Matrix Keyboard: Added matrix keyboard example, based on Dedicated GPIO driver

Documentation

  • Provided comparison of key features of ESP32, ESP32-S2 and ESP32-C3 chips
  • Wi-Fi: Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
  • Wi-Fi: Updated description to avoid using WiFi modem sleep for WiFi/BT coexistence
  • Wi-Fi: Fixed description of unusable API esp_wifi_restart()
  • Wi-Fi: Updated esp_now_fetch_peer description
  • Wi-Fi: Updated table format for esp_wifi_set_max_tx_power()
  • Wi-Fi Driver: added Chinese translation of Wi-Fi Driver and fixed formatting issues in the original English text
  • Updated Getting Started section to get English and Chinese documentation in sync
  • Updated Chinese translation of some documents in the API Guides section: index.rst, ulp, bootloader, external-ram, ulp-risc-v, partition-table, tips-and-quirks
  • SPI: added explanation for the modes
  • SPI Flash: added documents for the 32-bit address support of flash chips
  • SPI_FLASH: updated document to reflect the restrictions of mmap/cache, and modified SPI Flash driver definitions
  • SPI_FLASH: fixed documentation errors in esp_partition.h
  • Updated docs/en/api-reference/protocols/icmp_echo.rst
  • Added libusb linux dependencies to prevent error about running openocd (#4095)
  • Updated the usage of DAC digital controller on ESP32-S2 (#6333)
  • Increase cairo2svg version (#6365)
  • Corrected suggested voltages for ADC of ESP32-S2 and removed full scale voltages for both ESP32 and ESP32-S2 chips
  • Tools: Kconfig documentation page updated with default and range values
  • Tools: Sorted order of menu items in the Kconfig option reference
  • Added User Guide for ESP32-PICO- development board
  • Added User Guide for ESP32-PICO-DevKitM-2 development board
  • Added User Guide for ESP32-DevKitM-1 development board
  • Added User Guide for ESP32-C3-DevKitM-1 development board
  • Added layout of ESP-WROVER-KIT board in DXF format
  • Updated Power Management logic for ESP32-S2
Assets 3

@projectgus projectgus released this Jan 29, 2021

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

ESP-IDF v4.1.1 is a bugfix update for ESP-IDF v4.1. ESP-IDF v4.2 is the latest stable release at time of writing.

ESP-IDF v4.1.x will be supported until February 2023, according to the ESP-IDF Support Policy.

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

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

Download an archive with submodules included

Attached to this release is an esp-idf-v4.1.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.1.1.zip

Changelog

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

Major Bug Fixes

  • Bluedroid: Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558
  • Bluedroid: Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: (CVE-2020-26555)
  • Bluedroid: Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability.
  • Bluedroid: Fixed the issue that bluedroid may accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555).
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Bluetooth

Classic Bluetooth

Controller

  • Fixed BT controller dead if CLKN overflow
  • Provided a workaround for an issue when entering sniff mode
  • Rewrite ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Remove dummy assert when ESP32 receives a passkey request
  • Fixed incorrect time computation and replaced the use of "+" with CLK_ADD2()
  • Rewrite ld_acl_frm_isr to make clock read more precise
  • Fixed memory corruption caused by bluetooth memory release

Bluedroid

  • Separated BTA_JV_L2CAP to reduce bin size of SPP profile

  • SPP: Added API esp_spp_stop_srv()

  • SPP: Fixed the error parameter in spp examples (#5408)

  • SPP: Moved RFCOMM rx flow control in btc layer

  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000

  • SPP: Fixed task watch dog when running SPP demo in VFS mode

  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled

  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API

  • HID: Added support for more Bluetooth HID devices (#5481)

  • HFP AG: fixed error of AG API return line (#5554)

  • HFP AG: fixed AG Example Outgoing Callback Not Triggered (#4967)

  • HFP: Enabled PCM config in menuconfig and controller

  • A2DP: Added information to Application layer that the A2DP is connecting to peer device

  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up

  • A2DP: Added a2dp init & deinit state variable to inidcate a2dp statement

  • Separate A2DP and AVRC init procedure and set the sequence of initialization of them

  • Added bool open_fail to choose whether post disconnection event to app layer

  • GAP: Fixed read rssi delta issue in bredr (#5660)

  • GAP: Authentication fixes in Legacy and Secure Connection

  • GAP: Calling esp_bt_gap_get_bond_device_list in some scenarios may return invalid Bluetooth address (#5395)

  • GAP: Fixed redundant events of ESP_BT_GAP_DISC_STATE_CHANGED_EVT occurring in registering GAP callback function

  • Added BTC Init failure protection

  • Changed state machine set before EVT up to APP layer in some cases

  • Fixed BTC task name mismatch (#4966)

  • Fixed issue that bluedroid enable takes long time

  • Fixed the issue that state failed to synchronize between controller and host when disconnected

  • Fixed crash caused by calling a2dp_deinit directly when a2dp connected

  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558

  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: (CVE-2020-26555)

  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability.

  • Fixed the issue that bluedroid may accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555).

Bluetooth Low Energy

Controller

  • Added BLE connection paramter check
  • Fixed channel map instant reverse
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed cache disable crash
  • Fixed tx_prog insert error
  • Changed the default value of the TxOctets support length from 27 to 251
  • Fixed hci timeout, added timer to monitor scan event
  • Fixed assert(9, 10) when rx and evt_end interrupts exist at the same time, use the information of rx to determine the execution order
  • Fix ble assert(1024, 0), ADV_UNDERRUN error
  • Fixed ble assert(512, 0), IFS_UNDERRUN error
  • Fixed assert(10, 9) when the AFPM happens
  • Fixed exl200, add btdm_disable_adv_delay, fix RPA addr update error
  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory
  • Added protection for ACL-U packet type exchange procedure
  • Fixed a potential double free error

Bluedroid

  • Added support of BLE Authorization
  • Added support of BLE Application Layer Encryption key size check
  • Added support of BLE Read Attribute value by UUID
  • Added support of BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Fixed the btu task watchdog timeout during multi-connection
  • Fixed name typo of BTA_GATTS_CREATE_SRVC_EVT event (#5446)

Blufi

  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection
  • Fixed an error caused by incorrect conn_id parameters
  • Add a macro to control the compilation of blufi

NimBLE

  • Added Non Resolvable Private Address support to existing Host based Privacy framework
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c (apache/mynewt-nimble#843)
  • Check for received buffer size less than configured event buffer size
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Remove recursive call (apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition (#5825)

ESP-BLE-Mesh

  • Updated connection parameters used by Central
  • Added Node local NetKey & AppKey get/add/bind functions
  • New Kconfig options introduced to reduce code size
  • Fixed wrong description of BLE Mesh server model auto_rsp flag (#5966)
  • Fixed info not erased when deinit node with "erase_flag" set to true
  • No store pending timeout will be used when node is not provisioned or Provisioner is disabled with erase operation performed
  • Make mesh stack net buf debug option invisible
  • Updated mesh device property to v2
  • Check device role when enabling node/Provisioner functionality
  • Added mutex to protect settings operations
  • Optimized Provisioner erase info operations
  • Optimized Provisioner delete device function
  • Check if stack is initialized before initializing vendor client
  • Fixed not using the latest iv_index for provisioning
  • Synchronized a few BLE Mesh updates from Zephyr
    • Using callbacks for model init operations
    • Optimized model recv message operation
    • Added net_buf_simple_init_with_data
    • Porting the full implementation of tinycrypt
  • Avoid unnecessary assert in mesh stack
  • Fixed updating ccc handle incorrectly when using NimBLE host
  • Client model related miscellaneous optimizations
  • Fixed handling health current status incorrectly
  • Added proxy cfg pdu length check
  • Reworked using dev flag to check scan status
  • Added more checks of input provisioning bearers
  • Updated options of using PSRAM for BLE Mesh
  • Updated send_ttl in btc layer when receiving a message (#5300)
  • Added support to get node info with pre-configured node name (#5397)
  • Fixed compile error when only proxy enabled
  • Fixed the issue that recv_rssi of received messages is always 0 (#5505)
  • Added a few checks of model status with variable length
  • Added check of if subnet exists before updating beacon_sent
  • Fixed the issue of DO NOT #define bool when compiling in C++ (#5100)
  • Fixed wrong log output when using bt_hex
  • Fixed node failed to send messages to 0xFFFF
  • Added support of subscribing group address by a local model (#4044)
  • Added BLE mesh coex test demo

Wi-Fi Coexistence

  • Fixed an issue that BLE terminate ack packet cannot be received with a high probability in coex mode
  • Rewrite BLE dynamic priority in connection establishment
  • Rewrite BLE dynamic priority to fix ble disconn in conn_param_update/channel_map_update
  • Fixed status bit set error when conn fail
  • Fixed ble dynamic prio with latency
  • Reduced image size of Wi-Fi and Bluetooth by not linking coexist code

Wi-Fi

  • Update WiFi toolchain to 1.22.0-97-gc752ad5
  • Added Failure reason code for WPS event
  • Added IRAM_ATTR periph_ll_wifi_bt_module_enable_clk_clear_rst and IRAM_ATTR periph_ll_wifi_bt_module_disable_clk_set_rstto fit O0 optimization level
  • wpa_supplicant: fixed wpa memory leak in softap mode
  • wpa_supplicant: Allow NULL-padded WPS attributes
  • wpa_supplicant: Bypass WPS-Config method validation
  • wpa_supplicant: Deinit wpa2 states in wifi deinit
  • wpa_supplicant: added support for mbedtls tls handshake
  • wpa_supplicant: fixed invalid pointer deference and memleak
  • wpa_supplicant: fixed IOT issue with latest freeradius (#5273)
  • wpa_supplicant: fixed WPA3 and WPA2 transition related failures
  • wpa_supplicant: fixed linker errors depending on link order on some systems (#5641)
  • wpa_supplicant: increased PMK lifetime to 100 days
  • Replaced periph_module_enable/disable by periph_wifi_bt_common_module_enable which are in IRAM
  • Deleted duplicated spinlock and counter
  • Fixed the crash when wifi stops after deinit
  • Fixed an issue when setting TX DMA buffer above 32 would not take effect
  • Configure bandwidth and phy mode to store NVS
  • Added TBTT update when AP reset TSF
  • Fixed the issue of regdomian update
  • Added API to get available internal heap size
  • Fixed the issue of memory stepped on when reorganizing WiFi fragment packets
  • Do not reset softAP's TSF except it restarts
  • Added sending sta connection event again after ap sent disconnect event
  • Added API of setting/getting inactive time
  • Fixed the issue when station connects to hidden AP, fails to update rssi value of hidden AP
  • Set default AP handlers in wifi_create_and_start_ap() (#5844)
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Modified LR for ESP32
  • Optimize some debug logs for probe response
  • Fixed the issue of no event for connection
  • Fixed an issue for timestamp check, didn't disconnect AP when AP's timestamp decrease abnormally
  • Fixed obsolete interface gethostbyname (#4510)
  • Disabling Menuconfig option "Enable WPA3-Personal" now disables WPA3 code, reduces code size by around 7.7kB (#5971)
  • Fixed PMF related issue
  • Implemented ESPNOW + PMF coexistence
  • Optimize 4-way handshake failure time
  • Fixed null pointer dereferences in MGMT RX
  • Fixed esp_wifi log levels
  • Added wpa_supllicant debug logging as a configurable option
  • Fixed high loss ratio of receiving broadcast data on ESP32-S2 station when it connects to an ESP32-S2 softAP
  • Fixed links to example directories for fast_scan and scan (#5186)
  • Shortened the TCP timer intervals
  • Fixed an issue that PMF stop working after dynamic mode change
  • wpa_supplicant: Fixed NULL pointer dereference in EAP Client

ESP-WIFI-MESH

  • If a FIXED-ROOT root is set by esp_mesh_set_type or esp_mesh_set_parent, its ie.mesh_type will be changed to MESH_ROOT before it connects to the router
  • Release esp_mesh_recv_toDS when a root becomes a non-root
  • esp_mesh_set_type supports MESH_IDLE and MESH_STA
  • Fix ie.rc_rssi is not updated during scan and vote
  • Fix parent switch causes ie.mesh type does not match to ie.layer
  • Fix during root switch, the original root doesn't disconnect from the router after it receives the switch request from the new voted root. (root switch happens by invoking esp_mesh_waive_root)
  • Fix the routing announce timer is not stopped right after a non-root becomes a root
  • Modify to select a parent candidate with less ie.assoc when doing parent switch
  • Remove coexist warnings in ESP_WIFI_MESH
  • Fix a FIXED-ROOT root does not reconnect to the router when the disconnect reason is too many
  • Add esp_mesh_print_scan_result for debug
  • In flush_upstream_packets, modify not to clear the values of mesh_xonseq for node itself and children nodes
  • Modify not switch to a parent candidate which has the same layer and assoc as the current parent
  • Fix parent monitor function isnot triggered anymore when the parent candidate is cleared without sending an event to mesh layer
  • Fix a new voted root does not reconnect to the router if the rssi is weak

Ethernet

  • Added Ethernet driver flow control
  • Added the support of pin emac task to core
  • Fixed Ethernet RX issue, handle rx early event
  • Support PHY power on timeout (#5425)
  • Insert mininum assert time for PHY HW reset (#5528)
  • Fixed C++ linkage moving extern "C" after includes (#5699)

Peripheral Drivers

  • ADC: fixed DAC influenced by ADC bug by disabling the synchronization operation from ADC1 to DAC
  • ADC: fixed hall read, invert, pattern table issues
  • ADC: fixed GPIO init bug in DMA mode on ESP32
  • FREEMODBUS: highlight long frame buffer limitations in the documents
  • FREEMODBUS: fixed event processing failure after driver destroy (#5275)
  • I2C: fixed issue of I2C slave rxfifo_full interrupt enabled incorrectly
  • I2S: fixed I2S word-order issue caused by incomplete reset (#5410)
  • MCPWM: fixed fault pin initialization issue
  • PCNT: fixed issue in clear interrupt status
  • RMT: fixed TX data truncated issue when memory block > 1 (#5992)
  • RTCIO: fixed the issue in force hold disable
  • SPI: Set CS polarity correctly
  • SPI: turned off DMA before CPU reset to avoid memory corruption after the reset
  • TWAI: fixed size of RX message count field on ESP32
  • TWAI: removed asserts used for program logic
  • UART: fixed RXFIFO_CNT bug on ESP32
  • UART: fixed issue that uart_wait_tx_done return ESP_OK when failed
  • UART: fixed uart module reset issue
  • UART: fixed uart_ll_is_tx_idle to inline into handler correctly when opt for size (#5694)
  • UART: apply FORCE_INLINE_ATTR to all UART LL functions to inline them ccorrectly with "-O2" option
  • PSRAM: Fixed the read id failure for 16mbit PSRAM
  • SDMMC: fixed the probe issue that forbid sdspi working in high speed mode
  • SDMMC: Added support of checking slot_config for null before using it (#5000)

Core System

  • Added soft solution for esp32 eco3 live lock issue
  • Added PSRAM stack check in backtrace
  • FreeRTOS: Increased portmux timeouts to avoid crashing when using debug feature (#3629)
  • FreeRTOS: Fixed clobbering of a4 while spilling register windows (#5758)
  • panic: Skip over the first invalid PC in case of InstrFetchProhibited
  • FreeRTOS: Fixed compilation warning at -O2 level (#5525)
  • shared_stack: Fixed task stack not being replaced by shared stack correctly
  • Fixed anti-rollback feature memory map bug for partition size greater than 3.2MB (#5911)
  • esp-event: AP_STAIPASSIGNED now passes the IP through 'event_data' (#3605)
  • pthread: Fixed the issue when pthread_mutex_destroy is used to release mutex, pthread_mutex_lock_internal is used which increased uxmutexehold and no recovery base priority
  • Switched SPIRAM stack in esp_restart_noos() to internal stack (#5107)
  • Added new esp_efuse_write_field_bit() convenience function

Debugging

  • core dump: fixed error reported for blank partition
  • core dump: fixed size of memory region read by espcoredump.py

newlib libc

  • Fixed adjtime, returns the amount of time remaining from any previous adjustment (#5194)

LWIP

  • esp_netif: Removed restarting DHCP client/server if it has already been started
  • esp-netif: ppp netif to use netif_is_link_up() to update interface state (#5069)
  • esp-netif: fixed PPP interface to call set_default_netif() from lwIP context
  • esp_netif: Added support for Tx by reference (optimization for WiFi TX performance)
  • Fixed the issue with Ping using custom payload size receiving fixed size
  • Updated LwIP TCP rto time to be configurable
  • IPv6: Fixed the issue that packets exceeding MTU can still be sent and received when IP fragmentation is turned off
  • IPv6: Fixed the issue that IPv6 ND6 queuing too much packets cause no memory issue
  • IPv6: Fixed sending ipv6 multicast data when source address is null
  • IPv6: Fixed the issue of failing to send ipv6 ping packet
  • Fixed the issue of UDP packets loss in ARP in UDP tx performance testing
  • Added custom TCP initial sequence number (ISN) randomization hook
  • Fixed missing C++ header guards in netdb.h (#5900)
  • Fixed the issue that the structure cannot contain IPv4 and IPv6 at the same time
  • Fixed bug for tcp recv assert

mDNS

  • Added support for queries in responses, so the mDNS responder works correctly with lwIP resolver (#5521)
  • Fixed query ID in responses (#5574)
  • Fixed wrong mdns source address if lwIP zoning disabled (#6055)
  • Fixed the resolver to accept non-strict answers (allowing non empty question field within answers)

Provisioning

  • BLE provisioning: added check for valid ble read offset (x)
  • protocomm_httpd: Restart security session if request is received on a new session
  • Use memcpy instead of strncpy for copying SSID (#5866)
  • wifi_provisioning_manager: fixed issue faced while adding 2 or more endpoints in wifi_provisioning_manager

TCP Transport

  • Fixed issue in SSL mode: if esp_transport_poll_read function is used, the cache data in mebdtls will block
  • Fixed internal DNS resolve function to use getaddrinfo() instead of gethostbyname()

HTTP Server

  • Fixed an issue which could cause issues with LRU purge
  • Updated LRU counter on accepting a new connection (#3851)

HTTP Client

  • Fixed error handling in esp_http_client_read and esp_https_ota_perform (#4960)

mbedTLS

  • Updated to mbedTLS release v2.16.7
  • Fixed result of mpi_montgomery_exp_calc() when Z is not initialized (#5605)
  • Don't compile hardware MPI & SHA files if disabled in config

ULP

  • ulp: fixed ULP assembler version detection for localized systems

Bootloader

  • Fixed bootloader_common_get_sha256_of_partition() which can handle a long image ()
  • bootloader_support: don't check signature when JTAG is attached (#4734)
  • Fixed esp_get_flash_encryption_mode() (#5747)

ESP-TLS

  • esp_tls_wolfssl: fixed incorrect error message after handshake fails
  • esp-tls: enabled TLS renegotiation using explicit API call
  • openssl: Fixed verification mode conversion to mbetls modes to make it more strict

Websocket

  • Updated the client to abort the connection if send fails
  • Fixed possible deadlock if stop called from event handler
  • Fixed posting the disconnect event twice on read error
  • Fixed possible deadlock in starting the client after being stopped while sending data
  • Updated the client to block timeout times when set disable_auto_connect

ESP-MQTT

  • SSL: Added config option for skipping common name check (espressif/esp-mqtt#158)
  • SSL: Added support for tls with secure element (ATECC608A) (espressif/esp-mqtt#156)
  • Websocket: Allow the query part of the uri to be a part of the path (espressif/esp-mqtt#161)
  • Config: Add check for consistency between config settings
  • Fixed esp_mqtt_client_stop deadlock ( espressif/esp-mqtt#163)
  • Added dispatch error event for read errors (#5704)
  • Cleanup expired messages when offline (#5668)
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • mqtt_outbox: Removed unused retry_count field from outbox_item_t
  • config: Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism

Security

  • Secure Boot: Fixed Secure Boot signing step on Windows when using CMake (#5557)
  • Secure Boot: Added cpp macro guards in esp32 secure boot rom functions (#5878)
  • Secure Boot: Fixed enabling of Secure Boot V2 with pre-burned key digest (#6050)
  • Added ESP32 V3 "UART Download Disable" efuse option
  • Secure Boot: Fixed the issue when the bootloader image size is exactly equal to the size between the bootloader offset and partitions offset when secure boot v2 and flash encryption are enabled
  • Secure Boot: Fixed the issue which checks the signature block digest instead of the flash digest during OTA validation (note: not a security issue as the bootloader will still refuse to boot the incorrectly signed app and fall back to the existing one.)
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Storage

  • NVS: Allow specifying custom partition by esp_partition_t pointer (#5172)
  • vfs: Support setting UART line endings for specified UART number
  • SPI_FLASH: Don't call vTaskDelay in non-os context, fixing situation when coredump is triggered from an interrupt handler
  • SPI_FLASH: fixed the write performance regression in new API after v4.0
  • SPI_FLASH: fixed the regression of non-quad mode by default chip driver, bugs in CS init, and add_device

Power Management

  • Sleep: enable sleep reject when entering light sleep

External Libraries

  • Updated to mbedTLS release v2.16.7

Tools

  • Update toolchain to esp-2020r3
  • Toolchain: disable C++ exception FDE sorting to save RAM
  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'
  • Added deprecation warning for Python 2 and Python 3.5 and older
  • C++: fixed non-working init_priority attribute and moved all C++ init tests to separate file (#5038)
  • Don't generate pyc files
  • idf.py: Added "idf.py python-clean" command to clean Python bytecode files
  • idf.py: Now disables CMake uninitialized variable warnings by default (#5753)
  • Mention ESPPORT and ESPBAUD in idf.py --help (#5461)
  • mfg_util: Update file handling to maintain line endings across various OS (#4888)
  • Fixed Python 3 incompatibility for building with Eclipse on Windows
  • gdb: Modify PC in case of invalid PC
  • docker: Added libpython2.7 in order to satisfy GDB dependencies (#5817)
  • Fixed path handling errors in gen_esp_err_to_name.py for Windows
  • ldgen: Added support for paths with Unicode characters in archive files parsed by ldgen (#5996)
  • esptool: Updated to fix Python 3 key generation for Secure boot v2 (#5786)
  • parttool.py: Add file stream parameter and log stdout and stderr to same stream
  • Added check for existence build directory

Build System

  • cmake: Fixed issue with setting defaults in idf_build_process (#5053)
  • cmake: Fixed C identifier generation from embedded file (#4927)
  • idf_as_lib example now places sdkconfig file outside the build directory
  • Now always logs the sdkconfig file path from CMake (#5251 (comment))

Examples

  • ble_mesh: Fixed example README & tutorial link errors
  • ble_mesh: Added more checks of input parameters
  • ble_mesh: Added nvs operations for some mesh examples (#5359)
  • ble_mesh: Added result check of mesh initialization
  • ble_mesh: Fixed example compile warning (#5745)
  • ble_mesh: Fixed sensor data wrong iteration (#5818)
  • ble_mesh: Delete local variables to avoid null global variables in coexistence example
  • Gatt_Client_Example_Walkthrough: added 128-bit UUID description
  • ble_hid_device_demo: fix build if building with c++ (#5191)
  • Example connect: Added unregister shutdown handler on disconnection in Common connect component
  • PPPoS Client: fixed esp_modem switch mode timeout and RX timeout interrupt (#3506, #4324)
  • PPPoS client: fixed UART configuration to use REF_TICK and install the driver after proper config (#4616, #4904, #4801)
  • [esp_local_ctrl_example] fixed expired x509 certificate
  • Fixed an issue in IPerf example
  • Fixed a broken link to examples/temp_sensor_esp32s2

Documentation

  • Added documentation for ble_hs_pvcy_rpa_config() API in its declaration
  • Added note about ESP-IDF FreeRTOS version
  • Added description of python-clean command
  • Added profile file name used by zsh shell
  • Fixed setup instructions in the main README and fixed broken links
  • Updated Versions file in line with the latest Support Policy document
  • Removed potentially confusing links to building the toolchain from scratch from from Getting Started guide
  • Specify that sleep wakeup source restrictions apply to all current ESP32 revisions (#4681)
  • Updated Chinese translation for get-started/index.rst file and fixed minor mistake in the EN version of the file
Assets 3

@projectgus projectgus released this Dec 7, 2020

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

ESP-IDF v4.2 is a minor update for ESP-IDF v4.1.

ESP-IDF v4.2.x will be supported until June 2023, according to the ESP-IDF Support Policy. The Service Period (during which this version is recommended for new projects) is until December 2021.

Major New Features

  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Support for ESP32+ATECC608A (ESP32-WROOM-32SE) platform along with sample application
  • Added feature to utilize residual IRAM as data memory for ESP32 single core configuration
  • Added support of Bluetooth 5.0 for ESP32
  • Added ESP-HID Component
  • WiFi: Added and utilize WPA3/WPA2 Mixed mode Authtype
  • WiFi: Added support of multiple phy init data
  • WiFi: Added wpa_supplicant parsing support for WEP40 key
  • ESP-WIFI-MESH: Support chain topology
  • ESP-WIFI-MESH: Support mesh network power save function (Beta version)
  • Support for ESP32-S2 SoC
    • Wi-Fi
      • Wi-Fi driver
      • Wi-Fi modem sleep
      • Wi-Fi with automatic light sleep
    • Security
      • Flash & PSRAM encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • Digital signature
      • HMAC
      • Secure Boot V2
    • Peripherals
      • UART
      • Timer group
      • GPIO
      • SPI Master
      • SPI Slave
      • I2C
      • I2S
      • LEDC
      • PCNT
      • SigmaDelta
      • RMT
      • USB Device
      • Touch sensor
      • ADC
      • DAC
      • SD card over SPI
      • Ethernet over SPI
      • RTC interrupts
      • Brownout detector
      • Temperature sensor
      • ULP coprocessor (RISC-V)
    • System features
      • Cache
      • esp_timer
      • SPI Flash
      • PSRAM — 2MB
      • I/D RAM separation
      • OTA
      • RTC Slow clock selection (e.g. 32k XTAL)
      • Task, interrupt watchdogs
      • Efuse API and espefuse.py
      • Console over USB
      • DFU flashing
      • CDC flashing
      • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
    • Debugging
      • Core dump
      • app_trace
      • Systemview
      • OpenOCD
    • Protocols
      • Modbus
      • Provisioning
      • Other protocols on top of TCP/IP

Known Issues

  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet. This issue is under active debugging.
  • When Wi-Fi mesh power save is enabled, mesh performance is not desirable on large networks (>50 nodes)
  • Can't discover devices in limited discovery inquiry scan mode by general discovery

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

Bluetooth

Classic Bluetooth

Controller

  • Fixed the issue that when host runs different core from controller and sleep enabled,HCI timeout may occur
  • Added user invisible kconfig for BT MAC offset (#5320)
  • Fixed time jitter in FHS during role switch
  • Fixed time jitter in first POLL packet during role switch
  • Fixed failure in receiving EDR packet after role switch
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Set non-zero initial value for BT sleep clock cycle to avoid div-by-zero error in function "btdm_us_2_lpcycles" when BT modem sleep is not enabled
  • Fixed assert when creating connection cancellled
  • Fixed ASSERT for RXDESC
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • Fixed ASSERT in ld_pscan.c at line 1032
  • Fixed free lmp tx buf in EM in the procedure of handling LMP_detach_Req when not received the last acknowledge from peer device and separate them by ACL State
  • Fixed no mode change event reported when slave initiates unsniff procedure and a transaction collision occurs
  • Fixed interrupt WDT timeout due to interrupt disabled period
  • Fixed Connection fail in loop
  • Fixed ASSERT(25,0) in lc_task.c
  • Disabled frequent warning log in ld_acl
  • Fixed future events scheduling error in case of wifi and bluetooth
  • Fixed clk offset error in ld_acl.c
  • Fixed assert issue and null pointer issue in controller
  • Fixed BT controller dead if CLKN overflow
  • Added a workaround for a hardware bug when entering sniff mode
  • Rewrote ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Removed dummy assert when ESP32 receives a passkey request

Bluedroid

  • Separate BTA_JV_L2CAP for less bin size
  • Fixed cases having fallback to link up event
  • GAP: Fixed error EIR type in config eir event
  • GAP: fixed the issue when calling esp_bt_gap_remove_bond_device to remove a bonded device and then calling esp_bt_gap_get_bond_device_list, it may return invalid Bluetooth address (#5395)
  • SPP: Added API esp_spp_stop_srv()
  • SPP: Fixed task watchdog when running SPP example in VFS mode
  • SPP: Fixed the error parameter in spp examples (#5408)
  • HID-Host: Added HID Host support in Bluedroid
  • A2DP: Fixed the issue that A2DP_SINK example cannot successfully compile when Compiler Optimization Level is performance (O-2)
  • AVRCP: Replaced U+0092 with regular apostrophes in avrc_defs.h (#4667)
  • HFP-AG: Fixed connection failure and crash when receiving unknown AT command
  • HFP-AG: Fixed error of return line in AG API (#5554)
  • HFP-AG: Fixed AG audio crash (change the return position)
  • HFP: Enabled PCM config in menuconfig and controller
  • Fixed the issue that bluedroid enable takes long time
  • Fixed read rssi delta issue in bredr (#5660)
  • Updated read rssi related function names
  • HFP-AG: fixed Ag Example Outgoing Callback Not Triggered (#4967)
  • SPP: Moved RFCOMM rx flow control in btc layer
  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000
  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API
  • Fixed the issue that state failed to synchronize between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled
  • SPP: added protection for SPP api
  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up
  • Added limitations to use of A2DP and AVRCP because of their coupling in the implemetation
  • Fixed BTC task name mismatch (#4966)
  • Added BTC Init failure protection

Bluetooth Low Energy

Controller

  • Added BLE connect parameter check
  • Fixed channel map instant reverse
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed ble crash issue triggered by ble event irq miss(0x20000) (d2a1d18d)
  • Fixed the crash when controller disabled and then re-enabled for ble
  • Fixed the missed channel map update when the slave latency is greater than 0.
  • Fixed the missed channel map update when the instant value is 0
  • Fixed assert(10, 9), when the AFPM happens
  • Fixed tx_prog insert error
  • Fixed HCI timeout
  • Added timer to monitor scan event
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed the issue that the ble terminate ack packet cannot be received with a high probability in coex mode
  • Fix assert(9, 10), Insert the llcp packet to the top of the tx_preg linked list
  • fixed memory damage caused by bluetooth memory release
  • Fixed no event end isr sometimes when scanning
  • Fixed can not disconnect issue due to supervision timeout when LLC is in LLC_DISC_BUSY status

Bluedroid

  • Added API to query the number of available buffers for the current connection
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Changed HCI task size back to 2048
  • Fixed the issue of incomplete data packets caused by disordered acl data packets
  • Fixed ble memory leak issue, buff_semaphore was not released
  • Added HID Host and Device support in Bluedroid
  • Added some general HID utilities and definitions to help integrate with other stacks and native USB
  • Fixed the issue that bluedroid task pinned_to_core doesn't take effect
  • Authentication fixes in Legacy and Secure Connection
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed btc disable crash some times
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the btu task watchdog timeout during multi-connection

Blufi

  • Reply with an error response when the format of the received data packet is wrong
  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection

NimBLE

  • Added menuconfig option for NimBLE host flow control
  • Added Non-Resolvable private address (NRPA) support
  • Added NimBLE config options in sdkconfig.rename
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Added ble_hs_lock in ble_gap_unpair: upstream upstream (apache/mynewt-nimble#584)
  • Added Host based privacy (RPA) feature support
  • Added IRAM allocation provision under nimble_platform_mem_malloc()
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c: upstream (apache/mynewt-nimble#843)
  • Included changes in blecent example: upstream (apache/mynewt-nimble#702)
  • Fix checking for NOP in ble_hs_hci_rx_evt: upstream (apache/mynewt-nimble#738)
  • Fixed check for static random address & add MSYS_1 in menuconfig
  • Fixed NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT in esp_nimble_cfg and bleprph README
  • Fixed build failures due to non static declarations in RPA feature (#4413)
  • Reset master and slave states on host reset
  • Use macros for log level filtering which reduces the size of the compiled binary (espressif/esp-nimble#6)
  • Fix NULL pointer passed as a parameter: upstream (apache/mynewt-nimble#701)
  • Pairing procedure abort on unexpected req: upstream (apache/mynewt-nimble#710)
  • Fix conn flags after pairing: upstream (apache/mynewt-nimble#730)
  • Remove notification for update process timeout (Vol 6, Part B, section 5.2 ): upstream (apache/mynewt-nimble#782)
  • CCCD related fixes: upstream (apache/mynewt-nimble#790) and (apache/mynewt-nimble#804)
  • Host based Privacy (RPA) related fix: (espressif/esp-nimble#7)
  • Added host_rcv_pkt event buf size check

ESP-BLE-Mesh

  • Miscellaneous modifications for Provisioner
    • Support Provisioner persistent functionality
    • Added a function to set Provisioner static oob value
    • Added a function to set Provisioner unicast address
    • Added a function to provision devices with fixed address
    • Added a function to store node composition data
    • Added a function to get node with device uuid
    • Added a function to get node with unicast address
    • Added a function to delete node with device uuid
    • Added a function to delete node with unicast address
    • Added a function for Provisioner to update local AppKey
    • Added a function for Provisioner to update local NetKey
    • Fixed Provisioner entering IV Update procedure
    • Fixed Provisioner failed to publish messages
    • Provisioner ignores msg from removed node
    • Fixed Provisioner provisioning deadlock
    • Checks if the AppKey exists before deleting it
    • Modified the Provisioner disable function
    • Add parameters for Provisioner binding AppKey comp event
    • Fixed not reset transport info when node is removed
    • Removed BLE_MESH_MAX_STORED_NODES option
    • Changed to continue node info restore even if failure happens
    • Added check if assigned node address is duplicated
    • Associates replay protection list size with nodes count
    • Updated next alloc address when node info is added
    • Continue notifying unprovisioned device beacon to application layer
    • Add a function to get the entry of the nodes table (#5397)
    • Use same functions for node composition data store/restore
    • Added functions to get node information with node name
  • Synchronized a few Zephyr BLE Mesh updates
  • Support using a specific partition for BLE Mesh
  • Added a function to de-initialize BLE Mesh stack
  • Fixed use-after-free issue when de-initialize mesh
  • Fixed not free beacon timer when de-initialize mesh
  • Fixed de-initialize error when using NimBLE host
  • Added mutex for mesh related timer operations
  • Fixed an issue which may cause client failed to send messages
  • Use bt_mesh.flags to indicate mesh device role
  • Callback RSSI of received mesh provisioning packets
  • Change some stack log level from debug to info
  • Fixed node ignoring relay messages issue
  • Fixed compile warning when proxy related macros are disabled
  • Clean up BLE Mesh stack included header files
  • Fixed compile warning when BT log is disabled
  • NULL can be used if client message has no parameters
  • Initialize BLE Mesh stack local variables
  • Support using PSRAM for BLE Mesh mutex, queue and task
  • Added an option to enable using memory from PSRAM
  • Allow sending messages with maximum 377 octets payload
  • Unified client application and lower transport layer timeout
  • No timeout for client message to non-unicast address
  • Fixed timer start when sending client acknowledged messages
  • Fixed client local parameters not initialized
  • Calculates incomplete message timeout based on message info
  • Added check of buf->ref before decrementing buffer ref count
  • Used the right net_idx & app_idx for publish
  • Used the right netkey during iv update
  • Fixed time scene wrong spelled macro name
  • Added length check for some mesh operations
  • Reworked provisioning pdu length check
  • Added proxy configuration pdu length check
  • Fixed not erasing mesh node information completely
  • Added an option to fix node nvs information restore
  • Added missing #ifdef __cplusplus
  • Fixed using a UTF-8 comma in Kconfig
  • Fixed not updating provisioner address in fast provisioning
  • Fixed ignoring messages when fast provisioning is enabled
  • Fixed compile error when including from C++ files
  • Support for BLE advertising simultaneously when mesh is working
  • Added init flag for friend init/deinit
  • Fixed compile error when -O2 (performance) is chosen
  • not ignore messages from the nodes whose addresses are not in the provisioning database
  • Removed the fix patch for Bluetooth Mesh Android App v1.1.0
  • Fixed the issue of using old config for duplicate scan
  • Fixed the issue of not using pre-initialized private key
  • Added check of the result of creating timer
  • Defined an application macro for invalid company ID
  • Removed relay option dependency
  • Do not #define bool when compiling in C++ (#5100)
  • Removed boolean type definitions
  • Added checking model status with variable length
  • Added functions for model subscribing/unsubscribing group addresses locally
  • Fixed wrong log output when using bt_hex
  • Fixed the issue that RSSI of the received message is always 0 (#5505)
  • Added checking if subnet exists before updating beacon_sent
  • Fixed compile error when only proxy enabled
  • Updated send_ttl when receiving a message (#5300)
  • Added two application macros for TTL
  • Added an option of using IRAM for memory allocation
  • Reworked using dev flag to check scan status
  • Fixed receiving health current status incorrectly
  • Optimized calling of client model related functions
  • Fixed updating ccc handle incorrectly when using NimBLE host
  • Avoid using ASSERT in mesh stack
  • Fixed not using the latest iv_index for provisioning
  • Check if stack is initialized before initializing vendor client
  • Optimized Provisioner delete device function
  • Defined a common type of nvs handle for settings
  • Added device role check before enabling proper functionality
  • Added mutex for protecting settings operations
  • Added erase settings functions
  • Updated transport rx reset operations
  • Added clearing hb_pub function in settings
  • Optimized erasing NetKey and AppKey functions
  • Optimized model settings related functions
  • Fixed storing next allocated net_idx and app_idx
  • Use settings_core_erase when de-initialize mesh stack
  • Make buf debug option invisible in menuconfig
  • Added mesh device properties v2 definitions
  • Use callbacks for model related operations (Zephyr)

Wi-Fi Coexistence

  • Fixed watchdog timeout when sleep enabled
  • Fixed misspelling in Kconfig
  • Fixed A2DP stuck after creating another connection
  • Adjusted coexist scheme when BT is in connected status
  • Fixed wakeup delay when DFS is enabled
  • Optimized WiFi/BT coexist sleep
  • Added coexist API to enable BLE connection dynamic priority
  • Rewrote ble dynamic priority to fix ble disconn in conn_param_update/channel_map_update
  • Rewrote ble dynamic priority in connection establishment
  • Fixed ble dynamic priority with latency
  • Fixed status bit set error when connection failed

Wi-Fi

  • Added and utilize WPA3/WPA2 Mixed mode Authtype
  • Added support of multiple phy init data
  • Added wpa_supplicant parsing support for WEP40 key
  • Added TX packets size check
  • Added esp_wifi_get_tsf_time() API to get the tsf time
  • Added check for Wi-Fi stop when calling esp_wifi_deinit
  • Added sending sta connection event again after ap sent disconnect event
  • Added API of setting/getting inactive time
  • Added new API esp_wifi_ap_get_sta_aid
  • Added an API for peripherals to set callbacks to skip light sleep when WiFi TSF is active
  • Added TBTT update when AP reset TSF
  • Added API to get available internal heap size
  • Added softap example channel configuration
  • Removed AUTH_CHANGED reason code logic
  • Fixed the issue when calculating the PMK, the local rx beacon time increment is 0
  • wpa_supplicant: Support for mbedtls tls handshake
  • wpa_supplicant: Fixed invalid pointer deference and memory leak
  • wpa_supplicant: Fixed inter operability issue with freeradius version 3.0.21 and openssl 1.1.1f when internal tls client is used which requires extension elements in client hello
  • wpa_supplicant: Fix WPA3 and WPA2 transition related failures
  • wpa_supplicant: Fixed compilation errors when USE_MBEDTLS is disabled
  • wpa_supplicant: Ported dpp feature from supplicant
  • wpa_supplicant: Fix formatting of file esp_wpa3.c
  • wpa_supplicant: Allow NULL-padded WPS attributes
  • wpa_supplicant: Allow building with mbedTLS integration but no hardware MPI (#5321)
  • wpa_supplicant: Added wpa_supplicant debug logging as a configurable option (#3839)
  • wpa_supplicant: Fix SAE test-case failure on mbedtls version udpate
  • WPS: fixed handling of multiple AP credentials in WPS
  • Fixed WPS config for support with gnu++11 as well as c99 (#4625)
  • esp_wps.c: Fixed datatype for wps task handle
  • Fixed the issue that API esp_wifi_sta_get_ap_info returns actual values of group
  • Fixed an crash in executing wifi deinit in softap + sta mode and AMPDU is on
  • Fixed the issue that sniffer fails to work during mode switch
  • Place the Vendor Specific element at the end according to the protocol
  • Fixed the memory leak caused by WiFi stop
  • Fixed the crash when wifi stop after deinit
  • Fixed the issue that softap will no prompt if the STA is powered off or the AP does not receive disassoc/deauth
  • Fixed the issue when station connects to hidden AP, fails to update rssi value of hidden AP
  • Fixed setting channel when Wi-Fi is in NULL mode
  • Fixed a crash during WEP shared auth
  • Disabled WiFi API parameter checking log
  • Fixed select_waiting assert and crash after reapplying for UDP socket when UDP is turned off
  • Fixed the issue that information of scanned AP will be saved only when the current scanning channel is the same as AP's channel
  • Avoid parsing RSN/WPA IE's after connection
  • Configure bandwidth and phy mode to store NVS
  • Now returns an error if the setting AP's channel is out of range
  • Fixed error in printing level in wifi log
  • Disabled wpa_supplicant TLS 1.2 support by default due to issues with some Enterprise Authentication Servers
  • Fixed esp_wifi_stop crash without calling init
  • Fixed obsolete interface gethostbyname
  • Fixed the bug for softAP update second channel wrong
  • Fixed country code query when policy change from manual to auto
  • Fixed internal scan data struct definition, changed wifi_scan_time_t from union to struct
  • Enable WPA3 & PMF by default
  • Fixed WPA3 Auth timeout issue in BLE coexistence scenario
  • Fixed memory leak in wpa3
  • Fixed AP switch to adjacent channel without disconnect (CVE-2020-12638)
  • Fixed wpa_supplicant memory leaks and invalid memory access
  • Fixed a timeout issue in the EAPOL four-way handshake
  • Optimized four-way handshake failure time
  • Fixed esp_wifi_set_max_tx_power description
  • Removed wifi tx buffer limits
  • Fixed addba ssn and send bar for first ampdu
  • Fixed interrupt handle psram variable error (#5354)
  • Fixed the issue of regdomian update
  • Fixed an issue when setting TX DMA buffer above 32 would not take effect
  • Fixed WPA memory leak in softap mode
  • Moved esp_phy_common_clock_disable into periph_ctrl and put it into IRAM
  • Added esp_wifi_ap_get_sta_aid
  • Fixed AP power save buffer issue by returning no memory error code is power save buffer is not enough
  • Fixed scan saves wrong RSSI value
  • Added esp_wifi_statis_dump to dump the key WiFi statistics
  • Optimize WiFi TX
  • Fixed esp_wifi log levels (#5721)
  • Fixed null pointer dereferences in management rx
  • Set default AP handlers in wifi_create_and_start_ap()(#5844)
  • Fixed scan issue with WPA2-PSK-SHA256 AP
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Modified LR for esp32 and esp32s2
  • Optimize some debug logs for probe response
  • Fixed two bugs in classify
  • Fixed the issue of no event for connection
  • Added STA checks during STA PMF operations
  • Fixed WPA2-Ent issue with Open AP
  • Skip WPA-TKIP profile if PMF is required
  • Skip & clear Supplicant PMK Cache with mismatching AP config
  • Update WiFi toolchain to 1.22.0-97-gc752ad5
  • wpa_supplicant: fixed sockets connection abort when doing sockets send
  • Fixed high loss ratio of receiving broadcast data on ESP32-S2 station when it connects to an ESP32-S2 softAP
  • wpa_supplicant: Deinit wpa2 states in wifi deinit
  • wpa_supplicant: Fixed linker errors depending on link order on some systems (#5641)
  • WPS: Added Failure reason code for WPS event
  • Fixed the issue that set_channel doesn't work for softAP when STA connects

ESP-WIFI-MESH

  • Support chain topology
  • Add esp_mesh_set_topology and esp_mesh_get_topology
  • Support mesh network power save function
  • Add esp_mesh_enable_ps and esp_mesh_disable_ps
  • Add esp_mesh_is_ps_enabled and esp_mesh_is_device_active
  • Add esp_mesh_set_active_duty_cycle and esp_mesh_get_active_duty_cycle
  • Add esp_mesh_set_network_duty_cycle and esp_mesh_get_network_duty_cycle
  • Add esp_mesh_get_running_active_duty_cycle
  • Add mesh PS option to the add announcement packet
  • esp_mesh_set_type supports MESH_IDLE and MESH_STA
  • Remove coexist warnings in ESP_WIFI_MESH
  • If the root is specified (FIXED-ROOT) by set type or set parent, change ie.mesh_type to MESH_ROOT before connect to router
  • Release esp_mesh_recv_toDS when the root becomes non-root
  • Fix esp_mesh_deinit blocking issue
  • Remove coexist warnings for ESP_WIFI_MESH
  • Add an example showing internal IP capable mesh network
  • Fixed FIX-ROOT does not reconnect to router when disconnect reason is too many
  • Added API esp_mesh_print_scan_result
  • Modified not to reset mesh_xonseq of self and children when flush_upstream_packets
  • Fixed not switch to a parent candidate which has the same layer and assoc as current parent
  • Fixed not arm parent monitor when a parent candidate is cleared without sending an event to mesh layer
  • Fixed the new voted root does not reconnect to router if rssi is weak

ESP-NOW

  • Fixed ESP-NOW API random crash
  • Fixed the crash issue when fetching peer after delete cur_peer
  • Supported ESPNOW + PMF co-existance

Smartconfig

  • Airkiss: Fixed bug where connection would timeout but success was returned (#3362)
  • Fixed the bug that airkiss find hidden AP fail

Ethernet

  • Added the support of pin emac task to core
  • Added ETH_MAC_FLAG_WORK_WITH_CACHE_DISABLE flag to make Ethernet driver
    possible to work when cache disabled (#4635)
  • Added ENC28J60 Ethernet Driver (#4435)
  • Ensure that eth_driver handle is allocated in internal RAM (#4635)
  • Fixed potential null pointer dereference in ethernet driver (#4890)
  • Ensure that calling esp_eth_stop() stops the EMAC hardware layer
  • Improved reliability of ethernet driver start/stop/uninstall/install
  • Insert mininum assert time for PHY HW reset (#5528)
  • Fixed potential task watch dog timeout
  • Added Ethernet driver flow control
  • Fixed Ethernet RX issue, handle rx early event
  • Support PHY power on timeout (#5425)
  • Fixed C++ linkage moving extern "C" after includes (#5699)

Security

  • Added platform independent CMake signing
  • secure boot: Fix anti-fault value if hash is shorter than curve
  • optimize AES-GCM via enabling HW acceleration for GCM by default
  • HMAC: adding upstream message support
  • Enable flash encryption by setting FLASH_CRYPT_CNT to max
  • SHA: add fallback for when memory alloc fails
  • ESP32-S2: Added the support of disabling legacy boot mode & ROM remap modes if either Secure Boot or Flash Encryption is on
  • Fixes the cpp macro in esp32 secure boot rom functions (#5878)

Peripheral Drivers

  • ADC: Disabled the synchronization operation function of ADC1 and DAC
  • ADC: Fixed adc io pullup/pulldown initialization bug
  • GPIO: Fixed light sleep can't be awoken by GPIO issue
  • I2C: Added check whether SCL and SDA are on different pins
  • I2C: Made data argument of i2c_slave_write_buffer const
  • I2S: Fixed issue: ADC read values inverted (#4557)
  • I2S: Fixed issue: i2s_comm_format_t configuration parameter does not match the TRM (#4522)
  • I2S-ADC: Fixed issue: GPIO may not configured properly when ADC is used with I2S
  • I2S, PCNT: Cleaned up public header
  • I2S: Fixed issue i2s_start reseting I2S in incorrect order caused word-order error
  • MCPWM: Fixed init MCPWM Fault line via config struct (#5491)
  • MCPWM: Fix fault pin initialization issue (#5491)
  • PCNT: Add pcnt_isr_unregister new interface
  • PCNT: Fixed pcnt driver doesn't clear interrupt status properly (#5929)
  • PSRAM: Fixed the read id failure for 16mbit PSRAM
  • PSRAM: Added support for esp32-pico-v3-02
  • RMT: Fixed missing 0x in rmt_ll.h (#4760)
  • RMT: Fixed the breaking change: application needs to call rmt_driver_install before rmt_config (#4664)
  • RMT: Fixed the breaking change: Do not support memory block count > 1 (#4959)
  • RMT: Supported using REF_TICK as channel clock source
  • RMT: Disabled carrier feature by default
  • RTCIO: Fixed the issue sometimes hold cannot be disabled (#4600)
  • SDIO: Fixed compilation error on verbose level (#4786)
  • SPI: Supported sharing SPI bus among drivers
  • SPI: Fixed the memory accessed while cache disabled issue in the bus lock when log level is verbose
  • SDSPI: Supported mounting multiple SD cards and using polling transactions to increase reading speed
  • TWAI: Fixed issue that some program logic are placed in assert()
  • UART: Fixed uart_set_line_inverse issue (#4581)
  • UART: Fixed the issue of missing txfifo reset
  • UART: Fix RXFIFO_CNT bug on ESP32 (#5101)
  • periph_ctrl: Added LL for clock and reset control
  • periph_ctrl: Added reference counter in periph_ctrl
  • periph_ctrl: moved esp_phy_common_clock_disable from WiFi, BT
  • UART: Added new API to set line endings for specified UART number
  • UART: Fixed issue that uart_wait_tx_done return ESP_OK when failed.
  • ADC: added support for ESP32-S2 adc calibration scheme
  • ADC: added public adc-dma api for esp32
  • DAC: Added DAC-DMA driver code and hal code
  • SPI: Fixed CS high active not available issue
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset

Core System

  • Added alloc failed hook with optional abort option
  • Added semi-colon to esp_event_loop_create(...) (https://github.com/espressif/esp-idf/pull/4711/files)
  • Added support of LoadStore Exception Handlers
  • Added a Kconfig option - Number of attempts to repeat 32k XTAL calibration
  • Added soft solution for esp32 eco3 live lock issue
  • Added Task Watchdog backtrace printing
  • efuse: Added support of mac address allocation for ESP32-S2
  • efuse: Add new esp_efuse_write_field_bit() convenience function
  • efuse: Add 'disable Download Mode' & ESP32-S2 'Secure Download Mode' functionality
  • efuse: Fixed get_coding_scheme() when CONFIG_SECURE_FLASH_ENC_ENABLED and LOG_LEVEL is Debug (#4862)
  • efuse: Added an API to return the efuse descriptor for a key block's purpose field
  • efuse: Don't need to burn WR_CRYPT_CNT if CRYPT_CNT is already max
  • efuse: Add some fields in efuse_table and update esp_efuse_get_pkg_ver()
  • Fixed case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set (#2954)
  • Fix esp_timer_impl_set_alarm() when CPU and APB freqs are changed (#2954)
  • soc: clear PHY status when cpu start
  • soc: add hal api to set exception vector table base address
  • soc: added hal api to set exception vector table base address
  • soc: Separates soc component into abstraction, description, and implementation files
  • heap: added aligned alloc implementation on multi_heap layer
  • heap: added alloc failed hook and configuration options
  • heap: pushed down all the aligned_alloc / free implementation
  • heap: added rtc fast memory region to dynamic memory pool
  • heap: Only fill new heaps with FREE_FILL_PATTERN on init if Comprehensive poisoning is enabled, allowing faster boot in other situations (especially when PSRAM is used)
  • esp_timer: Added implementation based on TG0 LAC timer
  • esp_timer: Create esp_timer as a separate component + LAC timer + SYSTIMER for ESP32-S2
  • log: Use proper API to get Tick Count in esp_log_timestamp
  • Fixed accessing some files from 2nd part of the bootloader
  • shared_stack: fixed watchpoint placement on shared stack
  • shared_stack: using watchpoint 1 to monitor the shared_stack instead of watchpoint 0
  • ESP-Event: added support of esp_event multiple registrations
  • Fixed compilation error, add missing gpio_periph.h header (#4797)
  • atomic: support fetch_and, fetch_and and fetch_xor
  • Create abstraction layer for cpu related operations
    shared abort panic with port layer
  • Let panic handler break into debugger on software abort
  • Suppress reason display on panic due to software abort
  • Fixed case when elf file SHA256 should be printed by panic handler while cache is disabled
  • xtensa: Added a script for parsing CPU traces (TRAX)
  • xtensa: Fixed sign-conversion warning (#4965)
  • multi_heap: eEsure that malloc(0) return NULL pointer in any poisoning configuration
  • watchdog: Added LL (low-layer) and HAL (hardware abstraction layer) for watchdog timers
  • systimer: Added HAL layer
  • log: Added new macros to log when the cache is disabled
  • Console: Don't return NULL on 0 length input (#4926)
  • console_repl: Changed config structure to support different devices, added uart param to config structure (#4845)
  • esp_system: Restored weak esp_reset_reason functions
  • pthread: Used INTERFACE in target_link_libraries for vPortCleanUpTCB wrapper
  • esp_efuse: Updated esptool and add reedsolo and bitstring into requirements.txt
  • esp_ipc: Moved esp_ipc to new component
  • intr_alloc: Removed use of esp_log in ISR context, changed to ISR version of critical section
  • Reduced using ESP_EARLY_LOGx and moved some code after startup stdout initialization (#5343)
  • Added psram stack check in backtrace
  • Added brownout detector HAL for esp32 and ESP32-S2
  • Enabled brownout reset for esp32 rev. 1 and above
  • Freertos: fixed compilation warning at -O2 level (#5525)
  • Freertos: don't clobber a4 while spilling register windows (#5758)
  • shared_stack: Fixed task stack not being replaced by shared stack correctly
  • When using SPIRAM stack in esp_restart_noos(), switch to internal stack automatically (#5107)

Debugging

  • core dump: Disable core dump to flash if stack in PSRAM option is enabled
  • core dump: Fixed coredump data overwriting due to 'TaskSnapshot_t' and 'core_dump_task_header_t' difference
  • core dump: Fixed size of memory region used by espcoredump.py
  • app_trace: Added support for multi-core traces in single file to SystemView processing scripts
  • panic handler: Fixed printing of ELF file SHA-256 if cache is disabled
  • Make espcoredump more resilient when decoding specific thread stack (#4865)
  • app_trace: Add coverage generations by gcovr
  • gcov: Fixed APP CPU syscall table

FreeRTOS

  • Optimized task selection on single core configurations
  • spin_lock: Added new spinlock interface and decoupled it from RTOS
  • Added feature to utilize IRAM memory using exception handlers for unaligned access fixups
  • fpu: Enable usage of FPU inside of an ISR
  • Moved all xtensa specific files into a separated folder
  • Added task state field inside of TaskSnapshot_t to capture it

newlib libc

  • Moved abort to newlib component
  • Removed direct dependencies on VFS functions
  • Added default implementations for more syscalls
  • Added endian.h header file for compatibility (#4784)
  • Fixed initialization of syscall_table_ptr_app in single core mode
  • Fixed adjtime, returns the amount of time remaining from any previous adjustment

LWIP

  • Added IPV6 stateless address autoconfiguration support
  • Added config option for SO_LINGER
  • Added simple SMTP email client
  • Added LWIP_ASSERT control
  • Added host name in discover packets
  • Added to sys_arch_protect() a check that the mutex is created before use if not then creates it (#944)
  • Added support for IPv6 events from PPP interface
  • Added support for NAPT functionality
  • pppos_client: Fix power_down dce immediately after got IP (#4618)
  • pppos_client: added support for PPPAUTHTYPE_NONE
  • Wrap lwip/tcp.h header for compatibility (#4637)
  • Fixed the crash caused by socket lock not initialized
  • Fixed an issue entering an incorrect multicast address will return success
  • make IPV6 link-local support over PPP configurable (#4782)
  • esp_netif_ppp: added NETIF_PPP_AUTHTYPE_NONE to esp_netif_auth_type_t (#4639)
  • esp_netif_ppp: fixed posting ip-event data (#4634)
  • esp-netif: easier creation for WiFi interfaces with custom parameters (#4611)
  • esp-netif: fix get/set hostname API to reflect user settings (#4737)
  • esp-netif: make the IPv6 configurable for PPP netifs
  • esp-netif: Added API to get the underlying interface name
  • esp-netif: Fix compilation if ESP_GRATUITOUS_ARP not enabled (#5294)
  • Fixed assertion "netconn marked closed" (#3842)
  • esp-netif: set default interface for ppp netif must be called from lwip context
  • esp-netif: Enable easier configuration of custom DHCP server address
  • esp-netif-ppp: added support for setting ppp netif up and down
  • esp_netif: Remove restarting DHCP client and server if it has already been started
  • esp-netif: added new API to get the type of the IPv6 address
  • esp-netif: ppp netif to use netif_is_link_up() to update interface state (#5069)
  • esp_netif: fix default connect handler to check dhcpc return value (#5184)
  • Fixed the issue that socket can still send data after the station disconnected from WiFi in IPv6 environment
  • dhcp-server: fixed static analysis warnings
  • dhcp sever: Make option netmask configurable (#4988)
  • esp_modem: updated pppos_client modem to use uart with REF_TICK (#4801)
  • esp_modem: Ensure uart_param_config and uart pins are set before uart_driver_install (#4904)
  • esp_modem: Fix misuse event_queue_size as pattern_queue_size (#5182)
  • esp_modem.c: post PPP stop event when requested (#4642)
  • Fixed the issue of failing to set DHCP timeout during system initialization
  • Fixed assert when calling tcp_kill_state
  • Fixed failure to set DHCP timeout during system initialization
  • Fixed the issue of UDP packets loss in ARP in UDP tx performance testing
  • Make LWIP TCP rto time configurable
  • IPv6: fixed the issue that packets exceeding MTU can still be sent and received when IP fragmentation is turned off
  • Fixed ICMP bug to reply correctly to pings with arbitrary length
  • esp-netif: Enable easier configuration of custom DHCP server address
  • Optimization in creating a TCPv6 connection
  • Fixed potential crash in reapplying for UDP socket when UDP is turned off,sock->select_waiting !=0
  • IPv6: fixed the issue that IPv6 ND6 queuing too much packets cause no memory issue
  • IPv6: ipv6 fails to send multicast data when source address is null
  • IPv6: Fixed the issue of failing to send ping packet
  • Changed the TCP retransmission interval, where the SYN retransmission interval is 1.5s, the number of times is 12. The first retransmission time of the data packet is 3s
  • Added IPv6 ping function
  • Fixed TCP timer interval

mDNS

  • Added option to configure mDNS task stack size (#5216)
  • Fixed events to handle the GOT_IP6_EVENT for only known network interfaces
  • Removed mbedtls dependency (#5188)

Provisioning

  • Use dynamic buffers instead of static memory
  • Unified Provisioning: Fixed BLE characteristics read response issue when read response length is a multiple of (MTU-1) length
  • wifi_prov_mgr: Add config options to switch transport and support for custom data
  • esp_prov: Add support for sending some abstract custom data
  • BLE: Change service_uuid to non-standard 128-bit UUID
  • BLE provisioning: Add check for valid ble read offset
  • Wifi_prov_manager: Fix to ensure Wi-Fi events still received after Connection errors
  • protocomm_httpd: Restart security session if request is received on a new session
  • use memcpy instead of strncpy for copying SSID (#5866)

OTA

  • Added fix in case of URL redirection and a test case of URL redirection (#4780)
  • Added errno check for WiFi disconnection while performing OTA
  • Fixed bug where erase size could be one sector too long (#4953)
  • Added API to write data in a non contiguous manner

HTTP Client

  • Added helper API to read larger data chunks from HTTP Stream
  • Added API to get URL from client (#5115)
  • http_header.c: Add error print in http_header_generate_string if buffer size is less than required size
  • Fixed error handling in esp_http_client_read and esp_https_ota_perform

HTTP Server

  • Added support of Mutual Authentication in HTTPs Server (#4184)
  • Added WebSocket support (#4306)
    • Handling WebSocket handshake
    • Receive WebSocket packets
    • Send WebSocket frames
    • Receive WebSocket frame
    • Automatic control frame handling
  • Fixed HTTPD_SSL_CONFIG_DEFAULT doesn't compile on C++ (#4981)
  • Fixed syntax error in esp_http_server.rst (#5021)
  • Fixed a bug which could cause issues with LRU purge (#4753)
  • Updated LRU counter on accepting a new connection (#3851)

mbedTLS

  • Added ESP certificate bundle feature, X509 certificate management
  • Added configurable option to redirect TLS buffers to IRAM for ESP32 single core configuration
  • Added configuration options for EC-JPAKE (#5106)
  • Added config options for chacha20, poly1305 and chachapoly
  • Added a config option to enable HKDF
  • Added dynamic buffer and local resource management to decrease SSL heap cost
  • Added config options in mbedtls
  • Added options to mbedtls for hardware acceleration
  • Updated to mbedtls release v2.16.7
  • cert bundle: Fix memory leak during cert verification (#4983)
  • cert_bundle: fixes the "No CA Chain is set" error
  • Disable mbedtls EC curves if hardware acceleration is selected since the hardware will have to define the curves supported
  • Don't compile hardware MPI & SHA files if disabled in config

ULP

  • Fixed ulp external project arguments (#4713)

Power Management

  • Fixed crash or reboot of lightsleep on ESP32-S2

Bootloader

  • Removed bootloader_flash_gpio_config () due to its same function of bootloader_flash_dummy_config
  • Don't print an error message after WDT reset in unicore mode (#4388)
  • bootloader_support: Fixed bootloader_flash_read alignment error when compiling at -O0 optimization level
  • bootloader: Force bootloader_image_hdr to be word aligned
  • bootloader_support: read random from register
  • bootloader_support: initialize mbedtls_ctr_drbg_context per mbedtls v2.16.5 requirement
  • bootloader_support: don't check signature when JTAG is attached (#4734)
  • Fixed signed partition table generation
  • bootloader_support: fix issue in memory mapping for getting app descriptor (#5911)
  • bootloader: Fixed esp_get_flash_encryption_mode() (#5747)

ESP-ROM

  • link newlib nano from ROM only if SPIRAM cache workaround is disabled
  • Fixed esp32.rom.newlib-time.ld should includes all time ROM functions/data (#4925)
  • Fixed broken CONFIG_LEGACY_INCLUDE_COMMON_HEADERS

ESP-TLS

  • Added API to retrieve sockfd from tls connection
  • Added connection timeout to esp_tls_conn_new_sync()
  • Added support for https_server using wolfSSL
  • Added error flags specific wolfSSL
  • Added support for PSK, SNI, ALPN using wolfSSL
  • Added support for DER formatted certificates
  • Added support for using hardware security module, ESP32-WROOM-32SE
  • Fixed error captures
  • Made respective changes to esp_err_to_name.c
  • Changed argument pointer type to (void *) for esp_crt_bundle_attach
  • Fixed incorrect error message after handshake fails
  • Enable TLS renegotiation using explicit API call

TCP Transport

  • Implemented connect timeout (#3791)
  • Close to return error only for socket error or invalid arguments (#4872)
  • Updated DNS host name resolution using getaddrinfo for tcp transports (#4510)
  • Reset state on connection closure for SSL transports (#4598)

Websocket

  • Fixed opcodes when performing a fragmented send (#4974)
  • Updated the client to abort the connection if send fails
  • Fixed the client to avoid deadlock if stop called from event handler

ESP-MQTT

  • Added option to configure MQTT task priority (#4947)
  • Fixed an issue which could result in a race condition and subsequent crash
  • Change the message printed after MQTT connection failure
  • Documentation: Makes clear that publish API could block
  • Added option to configure output buffer size
  • Set duplicate flag for both qos1 and qos2 (#4787)
  • Fixed C++ build failing on incorrect event enum conversion
  • Fixed releasing lock if subscribe/unsubscribe message fails to be created
  • Fixed receiving longer (websocket) data with standard tcp_transport reads
  • Fixed possible double free of client config if init fails
  • Fixed queueing oversized messaged even if not connected
  • Fixed outbox_destroy() to correctly delete all queued messages
  • Added set_config to update ssl-transport configuration
  • Fixed storing timestamps in long-long format
  • Added runtime selection of mqtt protocol version
  • Support larger buffers and messages
  • SSL: Added config option for skipping common name check (espressif/esp-mqtt#158)
  • SSL: Added support for tls with secure element (ATECC608A) (espressif/esp-mqtt#156)
  • Websocket: Allow the query part of the uri to be a part of the path (espressif/esp-mqtt#161)
  • Fixed esp_mqtt_client_stop deadlock (espressif/esp-mqtt#163)
  • Added dispatch error event for read errors (#5704)
  • Updated the client to clean up expired messages when offline (#5668)

Storage

  • NVS: Change all new to new (nothrow)
  • NVS: Fixed missing implementations for string/blob
  • NVS: add support for i16, u64, i64 types to NVS partition generation tool
  • NVS: added nvs support data encodings
  • NVS: allow to specify custom partition (#5172)
  • NVS: iterator skipping version 1 blobs
  • NVS: improved behavior for erasing partitions
  • SPIFFS: Fixed bugs when CONFIG_SPIFFS_USE_MTIME is not defined
  • SPIFFS: restore dependency of flash targets on spiffs images (#5066)
  • NVS Flash: prevented erasing initialized partition (#4755)
  • spi_flash: fix regression in encrypted flash write (#5467)
  • spi_flash: added support of MXIC flash chips
  • spi_flash: fixed the regression of non-quad mode by default chip driver, issues in add_device
  • spi_flash: Fixed the write performance regression
  • SDMMC: Fixed the probe issue that forbid sdspi working in highspeed mode
  • SDMMC: Added check for function parameters before using them (#5000)

VFS

  • VFS: Check in select() if the UART driver is installed or not
  • VFS: add option to disable VFS layer, saving some RAM and code size
  • VFS: supporting semihosting_common handler from OpenOCD
  • VFS: support vfs uart set line endings with specified uart number

Modbus

  • freemodbus: fixed long buffer failure
  • freemodbus: added extern c block into common header for cpp (#5071)

Tools

  • Added tools support for secure boot v2 for ESP32 ECO3
  • Added check if idf_tools.py install-python-env is called from a venv
  • Added proper multi-chip support for idf_size.py
  • Added option to show differences between MAP files with idf_size.py
  • Added the functionality of autodetecting the target of MAP files in idf_size.py
  • Added export and install scripts for fish shell (#4944)
  • Added --gdbinit argument to gdb, gdbgui, gdbtui
  • Added Kconfig for enabling 0 length returns from linenoise
  • ninja: update to 1.10.0
  • cmake: update to 3.16.4
  • esptool_py: retained flash targets when building RAM loadable apps
  • esptool_py: pass flash mode/frequency/size to elf2image
  • Updated kconfiglib to 13.7.1
  • Marked ULP toolchain as not available on 32-bit Linux
  • idf_tools.py: fix typo in PYVENV_LAUNCHER env variable name
  • docker: install CMake version provided in tools.json (#4644)
  • docker: enable ccache by default
  • tools: work around usbser.sys bug in idf_monitor (#4676)
  • gen_esp32part: fixed subtype in PartitionTable.find_by_type (#4723)
  • check_python_dependencies: If overriding requirements.txt path, provide a pip command line
  • idf_tools.py: fixed install-python-env failure with virtualenv 20.0.0
  • installer: fix copying IDF to a destination on another drive (#4128)
  • installer: used bundled idf_tools when installing IDF v3.3.1, IDF v4.0
  • installer: added PYTHONUNBUFFERED=1 when calling idf_tools.py
  • tools: bump version of windows tools installer to v2.3
  • idf_monitor: automatically decode UART core dumps
  • idf_monitor: fixed gdb issue opening large COM port on Windows
  • confserver: Standardize and document the handling of hex values
  • confserver: Always store hex values in sdkconfig with 0x prefix
  • C++: added experimental C++ component
  • C++: added ESPException class to the C++ experimental component
  • C++: make attribute((init_priority(n))) work (#5038)
  • Force the order of cmake generators
  • partition_table: output partition table info for partition_table target
  • partition_table: do not always display partition table contents on build
  • Removed unused toolchain-prefix argument from idf_size.py
  • Fixed flashing encrypted binaries from IDF Monitor
  • export.sh: added better detection and checking of IDF_PATH
  • idf_monitor: support to re-flash with the using port
  • Make Unicode from subprocess result in the CMake convert script (#5189)
  • tools: allow alternative spellings of target name (ESP32-S2, ESP32S2)
  • gdb: Modify PC in case of invalid PC
  • Fixed spelling in core_ext.py (#5145)
  • parttool: Fixed crash when retrieving partition info (#5271)
  • idf.py: prevent reloading duplicate extension paths. Do not load cwd if IDF_EXTRA_ACTIONS_PATH is not set (#5278)
  • idf.py: replace the "run" method of Task with the magic "call" method (#5279)
  • Mention ESPPORT and ESPBAUD in idf.py --help (#5461)
  • export.sh: fix compatibility with dash shell (#5366)
  • mfg_util: Update file handling to maintain line endings across various OS (#4888)
  • Fixed Windows incompatibility with gdbgui>=0.14 (#5794)
  • Tools: Fixed Python 3 incompatibility for building with Eclipse on Windows
  • esptool: Update to v3.0 release (https://github.com/espressif/esptool/releases/v3.0)
  • Added tools support for secure boot v2 for ESP32-S2
  • Updated toolchain to esp-2020r3
  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'

Build System

  • CMake: Used underlying flash targets for idf.py
  • Cmake: Added "subdirectory if exists" utility function
  • CMake: now uses new component registration function
  • CMake: Added elf dir information
  • make: Fixed quoting when flashing port is set via sdkconfig file
  • build: Added CONFIG_APP_PROJECT_VER to set the project version from Kconfig
  • idf_py: fixed the ESPPORT environment variable type issue
  • idf.py: added monitor-baud option to monitor command
  • idf.py: guess IDF_TARGET from sdkconfig if CMakeCache doesn't exist
  • idf.py: fail and show instructions on IDF_TARGET mismatch
  • idf.py: added support of debug targets for easier execution of openocd, gdb, gdbui
  • Fixed idf.py to be able to select a generator for build
  • confgen.py: Escape special characters for cmake (#4751)
  • ulp: use quotes when specifying files for embedding ulp binaries
  • make: fix 'make monitor' target when core dump is not enabled
  • CMake: Fixed an issue where builds are invoked twice when executing flash targets with idf.py
  • CMake: show error message on encrypted flash targets without proper config
  • Cmake: fixed possible whitespace issues
  • Cmake: Add warnings that convert_to_cmake.py doesn't calculate component requirements
  • Cmake: fix setting defaults in idf_build_process (#5053)
  • Fixed passing argument to ULP CMake script
  • msys2: add package mingw-w64-i686-gcc for installing python packages
  • ldgen linker script mapping rules order is now deterministic
  • kconfig: Fix generation of hex outputs for Make & CMake
  • kconfig: Fix two cases of hex values being handled incorrectly (espressif/vscode-esp-idf-extension#83)
  • Updated MSYS2 pre-compiled legacy build environment to use Python 3
  • Cmake: fixed C identifier generation from embedded file (#4927)
  • idf.py: disable cmake uninitialized variable warnings by default
  • ulp: fixed ULP assembler version detection for localized systems

ESP-COMMON

  • esp-compiler: added designated init macros to make esp configuration pattern viable under C++
  • allow placing panic handler into IRAM on ESP32-S2

External Libraries

  • Updated to mbedtls release v2.16.7
  • cJSON: include only source file objects for cmake build
  • coap: move mbedTLS config options from component to examples (#5262)

Others

  • linenoise: move allocations from stack to heap, fix calloc result checking (#5161)
  • Fixed the broken python lint on Github Action (#5318)

Examples

  • Added ENC28J60 Example
  • Added example of ble mesh coexisting with tcp
  • Added atecc608_ecdsa example (#4432)
  • softap example: Added channel configuration
  • spi: add eeprom example
  • Added Heap Task Tracking example
  • example: new DAC example of waveform generator controlled by software
  • NimBLE: Update the documentation link in the examples
  • ble_mesh: Fixed broken links to examples
  • ble_mesh: Added BLE mesh sensor model examples
  • ble_mesh: Add bluedroid and nimble example configurations
  • ble_mesh: Added BLE mesh vendor models examples
  • ble_mesh: Update mesh console example
  • ble_mesh: Added nvs operations for some examples
  • ble_mesh: Fixed example README & tutorial link error
  • sdio: updated the host example to support working with a slave without DAT1
  • Fixed Advanced OTA Example with chunked servers
  • Simplified console examples
  • Moved C++ examples to a new cxx folder in examples
  • Fixed markdown table formatting in examples/peripherals/temp_sensor_esp32s2/README.md (#4609)
  • Improved ble_spp_server example
  • Fixed the error macro name and error return in hfp_hf example
  • Cleaned up sdkconfig.defaults of BLE Mesh examples
  • Fixed standard NEC IR transmission (#4750)
  • Updated websocket example to send textual data with esp_websocket_client_send_text() (#4640)
  • pppos_client: update sdkconfig.defaults
  • Enabled IPv6 in example common connect for esp32s2
  • common connect: fixed build error if ipv6 disabled
  • common connect: add support for getting multiple IPv6 addresses
  • Fixed typo in i2ctool example README
  • provisioning_examples: Move older examples to legacy/ folder
  • Restructured wifi_provisioning example
  • Fixed http_perform_as_stream_reader example
  • esp_http_client: Added example to demonstrate use of low level APIs for GET and POST requests
  • Fixed broken http2_request example
  • socket-example: IPv6 related update for examples to set correct scoped id
  • socket-example: Add tcp client example for multiple interfaces
  • I2S: Fixed sine wave sample calculation incorrect issue in I2S example
  • Updated esp event examples using new event register API
  • socket examples: Fixed udp_client build error (#5014)
  • Fixed format string in websocket example (#5052)
  • http-server-example: correction of regex waiting to acquire IP address
  • Fix instance names for event handler unregistering in WiFi station example (#5064)
  • uart_echo_readme: Remove duplicate commands and invalid serial port information
  • Updated HID examples to comply with the new requirements
  • Fixed links to example directories for fast_scan and scan (#5186)
  • Fixed usage example in xSemaphoreCreateBinaryStatic (#5272)
  • esp_http_client_example.c: Added note regarding use of URL and configuration parameters
  • Fixed flake8 warning for esp-cryptoauthlib submodule
  • ble_hid_device: fix build if building with c++ (#5191)
  • RMT: Fixed check issue in ir_builder_rmt_nec.c and removed the wait_tx_done for ir_protocols_main.c (#4750)
  • ble_mesh: Fixed compilation warnings about portmacro being already define (#5745)
  • ble_mesh: Fixed sensor data wrong iteration
  • http_server example: WebSocket server to set final flag in async messages (#5405)

Documentation

  • Documentation is now built separately for ESP32 & ESP32-S2
  • Added Chinese translation to LEDC
  • Added new top-level docs builder that builds docs for a single chip
  • Added API guide page about IDF Tools
  • Added extension that replaces generic target variable with idf_target
  • Added external RAM note link to Chinese translation
  • Added a link to Chinese translation for power_management_esp32
  • Added note that the idf target formatting filters don't work on "included" documents
  • Added Chinese translation for esp-ble-mesh-faq
  • Added a short user guide for how to write multi target docs
  • Added docs for secure boot v2 ESP32 ECO3
  • Added multi target include dir support
  • Added User Guide for ESP32-DevKitS-R
  • Added Chinese translation for ESP-WIFI-MESH document under api guide
  • Added Chinese translation for ota tool and partition tool
  • Added Chinese translation for linker script generation
  • Added Ethernet API reference
  • Added exact git version & target SoC to feedback form parameters
  • Added warnings about using JTAG debugging with hardware security features
  • Added configuration information about INT & Task WDTs
  • Added Chinese translation for modules-and-boards
  • Added alloc failed hook documentation
  • Added new section about using ESP-IDF with PlatformIO (#5132)
  • Added peripheral_types.h as API reference for peripheral docs
  • Added generation of tags from sdkconfig and x_caps.h headers
  • Added link back to ESP-ADF documentation in ESP-LyraT-8311A user guide
  • Added another case and recommendation to use Python 3 instead of Python 2
  • Added the support of building a subset of the documentation with build_docs
  • Added a note about ESP-IDF FreeRTOS version
  • Added description to Getting started guides of possible issues preventing Development boards from entering Firmware Download mode automatically while trying to flash the boards
  • Make docs build Python 3 compatible
  • Small changes for C++ code style
  • Manage parallel sphinx-build runs with optional parallel jobs within them
  • Replace all TRM urls will generic template variable and remove duplicate sections
  • Temporarily mark RF calibration chapter as ESP32 only
  • documenting-code: Add a couple of follow up notes on top of last commit
  • README: Drop the RTD docs status badge, add a note about docs not updating for a period
  • Updated chip features in Getting Started documentation
  • Updated documentation build system to use sphinx_idf_theme pip package
  • Provided Digital Signature documentation for ESP32-S2
  • Fixed broken links in README
  • Moved target-specific parts of JTAG guide into include files
  • Re-purposed WROVER-KIT debugging guide for ESP32-S2-Kaluga-1
  • Added user guide for ESP32-S2-Kaluga-1 Kit v1.3
  • Tools: idf.py: default to board/esp32s2-kaluga-1.cfg for ESP32-S2
  • Updated Chinese translation for jtag-debugging
  • Fixed ccache documentation: environment variable is IDF_CCACHE_ENABLE (#5753)
  • DAC: some minor modifications
  • Added explanation of hello_world folder contents
  • Added docs for secure boot v2 ESP32-S2

Obtaining v4.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.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.2
cd esp-idf-v4.2/
This is the recommended way of obtaining v4.2 of ESP-IDF.

Download an archive with submodules included

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

Assets 3
Pre-release

@projectgus projectgus released this Nov 23, 2020

Documentation for pre-release v4.2-rc is available at https://docs.espressif.com/projects/esp-idf/en/release-v4.2/

ESP-IDF v4.2 is a minor update for ESP-IDF v4.1.

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

Major New Features

  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Support for ESP32+ATECC608A (ESP32-SE) platform along with sample application
  • Added feature to utilize residual IRAM as data memory for ESP32 single core configuration
  • Added support of Bluetooth 5.0 for ESP32
  • Added ESP-HID Component
  • WiFi: Added and utilize WPA3/WPA2 Mixed mode Authtype
  • WiFi: Added support of multiple phy init data
  • WiFi: Added wpa_supplicant parsing support for WEP40 key
  • ESP-WIFI-MESH: Support chain topology
  • ESP-WIFI-MESH: Support mesh network power save function (Beta version)
  • Support for ESP32-S2 SoC
    • Wi-Fi
      • Wi-Fi driver
      • Wi-Fi modem sleep
      • Wi-Fi with automatic light sleep
    • Security
      • Flash & PSRAM encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • Digital signature
      • HMAC
      • Secure Boot V2
    • Peripherals
      • UART
      • Timer group
      • GPIO
      • SPI Master
      • SPI Slave
      • I2C
      • I2S
      • LEDC
      • PCNT
      • SigmaDelta
      • RMT
      • USB Device
      • Touch sensor
      • ADC
      • DAC
      • SD card over SPI
      • Ethernet over SPI
      • RTC interrupts
      • Brownout detector
      • Temperature sensor
      • ULP coprocessor (RISC-V)
    • System features
      • Cache
      • esp_timer
      • SPI Flash
      • PSRAM — 2MB
      • I/D RAM separation
      • OTA
      • RTC Slow clock selection (e.g. 32k XTAL)
      • Task, interrupt watchdogs
      • Efuse API and espefuse.py
      • Console over USB
      • DFU flashing
      • CDC flashing
      • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
    • Debugging
      • Core dump
      • app_trace
      • Systemview
      • OpenOCD
    • Protocols
      • Modbus
      • Provisioning
      • Other protocols on top of TCP/IP

Known Issues

  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet. This issue is under active debugging.
  • When Wi-Fi mesh power save is enabled, mesh performance is not desirable on large networks (>50 nodes)
  • Can't discover devices in limited discovery inquiry scan mode by general discovery

Bluetooth

Classic Bluetooth

Controller

  • Fixed the issue that when host runs different core from controller and sleep enabled,HCI timeout may occur
  • Added user invisible kconfig for BT MAC offset (#5320)
  • Fixed time jitter in FHS during role switch
  • Fixed time jitter in first POLL packet during role switch
  • Fixed failure in receiving EDR packet after role switch
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Set non-zero initial value for BT sleep clock cycle to avoid div-by-zero error in function "btdm_us_2_lpcycles" when BT modem sleep is not enabled
  • Fixed assert when creating connection cancellled
  • Fixed ASSERT for RXDESC
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • Fixed ASSERT in ld_pscan.c at line 1032
  • Fixed free lmp tx buf in EM in the procedure of handling LMP_detach_Req when not received the last acknowledge from peer device and separate them by ACL State
  • Fixed no mode change event reported when slave initiates unsniff procedure and a transaction collision occurs
  • Fixed interrupt WDT timeout due to interrupt disabled period
  • Fixed Connection fail in loop
  • Fixed ASSERT(25,0) in lc_task.c
  • Disabled frequent warning log in ld_acl
  • Fixed future events scheduling error in case of wifi and bluetooth
  • Fixed clk offset error in ld_acl.c
  • Fixed assert issue and null pointer issue in controller
  • Fixed BT controller dead if CLKN overflow
  • Added a workaround for a hardware bug when entering sniff mode
  • Rewrote ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Removed dummy assert when ESP32 receives a passkey request

Bluedroid

  • Separate BTA_JV_L2CAP for less bin size
  • Fixed cases having fallback to link up event
  • GAP: Fixed error EIR type in config eir event
  • GAP: fixed the issue when calling esp_bt_gap_remove_bond_device to remove a bonded device and then calling esp_bt_gap_get_bond_device_list, it may return invalid Bluetooth address (#5395)
  • SPP: Added API esp_spp_stop_srv()
  • SPP: Fixed task watchdog when running SPP example in VFS mode
  • SPP: Fixed the error parameter in spp examples (#5408)
  • HID-Host: Added HID Host support in Bluedroid
  • A2DP: Fixed the issue that A2DP_SINK example cannot successfully compile when Compiler Optimization Level is performance (O-2)
  • AVRCP: Replaced U+0092 with regular apostrophes in avrc_defs.h (#4667)
  • HFP-AG: Fixed connection failure and crash when receiving unknown AT command
  • HFP-AG: Fixed error of return line in AG API (#5554)
  • HFP-AG: Fixed AG audio crash (change the return position)
  • HFP: Enabled PCM config in menuconfig and controller
  • Fixed the issue that bluedroid enable takes long time
  • Fixed read rssi delta issue in bredr (#5660)
  • Updated read rssi related function names
  • HFP-AG: fixed Ag Example Outgoing Callback Not Triggered (#4967)
  • SPP: Moved RFCOMM rx flow control in btc layer
  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000
  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API
  • Fixed the issue that state failed to synchronize between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled
  • SPP: added protection for SPP api
  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up
  • Added limitations to use of A2DP and AVRCP because of their coupling in the implemetation
  • Fixed BTC task name mismatch (#4966)
  • Added BTC Init failure protection

Bluetooth Low Energy

Controller

  • Added BLE connect parameter check
  • Fixed channel map instant reverse
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed ble crash issue triggered by ble event irq miss(0x20000) (d2a1d18d)
  • Fixed the crash when controller disabled and then re-enabled for ble
  • Fixed the missed channel map update when the slave latency is greater than 0.
  • Fixed the missed channel map update when the instant value is 0
  • Fixed assert(10, 9), when the AFPM happens
  • Fixed tx_prog insert error
  • Fixed HCI timeout
  • Added timer to monitor scan event
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed the issue that the ble terminate ack packet cannot be received with a high probability in coex mode
  • Fix assert(9, 10), Insert the llcp packet to the top of the tx_preg linked list
  • fixed memory damage caused by bluetooth memory release
  • Fixed no event end isr sometimes when scanning
  • Fixed can not disconnect issue due to supervision timeout when LLC is in LLC_DISC_BUSY status

Bluedroid

  • Added API to query the number of available buffers for the current connection
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Changed HCI task size back to 2048
  • Fixed the issue of incomplete data packets caused by disordered acl data packets
  • Fixed ble memory leak issue, buff_semaphore was not released
  • Added HID Host and Device support in Bluedroid
  • Added some general HID utilities and definitions to help integrate with other stacks and native USB
  • Fixed the issue that bluedroid task pinned_to_core doesn't take effect
  • Authentication fixes in Legacy and Secure Connection
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed btc disable crash some times
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the btu task watchdog timeout during multi-connection

Blufi

  • Reply with an error response when the format of the received data packet is wrong
  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection

NimBLE

  • Added menuconfig option for NimBLE host flow control
  • Added Non-Resolvable private address (NRPA) support
  • Added NimBLE config options in sdkconfig.rename
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Added ble_hs_lock in ble_gap_unpair: upstream upstream (apache/mynewt-nimble#584)
  • Added Host based privacy (RPA) feature support
  • Added IRAM allocation provision under nimble_platform_mem_malloc()
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c: upstream (apache/mynewt-nimble#843)
  • Included changes in blecent example: upstream (apache/mynewt-nimble#702)
  • Fix checking for NOP in ble_hs_hci_rx_evt: upstream (apache/mynewt-nimble#738)
  • Fixed check for static random address & add MSYS_1 in menuconfig
  • Fixed NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT in esp_nimble_cfg and bleprph README
  • Fixed build failures due to non static declarations in RPA feature (#4413)
  • Reset master and slave states on host reset
  • Use macros for log level filtering which reduces the size of the compiled binary (espressif/esp-nimble#6)
  • Fix NULL pointer passed as a parameter: upstream (apache/mynewt-nimble#701)
  • Pairing procedure abort on unexpected req: upstream (apache/mynewt-nimble#710)
  • Fix conn flags after pairing: upstream (apache/mynewt-nimble#730)
  • Remove notification for update process timeout (Vol 6, Part B, section 5.2 ): upstream (apache/mynewt-nimble#782)
  • CCCD related fixes: upstream (apache/mynewt-nimble#790) and (apache/mynewt-nimble#804)
  • Host based Privacy (RPA) related fix: (espressif/esp-nimble#7)
  • Added host_rcv_pkt event buf size check

ESP-BLE-Mesh

  • Miscellaneous modifications for Provisioner
    • Support Provisioner persistent functionality
    • Added a function to set Provisioner static oob value
    • Added a function to set Provisioner unicast address
    • Added a function to provision devices with fixed address
    • Added a function to store node composition data
    • Added a function to get node with device uuid
    • Added a function to get node with unicast address
    • Added a function to delete node with device uuid
    • Added a function to delete node with unicast address
    • Added a function for Provisioner to update local AppKey
    • Added a function for Provisioner to update local NetKey
    • Fixed Provisioner entering IV Update procedure
    • Fixed Provisioner failed to publish messages
    • Provisioner ignores msg from removed node
    • Fixed Provisioner provisioning deadlock
    • Checks if the AppKey exists before deleting it
    • Modified the Provisioner disable function
    • Add parameters for Provisioner binding AppKey comp event
    • Fixed not reset transport info when node is removed
    • Removed BLE_MESH_MAX_STORED_NODES option
    • Changed to continue node info restore even if failure happens
    • Added check if assigned node address is duplicated
    • Associates replay protection list size with nodes count
    • Updated next alloc address when node info is added
    • Continue notifying unprovisioned device beacon to application layer
    • Add a function to get the entry of the nodes table (#5397)
    • Use same functions for node composition data store/restore
    • Added functions to get node information with node name
  • Synchronized a few Zephyr BLE Mesh updates
  • Support using a specific partition for BLE Mesh
  • Added a function to de-initialize BLE Mesh stack
  • Fixed use-after-free issue when de-initialize mesh
  • Fixed not free beacon timer when de-initialize mesh
  • Fixed de-initialize error when using NimBLE host
  • Added mutex for mesh related timer operations
  • Fixed an issue which may cause client failed to send messages
  • Use bt_mesh.flags to indicate mesh device role
  • Callback RSSI of received mesh provisioning packets
  • Change some stack log level from debug to info
  • Fixed node ignoring relay messages issue
  • Fixed compile warning when proxy related macros are disabled
  • Clean up BLE Mesh stack included header files
  • Fixed compile warning when BT log is disabled
  • NULL can be used if client message has no parameters
  • Initialize BLE Mesh stack local variables
  • Support using PSRAM for BLE Mesh mutex, queue and task
  • Added an option to enable using memory from PSRAM
  • Allow sending messages with maximum 377 octets payload
  • Unified client application and lower transport layer timeout
  • No timeout for client message to non-unicast address
  • Fixed timer start when sending client acknowledged messages
  • Fixed client local parameters not initialized
  • Calculates incomplete message timeout based on message info
  • Added check of buf->ref before decrementing buffer ref count
  • Used the right net_idx & app_idx for publish
  • Used the right netkey during iv update
  • Fixed time scene wrong spelled macro name
  • Added length check for some mesh operations
  • Reworked provisioning pdu length check
  • Added proxy configuration pdu length check
  • Fixed not erasing mesh node information completely
  • Added an option to fix node nvs information restore
  • Added missing #ifdef __cplusplus
  • Fixed using a comma in Kconfig
  • Fixed not updating provisioner address in fast provisioning
  • Fixed ignoring messages when fast provisioning is enabled
  • Fixed compile error when including from C++ files
  • Support for BLE advertising simultaneously when mesh is working
  • Added init flag for friend init/deinit
  • Fixed compile error when -O2 (performance) is chosen
  • not ignore messages from the nodes whose addresses are not in the provisioning database
  • Removed the fix patch for Bluetooth Mesh Android App v1.1.0
  • Fixed the issue of using old config for duplicate scan
  • Fixed the issue of not using pre-initialized private key
  • Added check of the result of creating timer
  • Defined an application macro for invalid company ID
  • Removed relay option dependency
  • Do not #define bool when compiling in C++ (#5100)
  • Removed boolean type definitions
  • Added checking model status with variable length
  • Added functions for model subscribing/unsubscribing group addresses locally
  • Fixed wrong log output when using bt_hex
  • Fixed the issue that RSSI of the received message is always 0 (#5505)
  • Added checking if subnet exists before updating beacon_sent
  • Fixed compile error when only proxy enabled
  • Updated send_ttl when receiving a message (#5300)
  • Added two application macros for TTL
  • Added an option of using IRAM for memory allocation
  • Reworked using dev flag to check scan status
  • Fixed receiving health current status incorrectly
  • Optimized calling of client model related functions
  • Fixed updating ccc handle incorrectly when using NimBLE host
  • Avoid using ASSERT in mesh stack
  • Fixed not using the latest iv_index for provisioning
  • Check if stack is initialized before initializing vendor client
  • Optimized Provisioner delete device function
  • Defined a common type of nvs handle for settings
  • Added device role check before enabling proper functionality
  • Added mutex for protecting settings operations
  • Added erase settings functions
  • Updated transport rx reset operations
  • Added clearing hb_pub function in settings
  • Optimized erasing NetKey and AppKey functions
  • Optimized model settings related functions
  • Fixed storing next allocated net_idx and app_idx
  • Use settings_core_erase when de-initialize mesh stack
  • Make buf debug option invisible in menuconfig
  • Added mesh device properties v2 definitions
  • Use callbacks for model related operations (Zephyr)

Wi-Fi Coexistence

  • Fixed watchdog timeout when sleep enabled
  • Fixed misspelling in Kconfig
  • Fixed A2DP stuck after creating another connection
  • Adjusted coexist scheme when BT is in connected status
  • Fixed wakeup delay when DFS is enabled
  • Optimized WiFi/BT coexist sleep
  • Added coexist API to enable BLE connection dynamic priority
  • Rewrote ble dynamic priority to fix ble disconn in conn_param_update/channel_map_update
  • Rewrote ble dynamic priority in connection establishment
  • Fixed ble dynamic priority with latency
  • Fixed status bit set error when connection failed

Wi-Fi

  • Added and utilize WPA3/WPA2 Mixed mode Authtype
  • Added support of multiple phy init data
  • Added wpa_supplicant parsing support for WEP40 key
  • Added TX packets size check
  • Added esp_wifi_get_tsf_time() API to get the tsf time
  • Added check for Wi-Fi stop when calling esp_wifi_deinit
  • Added sending sta connection event again after ap sent disconnect event
  • Added API of setting/getting inactive time
  • Added new API esp_wifi_ap_get_sta_aid
  • Added an API for peripherals to set callbacks to skip light sleep when WiFi TSF is active
  • Added TBTT update when AP reset TSF
  • Added API to get available internal heap size
  • Added softap example channel configuration
  • Removed AUTH_CHANGED reason code logic
  • Fixed the issue when calculating the PMK, the local rx beacon time increment is 0
  • wpa_supplicant: Support for mbedtls tls handshake
  • wpa_supplicant: Fixed invalid pointer deference and memory leak
  • wpa_supplicant: Fixed inter operability issue with freeradius version 3.0.21 and openssl 1.1.1f when internal tls client is used which requires extension elements in client hello
  • wpa_supplicant: Fix WPA3 and WPA2 transition related failures
  • wpa_supplicant: Fixed compilation errors when USE_MBEDTLS is disabled
  • wpa_supplicant: Ported dpp feature from supplicant
  • wpa_supplicant: Fix formatting of file esp_wpa3.c
  • wpa_supplicant: Allow NULL-padded WPS attributes
  • wpa_supplicant: Allow building with mbedTLS integration but no hardware MPI (#5321)
  • wpa_supplicant: Added wpa_supplicant debug logging as a configurable option (#3839)
  • wpa_supplicant: Fix SAE test-case failure on mbedtls version udpate
  • WPS: fixed handling of multiple AP credentials in WPS
  • Fixed WPS config for support with gnu++11 as well as c99 (#4625)
  • esp_wps.c: Fixed datatype for wps task handle
  • Fixed the issue that API esp_wifi_sta_get_ap_info returns actual values of group
  • Fixed an crash in executing wifi deinit in softap + sta mode and AMPDU is on
  • Fixed the issue that sniffer fails to work during mode switch
  • Place the Vendor Specific element at the end according to the protocol
  • Fixed the memory leak caused by WiFi stop
  • Fixed the crash when wifi stop after deinit
  • Fixed the issue that softap will no prompt if the STA is powered off or the AP does not receive disassoc/deauth
  • Fixed the issue when station connects to hidden AP, fails to update rssi value of hidden AP
  • Fixed setting channel when Wi-Fi is in NULL mode
  • Fixed a crash during WEP shared auth
  • Disabled WiFi API parameter checking log
  • Fixed select_waiting assert and crash after reapplying for UDP socket when UDP is turned off
  • Fixed the issue that information of scanned AP will be saved only when the current scanning channel is the same as AP's channel
  • Avoid parsing RSN/WPA IE's after connection
  • Configure bandwidth and phy mode to store NVS
  • Now returns an error if the setting AP's channel is out of range
  • Fixed error in printing level in wifi log
  • Disabled wpa_supplicant TLS 1.2 support by default due to issues with some Enterprise Authentication Servers
  • Fixed esp_wifi_stop crash without calling init
  • Fixed obsolete interface gethostbyname
  • Fixed the bug for softAP update second channel wrong
  • Fixed country code query when policy change from manual to auto
  • Fixed internal scan data struct definition, changed wifi_scan_time_t from union to struct
  • Enable WPA3 & PMF by default
  • Fixed WPA3 Auth timeout issue in BLE coexistence scenario
  • Fixed memory leak in wpa3
  • Fixed AP switch to adjacent channel without disconnect (-12638)
  • Fixed wpa_supplicant memory leaks and invalid memory access
  • Fixed a timeout issue in the EAPOL four-way handshake
  • Optimized four-way handshake failure time
  • Fixed esp_wifi_set_max_tx_power description
  • Removed wifi tx buffer limits
  • Fixed addba ssn and send bar for first ampdu
  • Fixed interrupt handle psram variable error (#5354)
  • Fixed the issue of regdomian update
  • Fixed an issue when setting TX DMA buffer above 32 would not take effect
  • Fixed WPA memory leak in softap mode
  • Moved esp_phy_common_clock_disable into periph_ctrl and put it into IRAM
  • Added esp_wifi_ap_get_sta_aid
  • Fixed AP power save buffer issue by returning no memory error code is power save buffer is not enough
  • Fixed scan saves wrong RSSI value
  • Added esp_wifi_statis_dump to dump the key WiFi statistics
  • Optimize WiFi TX
  • Fixed esp_wifi log levels (#5721)
  • Fixed null pointer dereferences in management rx
  • Set default AP handlers in wifi_create_and_start_ap()(#5844)
  • Fixed scan issue with WPA2-PSK-SHA256 AP
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Modified LR for esp32 and esp32s2
  • Optimize some debug logs for probe response
  • Fixed two bugs in classify
  • Fixed the issue of no event for connection
  • Added STA checks during STA PMF operations
  • Fixed WPA2-Ent issue with Open AP
  • Skip WPA-TKIP profile if PMF is required
  • Skip & clear Supplicant PMK Cache with mismatching AP config
  • Update WiFi toolchain to 1.22.0-97-gc752ad5
  • wpa_supplicant: fixed sockets connection abort when doing sockets send
  • Fixed high loss ratio of receiving broadcast data on ESP32-S2 station when it connects to an ESP32-S2 softAP
  • wpa_supplicant: Deinit wpa2 states in wifi deinit
  • wpa_supplicant: Fixed linker errors depending on link order on some systems (#5641)
  • WPS: Added Failure reason code for WPS event
  • Fixed the issue that set_channel doesn't work for softAP when STA connects

ESP-WIFI-MESH

  • Support chain topology
  • Add esp_mesh_set_topology and esp_mesh_get_topology
  • Support mesh network power save function
  • Add esp_mesh_enable_ps and esp_mesh_disable_ps
  • Add esp_mesh_is_ps_enabled and esp_mesh_is_device_active
  • Add esp_mesh_set_active_duty_cycle and esp_mesh_get_active_duty_cycle
  • Add esp_mesh_set_network_duty_cycle and esp_mesh_get_network_duty_cycle
  • Add esp_mesh_get_running_active_duty_cycle
  • Add mesh PS option to the add announcement packet
  • esp_mesh_set_type supports MESH_IDLE and MESH_STA
  • Remove coexist warnings in ESP_WIFI_MESH
  • If the root is specified (FIXED-ROOT) by set type or set parent, change ie.mesh_type to MESH_ROOT before connect to router
  • Release esp_mesh_recv_toDS when the root becomes non-root
  • Fix esp_mesh_deinit blocking issue
  • Remove coexist warnings for ESP_WIFI_MESH
  • Add an example showing internal IP capable mesh network
  • Fixed FIX-ROOT does not reconnect to router when disconnect reason is too many
  • Added API esp_mesh_print_scan_result
  • Modified not to reset mesh_xonseq of self and children when flush_upstream_packets
  • Fixed not switch to a parent candidate which has the same layer and assoc as current parent
  • Fixed not arm parent monitor when a parent candidate is cleared without sending an event to mesh layer
  • Fixed the new voted root does not reconnect to router if rssi is weak

ESP-NOW

  • Fixed ESP-NOW API random crash
  • Fixed the crash issue when fetching peer after delete cur_peer
  • Supported ESPNOW + PMF co-existance

Smartconfig

  • Airkiss: Fixed bug where connection would timeout but success was returned (#3362)
  • Fixed the bug that airkiss find hidden AP fail

Ethernet

  • Added the support of pin emac task to core
  • Added ETH_MAC_FLAG_WORK_WITH_CACHE_DISABLE flag to make Ethernet driver
    possible to work when cache disabled (#4635)
  • Added ENC28J60 Ethernet Driver (#4435)
  • Ensure that eth_driver handle is allocated in internal RAM (#4635)
  • Fixed potential null pointer dereference in ethernet driver (#4890)
  • Ensure that calling esp_eth_stop() stops the EMAC hardware layer
  • Improved reliability of ethernet driver start/stop/uninstall/install
  • Insert mininum assert time for PHY HW reset (#5528)
  • Fixed potential task watch dog timeout
  • Added Ethernet driver flow control
  • Fixed Ethernet RX issue, handle rx early event
  • Support PHY power on timeout (#5425)
  • Fixed C++ linkage moving extern "C" after includes (#5699)

Security

  • Added platform independent CMake signing
  • secure boot: Fix anti-fault value if hash is shorter than curve
  • optimize AES-GCM via enabling HW acceleration for GCM by default
  • HMAC: adding upstream message support
  • Enable flash encryption by setting FLASH_CRYPT_CNT to max
  • SHA: add fallback for when memory alloc fails
  • ESP32-S2: Added the support of disabling legacy boot mode & ROM remap modes if either Secure Boot or Flash Encryption is on
  • Fixes the cpp macro in esp32 secure boot rom functions (#5878)

Peripheral Drivers

  • ADC: Disabled the synchronization operation function of ADC1 and DAC
  • ADC: Fixed adc io pullup/pulldown initialization bug
  • GPIO: Fixed light sleep can't be awoken by GPIO issue
  • I2C: Added check whether SCL and SDA are on different pins
  • I2C: Made data argument of i2c_slave_write_buffer const
  • I2S: Fixed issue: ADC read values inverted (#4557)
  • I2S: Fixed issue: i2s_comm_format_t configuration parameter does not match the TRM (#4522)
  • I2S-ADC: Fixed issue: GPIO may not configured properly when ADC is used with I2S
  • I2S, PCNT: Cleaned up public header
  • I2S: Fixed issue i2s_start reseting I2S in incorrect order caused word-order error
  • MCPWM: Fixed init MCPWM Fault line via config struct (#5491)
  • MCPWM: Fix fault pin initialization issue (#5491)
  • PCNT: Add pcnt_isr_unregister new interface
  • PCNT: Fixed pcnt driver doesn't clear interrupt status properly (#5929)
  • PSRAM: Fixed the read id failure for 16mbit PSRAM
  • PSRAM: Added support for esp32-pico-v3-02
  • RMT: Fixed missing 0x in rmt_ll.h (#4760)
  • RMT: Fixed the breaking change: application needs to call rmt_driver_install before rmt_config (#4664)
  • RMT: Fixed the breaking change: Do not support memory block count > 1 (#4959)
  • RMT: Supported using REF_TICK as channel clock source
  • RMT: Disabled carrier feature by default
  • RTCIO: Fixed the issue sometimes hold cannot be disabled (#4600)
  • SDIO: Fixed compilation error on verbose level (#4786)
  • SPI: Supported sharing SPI bus among drivers
  • SPI: Fixed the memory accessed while cache disabled issue in the bus lock when log level is verbose
  • SDSPI: Supported mounting multiple SD cards and using polling transactions to increase reading speed
  • TWAI: Fixed issue that some program logic are placed in assert()
  • UART: Fixed uart_set_line_inverse issue (#4581)
  • UART: Fixed the issue of missing txfifo reset
  • UART: Fix RXFIFO_CNT bug on ESP32 (#5101)
  • periph_ctrl: Added LL for clock and reset control
  • periph_ctrl: Added reference counter in periph_ctrl
  • periph_ctrl: moved esp_phy_common_clock_disable from WiFi, BT
  • UART: Added new API to set line endings for specified UART number
  • UART: Fixed issue that uart_wait_tx_done return ESP_OK when failed.
  • ADC: added support for ESP32-S2 adc calibration scheme
  • ADC: added public adc-dma api for esp32
  • DAC: Added DAC-DMA driver code and hal code
  • SPI: Fixed CS high active not available issue
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset

Core System

  • Added alloc failed hook with optional abort option
  • Added semi-colon to esp_event_loop_create(...) (https://github.com/espressif/esp-idf/pull/4711/files)
  • Added support of LoadStore Exception Handlers
  • Added a Kconfig option - Number of attempts to repeat 32k XTAL calibration
  • Added soft solution for esp32 eco3 live lock issue
  • Added Task Watchdog backtrace printing
  • efuse: Added support of mac address allocation for ESP32-S2
  • efuse: Add new esp_efuse_write_field_bit() convenience function
  • efuse: Add 'disable Download Mode' & ESP32-S2 'Secure Download Mode' functionality
  • efuse: Fixed get_coding_scheme() when CONFIG_SECURE_FLASH_ENC_ENABLED and LOG_LEVEL is Debug (#4862)
  • efuse: Added an API to return the efuse descriptor for a key block's purpose field
  • efuse: Don't need to burn WR_CRYPT_CNT if CRYPT_CNT is already max
  • efuse: Add some fields in efuse_table and update esp_efuse_get_pkg_ver()
  • Fixed case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set (#2954)
  • Fix esp_timer_impl_set_alarm() when CPU and APB freqs are changed (#2954)
  • soc: clear PHY status when cpu start
  • soc: add hal api to set exception vector table base address
  • soc: added hal api to set exception vector table base address
  • soc: Separates soc component into abstraction, description, and implementation files
  • heap: added aligned alloc implementation on multi_heap layer
  • heap: added alloc failed hook and configuration options
  • heap: pushed down all the aligned_alloc / free implementation
  • heap: added rtc fast memory region to dynamic memory pool
  • heap: Only fill new heaps with FREE_FILL_PATTERN on init if Comprehensive poisoning is enabled, allowing faster boot in other situations (especially when PSRAM is used)
  • esp_timer: Added implementation based on TG0 LAC timer
  • esp_timer: Create esp_timer as a separate component + LAC timer + SYSTIMER for ESP32-S2
  • log: Use proper API to get Tick Count in esp_log_timestamp
  • Fixed accessing some files from 2nd part of the bootloader
  • shared_stack: fixed watchpoint placement on shared stack
  • shared_stack: using watchpoint 1 to monitor the shared_stack instead of watchpoint 0
  • ESP-Event: added support of esp_event multiple registrations
  • Fixed compilation error, add missing gpio_periph.h header (#4797)
  • atomic: support fetch_and, fetch_and and fetch_xor
  • Create abstraction layer for cpu related operations
    shared abort panic with port layer
  • Let panic handler break into debugger on software abort
  • Suppress reason display on panic due to software abort
  • Fixed case when elf file SHA256 should be printed by panic handler while cache is disabled
  • xtensa: Added a script for parsing CPU traces (TRAX)
  • xtensa: Fixed sign-conversion warning (#4965)
  • multi_heap: eEsure that malloc(0) return NULL pointer in any poisoning configuration
  • watchdog: Added LL (low-layer) and HAL (hardware abstraction layer) for watchdog timers
  • systimer: Added HAL layer
  • log: Added new macros to log when the cache is disabled
  • Console: Don't return NULL on 0 length input (#4926)
  • console_repl: Changed config structure to support different devices, added uart param to config structure (#4845)
  • esp_system: Restored weak esp_reset_reason functions
  • pthread: Used INTERFACE in target_link_libraries for vPortCleanUpTCB wrapper
  • esp_efuse: Updated esptool and add reedsolo and bitstring into requirements.txt
  • esp_ipc: Moved esp_ipc to new component
  • intr_alloc: Removed use of esp_log in ISR context, changed to ISR version of critical section
  • Reduced using ESP_EARLY_LOGx and moved some code after startup stdout initialization (#5343)
  • Added psram stack check in backtrace
  • Added brownout detector HAL for esp32 and ESP32-S2
  • Enabled brownout reset for esp32 rev. 1 and above
  • Freertos: fixed compilation warning at -O2 level (#5525)
  • Freertos: don't clobber a4 while spilling register windows (#5758)
  • shared_stack: Fixed task stack not being replaced by shared stack correctly
  • When using SPIRAM stack in esp_restart_noos(), switch to internal stack automatically (#5107)

Debugging

  • core dump: Disable core dump to flash if stack in PSRAM option is enabled
  • core dump: Fixed coredump data overwriting due to 'TaskSnapshot_t' and 'core_dump_task_header_t' difference
  • core dump: Fixed size of memory region used by espcoredump.py
  • app_trace: Added support for multi-core traces in single file to SystemView processing scripts
  • panic handler: Fixed printing of ELF file if cache is disabled
  • Make espcoredump more resilient when decoding specific thread stack (#4865)
  • app_trace: Add coverage generations by gcovr
  • gcov: Fixed APP CPU syscall table

FreeRTOS

  • Optimized task selection on single core configurations
  • spin_lock: Added new spinlock interface and decoupled it from RTOS
  • Added feature to utilize IRAM memory using exception handlers for unaligned access fixups
  • fpu: Enable usage of FPU inside of an ISR
  • Moved all xtensa specific files into a separated folder
  • Added task state field inside of TaskSnapshot_t to capture it

newlib libc

  • Moved abort to newlib component
  • Removed direct dependencies on VFS functions
  • Added default implementations for more syscalls
  • Added endian.h header file for compatibility (#4784)
  • Fixed initialization of syscall_table_ptr_app in single core mode
  • Fixed adjtime, returns the amount of time remaining from any previous adjustment

LWIP

  • Added IPV6 stateless address autoconfiguration support
  • Added config option for SO_LINGER
  • Added simple SMTP email client
  • Added LWIP_ASSERT control
  • Added host name in discover packets
  • Added to sys_arch_protect() a check that the mutex is created before use if not then creates it (#944)
  • Added support for IPv6 events from PPP interface
  • Added support for NAPT functionality
  • pppos_client: Fix power_down dce immediately after got IP (#4618)
  • pppos_client: added support for PPPAUTHTYPE_NONE
  • Wrap lwip/tcp.h header for compatibility (#4637)
  • Fixed the crash caused by socket lock not initialized
  • Fixed an issue entering an incorrect multicast address will return success
  • make IPV6 link-local support over PPP configurable (#4782)
  • esp_netif_ppp: added NETIF_PPP_AUTHTYPE_NONE to esp_netif_auth_type_t (#4639)
  • esp_netif_ppp: fixed posting ip-event data (#4634)
  • esp-netif: easier creation for WiFi interfaces with custom parameters (#4611)
  • esp-netif: fix get/set hostname API to reflect user settings (#4737)
  • esp-netif: make the IPv6 configurable for PPP netifs
  • esp-netif: Added API to get the underlying interface name
  • esp-netif: Fix compilation if ESP_GRATUITOUS_ARP not enabled (#5294)
  • Fixed assertion "netconn marked closed" (#3842)
  • esp-netif: set default interface for ppp netif must be called from lwip context
  • esp-netif: Enable easier configuration of custom DHCP server address
  • esp-netif-ppp: added support for setting ppp netif up and down
  • esp_netif: Remove restarting DHCP client and server if it has already been started
  • esp-netif: added new API to get the type of the IPv6 address
  • esp-netif: ppp netif to use netif_is_link_up() to update interface state (#5069)
  • esp_netif: fix default connect handler to check dhcpc return value (#5184)
  • Fixed the issue that socket can still send data after the station disconnected from WiFi in IPv6 environment
  • dhcp-server: fixed static analysis warnings
  • dhcp sever: Make option netmask configurable (#4988)
  • esp_modem: updated pppos_client modem to use uart with REF_TICK (#4801)
  • esp_modem: Ensure uart_param_config and uart pins are set before uart_driver_install (#4904)
  • esp_modem: Fix misuse event_queue_size as pattern_queue_size (#5182)
  • esp_modem.c: post PPP stop event when requested (#4642)
  • Fixed the issue of failing to set DHCP timeout during system initialization
  • Fixed assert when calling tcp_kill_state
  • Fixed failure to set DHCP timeout during system initialization
  • Fixed the issue of UDP packets loss in ARP in UDP tx performance testing
  • Make LWIP TCP rto time configurable
  • IPv6: fixed the issue that packets exceeding MTU can still be sent and received when IP fragmentation is turned off
  • Fixed ICMP bug to reply correctly to pings with arbitrary length
  • esp-netif: Enable easier configuration of custom DHCP server address
  • Optimization in creating a TCPv6 connection
  • Fixed potential crash in reapplying for UDP socket when UDP is turned off,sock->select_waiting !=0
  • IPv6: fixed the issue that IPv6 ND6 queuing too much packets cause no memory issue
  • IPv6: ipv6 fails to send multicast data when source address is null
  • IPv6: Fixed the issue of failing to send ping packet
  • Changed the TCP retransmission interval, where the SYN retransmission interval is 1.5s, the number of times is 12. The first retransmission time of the data packet is 3s
  • Added IPv6 ping function
  • Fixed TCP timer interval

mDNS

  • Added option to configure mDNS task stack size (#5216)
  • Fixed events to handle the GOT_IP6_EVENT for only known network interfaces
  • Removed mbedtls dependency (#5188)

Provisioning

  • Use dynamic buffers instead of static memory
  • Unified Provisioning: Fixed BLE characteristics read response issue when read response length is a multiple of () length
  • wifi_prov_mgr: Add config options to switch transport and support for custom data
  • esp_prov: Add support for sending some abstract custom data
  • BLE: Change service_uuid to non-standard 128-bit UUID
  • BLE provisioning: Add check for valid ble read offset
  • Wifi_prov_manager: Fix to ensure Wi-Fi events still received after Connection errors
  • protocomm_httpd: Restart security session if request is received on a new session
  • use memcpy instead of strncpy for copying SSID (#5866)

OTA

  • Added fix in case of URL redirection and a test case of URL redirection (#4780)
  • Added errno check for WiFi disconnection while performing OTA
  • Fixed bug where erase size could be one sector too long (#4953)
  • Added API to write data in a non contiguous manner

HTTP Client

  • Added helper API to read larger data chunks from HTTP Stream
  • Added API to get URL from client (#5115)
  • http_header.c: Add error print in http_header_generate_string if buffer size is less than required size
  • Fixed error handling in esp_http_client_read and esp_https_ota_perform

HTTP Server

  • Added support of Mutual Authentication in HTTPs Server (#4184)
  • Added WebSocket support (#4306)
    • Handling WebSocket handshake
    • Receive WebSocket packets
    • Send WebSocket frames
    • Receive WebSocket frame
    • Automatic control frame handling
  • Fixed HTTPD_SSL_CONFIG_DEFAULT doesn't compile on C++ (#4981)
  • Fixed syntax error in esp_http_server.rst (#5021)
  • Fixed a bug which could cause issues with LRU purge (#4753)
  • Updated LRU counter on accepting a new connection (#3851)

mbedTLS

  • Added ESP certificate bundle feature, X509 certificate management
  • Added configurable option to redirect TLS buffers to IRAM for ESP32 single core configuration
  • Added configuration options for EC-JPAKE (#5106)
  • Added config options for chacha20, poly1305 and chachapoly
  • Added a config option to enable HKDF
  • Added dynamic buffer and local resource management to decrease SSL heap cost
  • Added config options in mbedtls
  • Added options to mbedtls for hardware acceleration
  • Updated to mbedtls release v2.16.7
  • cert bundle: Fix memory leak during cert verification (#4983)
  • cert_bundle: fixes the "No CA Chain is set" error
  • Disable mbedtls EC curves if hardware acceleration is selected since the hardware will have to define the curves supported
  • Don't compile hardware MPI & SHA files if disabled in config

ULP

  • Fixed ulp external project arguments (#4713)

Power Management

  • Fixed crash or reboot of lightsleep on ESP32-S2

Bootloader

  • Removed bootloader_flash_gpio_config () due to its same function of bootloader_flash_dummy_config
  • Don't print an error message after WDT reset in unicore mode (#4388)
  • bootloader_support: Fixed bootloader_flash_read alignment error when compiling at -O0 optimization level
  • bootloader: Force bootloader_image_hdr to be word aligned
  • bootloader_support: read random from register
  • bootloader_support: initialize mbedtls_ctr_drbg_context per mbedtls v2.16.5 requirement
  • bootloader_support: don't check signature when JTAG is attached (#4734)
  • Fixed signed partition table generation
  • bootloader_support: fix issue in memory mapping for getting app descriptor (#5911)
  • bootloader: Fixed esp_get_flash_encryption_mode() (#5747)

ESP-ROM

  • link newlib nano from ROM only if SPIRAM cache workaround is disabled
  • Fixed esp32.rom.newlib-time.ld should includes all time ROM functions/data (#4925)
  • Fixed broken CONFIG_LEGACY_INCLUDE_COMMON_HEADERS

ESP-TLS

  • Added API to retrieve sockfd from tls connection
  • Added connection timeout to esp_tls_conn_new_sync()
  • Added support for https_server using wolfSSL
  • Added error flags specific wolfSSL
  • Added support for PSK, SNI, ALPN using wolfSSL
  • Added support for DER formatted certificates
  • Added support for using hardware security module, ESP32-SE
  • Fixed error captures
  • Made respective changes to esp_err_to_name.c
  • Changed argument pointer type to (void *) for esp_crt_bundle_attach
  • Fixed incorrect error message after handshake fails
  • Enable TLS renegotiation using explicit API call

TCP Transport

  • Implemented connect timeout (#3791)
  • Close to return error only for socket error or invalid arguments (#4872)
  • Updated DNS host name resolution using getaddrinfo for tcp transports (#4510)
  • Reset state on connection closure for SSL transports (#4598)

Websocket

  • Fixed opcodes when performing a fragmented send (#4974)
  • Updated the client to abort the connection if send fails
  • Fixed the client to avoid deadlock if stop called from event handler

ESP-MQTT

  • Added option to configure MQTT task priority (#4947)
  • Fixed an issue which could result in a race condition and subsequent crash
  • Change the message printed after MQTT connection failure
  • Documentation: Makes clear that publish API could block
  • Added option to configure output buffer size
  • Set duplicate flag for both qos1 and qos2 (#4787)
  • Fixed C++ build failing on incorrect event enum conversion
  • Fixed releasing lock if subscribe/unsubscribe message fails to be created
  • Fixed receiving longer (websocket) data with standard tcp_transport reads
  • Fixed possible double free of client config if init fails
  • Fixed queueing oversized messaged even if not connected
  • Fixed outbox_destroy() to correctly delete all queued messages
  • Added set_config to update ssl-transport configuration
  • Fixed storing timestamps in long-long format
  • Added runtime selection of mqtt protocol version
  • Support larger buffers and messages
  • SSL: Added config option for skipping common name check (espressif/esp-mqtt#158)
  • SSL: Added support for tls with secure element (ATECC608A) (espressif/esp-mqtt#156)
  • Websocket: Allow the query part of the uri to be a part of the path (espressif/esp-mqtt#161)
  • Fixed esp_mqtt_client_stop deadlock (espressif/esp-mqtt#163)
  • Added dispatch error event for read errors (#5704)
  • Updated the client to clean up expired messages when offline (#5668)

Storage

  • NVS: Change all new to new (nothrow)
  • NVS: Fixed missing implementations for string/blob
  • NVS: add support for i16, u64, i64 types to NVS partition generation tool
  • NVS: added nvs support data encodings
  • NVS: allow to specify custom partition (#5172)
  • NVS: iterator skipping version 1 blobs
  • NVS: improved behavior for erasing partitions
  • SPIFFS: Fixed bugs when CONFIG_SPIFFS_USE_MTIME is not defined
  • SPIFFS: restore dependency of flash targets on spiffs images (#5066)
  • NVS Flash: prevented erasing initialized partition (#4755)
  • spi_flash: fix regression in encrypted flash write (#5467)
  • spi_flash: added support of MXIC flash chips
  • spi_flash: fixed the regression of non-quad mode by default chip driver, issues in add_device
  • spi_flash: Fixed the write performance regression
  • SDMMC: Fixed the probe issue that forbid sdspi working in highspeed mode
  • SDMMC: Added check for function parameters before using them (#5000)

VFS

  • VFS: Check in select() if the UART driver is installed or not
  • VFS: add option to disable VFS layer, saving some RAM and code size
  • VFS: supporting semihosting_common handler from OpenOCD
  • VFS: support vfs uart set line endings with specified uart number

Modbus

  • freemodbus: fixed long buffer failure
  • freemodbus: added extern c block into common header for cpp (#5071)

Tools

  • Added tools support for secure boot v2 for ESP32 ECO3
  • Added check if idf_tools.py install-python-env is called from a venv
  • Added proper multi-chip support for idf_size.py
  • Added option to show differences between MAP files with idf_size.py
  • Added the functionality of autodetecting the target of MAP files in idf_size.py
  • Added export and install scripts for fish shell (#4944)
  • Added --gdbinit argument to gdb, gdbgui, gdbtui
  • Added Kconfig for enabling 0 length returns from linenoise
  • ninja: update to 1.10.0
  • cmake: update to 3.16.4
  • esptool_py: retained flash targets when building RAM loadable apps
  • esptool_py: pass flash mode/frequency/size to elf2image
  • Updated kconfiglib to 13.7.1
  • Marked ULP toolchain as not available on 32-bit Linux
  • idf_tools.py: fix typo in PYVENV_LAUNCHER env variable name
  • docker: install CMake version provided in tools.json (#4644)
  • docker: enable ccache by default
  • tools: work around usbser.sys bug in idf_monitor (#4676)
  • gen_esp32part: fixed subtype in PartitionTable.find_by_type (#4723)
  • check_python_dependencies: If overriding requirements.txt path, provide a pip command line
  • idf_tools.py: fixed install-python-env failure with virtualenv 20.0.0
  • installer: fix copying IDF to a destination on another drive (#4128)
  • installer: used bundled idf_tools when installing IDF v3.3.1, IDF v4.0
  • installer: added PYTHONUNBUFFERED=1 when calling idf_tools.py
  • tools: bump version of windows tools installer to v2.3
  • idf_monitor: automatically decode UART core dumps
  • idf_monitor: fixed gdb issue opening large COM port on Windows
  • confserver: Standardize and document the handling of hex values
  • confserver: Always store hex values in sdkconfig with 0x prefix
  • C++: added experimental C++ component
  • C++: added ESPException class to the C++ experimental component
  • C++: make attribute((init_priority(n))) work (#5038)
  • Force the order of cmake generators
  • partition_table: output partition table info for partition_table target
  • partition_table: do not always display partition table contents on build
  • Removed unused toolchain-prefix argument from idf_size.py
  • Fixed flashing encrypted binaries from IDF Monitor
  • export.sh: added better detection and checking of IDF_PATH
  • idf_monitor: support to re-flash with the using port
  • Make Unicode from subprocess result in the CMake convert script (#5189)
  • tools: allow alternative spellings of target name (ESP32-S2, ESP32S2)
  • gdb: Modify PC in case of invalid PC
  • Fixed spelling in core_ext.py (#5145)
  • parttool: Fixed crash when retrieving partition info (#5271)
  • idf.py: prevent reloading duplicate extension paths. Do not load cwd if IDF_EXTRA_ACTIONS_PATH is not set (#5278)
  • idf.py: replace the "run" method of Task with the magic "call" method (#5279)
  • Mention ESPPORT and ESPBAUD in idf.py --help (#5461)
  • export.sh: fix compatibility with dash shell (#5366)
  • mfg_util: Update file handling to maintain line endings across various OS (#4888)
  • Fixed Windows incompatibility with gdbgui>=0.14 (#5794)
  • Tools: Fixed Python 3 incompatibility for building with Eclipse on Windows
  • esptool: Update to v3.0 release (https://github.com/espressif/esptool/releases/v3.0)
  • Added tools support for secure boot v2 for ESP32-S2
  • Updated toolchain to esp-2020r3
  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'

Build System

  • CMake: Used underlying flash targets for idf.py
  • Cmake: Added "subdirectory if exists" utility function
  • CMake: now uses new component registration function
  • CMake: Added elf dir information
  • make: Fixed quoting when flashing port is set via sdkconfig file
  • build: Added CONFIG_APP_PROJECT_VER to set the project version from Kconfig
  • idf_py: fixed the ESPPORT environment variable type issue
  • idf.py: added monitor-baud option to monitor command
  • idf.py: guess IDF_TARGET from sdkconfig if CMakeCache doesn't exist
  • idf.py: fail and show instructions on IDF_TARGET mismatch
  • idf.py: added support of debug targets for easier execution of openocd, gdb, gdbui
  • Fixed idf.py to be able to select a generator for build
  • confgen.py: Escape special characters for cmake (#4751)
  • ulp: use quotes when specifying files for embedding ulp binaries
  • make: fix 'make monitor' target when core dump is not enabled
  • CMake: Fixed an issue where builds are invoked twice when executing flash targets with idf.py
  • CMake: show error message on encrypted flash targets without proper config
  • Cmake: fixed possible whitespace issues
  • Cmake: Add warnings that convert_to_cmake.py doesn't calculate component requirements
  • Cmake: fix setting defaults in idf_build_process (#5053)
  • Fixed passing argument to ULP CMake script
  • msys2: add package mingw-w64-i686-gcc for installing python packages
  • ldgen linker script mapping rules order is now deterministic
  • kconfig: Fix generation of hex outputs for Make & CMake
  • kconfig: Fix two cases of hex values being handled incorrectly (espressif/vscode-esp-idf-extension#83)
  • Updated MSYS2 pre-compiled legacy build environment to use Python 3
  • Cmake: fixed C identifier generation from embedded file (#4927)
  • idf.py: disable cmake uninitialized variable warnings by default
  • ulp: fixed ULP assembler version detection for localized systems

ESP-COMMON

  • esp-compiler: added designated init macros to make esp configuration pattern viable under C++
  • allow placing panic handler into IRAM on ESP32-S2

External Libraries

  • Updated to mbedtls release v2.16.7
  • cJSON: include only source file objects for cmake build
  • coap: move mbedTLS config options from component to examples (#5262)

Others

  • linenoise: move allocations from stack to heap, fix calloc result checking (#5161)
  • Fixed the broken python lint on Github Action (#5318)

Examples

  • Added ENC28J60 Example
  • Added example of ble mesh coexisting with tcp
  • Added atecc608_ecdsa example (#4432)
  • softap example: Added channel configuration
  • spi: add eeprom example
  • Added Heap Task Tracking example
  • example: new DAC example of waveform generator controlled by software
  • NimBLE: Update the documentation link in the examples
  • ble_mesh: Fixed broken links to examples
  • ble_mesh: Added BLE mesh sensor model examples
  • ble_mesh: Add bluedroid and nimble example configurations
  • ble_mesh: Added BLE mesh vendor models examples
  • ble_mesh: Update mesh console example
  • ble_mesh: Added nvs operations for some examples
  • ble_mesh: Fixed example README & tutorial link error
  • sdio: updated the host example to support working with a slave without DAT1
  • Fixed Advanced OTA Example with chunked servers
  • Simplified console examples
  • Moved C++ examples to a new cxx folder in examples
  • Fixed markdown table formatting in examples/peripherals/temp_sensor_esp32s2/README.md (#4609)
  • Improved ble_spp_server example
  • Fixed the error macro name and error return in hfp_hf example
  • Cleaned up sdkconfig.defaults of BLE Mesh examples
  • Fixed standard NEC IR transmission (#4750)
  • Updated websocket example to send textual data with esp_websocket_client_send_text() (#4640)
  • pppos_client: update sdkconfig.defaults
  • Enabled IPv6 in example common connect for esp32s2
  • common connect: fixed build error if ipv6 disabled
  • common connect: add support for getting multiple IPv6 addresses
  • Fixed typo in i2ctool example README
  • provisioning_examples: Move older examples to legacy/ folder
  • Restructured wifi_provisioning example
  • Fixed http_perform_as_stream_reader example
  • esp_http_client: Added example to demonstrate use of low level APIs for GET and POST requests
  • Fixed broken http2_request example
  • socket-example: IPv6 related update for examples to set correct scoped id
  • socket-example: Add tcp client example for multiple interfaces
  • I2S: Fixed sine wave sample calculation incorrect issue in I2S example
  • Updated esp event examples using new event register API
  • socket examples: Fixed udp_client build error (#5014)
  • Fixed format string in websocket example (#5052)
  • http-server-example: correction of regex waiting to acquire IP address
  • Fix instance names for event handler unregistering in WiFi station example (#5064)
  • uart_echo_readme: Remove duplicate commands and invalid serial port information
  • Updated HID examples to comply with the new requirements
  • Fixed links to example directories for fast_scan and scan (#5186)
  • Fixed usage example in xSemaphoreCreateBinaryStatic (#5272)
  • esp_http_client_example.c: Added note regarding use of URL and configuration parameters
  • Fixed flake8 warning for esp-cryptoauthlib submodule
  • ble_hid_device: fix build if building with c++ (#5191)
  • RMT: Fixed check issue in ir_builder_rmt_nec.c and removed the wait_tx_done for ir_protocols_main.c (#4750)
  • ble_mesh: Fixed compilation warnings about portmacro being already define (#5745)
  • ble_mesh: Fixed sensor data wrong iteration
  • http_server example: WebSocket server to set final flag in async messages (#5405)

Documentation

  • Documentation is now built separately for ESP32 & ESP32-S2
  • Added Chinese translation to LEDC
  • Added new top-level docs builder that builds docs for a single chip
  • Added API guide page about IDF Tools
  • Added extension that replaces generic target variable with idf_target
  • Added external RAM note link to Chinese translation
  • Added a link to Chinese translation for power_management_esp32
  • Added note that the idf target formatting filters don't work on "included" documents
  • Added Chinese translation for esp-ble-mesh-faq
  • Added a short user guide for how to write multi target docs
  • Added docs for secure boot v2 ESP32 ECO3
  • Added multi target include dir support
  • Added User Guide for ESP32-DevKitS-R
  • Added Chinese translation for ESP-WIFI-MESH document under api guide
  • Added Chinese translation for ota tool and partition tool
  • Added Chinese translation for linker script generation
  • Added Ethernet API reference
  • Added exact git version & target SoC to feedback form parameters
  • Added warnings about using JTAG debugging with hardware security features
  • Added configuration information about INT & Task WDTs
  • Added Chinese translation for modules-and-boards
  • Added alloc failed hook documentation
  • Added new section about using ESP-IDF with PlatformIO (#5132)
  • Added peripheral_types.h as API reference for peripheral docs
  • Added generation of tags from sdkconfig and x_caps.h headers
  • Added link back to ESP-ADF documentation in ESP-LyraT-8311A user guide
  • Added another case and recommendation to use Python 3 instead of Python 2
  • Added the support of building a subset of the documentation with build_docs
  • Added a note about ESP-IDF FreeRTOS version
  • Added description to Getting started guides of possible issues preventing Development boards from entering Firmware Download mode automatically while trying to flash the boards
  • Make docs build Python 3 compatible
  • Small changes for C++ code style
  • Manage parallel sphinx-build runs with optional parallel jobs within them
  • Replace all TRM urls will generic template variable and remove duplicate sections
  • Temporarily mark RF calibration chapter as ESP32 only
  • documenting-code: Add a couple of follow up notes on top of last commit
  • README: Drop the RTD docs status badge, add a note about docs not updating for a period
  • Updated chip features in Getting Started documentation
  • Updated documentation build system to use sphinx_idf_theme pip package
  • Provided Digital Signature documentation for ESP32-S2
  • Fixed broken links in README
  • Moved target-specific parts of JTAG guide into include files
  • Re-purposed WROVER-KIT debugging guide for ESP32-S2-Kaluga-1
  • Added user guide for ESP32-S2-Kaluga-1 Kit v1.3
  • Tools: idf.py: default to board/esp32s2-kaluga-1.cfg for ESP32-S2
  • Updated Chinese translation for jtag-debugging
  • Fixed ccache documentation: environment variable is IDF_CCACHE_ENABLE (#5753)
  • DAC: some minor modifications
  • Added explanation of hello_world folder contents
  • Added docs for secure boot v2 ESP32-S2

Obtaining v4.2-RC

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-rc --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.2-rc
cd esp-idf-v4.2-rc/
This is the recommended way of obtaining v4.2-rc of ESP-IDF.

Download an archive with submodules included

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

Assets 3

@projectgus projectgus released this Nov 6, 2020

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

ESP-IDF v4.0.2 is a bugfix update for ESP-IDF v4.0. ESP-IDF v4.1 is the latest stable release at time of writing.

ESP-IDF v4.0.x will be supported until October 2021, according to the ESP-IDF Support Policy. Since ESP-IDF v4.1, each ESP-IDF major and minor release (V4.1, V4.2, etc) is supported for 30 months after the initial stable release date.

Major Changes

  • Fixed potential live lock cache issue with ESP32 ECO3
  • Updated toolchain to esp-2020r3

Wi-Fi

  • PHY: improve the RX performance when ESP32 wakes up from sleep and CPUs work on 240MHz
  • Added API esp_wifi_ap_get_sta_aid to get aid, which can be used by esp_wifi_deauth_sta
  • Implemented ESPNOW + PMF Co-existence
  • Fixed the issue that the API esp_wifi_get_config didn’t return correct sta.listen_interval
  • Fixed the issue that bandwidth and phy mode not correctly stored into NVS
  • Fixed the failure to get IPV6 link-local address when AP forwarded multicast NS packets back to the station itself
  • Fixed the issue that setting TX DMA buffer above 32 would not take effect
  • Fixed the issue that Airkiss fail to find hidden APs
  • Fixed the issue that the first several AMPDU packets may be discarded by peer device
  • Fixed the issue that STA fail to connect an AP if it never disconnected from the AP
  • Fixed a crash in ESPNOW
  • Fixed a crash when wifi stop after deinit
  • Fixed the issue that wifi_scan_time_t type not correct, which may lead to wrong scan parameter
  • Fixed two issues in regulate domain information update
  • Fixed the issue that APs with WPA2-PSK-SHA256 key management categorised as Open during scan
  • SoftAP: Fixed the issue that the TSF of SoftAP would be reset when sending a CSA
  • SoftAP: Fixed the issue that the secondary channel of softAP not correctly updated
  • SoftAP: Fixed the issue that memory leak happens after SoftAP de-initialized
  • PMF: Fixed the issue that when PMF enabled in STA will cause SoftAP not work correctly
  • PMF: Skipped WPA-TKIP profile if PMF is required
  • PMF: Fixed crashes in receiving management packets
  • wpa_supplicant: Skipped & cleared Supplicant PMK Cache for mismatching AP config
  • wpa_supplicant: fixed some memory leaks and invalid memory access
  • wpa_supplicant: deinited wpa2 states in wifi deinit
  • WPA2-Enterprise: Fixed the issue that STA may try to connect to an open AP when
    configured to connect to a WPA2-Enterprise AP
  • WPA3: fixed WPA3 and WPA2 transition related failures
  • WPA3: fixed WPA3 connection timeout issue in coexistence scenario
  • WPS: allowed NULL-padded WPS attributes
  • WPS: bypassed WPS-Config method validation
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Moved Wi-Fi clock enable/disable code into IRAM
  • Improved esp_wifi_set_max_tx_power description
  • Improved document about security mode and reason code
  • Dump internal heap size instead of heap size in Wi-Fi log

Bluetooth

Classic Bluetooth

Controller

  • Fixed ASSERT for RXDESC and save the log for future debug
  • Fixed ASSERT in ld_acl at line 302 for clkoff1 and localval
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed ASSERT(25,0) in lc_task.c
  • Fixed ASSERT in ld_pscan.c at line 1032
  • Fixed ld_acl schedule issue to parity shift
  • Fixed connection failure in Event Arbitory loop
  • Freed lmp_tx_buf in Exchange Memory in the procedure of handling LMP_detach_req PDU when not received the last acknowledge from the peer device
  • Fixed the issue that when slave initiate unsniff procedure and meet transaction collision, no mode change event is reported
  • Now reset AFH channel map in BTDM Task when WiFi channel changes
  • Fixed int_wdt due to disabling interrupts too long time
  • Disabled frequent warning log in ld_acl
  • Moved default log level to WARNING instead ERROR in BT Controller

Bluedroid

  • Improved description of esp_bt_gap_start_discovery and esp_bt_gap_cancel_discovery
  • Fixed BT Classic GAP bond list corrupt or invalid after removing bond (#5395)
  • Added API esp_spp_stop_srv() for SPP Acceptor
  • Now esp_spp_disconnect() transfers event ESP_SPP_CLOSE_EVT in BTU Task rather than just BTC Task
  • Optimized bta_jv_free_rfc_cb to make sure the spp server always has a listening port after reaching the maximum RFCOMM session number
  • Fixed the issue that when calling esp_spp_start_srv() without any SPP client connecting to the server, calling esp_spp_deinit() can not release the port
  • Now SPP uses NULL point with dynamic memory
  • Kconfig: Updated data type and the default value of the vendor-specific even

Bluetooth Low Energy

Controller

  • Fixed ASSERT(64,0) in rwble.c
  • Fixed assert(9, 10) when rx and evt_end interrupts exist at the same time and use RX information to determine the execution order
  • Fixed assert(10, 9) when missing evt_end or rx and evt_end come the same time
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fiexed cache disable crash when connection parameters update
  • insert the contol packet to the top of the tx prog list
  • Added connect parameter check
  • Fixed assert(1024,0) in rwble.c
  • Fixed assert(512,0) in rwble.c
  • Fixed channel map update failed due to instant reverse
  • Changed tx default octets to 251

Bluedroid

  • Added api to query the number of available buffers for the current connection
  • Fixed the issue of receiving incomplete data packets caused by disordered acl data packets
  • Fixed memory leak when buff_semaphore was not released
  • Fixed cases having fallback to link up event
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • Authentication fixes in Legacy and Secure Connection, prevent a remote device from doing a Bluetooth impersonation attack
  • Added support for more Bluetooth HID devices

NimBLE

  • Added Non Resolvable Private Address (NRPA) support to existing Host based Privacy (RPA) framework
  • Fixed repeated pairing failure in RPA framework
  • Reduced the size of the compiled binary (PR #6)
  • Allow the host to resolve peer RPA without using local RPA (PR #7)
  • Closing bracket conditional for C++ (PR #12)
  • Upstream fixes
    • Fix NULL pointer passed as a parameter (PR #701)
    • Fixed pairing procedure abort on unexpected pairing request (PR #710)
    • Fixed connection flags after pairing (PR #730)
    • Removed notification for update process timeout (Vol 6, Part B, section 5.2 ) (PR #782)
    • Fixed CCCD behavior in case of an overflow and while storing for bonded devices (PR #790)(PR #804)
    • Fix potential issue with strncpy in os_mempool.c (PR #843)

ESP-BLE-Mesh

  • Added functions for model subscribe/unsubscribe group address locally
  • Addded check of the result of creating timers
  • Updated the check of sensor model states during model initialization
  • Fixed node failed to restore information during initialization
  • Fixed node not erased information completely during node reset
  • Added length check for some mesh copy operations
  • Initialized device name during proxy server initialization
  • Added support of checking model status with variable length
  • Added support of getting node info with pre-configured node name
  • Added a function to get the entry of the nodes table
  • Added check if the subnet still exists before updating its "beacon_sent"
  • Associated replay protection list size with nodes count
  • Removed BLE_MESH_MAX_STORED_NODES option from menuconfig
  • Fixed Provisioner provisioning deadlock
  • Fixed the issue that Provisioner failed to publish
  • Updated next allocated address when node info is added
  • Added check if the assigned node address is duplicated
  • Removed some internal redundant functions
  • Provisioner continues restoring node info event if failure happened
  • Fixed uninitialized client local parameters
  • Fixed the misspelling of time scene macro name
  • Fixed compile error when -O2 (performance) is chosen
  • Fixed compile error when only proxy enabled
  • Fixed Provisioner unicast address not updated in fast provisioning
  • Fixed Provisioner ignored messages from nodes whose unicast addresses are not in the provisioning database when fast provisioning is enabled
  • Fixed Provisioner failed to send Secure Network Beacon if no device is provisioned
  • Fixed the issue Do not #define bool when compiling in C++ (PR #5100)
  • Fixed the issue that recv_rssi of received message is always 0 (PR #5505)
  • Fixed send_ttl is not updated in the received message context
  • Fixed node failed to send messages to fixed group addresses when RELAY is not supported
  • Removed the previously added patch for Bluetooth Mesh Android App from other vendor
  • Fixed wrong log output with bt_hex
  • Optimized a few BLE Mesh log output
  • Make the Kconfig options of using different memory for allocation more clear
  • Added check if the length of received proxy configuration pdu is valid
  • Added check if the input provisioning bearers is valid
  • Fixed handling the received Health Current Status incorrectly
  • Optimized the behavior of client model sending messages
  • Synchronized Zephyr BLE Mesh fixes
  • Updated BLE Mesh stack structure, including:
    • Rename mesh_kernel.* to mesh_timer.*
    • Split mesh mutex related into a separate file
    • Split mesh os related into a separate file
    • Split mesh_util.h into different header files
    • Move fast provisioning related into a separate file
    • Make Proxy server and client functions more clear

Blufi

  • When the format of the received data packet is wrong, reply with an error response
  • Fixed the issue that Blufi sending longer customer data will cause congestion

LWIP

  • Added LINGER to menuconfig
  • Added TCP RTO time default value to menuconfig
  • Fixed the issue that in IPv6 environment when IP fragmentation is turned off, packets exceeding MTU can still be sent and received
  • Fixed the issue of UDP packets in ARP queue lost during coexisting UDP TX performance testing
  • Fixed issue that IPv6 ND6 queues too much packets and causes memory out
  • Fixed the issue that IPv6 fails to send multicast data and ping packet when the source address is empty

Ethernet

  • Updated Ethernet PHY driver by not using latch register to detect link status
  • Added support of stopping emac hardware via esp_eth_stop
  • Added support of pinning emac task to core
  • Inserted minimal assertion time for PHY HW reset (PR #5528)

Peripheral Drivers

  • PSRAM: Fixed 16mbit PSRAM ID read error
  • SDMMC: Correctly check function parameters before using them (PR #5000)
  • SDMMC: Fixed the probe issue that forbid sdspi working in highspeed mode
  • UART: Fixed RXFIFO_CNT bug on ESP32
  • DAC: Fixed DAC influenced by ADC bug by disabling the synchronization operation from ADC1 to DAC
  • DAC: Fixed GPIO header missing while typedefs used in DAC header
  • SIGMA_DELTA: Fixed wrong cpp guard in sigmadelta.h
  • I2S: Fixed issue that i2s_start resetting I2S in incorrect order causes word-order error (#5410)
  • GPIO: Fixed issue gpio_wake_up_disable not working for RTC IO
  • GPIO: Fixed broken CONFIG_LEGACY_INCLUDE_COMMON_HEADERS of ROM header
  • TIMER_GROUP: Fixed timer group interrupt enable issue (#5103)
  • MCPWM: Fixed init MCPWM Fault line via config struct (PR #5491)
  • MCPWM: Fixed PWM-fault init function that read config incorrectly
  • Added reference counter in periph_ctrl
  • Moved esp_phy_common_clock_disable into periph_ctrl and put it into IRAM

Core System & FreeRTOS

  • Fixed potential live lock cache issue with ESP32 ECO3
  • heap: Fixed backtrace termination issue
  • heap: Only fill new heaps with FREE_FILL_PATTERN if Comprehensive poisoning is on, reducing initialization time in other cases
  • efuse: Reduced use of ESP_EARLY_LOGx and moved some code after stdout is initialized (#5343)
  • Bootloader: Fixed spi flash clock config error when using bootloader build with 40MHz mode and app build with 80MHz mode, the system can not start up correctly (#5099)

Build System & Tooling

  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'
  • Updated toolchain to esp-2020r3
  • cmake: Fixed setting defaults in idf_build_process
  • kconfig: Fixed two cases of hex values being handled incorrectly
  • tools: Make Unicode from subprocess result in the CMake convert script
  • ldgen: Added determinism in mapping rule order in the output file
  • Updated Pre-compiled MSYS2 legacy build environment, uses Python 3 now (no more Python 2 in MSYS2)
  • partition_table: Fixed parttool.py crashes when retrieving partition info
  • Fixed the broken python lint on Github Action
  • idf.py: Cleaned Python bytecode files
  • tools: Mentioned ESPPORT and ESPBAUD in idf.py --help
  • export.sh: Better detection and checking of IDF_PATH
  • export.sh: Fixed compatibility with dash shell
  • coredump: Fixed data length calculation when task stack is corrupted
  • coredump: Fixed error reported for blank partition

Power Management

  • sleep: enable sleep reject when entering light sleep

Provisioning

  • BLE provisioning: Add check for valid ble read offset
  • WiFi provisioning: fixed the issue that Wi-Fi provisioning managager ignores subsequent Wi-Fi events if the first Wi-Fi connection attempt fails
  • protocomm_httpd: restart security session if request is received on a new session

HTTP Client

  • Fixed error handling in esp_http_client_read and esp_https_ota_perform
  • Added fix to return failure if (-1) is returned from esp_http_client_read (#4960)

HTTP Server

  • Fixed an issue which could cause issues with LRU purge
  • Updated LRU counter on accepting a new connection

ESP-TLS

  • Enabled TLS renegotiation using explicit API call

WebSocket Client

  • Fixed fragmented send setting proper opcodes by setting the opcode only for the first fragment and WS_FIN for the last one
  • Updated the client to abort the connection if send fails

MQTT

  • Added option to configure mqtt task priority (PR #4947)
  • Added support larger buffers and messages (PR esp-mqtt#145)
  • Added runtime selection of mqtt protocol version (#4448)
  • Fixed mqtt outbox to store timestamps in long-long format (espressif/esp-mqtt#144)
  • Fixed set_config to update ssl-transport configuration (espressif/esp-mqtt#146)
  • Fixed outbox_destroy() to correctly delete all queued messages (#4643, espressif/esp-mqtt#147, espressif/esp-mqtt#148)
  • Added queueing for oversized messaged even if not connected
  • Fixed possible double free of client config if init fails
  • Added setting for separate ssl connection properties before transport connect
  • Fixed compilation issue with IDF version 4.0 and lower (espressif/esp-mqtt#149)
  • Fixed locking if subscribe/unsubscribe message fails to be created (espressif/esp-mqtt#150)
  • Fixed C++ build failing on incorrect event enum conversion (#4787)
  • Fixed resending queued messages to set duplicate flag for both qos1 and qos2 (espressif/esp-mqtt#151)
  • Added config option to configure output buffer size (espressif/esp-mqtt#152)
  • Fixed an issue which could result in a race condition and subsequent crash
  • Changed an error print to use ESP_LOGE instead of ESP_LOGI
  • Moved Sending MQTT connect message log from Info to Debug level

Storage

  • spi_flash: Added Kconfig options to enable yield operation during flash erase
  • spi_flash: Fixed the write performance regression
  • spi_flash: Fixed the regression of non-quad mode by default chip driver, and bugs in add_device
  • nvs: convert string to bytes to fix TypeError
  • vfs: support vfs uart set line endings with specified uart number

Modbus

  • Fixed the issue with incorrect processing of the Modbus request longer than 120 bytes
  • Added comments for limitation in current version of freemodbus

External Libraries

  • coap: update libcoap to fix its broken submodule pointer (#5626)
  • Updated to mbedtls release v2.16.7

Documentation

  • Added a note about FreeRTOS versions ESP-IDF is based on
  • Added documentation for ble_hs_pvcy_rpa_config() API in its declaration
  • Bluetooth: improved the description of esp_bt_gap_start_discovery and esp_bt_gap_cancel_discovery
  • Bluetooth: added explanation of why ESP_BT_GAP_DISC_STATE_CHANGED_EVT is not reported
  • Bluetooth LE: improved 128-bit UUID description
  • BLE-MESH: updated architecture drawing and documents
  • MQTT: Make clear that publish API could block
  • Updated document regarding usage of WPA/WEP security modes
  • Boot Loader: added caveats about using JTAG debugging with hardware security features
  • Power Management: specified that sleep wakeup source restrictions apply to all current ESP32 revisions
  • Fixed incorrect redirect link in getting started guide
  • Fixed broken links in README of some examples
  • Fixed typos in some documents including SPI Master, Bluetooth LE and BLE-MESH

Examples

  • Renamed ble_mesh_vendor_models to common_vendor_models in examples
  • Moved the button & initialization of BLE Mesh examples into common components
  • Added BLE Mesh sensor model examples
  • Added NVS operations for some BLE Mesh examples
  • Fixed BLE Mesh example README & tutorial link error
  • Added result check of BLE Mesh initialization
  • ble_hid_device_demo: fix build if building with c++ (PR #5191)
  • Fixed issue in bt_spp_initiator (PR #5408)
  • Fixed the error parameter in example_spp_initiator_demo.c at line 119
  • Added softap example channel configuration
  • Updated IPv6 related examples to set correct scoped id
    • common-connect: updated Common Connect example code
    • socket: updated Socket examples

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

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

Download an archive with submodules included

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

Assets 3