Releases: espressif/esp-idf
ESP-IDF Release v4.4
Documentation for release v4.4 is available at https://docs.espressif.com/projects/esp-idf/en/v4.4/
ESP-IDF v4.4 is a minor update for ESP-IDF v4.3.
Obtaining v4.4
For full installation instructions, see the ESP-IDF Programming Guide.
The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:
Using git
To get this release, use the following commands:
git clone -b v4.4 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.4
cd esp-idf-v4.4/
This is the recommended way of obtaining v4.4 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.4.zip
archive. It includes .git
directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.
This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v4.4/esp-idf-v4.4.zip
Changelog
This is the list of changes since release v4.3:
(1): Some of the bug fixes listed here have also been backported to release/v4.3 branch and are available either in v4.3.1 or in the v4.3.2 release. Such bug fixes are marked with (1).
Major New Features
- Support for ESP32-S3 SoC
- Wi-Fi
- 802.11 bgn mode
- 802.11 LR mode
- Station, SoftAP, sniffer mode
- ESP-NOW
- CSI support
- TX/RX A-MPDU, TX/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 Mesh support
- Wi-Fi GCMP
- Wi-Fi modem sleep and light sleep
- Bluetooth
- BLE 5.0 Controller support
- HCI support
- Bluedroid host support with BLE 5.0
- NimBLE host support with BLE 5.0
- BLE-Mesh support
- Wi-Fi & BLE coexistence
- Hardware arbiter based coexistence mechanism
- Application scenarios based scheme coexistence mechanism
- Security
- Secure boot
- Flash & PSRAM encryption
- RSA accelerator
- AES accelerator
- SHA accelerator
- HMAC peripheral
- Digital Signature
- Peripherals
- UART
- Timer group
- GPIO
- Dedicated GPIO (custom CPU instructions)
- SPI Master
- SPI Slave
- I2C
- I2S
- LEDC
- PCNT
- RMT
- USB Device
- ADC
- Camera interface
- LCD interface
- MCPWM
- Touch sensor
- System features
- SPI Flash
- OTA
- Task, interrupt watchdogs
- CPU instruction extensions for DSP/AI
- Efuse API and espefuse.py
- esp_timer
- DFU flashing
- Build system and tools
- Building the project using CMake (build, flash, monitor, menuconfig)
- "idf.py size"
- Sleep modes
- Light sleep
- Deep Sleep
- DFS
- Automatic light sleep and esp_pm power management
- Debugging
- OpenOCD
- Core Dump
- GDB Stub
- Protocols
- Provisioning
- Other protocols on top of TCP/IP
- Wi-Fi
- Preview of ESP32-H2
- Add ESP32H2 build target
- IEEE 802.15.4: Add IEEE 802.15.4 component, support IEEE 802.15.4 driver with pre-build library
- IEEE 802.15.4: Add zigbee pending mode and config coordinator API
- IEEE 802.15.4: Set ieee80154 default PTI to 6
- Add clk root select in rtc_clk on ESP32-H2
- Delete RC8M enable in rtc_clk on ESP32-H2
- Add RC32K CLK in rtc_clk on ESP32-H2
- RC32K replaced 8MD256 in rtc_clk_cal on ESP32-H2
- Enable blink example.
- ESP32-H2 PHY refactor
- More support for ESP32-C3 SoC
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot_v2: Supported SB_V2 for ESP32-C3 ECO3 (1)
- secure_boot: Secure Boot V2 verify app signature on update
- HMAC: Added Downstream JTAG enable mode for ESP32-C3
- Support I2S on ESP32-C3
- GPIO: Fast GPIO (CPU instruction driven) driver support on ESP32-C3
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- coredump: Add ESP32-C3 support
- apptrace: ESP32-C3 support
- More support for ESP32-S2 SoC
- ESP-BLE-MESH: Add support for external memory policy for ESP32-S2 (1)
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver for ESP32 and ESP32-S2
- USB: Add preliminary USB Host Library support for ESP32-S2 and ESP32-S3
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- Gcov: Add ESP32-S2 support
- More support for ESP32 SoC
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver for ESP32 and ESP32-S2
- ADC: Added an ADC single read and calibration example for all chips
Breaking Changes
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1". Additionally, in ESP-IDF v3.3, CMake build system failed to append MD5 checksum to the partition table even when the option was enabled. This bug was fixed before v4.0 release. If the bootloader and partition table were initially built with CMake and IDF v3.3.x, then the compatibility option should also be enabled.
- FreeRTOS: upgrade to 10.4.3 - rename xTaskRemoveFromUnorderedEventList
- Flash Encryption: Abort if flash encryption is not enabled in hardware but app is built with relevant config
- Build System: In previous versions of CMake build system, components found in EXTRA_COMPONENT_DIRS were applied after the project's default components directory (meaning if both contained a component with same name, the EXTRA_COMPONENT_DIRS component was built). In this version, the priority is reversed and a component in the project components directory has priority.
- http2_request/sh2lib: The "sh2lib_connect" API now now take sh2lib configurations as input instead of connection uri.
- tools: Users with Python 3.5 or older will have to install a recent Python version
- Always compile with -fno-jump-tables -fno-tree-switch-conversion by default. This could results in performance regression for code that relies heavily on this optimization. See api-guides/memory-types.rst for how to enable it for specific source files if necessary.
- partition_table: App partitions can not have empty sybtypes (need to define them).
- partition_table: Data partitions with a empty sybtypes will be ESP_PARTITION_SUBTYPE_DATA_UNDEFINED = 0x06 instead of 0.
- partition_table: otadata partition can be only with size 0x2000 and be only one in the partition table.
- FreeRTOS: xSemaphoreAltTake and xSemaphoreAltGive APIs have been deprecated.
- ESP_HID: Now BT HID APIs event will go through BTC->BTU->HCI.
- soc: Registers APB_CTRL are renamed to SYSCON
Known Issues in v4.4
- Useable stack size on ESP32-S3 is smaller than on other chips which may lead to IPC stack overflow on ESP32-S3.
- On ESP32-S3, DMA may fail to access to RTC memory because RTC fast memory's speed is slow. Try to set this kind of memory's priority lower when allocating from heap may be a temporary workaround before next bugfix version.
- On ESP32-S3, enabling Wi-Fi conflicts with USB functionality (#8241).
Known issues are planned to be fixed in the next bugfix release, v4.4.1.
IEEE 802.15.4
- Added IEEE 802.15.4 component, support IEEE 802.15.4 driver with pre-build library
- Added Zigbee pending mode and config coordinator API
- Set IEEE 802.15.4 default PTI to 6
OpenThread
- Added OpenThread submodule
- Added OpenThread porting for ESP32
- Added OpenThread cli example
- Added otPlatRadioSetMacKey and otPlatRadioSetMacFrameCounter implementation.
- Support microsecond timer
- Added esp_openthread_netif_init() api for initializing the OpenThread lwIP interface.
- Added OpenThread lwIP interface to the ot_cli example.
- Updated OpenThread submodule to contain TCP message leak fix.
- Added esp_cli_custom_command
- Added TCP/UDP socket example
- Fixed wrong uart read return value handling
- Added esp_openthread_init esp_openthread_launch_mainloop and esp_openthread_deinit for simplified OpenThread initialization and launch logic.
- Updated the OpenThread cli example with the simplified implementation.
- Added the OPENTHREAD_BORDER_ROUTER Kconfig option
- Added platform UDP and task queue port for the border agent feature
- Added esp_openthread_border_router_* api
- Added the esp_otbr example.
- Porting and border routing features are now provided by prebuilt libraries
- esp_openthread_netif_glue_init now requires platform config as its parameter
- Enable ot_cli on ESP32H2-Beta chip
- Enable multicast ping in OpenThread examples by default
- Introduced a config option to enable/disable extended features in ot_cli example
- Support ICMPv6 auto config
- Support SRP service delegation
- Publish _meshcop._mdns service
- Added ftd.cmake for build FTD and radio.cmake for build RCP
- Remove openthread-core-esp32x-config.h, added openthread...
ESP-IDF Release v3.3.6
Documentation for v3.3.6 is available at https://docs.espressif.com/projects/esp-idf/en/v3.3.6/
ESP-IDF v3.3.6 is the last bugfix update for ESP-IDF v3.3. After this release, release/v3.3 branch of ESP-IDF will not receive any more bug fixes, including fixes for security issues. Users of ESP-IDF v3.3.x are advised to upgrade to the latest stable ESP-IDF release. Please refer to the explanation of ESP-IDF support periods for more information.
At the time of writing, v4.3.2 is the latest stable release. The new v4.4 release will follow shortly.
Obtaining v3.3.6
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.6 --recursive https://github.com/espressif/esp-idf.git esp-idf-v3.3.6
cd esp-idf-v3.3.6/
This is the recommended way of obtaining v3.3.6 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v3.3.6.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/v3.3.6/esp-idf-v3.3.6.zip
Changelog
This is the list of changes since release v3.3.5:
Major Bug Fixes
- Fixed arithmetic overflow issue in FreeRTOS queue API (CVE-2021-31571)
- ESP-BLE-Mesh: Add check the value of Provisioning Random & Confirmation sent and received by Provisioner (CVE-2020-26556 & CVE-2020-26560)
- ESP-BLE-Mesh: Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- ESP-BLE-Mesh: Recommend to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
Breaking Changes
-
Bootloader: The default app configuration is now only compatible with bootloader and partition table generated from ESP-IDF v3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from ESP-IDF older than v3.1 must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1" (
CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS
).Additionally, in previous v3.3.x releases the option to add MD5 hash to the partition table (
CONFIG_PARTITION_TABLE_MD5
) did not take effect. Because of this, projects based on CMake build system upgrading to this release over OTA also need to enable the above mentioned compatibility option. (Note, CMake based build system was first added as preview in v3.3 release.)This breaking change was introduced as a fix for CVE-2021-27926.
Bluetooth
Controller
- Fixed crash in Bluetooth when calling esp_restart()
- Fixed modem sleep hardware error
Bluetooth Low Energy
- Fixed controller do not report disconnection event to host
- Remove the wrong called to lld_evt_end_isr()
- Fixed hci timeout due to sleep
- Deleted the Kconfig option: BLE ADV priority high
- Fixed BLE ACL TX flush issue during reset/reboot
- Removed duplicate events in r_lld_evt_end()
- Fixed start scan crash caused by setting specific scan interval and Window
- Fixed the scanning may stop after a period of time
- Fixed connection failed with LG 5.0 phone
Classic Bluetooth
- Suppressed some warning messages such as "E8192", "ELx200", "ELx40" etc, to prevent the influences of printing logs from causing the same issue
- Fixed handling of invalid feature page response
- Fix unable to initiate SCO connection when peer device not accept sniff mode
- Fixed crash after inquiry has finished
- Fixed the issue bt_spp_acceptor example fails when SPP is initiated on a windows machine using Realtek Bluetooth adapter
- Fixed the issue HCI_Read_Clock failed read local Bluetooth Clock
- Fixed the issue create Connection request is not properly terminated which blocks BlueZ from reconnecting
Bluedroid
Classic Bluetooth
- 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
- A2DP: Fixed A2DP underrun issue
- A2DP: Added A2DP Init and Deinit Complete Evt
- A2DP: Fixed A2DP deint crash
- SPP: Fixed spp acceptor deadlock
- SPP: Fixed spp memory leak
- HFP: Fixed an issue that acl can't disconnect when hfp_client disconnect
- Fixed the timer collision in function bta_sys_start_timer() used by role switch
Bluetooth Low Energy
- Added connection parameter check
- Fixed BLE connection maximum latency is 499
- Disable bluedroid congest error log print
- Fixed scan response length error in ADV report
- Fixed BLE read multi-characteristic error when the number of handles is more than 10
- Fixed bluedroid repair failed if the two most significant bits of public address is '01'
- Fixed setting scan parameters error with policy is 2 or 3 if address resolution is not enabled
- Fixed the the code analysis report error reported by customer
- Fixed some code logic errors
- Add new API to get connection parameters
- Add new connection parameters information in GATTC connection event
NimBLE
- Added change to use new API of os_mbuf_pack_chains for better memory utilizations
- Added upstream change to fix flow control
- Fix MITM vulnerability during public key exchange in secure connection
- Add SC unit test to flag error on same public key
- Added change to free the AES context after use by calling
mbetls_aes_free
- Fixed the bug in deletion of peer_dev_record.
- Fixed bug in peer_dev_record and and broadcaster role build
ESP-BLE-Mesh
- Support using multiple NVS namespaces to store information by Provisioner
- Fixed deinit server models with no matching model id
- Fixed number endianness error for Provisioner when using input/output authentication
- Fixed provisioning input/output count number should be at least 1
- Replace the Zephyr integer types with C99 types
- Add check the value of Provisioning Random & Confirmation sent and received by Provisioner(CVE-2020-26556 & CVE-2020-26560)
- Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- Recommend to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
- Make Unprovisioned Device Beacon interval configurable
- Updated the SIG recommendations for BLE Mesh CVE issues
- Use a separate callback for BLE coexistence operations
- Support scanning normal BLE advertising packets
- Apply the errata E16350 of BLE Mesh from Bluetooth SIG
- Fixed filter error when Provisioner receiving Heartbeat messages
- Enable updating Lighting HSL state
- Fixed an issue that Proxy Client may fail to resend messages
- Use different random values for each provisioning procedure
Wi-Fi Coexistence
- Fixed assert without SW coexist enabled
- Fixed BT controller task watchdog in Wi-Fi test
Wi-Fi
- Updated exception handling for iperf example's scan when no ap was found
- Fixed smartconfig issue when router reply arp late
- Fixed setting channel error after Wi-Fi stop
- Fixed ESP-NOW channel config range
- Fixed AMSDU and fragment vulnerabilities
- Fixed resources leaks detected in static analysis
- Fixed airkiss and esptouch find channel crash issue
- Fixed softAP crash by adding NULL pointer check for handling public action frame
- Ignore dirtyBuf check when buffer size is larger than 4092
- Fixed rf signal test without 9M rate issue
- Fixed issue with hidden AP scans after connecting AP
- Fixed the watchdog issue when receiving action frame
- Clear hotspot bss when auth timeout happens
- Fixed the bug for esptouch find hidden AP fail
- Fixed issue of reason code change from 15 to 204 when provide wrong password
- Fixed set config return value error
- Fixed ampdu age timer memory leak
- Fixed PMK not saved in NVS for SoftAP for PSK mode
ESP-WIFI-Mesh
- Add esp_mesh_send_block_time to set blocking time of esp_mesh_send
- Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
Ethernet
- Fixed incorrect initialization sequence (#6821)
Security
- Secure Boot v1: Added anti fault injection resistance
- Fixed invalid secure boot signing command generated in build system (#6831)
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
Peripheral Drivers
- ADC: Fixed missing ranges of ADC codes on ESP32 (https://esp32.com/viewtopic.php?f=12&t=17214)
- DAC: Fixed DAC header doesn't contain GPIO header issue
- Freemodbus: Fixed rs485 rts de-assert fail when tx delayed (#6728)
- Freemodbus: Added the MB_PORT_TASK_AFFINITY kconfig option for modbus tasks (#6700)
- GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
- MCPWM: Fixed wrong deadtime preset modes (#7321)
- PSRAM: Add support for ESP32-PICO-V3-02
- UART: Fixed uart module reset issue (#1202)
- UART: Added config to support placing UA...
ESP-IDF Pre-release v4.4-rc1
Documentation for pre-release v4.4-rc1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.4-rc1/
ESP-IDF v4.4-rc1 is the release candidate for the upcoming v4.4 release. v4.4 release will be a minor update for ESP-IDF v4.3.
Obtaining v4.4-rc1
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.4-rc1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.4-rc1
cd esp-idf-v4.4-rc1/
This is the recommended way of obtaining v4.4-rc1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.4-rc1.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.4-rc1/esp-idf-v4.4-rc1.zip
Changelog
This is the list of changes since release v4.3:
(1): Some of the bug fixes listed here have also been backported to release/v4.3 branch and are available either in v4.3.1 or in the v4.3.2 release. Such bug fixes are marked with (1).
Major New Features
- Support for ESP32-S3 SoC
- Wi-Fi
- 802.11 bgn mode
- 802.11 LR mode
- Station, SoftAP, sniffer mode
- ESP-NOW
- CSI support
- TX/RX A-MPDU, TX/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 Mesh support
- Wi-Fi GCMP
- Wi-Fi modem sleep and light sleep
- Bluetooth
- BLE 5.0 Controller support
- HCI support
- Bluedroid host support with BLE 5.0
- NimBLE host support with BLE 5.0
- BLE-Mesh support
- Wi-Fi & BLE coexistence
- Hardware arbiter based coexistence mechanism
- Application scenarios based scheme coexistence mechanism
- Security
- Secure boot
- Flash & PSRAM encryption
- RSA accelerator
- AES accelerator
- SHA accelerator
- HMAC peripheral
- Digital Signature
- Peripherals
- UART
- Timer group
- GPIO
- Dedicated GPIO (custom CPU instructions)
- SPI Master
- SPI Slave
- I2C
- I2S
- LEDC
- PCNT
- RMT
- USB Device
- ADC
- Camera interface
- LCD interface
- MCPWM
- Touch sensor
- System features
- SPI Flash
- OTA
- Task, interrupt watchdogs
- CPU instruction extensions for DSP/AI
- Efuse API and espefuse.py
- esp_timer
- DFU flashing
- Build system and tools
- Building the project using CMake (build, flash, monitor, menuconfig)
- "idf.py size"
- Sleep modes
- Light sleep
- Deep Sleep
- DFS
- Automatic light sleep and esp_pm power management
- Debugging
- OpenOCD
- Core Dump
- GDB Stub
- Protocols
- Provisioning
- Other protocols on top of TCP/IP
- Wi-Fi
- Preview of ESP32-H2
- Add ESP32H2 build target
- IEEE 802.15.4: Add IEEE 802.15.4 component, support IEEE 802.15.4 driver with pre-build library
- IEEE 802.15.4: Add zigbee pending mode and config coordinator API
- IEEE 802.15.4: Set ieee80154 default PTI to 6
- Add clk root select in rtc_clk on ESP32-H2
- Delete RC8M enable in rtc_clk on ESP32-H2
- Add RC32K CLK in rtc_clk on ESP32-H2
- RC32K replaced 8MD256 in rtc_clk_cal on ESP32-H2
- Enable blink example.
- ESP32-H2 PHY refactor
- More support for ESP32-C3 SoC
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot_v2: Supported SB_V2 for ESP32-C3 ECO3 (1)
- secure_boot: Secure Boot V2 verify app signature on update
- HMAC: Added Downstream JTAG enable mode for ESP32-C3
- Support I2S on ESP32-C3
- GPIO: Fast GPIO (CPU instruction driven) driver support on ESP32-C3
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- coredump: Add ESP32-C3 support
- apptrace: ESP32-C3 support
- More support for ESP32-S2 SoC
- ESP-BLE-MESH: Add support for external memory policy for ESP32-S2 (1)
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver for ESP32 and ESP32-S2
- USB: Add preliminary USB Host Library support for ESP32-S2 and ESP32-S3
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- Gcov: Add ESP32-S2 support
- More support for ESP32 SoC
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver for ESP32 and ESP32-S2
- ADC: Added an ADC single read and calibration example for all chips
Breaking Changes
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1". Additionally, in ESP-IDF v3.3, CMake build system failed to append MD5 checksum to the partition table even when the option was enabled. This bug was fixed before v4.0 release. If the bootloader and partition table were initially built with CMake and IDF v3.3.x, then the compatibility option should also be enabled.
- FreeRTOS: upgrade to 10.4.3 - rename xTaskRemoveFromUnorderedEventList
- Flash Encryption: Abort if flash encryption is not enabled in hardware but app is built with relevant config
- Build System: In previous versions of CMake build system, components found in EXTRA_COMPONENT_DIRS were applied after the project's default components directory (meaning if both contained a component with same name, the EXTRA_COMPONENT_DIRS component was built). In this version, the priority is reversed and a component in the project components directory has priority.
- http2_request/sh2lib: The "sh2lib_connect" API now now take sh2lib configurations as input instead of connection uri.
- tools: Users with Python 3.5 or older will have to install a recent Python version
- Always compile with -fno-jump-tables -fno-tree-switch-conversion by default. This could results in performance regression for code that relies heavily on this optimization. See api-guides/memory-types.rst for how to enable it for specific source files if necessary.
- partition_table: App partitions can not have empty sybtypes (need to define them).
- partition_table: Data partitions with a empty sybtypes will be ESP_PARTITION_SUBTYPE_DATA_UNDEFINED = 0x06 instead of 0.
- partition_table: otadata partition can be only with size 0x2000 and be only one in the partition table.
- FreeRTOS: xSemaphoreAltTake and xSemaphoreAltGive APIs have been deprecated.
- ESP_HID: Now BT HID APIs event will go through BTC->BTU->HCI.
- soc: Registers APB_CTRL are renamed to SYSCON
Known Issues in v4.4-rc1
- I2S: Wrong return codes for partial data transfers to/from DMA memory.
- Useable stack size on ESP32-S3 is smaller than on other chips which may lead to IPC stack overflow on ESP32-S3.
- On ESP32-S3, DMA may fail to access to RTC memory because RTC fast memory's speed is slow. Try to set this kind of memory's priority lower when allocating from heap may be a temporary workaround before next bugfix version.
- On ESP32-S3, enabling Wi-Fi conflicts with USB functionality (#8241).
Known issues are planned to be fixed in the next bugfix release, v4.4.1.
IEEE 802.15.4
- Added IEEE 802.15.4 component, support IEEE 802.15.4 driver with pre-build library
- Added Zigbee pending mode and config coordinator API
- Set IEEE 802.15.4 default PTI to 6
OpenThread
- Added OpenThread submodule
- Added OpenThread porting for ESP32
- Added OpenThread cli example
- Added otPlatRadioSetMacKey and otPlatRadioSetMacFrameCounter implementation.
- Support microsecond timer
- Added esp_openthread_netif_init() api for initializing the OpenThread lwIP interface.
- Added OpenThread lwIP interface to the ot_cli example.
- Updated OpenThread submodule to contain TCP message leak fix.
- Added esp_cli_custom_command
- Added TCP/UDP socket example
- Fixed wrong uart read return value handling
- Added esp_openthread_init esp_openthread_launch_mainloop and esp_openthread_deinit for simplified OpenThread initialization and launch logic.
- Updated the OpenThread cli example with the simplified implementation.
- Added the OPENTHREAD_BORDER_ROUTER Kconfig option
- Added platform UDP and task queue port for the border agent feature
- Added esp_openthread_border_router_* api
- Added the esp_otbr example.
- Porting and border routing features are now provided by prebuilt libraries
- esp_openthread_netif_glue_init now requires platform config as its parameter
- Enable ot_cli on ESP32H2-Beta chip
- Enable multicast ping in OpenThread examples by default
- Introduced a config option to enable/disable extended features in ot_cli example
- Support ICMPv...
ESP-IDF Release v4.3.2
Documentation for v4.3.2 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3.2/
ESP-IDF v4.3.2 is a minor update for ESP-IDF v4.3.1.
Obtaining v4.3.2
For full installation instructions, see the ESP-IDF Programming Guide.
The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:
Using git
To get this release, use the following commands:
git clone -b v4.3.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.2
cd esp-idf-v4.3.2/
This is the recommended way of obtaining v4.3.2 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.3.2.zip
archive. It includes .git
directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.
This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v4.3.2/esp-idf-v4.3.2.zip
Changelog
This is the list of changes since release v4.3.1:
Major New Features
- Added support for console output via USB_SERIAL_JTAG port on ESP32-C3
- SPI Flash: Added support for 32-bit address (>= 16MB) GD flash.
- The toolchain was upgraded to
esp-2021r2
version. This version includes the following changes:- Backtraces with Xtensa GDB are no longer interrupted on
abort()
and othernoreturn
functions (#6124). rv32imc
multilib configuration was added for the RISC-V target. Previouslyrv32im
was silently used as the closest compatible configuration torv32imc
. This resulted in increased code size for ESP32-C3. The new toolchain reduces the code size by at least 10kB for most applications which rely on libc.- Added
fnmatch
,iconv
functions (#3264, #2484). - The toolchain is now available for aarch64 hosts (part of #6432).
- Backtraces with Xtensa GDB are no longer interrupted on
- Added support for placing .bss segment into SPI RAM for ESP32-S2 (
CONFIG_SPIRAM_ALLOW_BSS_SEG_EXTERNAL_MEMORY
) - Added an option for installing tools only for selected chip targets (#5113)
Breaking Changes
-
In previous versions of ESP-IDF, it was possible to omit the subtype field in the partition table CSV file. This could result in unexpected behavior, since empty subtype value was treated as
0
. At the same time,0
was the numerical value for theotadata
partition subtype. This version of ESP-IDF adds new sanity checks for partition tables:- App partitions can not have empty subtypes.
- Only one
otadata
partition can exist in the partition table, and its size must be 0x2000.
Data partitions with a empty subtypes will now have a subtype
ESP_PARTITION_SUBTYPE_DATA_UNDEFINED
= 0x06. Previously when an empty subtype was encountered, the value was assumed to be 0.This may result in build errors for applications which relied on the previously unchecked behavior. This may also result in compatibility issues, if the application used empty partition subtypes.
Known Issues
- Infrequent crash happens on ESP32-C3 during BLE remove bond list stress test.
Bluetooth
Controller
- Added change to free resources in deinit that were allocated during controller init procedure.
Bluetooth Low Energy
- Fixed BLE connection will crash during erasing flash
- Fixed controller default LE event mask error for ESP32-C3
- Fixed no ADV report after scan for a while
- Fixed connection failed with LG 5.0 phone
- Fixed modem sleep HW deep sleep state error
- Added hci command to set coexistence status
- Fixed crash sometimes when shutdown bluetooth
Classic Bluetooth
- Fixed the use of deprecated sdkconfig options in the example and rename the example
- Check only for same X component of public key in BR/EDR
- Fixed issue in handling of HCI_Create_Connection_Cancel command that no HCI_Connection_Complete_Event is generated
- Fixed failure of reading Bluetooth local clock using HCI_Read_Clock command
- Fixed crash after inquiry is finished
Bluedroid
Classic Bluetooth
- A2DP: Fixed A2DP deinit crash
- A2DP: Fixed wrong clock_id in function time_now_us
- SPP: Added some common FAQs in SPP Demo README
- SPP: Fixed SPP memory leak
- Fixed the timer collision in function bta_sys_start_timer() used by role switch
- Fixed the crash when using legacy pairing with wrong pin code
- HFP: Fixed bug that acl link is not disconnected when hfp_client disconnect
- HFP: Fixed hfp_ag example not create sine audio (#7792)
- Added README.md for controller_hci_uart example
Bluetooth Low Energy
- Fixed Bluedroid Host automatically update PPCP after connection parameters are updated.
- Fixed some BLE document description error
- Updated simple_ble_start for ESP32-C3
- Modify the bluetooth device name length limits
- Fixed set extend ADV parameters failed when stop extend ADV
- Fixed data length update failed
- Check if the BLE extend connection parameter is valid
- Fixed some code logic errors
- Fixed the code analysis report error reported by customer
NimBLE
- Make LE data length set API public
- Fixed logging level mismatch
- Sync packet length API and whitelist API changes with upstream NimBLE
- Check stack initialization status before executing stack commands
- Compare only X component of public key to avoid impersonation attack
- Updated timer related prints to make them more readable.
- Fixed issue of wifi_prov_mgr crash after provisioning
- Added change to clear timer handle during deinitialization
Blufi
- Blufi on Nimble: Added fix for crash issue on ESP32-C3 during application init.
ESP-BLE-Mesh
- Fixed filtering error when Provisioner receives heartbeat messages
- Apply the errata E16350 of BLE Mesh from Bluetooth SIG
Wi-Fi
- Fixed Enterprise connection issue with windows server
- Added support for embedding multiple phy init data bin to app bin
- Fixed Tx issue for 9M rate
- Fixed interoperability issue with Windows 2008
- Added SHA384/SHA512 support for internal client
- Fixed ESP32-C3 phy issue related to no USB log
- Fixed ESP32-C3 RSSI change with bandwidth issue
- Removed scan done event for internal scans
- Modify Mexico channel range refer to FCC
- Fixed wrong allocation for coex funcs
ESP-WiFi-MESH
- Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
Ethernet
- Fixed driver to only warn about negotiation timeout when link is up
- Fixed driver to configure EMAC data interface before resetting PHY chip (#7227)
- Fixed KSZ8041 driver send link event at wrong time (Closes #7570)
- DM9051: Fixed potential missing Rx interrupts causing the Ethernet interface not responding (#6414)
Security
- Secure boot/ESP32 (ESP32-S2, ESP32-C3): - Disabled the ability to read protect efuses containing public key digest
- AES/SHA: Fixed driver resetting the wrong DMA channel
- HMAC: Added Downstream JTAG enable mode for ESP32-C3
- Secure Boot V2: Confirm if the running app is signed by a valid non-revoked key before revocation
- Memprot: Fixed voltage glitching detection logic
- Fixed the Memprot feature check in esp_restart()/panic_restart()
- AES: Removed potential unaligned access to buffers in AES HAL/LL which could be a problem for certain cache mappings to external PSRAM on S2 and later chips (#7236)
Peripheral Drivers
- Fixed all direct 8/16 bit-width access to peripherals on ESP32-S2, ESP32-C3
- freemodbus: Fixed incorrect reading of register outside of defined area descriptor
- freemodbus: Increased the maximum modbus tasks priority
- freemodbus: Added the FMB_PORT_TASK_AFFINITY kconfig option for modbus tasks (#6700)
- freemodbus: Changed the default value of FMB_TIMER_PORT_ENABLED to disabled
- freemodbus: Fixed TCP master, slave examples reinitialization sequence
- freemodbus: Fixed modbus TCP master, slave stack start - destroy issue
- freemodbus: Fixed slave destroy bug when master and slave init simultaneously
- freemodbus: Fixed master and slave use the same timer group index (#4699)
- freemodbus: Fixed compilation error when FMB_COMM_MODE_TCP_EN is disabled
- freemodbus: Fixed error handling in
mbc_master_get(set)_parameter()
for duplicate parameter key in parameter descriptor list (#7362) - GPIO: Fixed issue that gpio cannot hold during deep-sleep on ESP32-C3 (#7455)
- GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
- I2S: Fixed the write failure issue in 32bit slave mode
- I2S: Fixed the wrong value of I2S_COMM_FORMAT_STAND_MSB
- MCPWM: Fixed wrong deadtime preset modes (#7321)
- SPI: Fixed wrong target register for interrupt disable on ESP32-C3 and ESP32-S3
- SPI Master: Fixed the crash when using interrupt mode when cache is disabled (#6529, #6781, #7368)
- SPI Slave: Restrict MOSI/MISO enable on transaction preparation only for ESP32
- SPI Slave: Fixed TX/RX maximum bit length HW register configuration for ESP32
- SPI Slave: Re...
ESP-IDF Pre-release v4.4-beta1
Documentation for pre-release v4.4-beta1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.4-beta1/
ESP-IDF v4.4 is a minor update for ESP-IDF v4.3.
Obtaining v4.4-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.4-beta1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.4-beta1
cd esp-idf-v4.4-beta1/
This is the recommended way of obtaining v4.4-beta1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.4-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.4-beta1.zip
Changelog
This is the list of changes since release v4.3.
(1): Some of the bug fixes listed here have also been backported to release/v4.3 branch and are available either in v4.3.1 or in the upcoming v4.3.2 release. Such bug fixes are marked with (1).
Major New Features
- Support for ESP32-S3 SoC
- Wi-Fi
- 802.11 bgn mode
- 802.11 LR mode
- Station, SoftAP, sniffer mode
- ESP-NOW
- CSI support
- TX/RX A-MPDU, TX/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 Mesh support
- Wi-Fi GCMP
- Wi-Fi modem sleep and light sleep
- Bluetooth
- BLE 5.0 Controller support
- HCI support
- Bluedroid host support with BLE 5.0
- NimBLE host support with BLE 5.0
- BLE-Mesh support
- Wi-Fi & BLE coexistence
- Hardware arbiter based coexistence mechanism
- Application scenarios based scheme coexistence mechanism
- Security
- Secure boot
- Flash & PSRAM encryption
- RSA accelerator
- AES accelerator
- SHA accelerator
- HMAC peripheral
- Digital Signature
- Peripherals
- UART
- Timer group
- GPIO
- Dedicated GPIO (custom CPU instructions)
- SPI Master
- SPI Slave
- I2C
- I2S
- LEDC
- PCNT
- RMT
- USB Device (TinyUSB)
- USB Host
- ADC (single read and calibration)
- Camera interface
- LCD interface
- MCPWM
- Touch sensor
- System features
- Cache configuration and mmap
- PSRAM
- SPI Flash
* More frequency and modes for Flash and PSRAM: OPI, DTR, 120MHz. - OTA
- Task, interrupt watchdogs
- CPU instruction extensions for DSP/AI
- Efuse API and espefuse.py
- esp_timer
- DFU flashing
- Build system and tools
- Building the project using CMake (build, flash, monitor, menuconfig)
- "idf.py size"
- Sleep modes
- Light sleep
- Deep Sleep
- DFS
- Automatic light sleep and esp_pm power management
- Debugging
- OpenOCD
- Core Dump
- GDB Stub
- Flashing with OpenOCD
- Protocols
- Modbus
- Provisioning
- Other protocols on the top of TCP/IP
- Wi-Fi
- Preview of ESP32-H2
- Added ESP32H2 build target
- Added IEEE 802.15.4 support
- Added OpenThread support
- Added clk root select in rtc_clk on ESP32-H2
- Delete RC8M enable in rtc_clk on ESP32-H2
- Added RC32K CLK in rtc_clk on ESP32-H2
- RC32K replaced 8MD256 in rtc_clk_cal on ESP32-H2
- Enable blink example.
- ESP32-H2 PHY refactor
- More support for ESP32-C3 SoC
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot_v2: Supported SB_V2 for ESP32-C3 ECO3
- secure_boot: Secure Boot V2 verify app signature on update
- HMAC: Added Downstream JTAG enable mode for ESP32-C3
- Support I2S on ESP32-C3
- GPIO: Fast GPIO (CPU instruction driven) driver support on ESP32-C3
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- coredump: Added ESP32-C3 support
- apptrace: ESP32-C3 support
- More support for ESP32-S2 SoC
- ESP-BLE-MESH: * Added support for external memory policy for ESP32-S2
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver
- USB: Added preliminary USB Host Library support
- ADC: Added an ADC single read and calibration example for all chips
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- Gcov: Added ESP32-S2 support
- More support for ESP32 SoC
- secure_boot: Secure Boot V2 verify app signature on update
- LCD: Added parallel LCD driver
- ADC: Added an ADC single read and calibration example for all chips
Breaking Changes
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1". Additionally, in ESP-IDF v3.3, CMake build system failed to append MD5 checksum to the partition table even when the option was enabled. This bug was fixed before v4.0 release. If the bootloader and partition table were initially built with CMake and IDF v3.3.x, then the compatibility option should also be enabled.
- Freertos: upgrade to 10.4.3 - rename xTaskRemoveFromUnorderedEventList
- Flash Encryption: Abort if flash encryption is not enabled in hardware but app is built with relevant config
- Build System: In previous versions of CMake build system, components found in EXTRA_COMPONENT_DIRS were applied after the project's default components directory (meaning if both contained a component with same name, the EXTRA_COMPONENT_DIRS component was built). In this version, the priority is reversed and a component in the project components directory has priority.
- http2_request/sh2lib: The "sh2lib_connect" API now now take sh2lib configurations as input instead of connection uri.
- tools: Users with Python 3.5 or older will have to install a recent Python version
- Always compile with -fno-jump-tables -fno-tree-switch-conversion by default. This could results in performance regression for code that relies heavily on this optimization. See api-guides/memory-types.rst for how to enable it for specific source files if necessary.
- partition_table: App partitions can not have empty sybtypes (need to define them).
- partition_table: Data partitions with a empty sybtypes will be ESP_PARTITION_SUBTYPE_DATA_UNDEFINED = 0x06 instead of 0.
- partition_table: otadata partition can be only with size 0x2000 and be only one in the partition table.
- FREERTOS: xSemaphoreAltTake and xSemaphoreAltGive APIs have been deprecated.
- ESP_HID: Now BT HID APIs event will go through BTC->BTU->HCI.
- soc: Registers APB_CTRL are renamed to SYSCON
Known Issues in v4.4-beta1
- On ESP32-S3, task watchdog might be triggered when doing OTA process.
Known issues are planned to be fixed before the final v4.4 release.
IEEE 802.15.4
- Added IEEE 802.15.4 component, support IEEE 802.15.4 driver with pre-build library
- Added Zigbee pending mode and config coordinator API
- Set IEEE 802.15.4 default PTI to 6
OpenThread
- Added OpenThread submodule
- Added OpenThread porting for ESP32
- Added OpenThread cli example
- Added otPlatRadioSetMacKey and otPlatRadioSetMacFrameCounter implementation.
- Support microsecond timer
- Added esp_openthread_netif_init() api for initializing the OpenThread lwIP interface.
- Added OpenThread lwIP interface to the ot_cli example.
- Updated OpenThread submodule to contain TCP message leak fix.
- Added esp_cli_custom_command
- Added TCP/UDP socket example
- Fixed wrong uart read return value handling
- Added esp_openthread_init esp_openthread_launch_mainloop and esp_openthread_deinit for simplified OpenThread initialization and launch logic.
- Updated the OpenThread cli example with the simplified implementation.
- Added the OPENTHREAD_BORDER_ROUTER Kconfig option
- Added platform UDP and task queue port for the border agent feature
- Added esp_openthread_border_router_* api
- Added the esp_otbr example.
- Porting and border routing features are now provided by prebuilt libraries
- esp_openthread_netif_glue_init now requires platform config as its parameter
- Enable ot_cli on ESP32H2-Beta chip
- Enable multicast ping in OpenThread examples by default
- Introduced a config option to enable/disable extended features in ot_cli example
- Support ICMPv6 auto config
- Support SRP service delegation
- Publish _meshcop._mdns service
- Added ftd.cmake for build FTD and radio.cmake for build RCP
- Remove openthread-core-esp32x-config.h, added openthread-core-esp32x-cli-config.h and openthread-core-esp32x-rcp-config.h
- Openthread enable ping sender module
- Support discovery delegate in border router
- Added iperf example
- iperf: Support IPV6 address
- iperf: Added new field len_send_buf, now iperf can set the length of sending buffer
- iperf: Merge socket send/recv logic
- OpenThread: Added menuconfig o...
ESP-IDF Release v4.0.4
Documentation for v4.0.4 is available at https://docs.espressif.com/projects/esp-idf/en/v4.0.4/
ESP-IDF v4.0.4 is the last bugfix update for ESP-IDF v4.0. ESP-IDF v4.3.1 is the latest stable release at time of writing.
As previously announced, Espressif will stop supporting v4.0 release after October 2021. For more information please see the ESP-IDF Support Policy. Customers who are using v4.0 release series are encouraged to migrate to more recent releases.
Obtaining v4.0.4
For full installation instructions, see the ESP-IDF Programming Guide.
The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:
Using git
To get this release, use the following commands:
git clone -b v4.0.4 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.0.4
cd esp-idf-v4.0.4/
This is the recommended way of obtaining v4.0.4 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.0.4.zip
archive. It includes .git
directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.
This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/github_assets/espressif/esp-idf/releases/download/v4.0.4/esp-idf-v4.0.4.zip
Changelog
This is the list of changes since release v4.0.3:
Major Bug Fixes
- Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)
- Update the SIG recommendations for BLE Mesh CVE issues
- Fixed CVE-2021-37577: check for only X component of public key to avoid impersonation in passkey attack for BR/EDR
Breaking Changes
- No breaking changes
Bluetooth
Controller
Bluetooth Low Energy
- Fixed RX interrupt flooding during BLE scanning in the case that no RX buffer is available
- Fixed the crash issue when starting scan
- Removed duplicate events in r_lld_evt_end() function
- Fixed BLE ACL Tx Flush issue during Reset/Reboot
- Force to restart connection timer when RX buffers run out of space
- Fixed the scan failed issue
Classic Bluetooth
- Fixed handling of invalid feature page response
- Fixed unable to initiate SCO connection when peer device does not accept sniff mode
- Fixed the default sdkconfig options for controller_hci_uart example
- Fixed CVE-2021-37577: check for only X component of public key to avoid impersonation in passkey attack for BR/EDR
Bluedroid
Classic Bluetooth
- SPP: Fixed spp acceptor deadlock
- A2DP: Fixed a2dp deint crash
- SPP: Added some common FAQs in SPP Demo README
- SPP: Fixed spp memory leak (#7238)
- A2DP: Fixed A2DP sink blocked issues (#6712, #7100)
- HFP: Fixed issue that acl can't disconnect using hfp_client disconnect API
- Fixed the timer collision in function bta_sys_start_timer() used by role switch (#7203)
Bluetooth Low Energy
- Fixed data length update failed
- Fixed no data length update callback when the data length of value being used is the same as the value to be set
- Fixed some BLE document description error
- Fixed the issue when BLE scan parameters setting
NimBLE
- Include NimBLE upstream fix to remove build error when NIMBLE_BLE_ADVERTISE is not set
- Added fix while deleting peer_dev_records entry in NVS
- Added change to check for stack status before executing stack commands.
ESP-BLE-Mesh
- Make Unprovisioned Device Beacon interval configurable (#6722)
- Update the SIG recommendations for BLE Mesh CVE issues
Wi-Fi Coexistence
- Deleted the Bluetooth Kconfig option: BLE ADV priority high
Wi-Fi
- Fixed amsdu and fragment vulnerabilities
- Fixed issues with bcast deauth in PMF connection
- Added WPS strict config option
- Fixed Enterprise connection issue with windows server
- Fixed airkiss and esp-touch find channel crash issue
Ethernet
- Speed up Ethernet start up process
- Fixed eth2ap example crash issue (#7260)
Security
- Add (configurable) feature to disable UART Download mode for ESP32 ECO3 silicon
- flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spiflash on ESP32 (#6322, #6254)
Peripheral Drivers
- UART: Added missing critical section wrappers around rx_buffered_len (#6396)
- MCPWM: Fixed wrong deadtime preset modes (#7321)
Core System
- SoC: Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end
- Increased timeouts when using the portMUX debugging feature
- Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock
- Fixed possible deadlock when using pthread_join() and log level set to Debug or higher
- Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore
- esp_event: Fixed and improved docs (#6761)
- Bootloader: Improved XMC flash stabilities as main flash
- Bootloader: Added unlock function patch in bootloader to make GD flash more stable
newlib libc
- Fix for FD_ISSET macro when n==-1
HTTP Client
- Fixed memory leak identified by cppcheck
- Fix header truncated when responded header length over buffer_size (#6370)
- Fixed handling of EAGAIN return to address HTTPS connection abort issue
mbedTLS
- Upgrade to release v2.16.11
ESP-MQTT
- Added a new API to enqueue publish messages with qos>0
Storage
- vfs/uart: Fixed memory leak identified by cppcheck
FreeModbus
- Increased the maximum modbus tasks priority
- Fixed error handling in mbc_master_get(set)_parameter() for duplicate parameter key in parameter descriptor list (#7362)
- Fixed slave destroy bug when master and slave init simultaneously
- Fixed master and slave use the same timer group index (#4699)
- Fixed RS485 rts de-assert fail when tx delayed (#6728)
- Added the FMB_PORT_TASK_AFFINITY kconfig option for modbus tasks (#6700)
Tools
- Catch the correct exception raised when the external tool is not available (#7140)
- Added support for installation on arm64 macOS
- Added possibility of setting a mirror for all GitHub asset URLs downloaded as part of IDF Tools install process
- Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
- gcov: Fixed the on-the-fly (non-hardcoded) gcov dumping
- Upgrade OpenOCD version to v0.10.0-esp32-20210902
Build System
- Fixed overriding Python path with -DPYTHON when building IDF as CMake library (#6285)
- Improved error message if the Python dependency check completely fails to run due to an issue with the Python interpreter
- Define IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables during the early expansion phase of component CMakeLists.txt files
External Libraries
- cJSON: Updated cJSON submodule to v1.7.15
- expat: Update library from 2.2.9 to 2.4.1
- nghttp2: Upgraded to v1.41.0
Examples
- 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
Documentation
- SPI: Fixed the default maximum transaction length
ESP-IDF Release v4.3.1
Documentation for v4.3.1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3.1/
ESP-IDF v4.3.1 is a bugfix update for ESP-IDF v4.3. ESP-IDF v4.3.1 is the latest stable release at the time of writing.
Obtaining v4.3.1
For full installation instructions, see the ESP-IDF Programming Guide.
The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:
Using git
To get this release, use the following commands:
git clone -b v4.3.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.3.1
cd esp-idf-v4.3.1
This is the recommended way of obtaining v4.3.1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.3.1.zip
archive. It includes .git
directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.
This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v4.3.1.zip
Changelog
This is the list of changes since release v4.3:
Major Bug Fixes
- Fixes for CVE-2020-26556, CVE-2020-26557, CVE-2020-26559 CVE-2020-26560, CVE-2021-27926.
Breaking Changes
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1".
Known Issues
- Infrequent crash happens on ESP32 during BLE remove bond list stress test.
- Nimble resolvable private address does not work properly in some use scenarios.
- When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet.
- On ESP32-C3, AES/SHA may reset the wrong DMA RX channel if it shares the same ID as the TX. This issue may occur if ADC-DMA driver is initialized before the Wi-Fi, because ADC-DMA only uses one RX channel, and Wi-Fi uses AES/SHA module. Try to initialize the ADC-DMA or anything that will use a single DMA channel after the Wi-Fi may be a temporary workaround before next bugfix version.
Bluetooth Controller
- Fixed missing sleep time
- Fixed assert in checking hardware sleep state during wake-up
- Fixed that when EXT CRYS is configured but not detected, light sleep is still allowed to be used
Bluetooth Low Energy
- Deleted the Kconfig option: BLE ADV priority high
- Fixed RX interrupt flooding during BLE scan event in the case that no Rx buffer is available
- Fixed start scan crash issue
- Removed duplicate events in r_lld_evt_end() function
- Fixed disconnection due to MIC failure (error code:0x3D) during pairing on ESP32-C3
- Fixed no adv report in scan when using HW recorrect on ESP32-C3
- Fixed BLE ACL Tx Flush issue during Reset/Reboot
- Fixed the scan timeout report
- Added local IRK to BLE Controller RPA list
- To get a better performance of multi-connection, the minimum connection interval of coded PHY on ESP32-C3 is changed from 7.5ms to 12.5ms
Classic Bluetooth
- Fixed unexpected LMP timeout problem when rejecting remote device
- Fixed unable to initiate SCO connection when peer device does not accept sniff mode
- Fixed handling of invalid feature page response
Bluedroid
Classic Bluetooth
- HFP: Fixed build error for HFP-HF when Bluedroid dynamic memory allocation is enabled (#7145)
- Fixed A2DP sink blocked issues (#6712, #7100)
- SPP: Fixed SPP acceptor deadlock
Bluetooth Low Energy
- Fixed assert when updating exception list on ESP32-C3
- Fixed data length update rejected when controller is updating data length
- Supported HID examples for ESP32-C3 and ESP32-S3
- Fixed issue of option not being set due to incorrect macro name
- Fixed ESP32 BLE can't resolve the peer address when white list is enabled
- Fixed Enable Gattc NVS Cache lead to Crash
NimBLE
- Added support for NimBLE host to Blufi (#6904)
- Added support to use ESP timer that has higher priority than FreeRTOS timer
ESP-BLE-Mesh
- Recommend to use randomly generated AuthValue for each provisioning (CVE-2020-26556 & CVE-2020-26557)
- Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- Added check of Provisioning Random & Confirmation sent/received by Provisioner (CVE-2020-26560)
- Update the SIG recommendations for BLE Mesh CVE issues
- Make Unprovisioned Device Beacon interval configurable
- Added sdkconfig.defaults.esp32s3 for ESP32-S3 to some of the example.
Wi-Fi Coexistence
- Fixed performance issue for extended active scan in coexistence scenario: use the same priority for Rx of AUX_ADV_IND and AUX_SCAN_RSP
Wi-Fi
- Fixed crashes when CSI is enabled
- Fixed PM state error when CSI callback function is called
- Fixed amsdu and fragmentation vulnerabilities
- Refactored Wi-Fi ioctl functions
- Compile Wi-Fi library with -Os instead of -Og
- Support for saving phy calibration data to NVS for ESP32-S2, ESP32-C3 & ESP32-S3
- Added RF calibration docs for ESP32-S2 and ESP32-C3
- Added WPS strict config option
- Restructured wpa_supplicant's crypto code
- Added support for FTM ASAP, multiple FTM Initiators, ESP32-C3 calibration
- Move unused Wi-Fi log to noload section to save binary size
- Fixed RM capability missing for open mode AP
- Fixed memory leak under 11kv macro
- Added support of regdomain database
- Fixed connection failure caused by sleep
- Synchronized IDF menuconfig NVS status to lib
- Disabled AMPDU+AMSDU bit
- Fixed 802.11 TX crash issue
- Added support of config 802.11 TX rate
- Fixed memory leak in esp_issue_scan error path (#7240)
- Clear WLAN_FC_STYPE_ACTION bit in esp_register_action_frame (#7252)
- esp_supplicant: Make esp_rrm_send_neighbor_rep_request return proper error (#7233)
- wpa_supplicant: Trivial typo fix for setting spp_sup.require (#7366)
- Fixed some PMF and FTM issues
- Fixed crash issue of airkiss and esptouch in finding channel
ESP-WIFI-MESH
- esp_mesh_send is blocked in nodes(layer>=3), when a FIXED-ROOT root is duty master
- Added non mesh connections access
Ethernet
- Speed up Ethernet start up process
- Fixed bug in w5500-mac which could corrupt memory or cause infinite looping while reading registers (#6579)
- Fixed eth2ap example crash issue (#7260)
Security
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
- ESP32-C3/memprot: Fixed get_split_addr calculation and incorrect access to DRAM split address register
- Secure Boot V2: Fixed compiler warning and possible ignoring of DRBG internal failure when verifying Secure Boot signature during OTA. This bug had no security impact
- Digital_Signature: Fixed memory leak identified by cppcheck
- memprot: Fixed IRAM section alignment to avoid CPU prefetch overflowing to DRAM (causes PMS violation interrupt)
Peripheral Drivers
- I2S: Fixed driver uninstall can't disable the module
- I2C: Delete i2c cmd_mux semaphore more cleanly (#6848)
- TWAI: Fixed incorrect timing configuration initializers for the 1K, 5K and 10K bit rates
- UART: Fixed the garbage output when resetting the peripheral on ESP32-C3
- UART: Fixed a race condition and wrong interrupt flag setting
Core System
- Fixed possible deadlock when using pthread_join() and log level set to Debug or higher
- ULP-RISC-V: Fixed ULP-RISCV unintended waking up due to RTC interrupt not being cleared
- Partition Table: The partition table MD5 checksum is now checked when the partition table is loaded by the app, in addition to the existing check in the bootloader
- ULP: Fixed build system bug where linker script wasn't updated if memory reserved for ULP changed
- ULP-RISC-V: Fixed stack pointer not always being 16-byte aligned
- heap: Fixed ESP32-C3 build issue with heap tracing enabled
- C++: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore
- Fixed wrong exception emergency pool allocation
- Esp-Timer: Helper function to identify the status of timer
- Disable ESP32-S2 option "Allow .bss segment placed in external memory", this option is currently only supported on ESP32
- Fixed auto adjust voltage issue on ESP32-C3
Bootloader
- Fixed support for QIO & QOUT modes on ESP32-U4WDH chip and default configuration (#6191)
- Fixed bootloader_common_get_sha256_of_partition when RSA CHECK_SIGNATURE is on (#6873)
Power Management
- Fixed deep sleep issue caused by the mixed use of deep sleep and light sleep
- Fixed the Xtensa series SoC SysTick frequency error when DFS is enabled
LWIP
- esp_netif: Fixed failing ppp_set_auth() due to wrong argument check (#7047)
(#6935) - esp_netif: Fixed state transition of DHCP server if it's stopped before setting the interface up
- ppp: Fixed esp_netif_lwip_ppp build failure when IPv6 is disabled (https://github.com/es...
ESP-IDF Release v4.1.2
Documentation for ESP-IDF v4.1.2 is available at https://docs.espressif.com/projects/esp-idf/en/v4.1.2/
ESP-IDF v4.1.2 is a bugfix update for ESP-IDF v4.1.1. ESP-IDF v4.3 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.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.1.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.1.2
cd esp-idf-v4.1.2/
This is the recommended way of obtaining release v4.1.2.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.1.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/dl/esp-idf/releases/esp-idf-v4.1.2.zip
Changelog
This is the list of changes since release v4.1.1:
Major Bug Fixes
- Fixed arithmetic overflow issue in FreeRTOS queue API (CVE-2021-31571)
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
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
- Removed support for ESP32-S2-Beta chip
Known Issues
- Nimble resolvable private address does not work properly in some use scenarios.
Bluetooth
Controller
- Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
- Fixed assert without SW coexist enabled
- Fixed Shutdown Bluetooth before ESP_restarte
- Fixed bt controller task watchdog in Wi-Fi test
- Modified log level of messages E8192 ELx200 ELx40 to debugging, to prevent same issue occur repetitively due to too much logging
- Fixed the issue of modem sleep which may lead to the crash issue "assert(-218959118,0)"
- Fixed for C2H flow control parameter check in Bluetooth controller. Required for NimBLE Host flow control to work
- Fixed controller does not report disconnect event to host
Bluetooth Low Energy
- Deleted the Kconfig option: BLE ADV priority high
- Fixes BLE ACL Tx Flush issue during Reset/Reboot
Classic Bluetooth
- Fixed handling of invalid feature page response
- Fixed unexpected LMP timeout problem when rejecting remote device
- Fixed unable to initiate SCO connection when peer device not accept sniff mode
Bluedroid
- 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
- A2DP: Added Init & Deinit Event for A2DP
- A2DP: Fixed underrun issue
- HFP: Fix issue that bta_hf_client_sco_co_out_data is called, it will crash
- SPP: Fixed SPP VFS demo crash when use dynamic memory
- SPP: Fixed SPP VFS memory leaks when exception occurs
- 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
- AVRCP: Fixed an issue that target doesn't handle set_player_app_value command
- HFP: Fixed crash in btc_hf_arg_deep_copy when name or number is NULL
- Added API to config QoS for Classic Bluetooth ACL link
- Added change to consider Audio Major Class while showing discovery results
- HFP-AG: Fixed error when enabling dynamic memory allocation
- A2DP: Fixed A2DP deint crash
Bluetooth Low Energy
- Added connection parameter check
- Fixed ble connection maximum latency is 499
- Disable bluedroid congest error log print
- Fixed read multiple characteristics failed
- Fixed add white list failed
- Fixed bluedroid repair failed if the two most significant bits of public address is '01'
- Fixed congest return value
- Fixed BLE read multi char err when the number of handles is more than 10
- Fixed scan response length error
- Fixed vendor hci memory leak
- Fixed multi-connection pair failure
- Updated connection state when getting connection cancel complete
- Fixed crash caused by enabling GATTC NVS
- Fixed spelling mistakes
- Modify parameter description for esp_ble_gattc_open()
- Fixed data length update failed
- Fixed no callback when the value being used is the same as the value to be set
- Fixed start scan crash issue
- Do not malloc a new event in r_lld_evt_end() if the event already exists
NimBLE
- Fixed host flow control in NimBLE host
- Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability (CVE-2020-26558)
- Fixed WDT crash observed during security exchanges
- Fixed compilation issues when host based privacy is disabled
Blufi
- Fixed issue of sending longer customer data causing congestion
ESP-BLE-Mesh
- Fixed Node ID adv with wrong timeout value
- Need uuid when adding device for provisioning by Provisioner
- Added support of receiving heartbeat messages for Provisioner
- Support using multiple NVS namespaces to store information by Provisioner
- Replace the Zephyr integer types with C99 types [Zephyr]
- Added a separate callback for BLE Mesh and BLE adv/scan coexistence
- Support scanning normal BLE advertising packets when BLE Mesh is working
- Enable updating lighting hsl state
- Fixed Proxy Client may fail to resend messages
- Use different random value for each provisioning by Provisioner
- Fixed deinit server models with no matching model id
- Fixed number endianness error for Provisioner when using input/output auth (#6862)
- Fixed provisioning input/output count number should be at least 1 (#6863)
- Added check of Provisioning Random & Confirmation sent/received by Provisioner(CVE-2020-26556 & CVE-2020-26560)
- Recommended to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- Recommended to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
- Added an option to make Unprovisioned Device Beacon interval configurable
Wi-Fi Coexistence
- Adjusted WiFi scan duration from 120ms to 100ms
- Fixed IRAM_ATTR missing in coex mode
Wi-Fi
- Fixed smartconfig issue when router replies ARP late
- Updated exception handling for iperf example's scan when no APs was found
- Fixed return type of esp_wifi_deinit when Wi-Fi is not stopped
- Fixed issue of crashing when verbose logs are enabled
- Fixed CSA and BAR crash issue
- Using deport reg instead of ahb
- Revert to report specific reason code when receiving deauth during 4-way-handshake
- Fixed the bug that tx ampdu parameter is not from peer device.
- Changed country code last byte to space instead of \0
- Fixed softap cannot forward A-MSDU
- Faster 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't get country
- Fixed phy version log could not disable issue
- Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
- Update 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()
- Add support for 802.1x sha256 auth key mode
- Fixed system crash on scan failure
- Do not check the return value of esp_wifi_connect()
- Fixed resources leaks detected in static analysis
- Fixed setting channel error after WiFi stop
- wpa_supplicant: Prevent reinstallation of an already in-use group key
- Fixed amsdu and fragment vulnerabilities
- Removed support for ESP32-S2-Beta chip
Ethernet
- Speed up Ethernet start up process
Security
- Flash_encryption: Fixed the flash_encrypted_write/read issue under 40M psram and 80M spi flash on ESP32 (#6322, #6254)
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
- Partition Table: The partition table MD5 checksum is now checked when the partition table is loaded by the app, in addition to the existing check in the bootloader
Peripheral Drivers
- ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
- ADC: Fixed issue of crashing when verbose logs are enabled
- CAN: Added support for running ISR when cache is disabled
- CAN: Fixed an issue where log functions were called from within critical sections leading a crash
- CAN: Fixed an issue where semaphores were taken from within a critical section
- Freemodbus: Added MB_PORT_PARITY_GET() to propagate UART parity options from...
ESP-IDF Release v4.0.3
Documentation for v4.0.3 is available at https://docs.espressif.com/projects/esp-idf/en/v4.0.3/
ESP-IDF v4.0.3 is a bugfix update for ESP-IDF v4.0. ESP-IDF v4.3 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.
Obtaining v4.0.3
For full installation instructions, see the ESP-IDF Programming Guide.
The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:
Using git
To get this release, use the following commands:
git clone -b v4.0.3 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.0.3
cd esp-idf-v4.0.3/
This is the recommended way of obtaining v4.0.3 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.0.3.zip
archive. It includes .git
directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.
This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v4.0.3.zip
Changelog
This is the list of changes since release v4.0.2:
Major Bug Fixes
- Fixed arithmetic overflow issue in FreeRTOS queue API (CVE-2021-31571)
Breaking Changes
- NVS: Usage of initialized flash after erasure changes from undefined behavior to runtime failure
- Bootloader: The default app configuration is only compatible with bootloader and partition table generated from ESP-IDF V3.1 or newer. Apps that need to support OTA update on bootloaders and/or partition tables from older ESP-IDF must enable the new configuration option "App compatible with bootloader and partition table before ESP-IDF v3.1".
Bluetooth
Controller
- Fixed BT controller dead if CLKN overflow
- Reduced IRAM consumption about 300bytes
- Fixed crash in Bluetooth caused by calling esp_restart() function
- Fixed controller do not report disconnect event to host
- Removed the wrong called to lld_evt_end_isr()
- Fixed sleep cause hci timeout issue
- Fixed the issue of modem sleep which may lead to the crash issue "assert(-218959118,0)"
- Modified E8192 ELx200 ELx40 log level to LOGD
Bluetooth Low Energy
- Fixed exl200 error
- Added btdm_disable_adv_delay() function to delay ADV random delay
- Fixed RPA address update error
- Fixed the problem of early release of pointer(p_ccb) in function
- Fixed ble disconnection issue in coex mode
- Fixed the crash issue after controller disable and re-enable in bluetooth
- Fixed assert(10, 9) when afpm occur,and changed the check order for esp_bt_controller_init()
- Added timer to monitor controller scan event
Classic Bluetooth
- Workaround for a hardware bug when entering sniff mode
- Rewrite ld_acl_frm_isr to make clock read more precise and use less IRAM
- Fixed HCI Timeout by 0x40F or 0x41C 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)
Bluedroid
Classic Bluetooth
- Separate A2DP and AVRC init procedure and set the sequence of initialization of them
- SPP: Fixed crash caused by fixed_queue_dequeue() spp rx
- Optimized some comments and internal functions
- GAP: Add remove bond device complete event in GAP module
- GAP: Fixed when calling esp_bt_gap_read_rssi_delta without ESP_BT_GAP_READ_RSSI_DELTA_EVT event.(#5660)
- Commented out L2CAP APIs in SPP Profile to reduce the .bss.
- 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
- A2DP: Fixed crash caused by calling a2dp_deinit directly when a2dp connected
- SPP: Fixed SPP vfs demo crash when use dynamic memory
- SPP: Fixed SPP vfs memory leaks when exception occurs
- 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
- Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability
- 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
- Added change to consider Audio Major Class while showing discovery results (#6548)
- Fixed one issue that when bta_hf_client_sco_co_out_data is called, it will crash
- Added API to config QoS
Bluetooth Low Energy
- Fixed a potential double free error
- Supported BLE Authorization
- Supported BLE Application Layer Encryption key size check
- Supported BLE Read Attribute value by UUID
- Supported BLE Non-Resolvable Private Address setting
- Fixed BLE incorrect encryption flag setting
- Fixed unexpected LMP timeout problem when rejecting remote device
- Optimize 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
- Added connection parameter check
- Fixed ble connection maximum latency is 499
- Disable bluedroid congest error log print
- Fixed white list update failed
- Fixed bluedroid repair faild if the two most significant bits of public address is '01'
- Fixed congestion event parameter error
- 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
- Modified parameter description for esp_ble_gattc_open()
- Fixed Spelling mistakes
- Fixed multi-connection pair failure
- Updated connection state when getting connection cancel complete
- Fixed crash caused by enable GATTC NVS
NimBLE
- Added check if received buffer size less than configured event buffer size
- NimBLE NVS: Additional check to account for NVS operation failure
- NimBLE host: Fix minor bug in ble_eddystone_set_adv_data_gen
- NimBLE host: remove recursive call, upstream PR: apache/mynewt-nimble#857
- Fixed host flow control in NimBLE host
- Fixed WDT crash observed during security exchanges
- Nimble host: Fix MITM vulnerability during public key exchange in secure connection
Blufi
- Fixed the issue that the sequence still increases when Blufi is sending data on disconnection
- Fixed an error caused by incorrect conn_id parameters
- Added a macro to control the compilation of blufi code
- Fixed the issue that sending longer customer data will cause congestion
ESP-BLE-Mesh
- Fixed updating ccc handle with wrong value when using NimBLE host
- Replaced ASSERT in the mesh stack with proper error handling
- Fixed wrong description of BLE Mesh server model autorsp flag
- Now using the latest IV Index for provisioning by Provisioner
- Added check of mesh stack initialization before initialize vendor client
- Updated mesh device property to v2
- Updated Provisioner delete device function behavior
- Synchronized a few Zephyr BLE Mesh updates
- Use model callback for model related operations
- Fixed RPL not checked by proxy configuration
- Store Key Refresh Phase after the value is changed
- Replace the Zephyr integer types with C99 types
- Added device role check before enabling proper mesh functionality
- Added mutex for protecting settings operations
- Added clearing hb_pub function in settings
- Optimized erasing NetKey and AppKey functions
- Optimized model settings related functions
- Fixed storing wrong next allocated net_idx and app_idx
- Updated connection parameters used by Central device for BLE Mesh
- Persistent storage miscellaneous fixes
- New Kconfig options introduced to reduce code size
- Added node local NetKey/AppKey Get/Add and bind AppKey functions
- Always needs uuid when adding device for provisioning
- Fixed Node ID advertising with wrong timeout value
- Added support of receiving heartbeat messages for Provisioner
- Support using multiple NVS namespaces to store information by Provisioner
- Added a separate callback for BLE coexistence operations
- Support scanning normal BLE advertising packets
- Enable updating Lighting HSL state
- Use different random values for each provisioning procedure
- Fixed an issue that Proxy Client may fail to resend messages
- Fixed deinit server models with no matching model id
- Fixed number endianness error for Provisioner when using input/output authentication (#6862)
- Fixed provisioning input/output count number should be at least 1 (#6863)
- Add check the value of Provisioning Random & Confirmation sent and received by Provisioner(CVE-2020-26556 & CVE-2020-26560)
- Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
- Recommend to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
Wi...
ESP-IDF Release v4.2.2
Documentation for v4.2.2 is available at https://docs.espressif.com/projects/esp-idf/en/v4.2.2/
ESP-IDF v4.2.2 is a bugfix update for ESP-IDF v4.2.
Obtaining v4.2.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.2 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.2.2
cd esp-idf-v4.2.2/
This is the recommended way of obtaining v4.2.2.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.2.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/dl/esp-idf/releases/esp-idf-v4.2.2.zip
Changelog
This is the list of changes since release v4.2.1:
Major Bug Fixes
- Fixed arithmetic overflow issue in FreeRTOS queue API (CVE-2021-31571)
Known Issues
- 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.
Bluetooth Controller
Bluetooth Low Energy
- Fixed controller do not report disconnect event to host
- Deleted the Kconfig option: BLE ADV priority high
Classic Bluetooth
- Fixed handling of invalid feature page response
Bluedroid
Classic Bluetooth
- Added change to consider Audio Major Class while showing discovery results (#6548)
- HFP-AG: fixed error when enabling dyanmic memory allocation
Bluetooth Low Energy
- Fixed Spelling mistakes
- Modify parameter description for esp_ble_gattc_open()
- Fixed multi-connection pair failed
- Updated connection state when getting cancel connection complete event
- Fixed crash caused by enable GATTC NVS
NimBLE
- Fixed host flow control in NimBLE host
- Fixed WDT crash observed during security exchanges
- Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability (CVE-2020-26558)
ESP-BLE-Mesh
- Fixed number endianess error for Provisioner when using input/output authentication (#6862)
- Fixed provisioning input/output count number should be at least 1 (#6863)
Wi-Fi
- Fixed channel setting error after Wi-Fi stop
- wpa_supplicant: Prevent reinstallation of an already in-use group key
- Support phy calibration data storage to nvs for ESP32-S2
- Fixed ESP-NOW channel config range
- Added RF calibration docs for ESP32-S2
- Fixed dirty buffer issue
- Fixed Block Ack issue when PMF is enabled
- Fixed softAP crash by handling public action frames (#7109)
Ethernet
- Speed up Ethernet start up process
ESP-WIFI-MESH
- Added esp_mesh_send_block_time to set blocking time of esp_mesh_send
Security
- Digital Signature: Fixed invalidating Digital Signature key in HMAC peripheral if assertions are disabled
- Flash Encryption: Fixed potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926)
- Partition Table: The partition table MD5 checksum is now checked when the partition table is loaded by the app, in addition to the existing check in the bootloader
Peripheral Drivers
- SPI: Fixed duplex mode switch issue when switching multiple devices (#4641, #1080)
- SPI: Fixed CS polarity configuration issue (#4726, #5490)
- Timer: Place timer_spinlock_give/timer_spinlock_take in IRAM (#6824)
- Touch_sensor: Fixed touch sensor default power source on ESP32-S2
- UART: Apply FORCE_INLINE_ATTR to all UART LL functions to inline them correctly with "-O2" option (#5694)
Core System
- Fixed arithmetic overflow issue in FreeRTOS queue API (CVE-2021-31571)
- Improved chip boot time for ESP32-S2
- Any alignment is now permitted for .flash.rodata section as (custom) application version information is now in a separate section ( #6976)
- Fixed .flash.text alignment causing cache issue ( #6976)
- ULP: Fixed build system bug where linker script wasn't updated if memory reserved for ULP changed
Power Management
- Optimized deep sleep current in Wi-Fi softap mode
- Provided an interface to get pm_configuration
LWIP
- Fixed assert when tcp send data
- Optimized dhcp key state transition message
OTA
- Fixed incorrect usage of otadata.seq & crc in
switch_ota_partition cmd
HTTP Client
- Fixed esp_http_client_read with OpenSSL server for file size aligned to 289 bytes
mbedTLS
- Fixed mbedtls dynamic resource memory leaks
- Fixed mbedtls_ssl_send_alert_message crash due to ssl->out_iv is NULL
- Added support for external memory policy for ESP32-S2 (#6998)
- Fixed ESP32-S2 AES DMA could return before all bytes completed writing back to RAM
Bootloader
- Fixed bootloader "skip validate on exiting deep sleep" option if "use RTC memory as heap" is enabled
Tools
- "idf.py gdbgui" - Add workaround for typing errors from greenlet and use compatible Socket.IO library (#5968)
- idf.py: Fixed unpredictable order of global_action_callbacks with python < 3.7
- Can now set a mirror for all GitHub asset URLs downloaded as part of IDF Tools install process
- Split up large binaries into smaller chunks in the DFU binary (#6999)
- idf_tool.py: Improved error message about tool being installed but failed to run
- export.bat/install.bat: Human-readable error message if Git or Python is not in PATH.
Documentation
- Updated ESP32-S2-Kaluga-Kit User Guide in Chinese for v1.3 of the kit
- Updated Chinese translation for build-system, ulp, unit-tests, and idf-monitor, fixed typos and line wrap for the corresponding documentation in English