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 option to enable srp client
- Enable dynamic logging
- Reduce default log verbosity
- Added esp_openthread_cli APIs
- Added history support for OpenThread CLI
Bluetooth Controller
- Fixed bluetooth controller task watchdog in Wi-Fi test
- Delete the option: BLE ADV priority high
- Added high level interrupt for Bluetooth
- Fixed live lock issue in Bluetooth interrupt immediately, to make sure interrupt response speed
- Fixed the assert in checking hardware sleep state during wake-up
- Fixed rx interrupt flooding during BLE scan event in coexistence scenario, in the case that no Rx buffer is available.
- Use correct addresses of Bluetooth Low Power Clock registers on Chip 7.2.8 ESP32-S3
- Disabling asserts for the entire project (or setting silent) now applies to BT assert configurations
- Fix for C2H flow control parameter check in Bluetooth controller. Required for Nimble Host flow control to work
- Support ESP32-S3-Beta3 BLE
- Created repository for BLE library files of ESP32-C3 and ESP32-S3, as a new submodule of ESP-IDF. Modify directory layout to better support multiple chips.
- Fixed interrupt watchdog timeout during controller disable procedure for ESP32-S3/ESP32-C3
- Fixed the Rx performance issue for coded PHY, especially in coexistence scenario for ESP32-C3/ESP32-S3
- Fixed: Power down bluetooth module when deinit
- Fixed the issue caused by the power off the BT/Wi-Fi power domain
Bluetooth Low Energy
- Fixed the bug of modem sleep which may lead to the crash issue "assert(-218959118,0)"
- Fixed controller do not report disconnect event to host
- Fixed BLE disconnect due to connection parameters update
- Fixed the start scan crash issue
- Removed duplicate events in r_lld_evt_end
- Fixed update exception list assert
- Fixed no adv report in scan when using HW reconnect
- Supported HW CCA
- Fixed data length update rejected when controller is updating data length
- Fixed BLE ACL Tx Flush issue during Reset/Reboot
- Fixed the scan timeout report
- Fixed that when EXT CRYS is configured but not detected, light sleep is still allowed to be used.
- Fixed controller default LE Event Mask, the origin value is {0xFF,0xFF,0x0F,0x00,0x00,0x00,0x00,0x00}, the current value is {0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00}.
- Fixed disconnection due to MIC failure (error code:0x3D) during pairing is fixed
- Fixed BLE controller init failed due to version number mismatch for ESP32-S3
- Fixed missing the sleep time
- Fixed crash when shutdown bluetooth
Classic Bluetooth
- Fixed IRAM_ATTR missing in coex mode
- Fixed crash in Bluetooth when esp_restart
- Fixed some issues during light sleep and DFS
- Fixed issue that function called in ISR is not labeled with "IRAM_ATTR" in Bluetooth Controller in ESP32-S3
- Fixed wrong Tx Power level mapping and implemented Tx power set/get APIs
- Modify E8192 ELx200 ELx40 log level to LOGD.
- Fixed handling of invalid feature page response.
- Fixed crash when lmp flooding
- Fix unable to initiate SCO connection when peer device not accept sniff mode
- Fix Link error of Bluetooth Kconfig
- Decouple Wi-Fi and bluetooth with coexist to reduce binary file size
- Fixed the scan failed issue
- Fixed connection failed with LG 5.0 phone
- Fixed crash after inquiry has finished
- Fixed crash caused by bluetooth high level interrupt
Bluedroid
Classic Bluetooth
- 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
- HFP: Fixed crash in btc_hf_arg_deep_copy when name or number is NULL.
- Fixed L2CAP Repeat CID
- Shortened some log messages in bluedroid
- HFP: Fixed build error for HFP-HF when bluedroid dynamic memory allocation is enabled.
- HF-AG: Fix ag use dynamic memory error.
- Fixed C3/S3 multi-connection failed when device acts as master and slave at the same time
- A2DP: Fixed A2DP sink blocked issues.
- SPP: Fixed SPP acceptor deadlock
- A2DP: Fixed A2DP deint crash
- SPP: Fixed SPP memory leak
- SPP: Added some common FAQs in SPP Demo README.
- Fixed the timer collision in function bta_sys_start_timer() used by role switch.
- HFP: Fixed issue that acl can't disconnect when hfp_client disconnect.
- Fixed the crash when using legacy paring with wrong pin code
- Fixed wrong clock_id in function time_now_us
- HID: Added configuration of HID task stack size (#6385)
- HID: Added BTC layer and API for HID host
- HID: Support HID Device role over BR/EDR
- Fixed single-tone sample sequence generation error in HFP examples
Bluetooth Low Energy
- Fixed bluedroid host report connection address error when remote device used RPA address
- Added option to enable/disable ESP32 controller RPA
- Fixed multi-connection pair failed
- Added an option in menuconfig to configure maximum GATT services
- Optimize multi-connection for ESP32-C3 and ESP32-S3
- Fixed iPhone repaired failed for ESP32-C3 and ESP32-S3
- Added reconnection function to try reconnect after the connection fails to be established
- Added option to enable multi-connection
- Updated connection state when getting connection cancel complete
- Fixed BLE 5.0 pairing failed when using random address
- Fixed reconnect failed when using rpa public address
- Fixed BLE ANON_ADV address error
- Fixed crash due to enable GATTC NVS cache
- Fixed issue of option not being set due to incorrect macro name
- Supported HID examples for ESP32-C3 and ESP32-S3
- Fixed BLE can't resolve the peer address when whitelist is enabled for ESP32.
- Fixed BLE connection will crash during erase flash
- Fixed data length update failed
- Fixed Spelling mistakes
- Modify ambiguous descriptions for BT_CTRL_BLE_MAX_ACT
- Modify parameter description for esp_ble_gattc_open()
- Added UHCI example to ESP32-C3, used for Bluetooth Controller only mode through HCI UART transport
- Fixed Bluedroid Host auto update PPCP after exchange connection parameters
- Added check if the BLE extend connection parameter is valid
NimBLE
- Fixed WDT crash observed during security exchanges.
- Fixed max connection configuration issue in ESP32-C3.
- Updated custom logging support for NimBLE host.
- Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability.
- Fix issue of crash during timer deletion
- Check stack initialization status before executing stack commands
- Added separate option to enable bonding which fixed forget device iOS issue
- Removed critical log level value from menuconfig.
- Blufi on Nimble: Added fix for crash issue on ESP32-C3 during application init.
ESP-BLE-Mesh
- Fixed using wrong endianness of input/output authentication number for Provisioner
- Fixed provisioning input/output authentication number should be at least 1
- Added check of Provisioning Random & Confirmation sent/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
- Update the SIG recommendations for BLE Mesh CVE issues
- Fixed filtering error when Provisioner receives heartbeat messages
- Apply the errata E16350 of BLE Mesh from Bluetooth SIG
Wi-Fi & BT Coexistence
- 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 (1)
- Support external coexistence when WiFi starts, customers can use it for extending the other communication protocols to the mechanism of time diversion.
Wi-Fi Mesh
- Added support for chain topology (1)
- mesh/ps: Added esp_mesh_ps_duty_signaling to accelerate the broadcast of new network duty. (1)
- mesh/recv: Added option MESH_OPT_RECV_RATE (esp32-only). (1)
- mesh/rssi: Average the router_rssi. (1)
- mesh/ps: Close NWK-DUTY-MASTER process.(1)
- mesh/root: Change the condition of s_extra_scan_attempts (1)
- mesh/ps: Remove ps duty info from the ADD announcement packets.(1)
- mesh/ps: Modify beacon interval to 300ms when ps is enabled. (1)
- mesh/ps: Remove the support of MESH_PS_NETWORK_DUTY_APPLIED_UPLINK. (1)
- mesh/c3: Fixed mesh deinit blocking issue (1)
- mesh/c3: Fixed root has no eb for deauth frames during the networking (1)
- mesh: Added esp_mesh_send_block_time to set blocking time of esp_mesh_send (1)
- esp_mesh_send is blocked in nodes(layer>=3), when a FIXED-ROOT root is duty master (1)
- Added non mesh connections access (1)
Wi-Fi
- Fixed the issue that connect scan may cause crash (1)
- Fixed potential crash or watchdog during FTM (1)
- Fixed return type of esp_wifi_deinit when Wi-Fi is not stopped (1)
- Fixed an issue that Wi-Fi stack may crash when receive AMSDU length bigger then 3200 (1)
- Support disabling 11b rate (1)
- Support configuring ESP-NOW rate (1)
- Fixed miss-overwrite of some PHY registers when Wi-Fi modem sleep is enabled. (1)
- Added encrypt option for ESPTouch v1 (1)
- Fixed issue of reason code change from 15 to 200 when provided with wrong password (1)
- Fixed the issue that the parameters obtained from RAM cannot be saved to NVS (1)
- Modify not to store the default value in NVS(1)
- Fixed issue with hidden AP scans after connecting to an AP (1)
- Fixed watchdog issue when receiving action frame (1)
- Fixed issue of reason code change from 15 to 204 when provided with wrong password (1)
- Fixed set_config return value error (1)
- Fixed ampdu age timer memory leak (1)
- Fixed the second distribution network failure of ESPTouch v2 (1)
- Fixed ESPTouch v2 issues (1)
- Support to sleep for station in disconnected status.(1)
- Support to adjust wake-up ratio for ESP-NOW at disconnected status. (1)
- Keep wakeup state during csa (1)
- Added beacon timeout event. (1)
- Update TBTT when rx probe response after beacon timeout (1)
- Current stays low at light sleep when using gpio to wake up. (1)
- Updated libphy.a to V1800 20210413_e7ef680 for ESP32-S2 (1)
- Prevent reinstallation of an already in-use group key (1)
- Disable FTM by default for non-FTM examples to save space (1)
- Update ESP32-C3 phy init data (1)
- Cleaned GTK after disconnect (1)
- Fixed error in setting channel after WiFi stop (1)
- Updated ESP32-C3 Wi-Fi iperf default config. (1)
- Fixed Block Ack setup issue in PMF scenario (1)
- Validate FTM Initiator config parameters and propagate status (1)
- Support phy calibration data save to nvs for ESP32-S2, ESP32-C3 & ESP32-S3 (1)
- Fixed crash when csi is enabled(1)
- Fixed pm state error when csi cb function called (1)
- Fixed amsdu and fragment vulnerabilities. (1)
- Refactor WiFi ioctl function (1)
- Compile WiFi library with -Os instead of -Og (1)
- Added WPS strict config option (1)
- Fixed aes_unwrap functionality (1)
- Added ASAP mode support in FTM operations. In FTM Responder mode, added support for up to 3 FTM initiators simultaneously (1)
- Move unused wifi log to noload section to save binary size (1)
- Fixed RM capability missing for open mode AP(1)
- Fixed memory leak under 11KV macro (1)
- Added support of regdomain database.(1)
- Fixed connection failure caused by sleep (1)
- Fixed nvs init status issue. (1)
- Fixed memory leak in esp_issue_scan error path (1)
- Clear WLAN_FC_STYPE_ACTION bit in esp_register_action_frame (1)
- esp_supplicant: Make esp_rrm_send_neighbor_rep_request return proper error (1)
- wpa_supplicant: Trivial typo fix for setting spp_sup.require (1)
- Fixed PMF issue with broadcast deauths with certain reason codes (1)
- Fixed FTM not working in connected state issue (1)
- Fixed airkiss and esptouch find channel crash issue(1)
- Fixed enterprise connection issue with windows radius server (1)
- Fixed interoperability issue with Windows 2008 radius server. (1)
- Added SHA384/SHA512 support for internal client. (1)
- Support embedding multiple phy init data bin into app bin. (1)
- Optimize Wi-Fi DTIM sleep current
- Modified connect example to add scan mode config
- PHY: Init phy data to default if invalid in flash partition to avoid bootloops
- Fixed WiFi data rate status bug after disconnection.
- Fixed WiFi tx bug in low data rate.
- Support ESP32-S3 Beta3 Wi-Fi.
- Added sniffer example FCSFAIL filter
- Restructured wpa_supplicant's crypto code.
- Added a new API to destroy default WiFi network interface created with esp_netif_create_default_wifi_...() API.
- Added station based check for auth frame formation
- WPA_Supplicant] Fix supplicant debug logs errors.
- PHY: Added esp_phy component and esp-phy-lib submodule
- Fixed WAPI Key mgmt compatible issue
- Fixed 9Mbps data rate Tx issue
- Fixed 80211 tx crash issue
- Support configuring 802.11 tx rate
- Added support of wifi power save for ESP32-S3
- Fix ESP32-S3 malloc rom funcs ptr in psram when psram enable.
- Added missing cflag CONFIG_SHA256 for Makefile
- Added support for MBO certification
- wpa_supplicant: Fix wps_free_pins to remove all pins
- Added GCMP, GCMP256, GMAC, GMAC256 support for ESP32C3/ESP32S3.
- Added WPA3 192bit certification support.
- Updated WiFi Enterprise example.
- Fixed wifi and bt power domain leakage current in light sleep
- Fixed Test PHY/RTC functions called when cache is disabled of ESP32
- Fixed ESP32-C3/ESP32-S3 PHY cause USB no log issue
- Fixed ESP32-C3/ESP32-S3 RSSI change with bandwidth issue
Ethernet
- Added support for KSZ8081 Ethernet PHY (#6578) (1)
- Fixed wrong register bit order in KSZ8041 phy driver (1)
- Fixed bug in w5500-mac which could corrupt memory or cause infinite looping while reading registers (#6579, #6233) (1)
- Speed up Ethernet start up process (1)
- Configure EMAC data interface before resetting PHY chip (#7227) (1)
- Fixed eth2ap example crash issue (1)
- Fixed esp_eth to only warn about negotiation timeout when link is up (1)
- DM9051: Fixed potential missing Rx interrupts causing the Ethernet interface not responding (#6414) (1)
- Added support for user-customized PHY IO functions
- Updated link status logic to use esp_timer to check link status
- Added support for KSZ8851SNL SPI Ethernet driver
- Extended simple_sniffer example with option to sniff traffic on the Ethernet interface.
- Changed RMII clock mode setting so it can be configured during run-time (#6564, #7107)
- Added support for Microchip PHY LAN87xx family (LAN8710A, LAN8720A, LAN8740A, LAN8741A and LAN8742A).
- Added support to use multiple Ethernet modules at a time
- Updated ethernet/basic example to demonstrate usage of multiple Ethernet interfaces at a time
- emac: Optimised iperf performance and reduced the rx task heap size
- Added PHY loopback control via esp_eth_ioctl.
- Fixed esp_eth_ioctl command's data argument non-standard handling
- Fixed KSZ8851SNL to enable RX multicast in MAC filter
- Increased LAN8720 ETH-PHY reset assertion time
Security
- Digital Signature: Fixed invalidating Digital Signature key in HMAC peripheral if assertions are disabled (1)
- secure_boot: Secure Boot V2 verify app signature on update (1)
- secure_boot_v2: Supported SB_V2 for ESP32-C3 ECO3 (1)
- Default supported ESP32-C3 Revision ECO3 (1)
- Updated Memory protection component (memprot) API and tests for ESP32-C3 and ESP32-S2 (1)
- Fix potential physical access TOCTOU attack to remove encrypted partition flag in partition table (CVE-2021-27926) (1)
- 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. (1)
- ESP32-C3/memprot: Fixed get_split_addr calculation and incorrect access to DRAM split address register (1)
- Secure Boot V2: Confirm if the running app is signed by a valid non-revoked key before revocation (1)
- Added support for encrypting binary with xts-aes 512-bit key(1)
- esp_hw_support/esp_ds: Fixed memory leak identified by cppcheck (1)
- memprot: Fixed IRAM section alignment to avoid CPU prefetch overflowing to DRAM (causes PMS violation interrupt) (1)
- Secure boot/ESP32 (ESP-S2, ESP32-C3): Disabled the ability to read protect efuses containing public key digest (1)
- 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. (1)
- local_ctrl: Added support for protocom security1 and custom security (1)
- AES/SHA: Fixed driver resetting the wrong DMA channel (1)
- HMAC: Added Downstream JTAG enable mode for ESP32-C3 and ESP32-S3 (1)
- Memprot: Fixed voltage glitching detection logic (1)
- bootloader: Added a check of FE eFuse bit is on when an app is run
- flash encryption in app: Added a check that app is run under correct FE configuration
- Refactored code for secure boot (v1/v2) and flash encryption for better multi-target support
- efuse: Added flash virtual mode to keep efuses after reboots. SB and FE can be run without permanent burns of efuses.
- flash_encrypt: Added API to switch flash encryption "Development" to "Release"
- esp_hw_support: added HMAC upstream functionality for ESP32-S3
- Bootloader/ESP32-S3: Enabled secure boot V2 for ESP32-S3
- ESP32-S2: Updated Memprot feature API - no logging and no aborts in case of failure, esp_err_t returned wherever reasonable instead. Error handling and possible logging done on caller's side
- esp_hw_support: Added Digital Signature functionality for ESP32-S3
- Fixed the Memprot feature check in esp_restart()
Peripheral Drivers
- freemodbus: Fixed incorrect reading of register outside of defined area descriptor (#6571)
- freemodbus: Fixed rs485 rts de-assert fail when tx delayed (#6728)
- freemodbus: Increase the maximum modbus tasks priority
- I2S: Fixed driver uninstall can't disable the module
- Touch_sensor: Fixed the touch measurement interval becomes longer after wake-up from sleep on ESP32-S2
- I2C: Delete i2c cmd_mux semaphore more cleanly (#6848)
- USB_SERIAL_JTAG: Fixed the bug that cannot write with usb_jtag
- UART: Fixed a race condition and wrong interrupt flag setting
- Timer Group: Reenable alarm interrupt only when auto reload is selected (#7001)
- SPI Slave: Restrict MOSI/MISO enable on transaction preparation only for ESP32
- SPI Slave: Fixed TX/RX maximum bit length HW register configuration for ESP32
- SPI Slave: Remove Slave TX/RX set bitlen not effective for ESP32-S2/ESP32-C3
- SPI Slave: Ensure DMA In-Link EOF is generated by trans_done on SPI Slave
- SPI Flash: Added support for 32Mbit GD flash
- TWAI: Fixed incorrect timing configuration initializers for the 1K, 5K and 10K bit rates.
- SPI: Added support for keeping CS (chip select) active after a transaction.
- UART: Fixed the garbage output when resetting the peripheral on ESP32-C3.
- 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
- SPI: Updated essl_spi driver to support synchronized data read/writes with a ESP SPI Slave working in append mode.
- SPI: Added spi_slave_hd append mode example
- SPI Flash: Added unlock function patch in bootloader to make GD flash more stable
- MCPWM: Fixed wrong deadtime preset modes (#7321)
- I2S: Fixed the wrong value of I2S_COMM_FORMAT_STAND_MSB.
- UART: Ensure the driver object is in SRAM even PSRAM is malloc-able (#7044)
- freemodbus: Fixed error handling in mbc_master_get(set)_parameter() for duplicate parameter key in parameter descriptor list (#7362)
- freemodbus: Fixed compilation error when FMB_COMM_MODE_TCP_EN is disabled;
- esp_timer: Added fix to reset timer group peripheral in timer_init() function (#6466)
- freemodbus/examples: Fixed TCP master,slave examples reinitialization sequence
- freemodbus: Fixed modbus TCP master,slave stack start - destroy issue
- SPI Master: Fixed the crash when using interrupt mode when cache is disabled (#6529, #6781, #7368)
- freemodbus: Fixed slave destroy bug when master and slave init simultaneously
- Freemodbus: Fixed master and slave use the same timer group index (#4699)
- GPIO: Fixed issue that gpio cannot hold during deep-sleep on ESP32-C3 (#7455)
- Fixed all direct 8/16 bit-width access to peripherals on ESP32-S2, ESP32-S3, ESP32-H2, ESP32-C3
- GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
- I2S: Fixed mono mode support, slave full-duplex mode and event queue bug, finish the refactor for I2S driver layer.
- Use common check macro in drivers, that can be disabled to reduce binary size.
- HAL: Add port layer for the log in the HAL.
- ADC: Fixed adc2 single reading bug when working with WiFi
- ADC: Added an ADC single read and calibration example for all chips
- ADC: Fixed incorrect comments of ADC1_CHANNEL_8 and ADC1_CHANNEL_9 for ESP32-S2 (#6577)
- async_memcpy: support copy memory from/to PSRAM by GDMA
- freemodbus: Added MB_PORT_PARITY_GET() to propagate UART parity options from mb controller to serial port layer (#6377)
- freemodbus: Fixed server task to exit gracefully to enable multiple restarts of a modbus client
- freemodbus: fix PVS-Studio issues in modbus controller and mb stack
- GDMA: Separate interrupt for TX and RX channel
- GDMA: added gdma_set_transfer_ability to set channel transfer ability (e.g. alignment)
- I2C: Added i2c_cmd_link_create_static() function to allow static allocation for I2C commands list
- I2C: Added wrappers for simplifying writes, reads and write-reads
- I2C: Added a way to select source clock in slave mode
- I2C: Fixed i2c randomly timeout and triggers watchdog timeout on ESP32-C3
- I2S: Fixed WS signal polarity in TDM mode
- I2C, I2S: Remove invalid definitions in headers
- LCD: Added esp_lcd component, support SPI/I2C/8080/RGB LCD panels
- LCD: RGB LCD supports putting frame buffer in PSRAM
- LCD: Support 8-line SPI LCD driver
- LEDC: Support invert channel output
- LEDC: Added ledc fade end callback feature
- MCPWM: API changed: deprecated mcpwm_isr_register, added mcpwm_capture_enable_channel
- MCPWM: ISR can be configured to place into IRAM with menuconfig now
- MCPWM: Support MCPWM timer sync
- MCPWM: Added check for the num_of_pulse argument of mcpwm_capture_enable function. (#5032)
- MCPWM: Support configuring clock resolution for MCPWM group and timer
- MCPWM: Added new function to get duty in microseconds: mcpwm_get_duty_in_us()
- RMT: Support invert RMT signal by GPIO matrix
- RMT: Support hardware implementation of automatically stopping output at end of loop: rmt_set_tx_loop_autostop()
- SDMMC: sdmmc_host_pullup_en is deprecated in favor of SDMMC_SLOT_FLAG_INTERNAL_PULLUP flag in sdmmc_slot_config_t::flags.
- SDMMC: Added provision for configuring SDMMC pins on ESP32-S3 via sdmmc_slot_config_t structure.
- SDIO Slave: Fix ignored callback return value in sdio_ringbuf_send (#6768)
- SDIO Slave: Allow getting end of frame information
- SDIO Slave: Fixed the issue that interrupt may be cleared with finished trans unhandled
- MSPI: Supported auto detect Octal Flash Vendor
- SPI Flash: Support octal flash in esp_flash driver (currently only MXIC is supported).
- SPI: Support 8-line (octal) spi master driver
- SPI: Fixed SPI Master Fullduplex DMA mode single-direction-transaction bug
- SPI: Fixed wrong target register for interrupt disable on ESP32-C3
- SPI Flash: Fix esp_flash_erase_region function over-erasing when requested size is 0 (#7314, #7272).
- SPI Flash: Added new feature to read the unique id for flash chips (#4255)
- SPI Flash: Support override default chip driver list
- SPI Flash: Increase the CS line setup used by the driver to make it more stable
- Temperature Sensor: Now driver APIs will check to make sure the calling sequence is correct.
- Timer Group, PCNT: Updated register and LL headers to latest version for ESP32-S2 and C3
- Touch sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (#6895)
- TWAI: Added TWAI_ALERT_RX_DATA that alerts on successful reception of a message
- UART: Fixed UART as a wakeup source bug on ESP32
- UART: IOMUX is now used whenever possible when configuring pins, so that UART on IOMUX pins can be used for wakeup
- UART: Added missing critical section wrappers around rx_buffered_len (#6396)
- UART: Fixed a typo in the error message of invalid rx_thresh_xoff
- USB: Fixed incorrect setting of D- pull down resistor
- USB: Removed some non-existing registers from register structure
- USB_SERIAL_JTAG: Added blocking driver for supporting VFS.
- hal/ESP32-C3: Fixed SBA access from debugger in WFI mode
Core System
- Disable ESP32-S2 option "Allow .bss segment placed in external memory", this option is currently only supported on ESP32 (1)
- Fixed delay between interrupt request and interrupt trigger (1)
- VDD_SDIO power domain can now be configured to remain on during light sleep. (1)
- SOC: Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end (1)
- ULP: Fixed build system bug where linker script wasn't updated if memory reserved for ULP changed. (1)
- Improve chip boot time for ESP32-S2 (1)
- ULP: Fixed build system bug where linker script wasn't updated if memory reserved for ULP changed. (1)
- Added option to enable Undefined Behavior Sanitizer (UBSAN)
- Make longjump context switch-save (1)
- Place xtensa_intr_asm into IRAM (1)
- Remove core1 disable cache in cache_utils.c (1)
- Reset Core0 after disable cache in esp_restart_noos() (1)
- Fixed possible deadlock when using pthread_join() and log level set to Debug or higher (1)
- Fixed potential failure to start in ESP32-S2 RISC-V ULP (1)
- digital & rtc dbias of different chip may set to a different value according to pvt scan by ate; (1)
- digital & rtc voltage mostly higher than before when cpu run 40M. (1)
- Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock. (1)
- Pthread thread-local destructor functions are now called with the ordering required by the specification (#6643) (1)
- esp-timer: Helper function to identify the status of timer (1)
- CXX: Fixed I2C master timeout
- esp_event: Fixed and improved docs
- Enable cache access error interrupt on ESP32-S3
- Fixed regression of cache access error not getting detected for APP CPU core on ESP32
- esp_system: Added sync of FRC & RTC counters in esp_restart (1)
- efuse: Fixed len of SOFT_DIS_JTAG eFuse from 2 to 3 for ESP32-C3 and ESP32-H2 (1)
- Fixed the sizes of .text and .rodata segments on ESP32-S2 (1)
- partition_table: Fixed case when a few similar to otadata partitions are in the table (1)
- Support .bss segment placed in spiram for ESP32-S2
- Support NOINIT segment on SPIRAM (#4728)
- Fixed auto adjust voltage bug on ESP32-C3 (1)
- Move ETS_T1_WDT_INUM, ETS_CACHEERR_INUM and ETS_DPORT_INUM to l5 interrupt (1)
- CXX: Added virtual destructor in I2C class (1)
- rtc clock calibration: Fixed multi-calibration process protection logic (1)
- ULP: Updated CONFIG_ULP_COPROC_RESERVE_MEM max value to reflect the max available memory (1)
- Bootloader: Fixed bootloader considering a load end address invalid if it was at the end of a memory area (1)
- Added ESP32-S3 Beta 3 chip support (replaces ESP32-S3 Beta 2)
- ESP32-S3 Beta 3 support deprecated, replaced by ESP32-S3 support
- Fixed possible issues with duplicate definitions of likely/unlikely macros (#6445)
- Added Kconfig option to disable boot ROM log
- esp_timer: Added a Kconfig option to set the interrupt level for esp_timer ISR
- esp_timer: Added ESP_TIMER_ISR dispatch method
- Fixed large number of "unused variable" warnings when asserts are disabled
- Possible to build the firmware with no embedded file paths in the binary (#6306)
- Added config item to select core affinity for main task under SMP (#6627)
- esp_common: Added generic check macros
- Fixed rtc watchdog reset when running multicore app on single core variant of target; abort instead
- hHAL: re-structured duplicated HAL layer functions
- ULP: updated the ld file for riscv ulp for ESP32-S2
- Fixed a bug preventing user from putting panic handlers outside of the IRAM.
- CXX: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore.
- Added option to set maximum compile time log level higher than default (#5542)
- Calling esp_log_level_set("*", level) now also changes the log output of ESP_DRAM_LOG and ESP_EARLY_LOG macros (#2285)
- Added new startup_time example
- spi_flash/encrypt: Fixed esp_flash_encrypted write (#6254) (#6322)
- Pthread condition variable static initializer PTHREAD_COND_INITIALIZER is now supported
- Fixed compilation of esp32/spiram.h from C++ code (#6658)
- Added missing 64-bit stdatomic operations (#3163)
- Added support for specify the maximum descriptor length when setting up the DMA descriptor link
- log: Added Linux implementation of normal log functions
- Added support describe structures of efuses in efuse_table
- SOC: Updated to support ESP32-S3 chip (copy from ESP32-S2)
- Added esp_log_level_get() function (#6573)
- log: excluding log_linux.c correctly now
- efuse: Burn operation does not block reading
- esp_timer: esp_timer_get_next_alarm() will not return time for timers with skip_unhandled_events
- Fixed bug where pthread_cond_timedwait() could return a timeout before abstime timestamp (#6901)
- esp_system: Fixed wrong exception emergency pool allocation
- heap: fix ESP32-C3 build issue with heap tracing enabled
- Added new CMake function to help mocking whole components
- RISCV-ULP: Added delay utility functions
- RISCV-ULP: Added DS18B20 1wire example
- esp_system: support backtrace on panic for RISC-V boards.
- Memory layout is now part of heap component
- Fixed redundant target include directories for ESP32 and ESP32-S2
- CXX: Added VA_OPT(,) support for C++20
- Updated esp_efuse_table.csv, added extended 2 bytes mac address and BOOT_DISABLE_FAST_WAKE for ESP32-H2.
- Update the esp_efuse_table.csv, remove AUTO CONFIG DIG&RTC DBIAS
- Added new choice of target ESP32-H2 in efuse_table_gen.py
- Fixed the clock gating signal invalid of App cpu core in esp32s3 single-core mode
- efuse: Added support custom MAC address stored in the eFuse for ESP32-C3, ESP32-S2, and ESP32-S3
- esp_rom: added implementation for linux
- esp_ipc: Added API for IPC to run small pieces of code on the other CPU
- Console: Typo fix in cmd_nvs.c
- Added support of auto light sleep for ESP32-S3
- Fix pm lock bug in dual core mode
- esp_timer: added mocking of esp_timer
- ROM: Added common API for tjpgd library in the esp_rom
- Cache: Support 16KB DCache size for ESP32-S3
- Cache: Register flash2spiram info to ROM for ESP32-S3
- XTWDT: Added basic support for xtal32k watchdog timer for ESP32-S2/ESP32-S3/ESP32-C3
- Fixed compiler warning with silent panic option
- Watchdog Timers: Fixed literal overflow issue when calculating Task WDT timeout (#6648)
- CXX: Fixes build error when including gpio_ll.h from cpp file
- Xtensa: Changed the way assembly files jumps to functions located in another compilation unit
- Pthread: reader-writer locks implementation
- SOC: Moved peripheral linker scripts to soc component
- SoC: Added reset reason header into soc component
- usb_serial_jtag: Support using usb-serial-jtag as default console
FreeRTOS
- FreeRTOS: Fixed race condition where it was possible for vTaskDelete() to delete a blocked task without the task being cleaned up (1)
- FreeRTOS: Fixed uninitialized uxTaskNumber at task initialization (1)
- FreeRTOS: Apply upstream patches for stack area alignment (#7274)
- FreeRTOS: Upgraded to 10.4.3
- FreeRTOS: Disabling asserts for the entire project (or setting silent) now applies to the FreeRTOS assert configuration
- FreeRTOS: Changed default FREERTOS_IDLE_TASK_STACKSIZE value
- FreeRTOS: Added Kconfig for task snapshot functions
- FreeRTOS: Get snapshot related functions out of FreeRTOS implementation
- FreeRTOS: Added mocking of task and queue
- FreeRTOS: Fixed invalid taskEXIT_CRITICAL
- FreeRTOS: Introduced configNUM_CORES to be used instead of portNUM_OF_PROCESSORS to align with upstream SMP implementation
- FreeRTOS: Fixed prvTaskIsTaskSuspended() where a task pending ready can be mistaken as suspended
- FreeRTOS: Added the hook functions vApplicationGetIdleTaskMemory() and vApplicationGetTimerTaskMemory() to provide memory for IDLE and Timer tasks when static allocation is enabled
Build System
- Modifying the linker script file triggers now a relink (1)
- Prioritize project components over EXTRA_COMPONENT_DIRS(1)
- Fixed .flash.text alignment causing cache issue. (1)
- Fixed overriding Python path with -DPYTHON when building IDF as CMake library (#6285) (1)
- Improved error message if the Python dependency check completely fails to run due to an issue with the Python interpreter (1)
- Any alignment is now permitted for .flash.rodata section as (custom) application version information is now in a separate section. (1)
- Fixed CMake warning when compiling mbedtls component (1)
- Fixed CMake build system to correctly pass the -Wwrite-string compiler flag if configured (1)
- By default when using CMake, the FILE macro now replaces any IDF_PATH or project path with a placeholder relative path. This can be disabled in project config.
- CMake: Added processing of dependencies for components passed in COMPONENT_DIRS or EXTRA_COMPONENT_DIRS when the component manager is enabled
- Fixed CMake missing function error when limiting the component list to not include esptool_py (#6670)
- Legacy Make Build System: Produce error if BUILD_DIR_BASE is a Windows-style path (#2736)
- Legacy Make Build System: Fix menuconfig if BUILD_DIR_BASE is a relative path
- Fixed redundant target include directories for ESP32 and ESP32-S2
- Always compile with -fno-jump-tables -fno-tree-switch-conversion to avoid that code that needs to be placed in IRAM is optimized into jump tables which could get placed in flash.
- Fixed common component requirements for Linux target
- Added support for -msave-restore compiler option for RISC-V
Bootloader
- Added config options to bypass app validation for minimum boot-time overhead (1)
- Fixed bootloader_common_get_sha256_of_partition when RSA CHECK_SIGNATURE is on (1)
- Improved XMC flash stabilities as main flash (1)
- Enabled clock glitch detection (1)
- bootloader: Silent assert option now applies when building bootloader
- Second stage bootloader can now be overriden from a user application
- Fixed psram cache issue work-arounds also being applied to the bootloader
- User defined bootloader components which contain a Kconfig[.projbuild] file can now be configured through menuconfig, under Components config.
- Fixed the issue that SPI Flash ROM functions are not correctly linked when CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not enabled (#7508)
- Fixed support for QIO & QOUT modes on ESP32-U4WDH chip and default configuration (#6191)
newlib libc
- Implemented __sync atomic APIs and __atomic_exchange_n for architectures that don't have atomic instructions (1)
- Added missing C++ header guards to <sys/dirent.h> (1)
- Fix flushing console output when CONFIG_VFS_SUPPORT_IO is disabled (1)
- Added definition of MAXNAMLEN
- Fixed missing atomic load/store operations when building with Clang (#7591).
- Fixed missing atomic libcalls SYNC_LOCK_TEST_AND_SET & SYNC_LOCK_RELEASE for supported integer types. (#7592)
- Fixed several missing includes and declarations, added extern "C" guards in uio.h
- PSRAM: Changed the place where libc workaround can be stored. It can now be in flash or in IRAM.
Tools
- Deprecate unsupported old Pythons (<=3.5).
- Prefer python3 during install and export (#6471)
- Upgrade OpenOCD version to v0.10.0-esp32-20210902
- Upgrade toolchains to esp-2021r2 version
- Matching better annotated tags when determining ESP-IDF version
- Added mypy pre-commit hook for type annotation checking
- ESP-IDF Windows Offline installer - installation of ESP-IDF without need to access internet (https://github.com/espressif/idf-installer)
- ESP-IDF Windows Online installer - installation of ESP-IDF using very small installer which downloads all required resources from internet (https://github.com/espressif/idf-installer)
- Automatically determine ESP-IDF directory in install.fish (#6718)
- ttfw: Fixed auto-detecting port hang forever issue
- Remove dependency on idf-python and idf-python-wheels from tools.json. The dependency is handled by idf-installer for Windows. (#6881)
- coredump: Added ESP32-C3 support
- Support external Esptool wrappers by defining ESPTOOL_WRAPPER environment variable (#6879)
- extend GDBStub component for handling GDB by serial port at runtime.
- Console: Fixed a bug preventing REPL from being launched on another UART than default one (#6897)
- Added timestamp printing for IDF Monitor (#7021)
- Extracted coredump functionality from idf_monitor.py into the CoreDump class
- Use Linux i386/AMD64 binaries on FreeBSD (#7226)
- idf.py: Added subcommand "docs" for opening documentation in browser
- Console: Improve linenoise implementation (#7254)
- Console: Simplify console example
- Update CMake version (3.16.4 -> 3.20.3)
- Update CCache version (3.7 -> 4.3)
- Docker: Use Ubuntu version 20.04
- esptool/espefuse: Fixed execute_scripts, it should call BURN once at the end
- "_" in idf.py commands are renamed to "-". Old subcommands are still supported with deprecation warnings.
- Added xtensa-esp32-elf-clang to tools.json dependencies
- export.sh return value fix
- idf.py: Added Linux target support for idf.py flash and idf.py monitor
- idf_size: Fixed bug with --archive_details that always runs like with --diff label
- idf_size: Changed --archive_details output
- Create the ".espressif" directory on the first run on clean system (#7848)
Debugging
- coredump: Fixed coredump header inclusion in C++ (#6585) (1)
- espcoredump: Added support for RISC-V based boards. (1)
- coredump: Fixed multiple bugs related to fake stacks and stacks in RTC DRAM (#6750, #6751) (1)
- coredump: core dump check can now be parametrized in menuconfig (1)
- coredump: Fixes EPC and EPS register values printed by espcoredump.py (1)
- coredump: esp_core_dump_image_get() is now available again when core dump is not activated in menuconfig (1)
- coredump: Added esp_core_dump_image_erase function (#6631)
- ESP-Coredump: Get core dump summary API. Added on device core dump parsing support for ELF file.
- coredump: Fixed a bug in esp_core_dump_image_erase when flash encryption is enabled. (#6949)
- apptrace: ESP32-C3 support
- apptrace: Refactored apptrace for better support of various tracing HW
- Gcov: Fixed ESP32 gcov dump issue
- Gcov: Added ESP32-S2 support
- coredump: Added support for the ESP32-S3
Power Management
- Disable brownout detector before entering deep sleep on ESP32-S2 (#6179) (1)
- Provide an interface to get pm_configuration (1)
- Fixed deep sleep issue caused by the mixed use of deep sleep and light sleep (1)
- Fixed ESP32-S2 will not be awoken when deep-sleep time is set to 0 (1)
- Fixed the xtensa series soc SysTick frequency error when dfs is enabled (1)
- Added support of RTC8M (Internal 8MHz OSC) power domain (1)
- Added support of XTAL (External 40MHz XTAL) power domain (1)
- Fixed SPIRAM leakage current when its CS pin has no hardware pullup (1)
- Fixed Flash leakage current when its CS pin has no hardware pullup (1)
- Light sleep: Fixed timer offset issue with ESP32-S2 light sleep first wakeup
- Support ESP32-S3 GPIO sleep isolate function
- Support RTC module for ESP32-S3
- Support ESP32-S3 normal light sleep
- Fixed rtc register read error (RTC_XTAL_FREQ_REG invalid value)
- Added support of cpu retention for ESP32-S3
- Added support of i/d-cache tagmem retention for ESP32-S3
- Support ESP32-S3 deep sleep mode
- Fixed WiFi/BT MAC BB power down in light sleep
- Fixed the issue of deep sleep wakeup failure caused by using light sleep and deep sleep at the same time
LWIP
- esp_netif: Added config option CONFIG_LWIP_SLIP_SUPPORT to disable SLIP interface. (1)
- Fixed LWIP_DEBUG define to include debug logs only if enabled. (1)
- Fixed a thread safe issue which leads to assert in LWIP (1)
- Fixed DNS server index to overflow to DNS_MAX_SERVERS causing LWIP_ASSERT (to enable local queries when no DNS server is set, #6878) (1)
- esp_netif: Fixed failing ppp_set_auth() due to wrong argument check (#7047) (1)
- Added CONFIG_LWIP_ICMP to option ICMP. (1)
- Added CONFIG_LWIP_DHCPS to enable/disable DHCP server. (1)
- esp_netif: Fixed state transition of DHCP server if it's stopped before setting the interface up (1)
- Fixed esp_ping_new_session may return ESP_OK when the error occurred (1)
- Fixed ICMP ping on a specific network interface (#7397) (1)
- dhcpserver: Added extern "C" directive in dhcpserver head file. (1)
- Added support for IPv4 only configuration (LWIP_IPV6 macro to strip IPv6 functionality)
- Added support for silent assert option.
- Added NETIF_API config option to enable standard posix netif API, such as if_indextoname()
- Added PPP config option to set LCP echo options (#5119)
- Added config option LWIP_IPV6_NUM_ADDRESSES for number of IPv6 addresses on each interface.
- Added config option LWIP_IPV6_FORWARD for IPv6 packet forwarding.
- Added config option LWIP_NETIF_STATUS_CALLBACK for network interface status callback.
- Added config option LWIP_HOOK_ND6_GET_GW for hooking the IPv6 gateway decistion logic.
- Added default declaration and weak implementation for the new IPv6 gateway hook.
- Added IP_EVENT_ETH_LOST_IP event.
- Added configuration to disable DHCP client identification
- PPP: Fixed disable IPv6 will make esp_netif_lwip_ppp build fail.
- Added ND6 RDNSS DNS server Kconfig option.
- Fixed DHCP Server to remove clients record if request not acked (#6410)
- Added new options to set maximum number of SNTP servers and optionally receiving them via DHCP (#7336)
- esp_netif: Fixed incorrect setting of SLIP interface default routing priorities (#7246)
- Added support for LWIP_TCPIP_CORE_LOCKING config option.
- Added minimal vfs implementation of fstat() which sets the st_mode to socket type (#7198)
- Added support for DHCPv6 stateless address configuration
- esp_netif: Extended PPP netif API to control connection failure
- Added support for DHCP option length configuration
- Added functionality to deinit lwip timers
- Added configuration for DHCP vendor class identifier option
mDNS
- Added MDNS_STRICT_MODE config option to work with strict resolvers (1)
- Fixed non-strict mdns query resolution if instance/hostname wasn't set (1)
- Fixed IP header TTL to meet the mdns spec (1)
- Fixed crash when wifi interface get deleted and mdns continues to receives the packets (1)
- Fixed reported error found during static analysis
- Updated APIs description and added a warning when hostname contains '.local' at the end of query (#6590)
- Added mdns_delegate_hostname_add mdns_delegate_hostname_remove and mdns_hostname_exists for managing the delegated hosts.
- Added a mdns_service_*_for_host variant for all service publish and management apis.
- Added mdns_service_exists for querying whether a service has been published.
- Added support for explicitly specifying txt value data length for the published services
- Added support for extracting the txt value data length from mdns answers
- Added support for simple mDNS responders (#7124)
- Added asynchronous query API
- Added more attributes to mdns_result_t: service_type, proto and ttl.
- Added optional networking layer on BSD socket.
- Added option MDNS_MULTIPLE_INSTANCE which allows mdns_service_add to add multiple instances with same service type.
- Added mdns_service_exists_with_instance to check service existence with certain instance name.
- Fixed parsing queries containing non-standard domains.
protocomm
- Fixed Out-of-bounds read in protocomm_console.c
OTA
- otatool: Fixed read_ota_partition cmd, required output arg (#6559) (1)
- otatool: Fixed a crash when imported as external python lib (1)
- otatool: Fixed incorrect using otadata.seq&crc in switch_ota_partition cmd (1)
- esp_https_ota: Added support for partial image download over HTTP/1.1
- esp_https_ota: Added support to send post request if body is set
- esp_https_ota: Enabled option of using global_ca_store and x509_crt_bundle
- advanced_https_ota: Added NimBLE and bluedroid GATT Server support and related CI changes for testing.
- Added esp_https_ota_get_image_size() to retrieve total size of OTA update
- app_update: Added API to get partition count in esp_ota_ops.h
- Fixed app crash when running OTA and OTA related task's stack is in rtc fast memory at the same time
HTTP Client
- Fixed header truncated when responded header length over buffer_size (#6370) (1)
- Fixed esp_http_client_read with OpenSSL server for file size aligned to 289 bytes (1)
- Fixed memory leak identified by cppcheck (1)
- Added support of client_key_password for HTTPS connection (1)
- Fixed wrong handling of an EAGAIN case.(1)
- Added cert and key length options in esp_http_client_config_t (#6556)
- Added config option for HTTP digest authentication
- HTTP method must be explicitly set in case of chunked encoding, earlier it was set to POST by default (#6234)
- Added support to enable crt_bundle for an https connection.
- Fixed https_async demo by adding appropriate server verification option.
- Fixed case sensitivity in comparison of auth string
- Added API to set http client timeout value.
- Fix when receive FIN, close the connection in internal.
- Support HTTP_EVENT_ERROR event under multiple failure scenarios
- Fix disable CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS will build error
- Fixed HEAD request will affect the all next HTTP requests unless we close the HTTP request
HTTP Server
- Fixed ws server handle length over 1440(MTU) messages incorrectly. (1)
- Support dynamic payload len for ws server (#6433)
- HTTPD: Updated httpd_get_client_list function and its documentation.
- HTTPD: Added support for calling uri handler when websocket connection is established.
- Redesigned httpd_sess_* function to speed up the server (#6313)
- Support user_ctx in websocket handler callback request.
- Fixed infinite loop on closed socket
- Added helper APIs to get cookie value in request. (#7273)
- Added convenient websocket send functions
Provisioning
- Fixed wifi warning in wifi_prov_mgr application (1)
- wifi_provisioning: Added API to erase credentials and reset provisioning state (1)
- Provisioning BLE: Added API support to set manufacturer data in advertisement packets.(1)
- Added an API for resetting provisioning status
- Updated README.md to explain QR code format (#6629)
- WiFi credentials were not saved to NVS if esp_wifi_set_config() was called by some other module after wifi_prov_mgr_start_provisioning()
- BLE Provisioning: Added secure connection pairing support to unified provisioning framework.
- Change default PoP argument of esp_prov.get_security from None to string (#7130)
mbedTLS
- Upgrade to release v2.16.11 (1)
- Added CONFIG_MBEDTLS_ROM_MD to enable ROM MD acceleration. (1)
- Fixed mbedtls_ssl_send_alert_message crash due to ssl->out_iv is NULL. (1)
- Added support for external memory policy for ESP32-S2 (1)
- Added config option for key elements and key element extension for SSL connection
- Provision for GM/T SSL 1.1 support under config option.
- Fixed build fail with client only mbedtls
- esp_crt_bundle: Updated the cacrt_all.pem file
ESP-TLS
- Prevent freeing of global ca_store when mbedtls dynamic cert free is enabled. (1)
- secure_element: Updated esp-cryptoauthlib submodule to cryptoauthlib-v3.3.1. (1)
- Fixed esp_mbedtls_write API when 0 bytes are written. (1)
- Fixed potential issue in wolfSSL wrapper that esp_tls_read/write() returning positive code on error
- Improved error messages when using debug mode
- esp-tls: Enable DS peripheral support on ESP32S3 target
- Added session ticket support for server/client using mbedtls
- esp_tls_crypto: Fixed esp_crypto_base64_encode for wolfSSL stack
Websocket
- Added Support to bind socket to specified interface function.
ESP-MQTT
- Added config option to configure custom retransmission interval (1)
- Fixed build issue if certificate bundle or websocket transport disabled (1)
- Fixed to support zero length username if password is set without username (espressif/esp-mqtt#183)
- Added support for ESP x509 Certificate Bundle.
- Added NULL pointer checks for public APIs.
- Added experimental C++ client implementation.
TCP Transport
- Move code under relevant config option to save some flash footprint. (1)
- Added configuration option CONFI_WS_TRANSPORT to disable Websocket transport if not used. (1)
- Added TCP transport common connection errors (espressif/esp-mqtt#182)
- Used common TCP transport from esp-tls to reduce code duplication.
- Added Support to bind socket to specified interface function.
- Added API to enable crt_bundle for SSL connection.
Storage
- vfs: Fix build errors in esp_vfs.h when included in C++ files with target ESP32-C3 (1)
- 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. (1)
- vfs/uart: Fixed memory leak identified by cppcheck(1)
- NVS: Fix public API parameter checks, init checks, fix documentation
- Added esp_vfs_unregister_with_id and esp_vfs_register_fd_with_local_fd for better control over registered vfs and fds.
- Added eventfd in vfs component.
- Added an example to pass events from tasks and interrupt handlers with eventfd.
- SPIFFS: add spiffsgen.py options for ESP8266 compatibility: --aligned-obj-ix-tables, --no-magic-len, --no-magic
- SPIFFS: reduce spiffsgen.py execution time for large filesystems.
- Added ESP_PARTITION_TYPE_ANY for iterating over all partition types (#6586)
- nvs_flash: fixed crashes from entries with state 1
- vfs: Fixed possible wrong select return value when file descriptor is closed
- Partition tables: Build system produces a warning if a data partition is not aligned to 4 kB (#7295, #7350). This will become an error in the future release.
- vfs: Fix occasional crash when writing to event fds in interrupt handlers.
- FatFS: Updated FatFS API - added implementation of disk_status() callback
External Libraries
- expat: Update library from 2.2.9 to 2.4.1. (1)
- cJSON: Updated cJSON submodule to v1.7.15 (1)
- coap: Fixed few missing NULL checks in coap_mbedtls.c
- coap: Update libcoap version to v4.3.0
- coap: Added multicast support for coap_server/coap_client
- coap: Update libcoap logging to use esp-idf logging
- libsodium: Updated third party libsodium library to 1.0.18
- tinycbor: update to latest upstream master (as of April 19th 2021)
Examples
- Fixed enable CONFIG_EXAMPLE_RESET_PROVISIONED will cause device crash (1)
- Added QR code support for provisioning examples (1)
- Added sdkconfig.deafults.esp32c3 for BLE Mesh Aligenie example (1)
- pppos_client: Fixed SMS sending before switching to data mode (1)
- Fixed compilation of protocols examples with CONFIG_EXAMPLE_USE_OPENETH=y (1)
- Updated certificates of https examples (1)
- Added sdkconfig.defaults.esp32s3 for ESP-BLE-Mesh examples (1)
- SPI: Added an example for spi slave hd segment mode(1)
- Added basic authenticated example to HTTP server (#5646)
- MQTT: Updated MQTT public test broker service url
- SPI Flash Fatfs: Fixed ext flash fatfs cannot connect to external flash issue
- PPPoS client: Fixed power_down command for SIM7600
- Added Touch Element library examples
- Identify the callback whether is hanshake or frame-receive by req->method
- README files updated on wifi, peripherals and system
- pppos_client: Added options to support LCP ECHO and UART_ISR_RAM in the example
- Added static IP example with ability to setup DNS info
- Added OpenSSL example tests (server/client)
- Added non blocking sockets examples(tcp client/server)
- coap_client_example: Updated the target domain URL
- Fixed stability of ENC28J60 Ethernet driver Example.
- Added ENC28J60 to iPerf Example.
- simple_sniffer was moved from /wifi folder to /network folder
- network_tests was moved from /system to /network folder
- Bluetooth: Fixed the use of deprecated sdkconfig options in the example and rename the example
- HTTP Server: Added Captive Portal Example
- Added support of ESP32-S3 chip in controller_hci_uart example
- Updated ASIO chat server/client test to use loopback
- HTTP Server: Added Captive Portal Example
- ESP32S3 support for ESP-MQTT SSL Mutual Authentication with Digital Signature
- Added esp_modem example demonstrating simple CMUX PPPoS client
- Fixed overflow condition in iPerf's average bandwidth computation formula
- Added support of ESP32-S3 chip in Ethernet related examples
- README files updated for http examples
- Fixed linux host example
- pppos_client: Fixed potential data race condition using only UART data event for pattern detection (#7176)
- Replaced hyphens with underscore in get-started directory
- HTTPS Server: Added user callback utility
- pppos_client: Fixed modem netif deinit to clear IP events (#6787)
- freemodbus: Added examples of API usage
- GPIO: Fixed the issue that config struct is not properly initialized
- I2C: Added simplified example showing reading/writing to I2C sensor.
- I2S: Added ES8311 example and unit-test for I2S
- I2S: Added missing mck pin configuration in the example
- I2S: Added I2S digital MEMS PDM microphone example.
- MCPWM: new example: HC-SR04 sonar sensor
- MCPWM: Cleaned up BLDC Hall sensor example
- MCPWM: Added an mcpwm example of PID motor control
- MCPWM: Removed basic config example
- PCNT: Install PCNT interrupt for only once in the rotary encoder example. (#6889)
- RMT: New example: A4988 based step motor controller
- SDSPI: Uses SDSPI with Auto DMA channel in sd_card example
- SPI: Use Auto DMA channel for all SPI examples.
- Timer Group: Using interrupt callback in timer group's example
- LEDC: Added support for addressable LED in the blink example
- LEDC: Added LEDC basic PWM example.
- LCD/LVGL: Added LVGL porting example
- wave_gen: Remove the ESP_INTR_FLAG_IRAM flag when register the ISR
Documentation
- Updated NVS documentation (#6123)
- Added ESP32-C3-DevKitC-02 User Guide
- Corrected UART default pin names and provided more information about ESP-Prog board
- Provided a new example demonstrating building an application with multiple configurations
- Added Linux host test documentation
- Expanded documentation for POSIX Threads (pthread) support
- Removed ROM console
- Updated adc_types.h
- Updated the command used in app_trace.
- Added RF calibration docs for ESP32-S2 and ESP32-C3
- Added ESP32-DevKitC, ESP32-S2-Saola-1 and ESP32-C3-DevKitM-1 boards pin layout images
- Added the USB pins description on ESP32-C3-DevKitM-1 header block table.
- Provided new rules for formatting documents.
- Removed contents under 'Modules and Boards' as well as 'Previous Versions of Modules and Boards'
- Added Performance Guide
- Added a Flowchart about Debugging OTA Failure
- Updated the hyperlink in readme. (#7170)
- Renamed ESP-MESH to ESP-WIFI-MESH
- Restored flash encryption section about manually encrypting files on the host (with a copy of the same key stored in eFuse)
- Fixed all wrong AP event names
- Provided requirement to keep the line number for EN and CN document consistent.
- Added ESP32-S2-DevKitC-1 user guide
- Added pin reference list for chip ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
- Added new libraries and frameworks
- Added chip support matrix to the main README
- Build docs related files have been moved to esp-docs repository
- Updated the TOC of ESP-IDF API Reference to make it consistent with the real section title
- Replaced ESP32-WROVER-B with ESP32-WROVER-E in ESP-WROVER-Kit user guide
- Added a new module variant: ESP32-WROOM-DA for ESP32-DevKitC V4.1 board
- Added pin layout diagram and header block description to ESP32-S2-Saola-1 User Guide
- Added pin layout diagram and updated external antenna connector name in ESP32-S2-DevKitM-1 User Guide
- Updated flash encryption docs with 512 bit key related information
- Fixed OpenOCD configuration files names for ESP32-S3
- Provided missing information about OT joiner configuration
- Added documentation for 802.11k and 802.11v APIs
- Corrected Linux host test requirements
- Fixed esp_ota_revoke_secure_boot_public_key API documentation not appearing in the appropriate docs
- Made Classic BT Documents only visible for ESP32
- Updated mocking documentation
- Updated Chinese translation of numerous files of the Programming Guide, updated corresponding English version of the files to get them in sync
- Documented KEEP, ALIGN, SORT flags and surrounding symbol for linker script rules
- Storage: Updated SD card example (split in 2 new examples for both SDMMC and SDSPI)
- ADC: Updated ADC calibration programming guide on ESP32-C3
- freemodbus: Update modbus documentation + description of types
- MSPI: Added a programming guide about configuring Flash and PSRAM on ESP32-S3
- SPI: Fixed the default maximum transaction length.
- SDMMC host: Updated the description of eMMC speed and line modes.
- Timer: fix uninterpreted variables in timer.rst
- Timer: Updated the number of general purpose timers for ESP32-C3.
- Timer: Provided APB clock frequency information in api-reference/timers.rst and in timers.h
- Timer: Clarified that the for esp32 timer, only one clock source (APB_CLK) is available.
- UART: Fix adopted typo in overview section of UART documentation (#6327)
- LEDC: Adjusted C3 documentation