Skip to content

Releases: espressif/esp-idf

ESP-IDF Pre-release v4.0-beta1

11 Sep 06:44

Choose a tag to compare

Pre-release

ESP-IDF V4.0-beta1 Pre-Release

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

ESP-IDF v4.0-beta1 is a prerelease of ESP-IDF v4.0, which is a major update for ESP-IDF v3.x.

ESP-IDF v4.0-beta1 is mostly compatible with apps written for ESP-IDF v3.x, but there are some breaking changes (please consult the list below) and removal of deprecated functionality which will require code changes when updating projects

The latest stable release of ESP-IDF is v3.3 at time of writing.

Major New Features

  • Bluetooth: Added alternative BLE-only host stack - NimBLE. Reduced resource usage compared to Bluedroid (but no dual mode support).
  • Bluetooth: Added feature-rich ESP BLE Mesh stack (SIG Certified)
  • Build system: New CMake-based build system, including native Windows support (MSYS2 is no longer required). GNU Make build system from earlier ESP-IDF versions is still supported as a legacy build system.
  • ESP-TLS: Added support for server side SSL/TLS connection
  • Ethernet: Refactored ethernet support into new esp_eth component, added support for DM9051 standalone Ethernet interface
  • Flash Encryption: New "Development" mode allows unlimited serial flashing of encrypted flash during development
  • lwIP: Updated lwIP version from v2.0.3 to v2.1.2
  • New "ESP Local Control" feature to provide capability to control an ESP32 over Wi-Fi+HTTPS or BLE using protocomm messages
  • SPI Flash: New SPI flash driver includes support for storage on additional SPI flash chips, partitions on external SPI flash chips
  • SPIFFS: New host based image generator tool
  • SystemView based heap and log tracing
  • toolchain: New "IDF Tools" scripts and mechanism for installing toolchain for a specific ESP-IDF version
  • toolchain: Upgraded ESP32 toolchain to gcc 8.2.0 (esp32-2019r1 toolchain release)
  • toolchain: Upgraded libc to newlib version 3
  • VFS: New semihosting driver for outputting via JTAG debugger
  • Websocket: New Websocket client component
  • Wi-Fi: New Wi-Fi Provisioning Manager feature
  • Wi-Fi: Refactor and improve softAP power saving support
  • Wi-Fi: wpa_supplicant code is now open source as part of ESP-IDF

Breaking Changes Since v3.x

This does not include removing functions/types which already produced deprecation warnings in ESP-IDF v3.x.

  • AWS IoT: The AWS IoT SDK is now an independent component repository: https://github.com/espressif/esp-aws-iot
  • Bluetooth: Added new parameter for updating whitelist API
  • Bluetooth: Adding AVRCP Target (TG) role means interfaces of AVRCP Controller(CT) have changed
  • Bluetooth: API of esp_bt_gap_set_scan_mode() is changed to allow setting connection modes as well as discovetrable modes
  • CMake: idf.py argument parsing has changed, and not all argument orders that work with idf.py v3.x are still valid
  • CMake: idf.py defconfig and bootloader-clean targets are removed (these existed but did not work correctly in earlier idf.py versions)
  • CMake: CMake "external project" integration API is different to ESP-IDF v3.x and not compatible.
  • CMake: Variables like IDF_PATH, IDF_TARGET, PYTHON etc are now read-only inside the IDF build system. Instead, modify build properties of the same name using the idf_build_set_property function.
  • Core: Some function-like macros (ESP_ERROR_CHECK, ESP_PM_TRACE_ENTER/EXIT had incorrect trailing semicolons which have been removed. May cause problems if relying on non-single-statement macro behaviour.
  • ESP32: The hwcrypto AES & SHA APIs are now internal to the mbedTLS component. Suggest refactoring existing code to use the mbedTLS APIs directly, provided hardware acceleration is enabled in project configuration then the same implementations will be used.
  • esp_event: Refactored Wi-Fi, Ethernet, IP event handling to use the new esp_event library. Old event handling code is no longer supported.
  • FATFS no longer includes integer.h. Applications should either include "ff.h", or redefine types such as BYTE, DWORD, etc.
  • Flash encryption workflow has changed to develop/release workflow. In "develop" mode unlimited serial flashing is supported, but the device is not secure. It is still possible to OTA update devices with flash encryption to ESP-IDF V4.0, but set Release mode in config before building a project for a production device, including for an OTA update.
  • freemodbus: Refactor the "port" API to have a common master and slave interface, port mode is now selected via API not in KConfig.
  • ldgen: The fragment grammar has changed to simplify the syntax. Linker fragments written for ESP-IDF V3.x will need to be updated.
  • LWIP: Multicast UDP socket interface binding has changed, and multicast sockets can no longer bind to all interfaces in a single call
  • micro-ecc: The micro-ecc component is now part of the ESP-IDF bootloader only. For existing projects which use micro-ecc, recommend refactoring to use mbedTLS for the same functionality. If this is not possible, micro-ecc can be added to the project source files directly.
  • nvs_util & mfg_util command lines are not 100% backwards compatible with ESP-IDF v3.x
  • protocomm: Session security now supports multiple instances of the same type (security APIs have changed to add a "handle" parameter).
  • ringbuffer: Interface to vRingbufferGetInfo has an additional parameter
  • SmartConfig: esp_smartconfig_start has been changed to esp_err_t esp_smartconfig_start(const smartconfig_start_config_t *config);
  • SmartConfig: SmartConfig has been refactored to use IDF new event mechanism. Old events SC_STATUS_WAIT, SC_STATUS_FIND_CHANNEL, SC_STATUS_GETTING_SSID_PSWD, SC_STATUS_LINK, SC_STATUS_LINK_OVER have been removed, and new events SC_EVENT_SCAN_DONE, SC_EVENT_FOUND_CHANNEL, SC_EVENT_GOT_SSID_PSWD, SC_EVENT_SEND_ACK_DONE have been added.
  • Storage: esp_partition encrypted reads/writes are now disabled if flash encryption is disabled in project config
  • VFS: fcntl() argument is now an int not va_list, in line with newlib
  • VFS: Custom drivers which implemented select support will need to implement a new select API
  • ESP-MESH: use the new esp_event library and remove event_cb from mesh_cfg_t

Major Non-Breaking Changes Since v3.x

The following major changes are non-breaking but are not compatible if downgrading to ESP-IDF v3.x:

  • CMake-based build system no longer uses "linker groups" to allow circular dependencies in the project at link time. Instead, components are expected to declare which other components they require. See build system docs
  • CMake: New component registration API. The API that was used by CMake for ESP-IDF v3.x is still supported but is deprecated
  • Many header files have been consolidated or moved, as part of reorganization to support multiple chip targets. These are not breaking changes in ESP-IDF V4.0, but the compiler will emit a warning which includes the new header path. The old headers will be completely removed in ESP-IDF V5.0
  • KConfig config item names have been standardized, meaning many items were renamed. The build system will automatically rename old config names to the new names on first build. Take care if you plan to downgrade a project to v3.x again, as the sdkconfig names will no longer be recognized.

Tip: If writing code that needs to work with ESP-IDF v3.x and v4.0, include the esp_idf_version.h header and check against the provided macros.

Known Issues

  • Not all APIs deprecated in ESP-IDF v3.x have been removed in this beta
  • Flash Encryption will fail to boot if PSRAM is not enabled
  • If Secure Boot and Flash Encryption features are in use, an additional firmware change is required to avoid potential fault injection attacks. Please refer to this security advisory
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP
  • SmartConfig may occasionally emit the log message wifi ipc: failed to post wifi task and then crash
  • Wi-Fi sniffer doesn't work correctly after switching Wi-Fi mode from WIFI_MODE_STA, WIFI_MODE_AP or WIFI_MODE_APSTA to WIFI_MODE_NULL
  • Bluedroid host may occasionally take a long time (more than 10s) to initialize
  • BT BB reset lock may cause assert when WiFi do start/stop.
  • WiFi MAC reset may block and cause task watch dog timeout.
  • If bluetooth host send some HCI command to controller but do nothing TX/RX actions, controller may delay to enter modem sleep.

Known issue bugfixes are planned before the next v4.0 pre-release.

List of changes since ESP-IDF v3.3:

Wi-Fi

  • Documented that SSID & Password fields should be NULL terminated strings (#1176)
  • Maximum TX power range changed from 0-20dBm to 10-20dBm to avoid poor performance
  • Fixed a smartconfig crash when no AP is found
  • Added check that ESP32_WIFI_RX_BA_WIN is less than ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM
  • Fix the bug that esp_wifi_set_country() fails to set policy WIFI_COUNTRY_POLICY_MANUAL
  • Fix the bug SmartConfig crashes if it fails to scan any APs.
  • Fix the bug WPS leaks some memory each time it completes the WiFi connection.
  • Fix the bug esp_wifi_stop() generates error log E(18732) event: system_event_ap_stop_handle_default 172 esp_wifi_internal_reg_rxcb ret = 0x3014.
  • Fix the bug that...
Read more

ESP-IDF Release v3.3 (LTS)

05 Sep 02:38

Choose a tag to compare

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

ESP-IDF v3.3 is a minor update for ESP-IDF v3.2.x. Release v3.3 is compatible with apps written for ESP-IDF v3.x, but features in v3.3 may not be available in earlier versions.

Version 3.3 is the first ESP-IDF Long Term Support release. ESP-IDF v3.3.x will be supported for 2.5 years, until March 2022.

Known Issues

  • When Wi-Fi & Bluetooth coexistence is enabled and Wi-Fi and BT task are pinned to different cores, Wi-Fi start/stop will crash. Workaround is to pin the two tasks to the same core (this is the default configuration).
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.
  • SmartConfig crashes if it fails to scan any APs. Normally a least one AP will be in range when using SmartConfig.
  • esp_wifi_set_country() has bug when setting WIFI_COUNTRY_POLICY_MANUAL, the workaround is to set .max_tx_power field to WIFI_COUNTRY_POLICY_MANUAL if the application needs policy WIFI_COUNTRY_POLICY_MANUAL.
  • WPS leaks some memory each time it completes the WiFi connection. This is legacy bug has existed in the system for several releases.
  • esp_wifi_stop() generates error log E(18732) event: system_event_ap_stop_handle_default 172 esp_wifi_internal_reg_rxcb ret = 0x3014. This log message doesn't impact normal functioning and can be ignored.
  • If Secure Boot and Flash Encryption features are in use, an additional firmware change is required to avoid a potential fault injection attack. Please refer to this security advisory.

Known issue bugfixes are planned for the v3.3.1 bugfix release.

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

Major New Features

Wi-Fi Related

New Functionality

Bug Fixes

  • Fixed Enterprise vulnerability issues with EAP-FAIL response, or crash if EAP-SUCCESS was sent before PMK setup completed (-12586, -12587)
  • Fixed WPS/ Enterprise memory leak
  • Fixed the bug that scan fails after STA failed to connect to a nonexistent AP
  • Fixed the bug that task watchdog happens when during WiFi scan and BLE scan
  • Fixed the bug that no WiFi disconnect event is generated when STA receives disassociation frame after sending authentication frame
  • Reduced cases where Wi-Fi needs to listen for RX when waking from sleep state, depending on beacon contents
  • Fixed thread safety bug in WPS
  • Fixed WPS failure when AP is encrypted
  • Reduced IRAM usage of libnet80211.a
  • Fixed Wi-Fi baseband reset issue after baseband switched to 11b weak signal mode
  • Fixed bug that if set_config() was called before connecting to an encrypted AP, PMK would be recalculated
  • Fixed STA HT20/40 coexist
  • Fixed bug about WiFi signal test
  • Fixed compliance by disallowing WEP/TKIP with HT rates
  • Fixed a bug which could block the scan timeout before the scan finished
  • Modified WiFi default RX buffer configuration values in order to achieve better compatility and performance
  • Added configuration option to set number of Wi-Fi mgmt short buffers
  • Improved WPA2 support
  • Fixed SoftAP mode multicast and broadcast saving and flushing when the associated stations enable 802.11 legacy power saving mode (called modem sleep in ESP32).
  • Fixed bug where scan would fail after STA failed to connect to a non-existent AP
  • Fixed SoftAP crash when STA resets
  • Fixed thread safety issues in SmartConfig
  • Fixed bug that SmartConfig leads to crash when no AP is found
  • Fixed memory leak following Wi-Fi stop/deinit
  • Fixed bug that calling esp_wifi_stop() could lead to a task watchdog timeout
  • Fixed bug where no disconnect event was sent when STA recieved disassociate frame after sending auth frame
  • Fixed bug where full scan would send multi events when recieving deauth/disassociate frames
  • Fixed unsafe uses of sprintf() in wpa_supplicant
  • Make WiFi disconnect reason code more accurate: STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of WIFI_REASON_NO_AP_FOUND if it connects the open AP with a valid password or if it connects the encrypted AP with an empty password; STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of other reasons if it connects the encrypted AP with a wrong password.
  • Fixed the bug that ESP32 incorrectly deletes the receiving BA session
  • Fixed the bug that STA incorrectly receives packets when scanning in connected status
  • Fixed the bug that STA receives the unexpected packets during background scan
  • Fixed the bug that PMK calculation time is too long

ESP-MESH Related

New Functionality

Bug Fixes

  • Now if g_ic.tx_buf has pending frames caused by channel switch, will resend these frames when channel switch is finished
  • Now sends the entire routing table multiple times
  • Now clears candidate settings if failed to receive a candidate beacon within 8 seconds
  • Disabled A-MPDU for non-root
  • Added lock for mgmt/xon/bcast queues to protect sending during user flush
  • Fixed bug with reusing a freed eb
  • Fixed bug in group send
  • Fixed bug in esp_mesh_set_router when the input argument is not initialized
  • Fixed issue when node becomes root, it did not record the assoc value to nvs
  • Fixed discarding of unnecessary forwarded group packets
  • Fixed issue where toDS state is not updated in time
  • Fixed issue where s_sta_cnx_times not cleared when deinit causes root sends ADD annoucement
  • Fixed crash in processing scan results which contain more than 255 APs
  • Fixed memory leak ocurred when receiving an unknown option packet
  • root: Increased beacon timeout time from 6 seconds to 15 seconds to delay initiation of reconnection
  • softap: Added check if secondary offset is correct when starting softap
  • softap: In inactive timer handler, added check if child bss is removed to avoid removing it again

Wi-Fi/Bluetooth Coexistence Related

  • Reduced binary size when coexistence is not enabled, or if only BT is used
  • Fixed issue that spike transmit power of WiFi could be higher than configured when Bluetooth coexistence enabled
  • Fixed assertion failures in Bluetooth controller when coexistence is enabled
  • Fixed watchdog timeout if Wi-Fi and BLE scans happend simultaneously

Bluetooth Related

BLE Related

New Functionality

Bug Fixes

  • Fixed btc_gatts_arg_deep_copy() and bta_gatts_indicate_handle()
  • Fixed interrupt watchdog timeout in Bluetooth controller
  • Fixed BLE assert(512) or assert(1536) in rwble.c at line 222
  • Fixed ASSERT_ERR((((uint16_t)rxwinsz << 0) & ~((uint16_t)0x00003FFF)) == 0), in lld_evt.c at line 871
  • Fixed memory leak when setting BLE TX power
  • Fixed no advertising report when scanin...
Read more

ESP-IDF Pre-release v3.3-rc

12 Aug 05:51

Choose a tag to compare

Pre-release

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

v3.3-rc is a release candidate of ESP-IDF v3.3.

ESP-IDF v3.3-rc is a minor update for ESP-IDF v3.2.x. Release v3.3-rc is compatible with apps written for ESP-IDF v3.x, but features in v3.3-rc may not be available in earlier versions.

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

Known Issues

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

Major New Features

Wi-Fi Related

New Functionality

Bug Fixes

  • Fixed the WPS/WPA2-Enterprise memory leak
  • Fixed the bug that scan fails after STA failed to connect to a nonexistent AP
  • Fixed the bug that task watchdog happens when during WiFi scan and BLE scan
  • Fixed the bug that no WiFi disconnect event is generated when STA receives disassociation frame after sending authentication frame
  • Fixed WPA-2 Enterprise vulnerability issues with EAP-FAIL response, or crash if EAP-SUCCESS was sent before PMK setup completed
  • Reduced cases where Wi-Fi needs to listen for RX when waking from sleep state, depending on beacon contents
  • Fixed thread safety bug in WPS
  • Fixed WPS failure when AP is encrypted
  • Reduced IRAM usage of libnet80211.a
  • Fixed Wi-Fi baseband reset issue after baseband switched to 11b weak signal mode
  • Fixed bug that if set_config() was called before connecting to an encrypted AP, PMK would be recalculated
  • Fixed STA HT20/40 coexist
  • Fixed bug about WiFi signal test
  • Fixed compliance by disallowing WEP/TKIP with HT rates
  • Fixed a bug which could block the scan timeout before the scan finished
  • Modified WiFi default RX buffer configuration values in order to achieve better compatility and performance
  • Added configuration option to set number of Wi-Fi mgmt short buffers
  • Improved WPA2 support
  • Fixed SoftAP mode multicast and broadcast saving and flushing when the associated stations enable 802.11 legacy power saving mode (called modem sleep in ESP32).
  • Fixed bug where scan would fail after STA failed to connect to a non-existent AP
  • Fixed SoftAP crash when STA resets
  • Fixed thread safety issues in SmartConfig
  • Fixed bug that SmartConfig leads to crash when no AP is found
  • Fixed memory leak following Wi-Fi stop/deinit
  • Fixed bug that calling esp_wifi_stop() could lead to a task watchdog timeout
  • Fixed bug where no disconnect event was sent when STA recieved disassociate frame after sending auth frame
  • Fixed bug where full scan would send multi events when recieving deauth/disassociate frames
  • Fixed unsafe uses of sprintf() in wpa_supplicant
  • Make WiFi disconnect reason code more accurate: STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of WIFI_REASON_NO_AP_FOUND if it connects the open AP with a valid password or if it connects the encrypted AP with an empty password; STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of other reasons if it connects the encrypted AP with a wrong password.
  • Fixed the bug that ESP32 incorrectly deletes the receiving BA session
  • Fixed the bug that STA incorrectly receives packets when scanning in connected status
  • Fixed the bug that STA receives the unexpected packets during background scan
  • Fixed the bug that PMK calculation time is too long

ESP-MESH Related

New Functionality

Bug Fixes

  • Now if g_ic.tx_buf has pending frames caused by channel switch, will resend these frames when channel switch is finished
  • Now sends the entire routing table multiple times
  • Now clears candidate settings if failed to receive a candidate beacon within 8 seconds
  • Disabled A-MPDU for non-root
  • Added lock for mgmt/xon/bcast queues to protect sending during user flush
  • Fixed bug with reusing a freed eb
  • Fixed bug in group send
  • Fixed bug in esp_mesh_set_router when the input argument is not initialized
  • Fixed issue when node becomes root, it did not record the assoc value to nvs
  • Fixed discarding of unnecessary forwarded group packets
  • Fixed issue where toDS state is not updated in time
  • Fixed issue where s_sta_cnx_times not cleared when deinit causes root sends ADD annoucement
  • Fixed crash in processing scan results which contain more than 255 APs
  • Fixed memory leak ocurred when receiving an unknown option packet
  • root: Increased beacon timeout time from 6 seconds to 15 seconds to delay initiation of reconnection
  • softap: Added check if secondary offset is correct when starting softap
  • softap: In inactive timer handler, added check if child bss is removed to avoid removing it again

Wi-Fi/Bluetooth Coexistence Related

  • Reduced binary size when coexistence is not enabled, or if only BT is used
  • Fixed issue that spike transmit power of WiFi could be higher than configured when Bluetooth coexistence enabled
  • Fixed assertion failures in Bluetooth controller when coexistence is enabled
  • Fixed watchdog timeout if Wi-Fi and BLE scans happend simultaneously

Bluetooth Related

BLE Related

New Functionality

Bug Fixes

  • Fixed btc_gatts_arg_deep_copy() and bta_gatts_indicate_handle()
  • Fixed interrupt watchdog timeout in Bluetooth controller
  • Fixed BLE assert(512) or assert(1536) in rwble.c at line 222
  • Fixed ASSERT_ERR((((uint16_t)rxwinsz << 0) & ~((uint16_t)0x00003FFF)) == 0), in lld_evt.c at line 871
  • Fixed memory leak when setting BLE TX power
  • Fixed no advertising report when scaning with sleep enabled
  • Fixed blufi prepare write crash
  • Fixed iOS and win10 compatibility error for HID
  • Fixed the issue that updates of connection parameters caused link loss while data are being sent
  • Fixed write char crash after disconnection
  • Fixed the issue assert(8192 0) in rwble.c 234
  • Fixed the issue that there is low ratio of crash when BLE does re-connect/re-scan/re-adv
  • Fixed the issue that there is very low ratio to cause BLE assert(65536, 0) in rwble.c at line 222
  • Fixed the issue that there is very low ratio to cause BLE assert(32768, 0) in rwble.c at line 222
  • Fixed interrupt watchdog timeout in bluetooth "btdm_bb_isr"
  • Supported vendor HCI commands
  • Fixed a bug where controller may wake up twice (and process ISR twice) without the controller task running

Bluetooth Classic Related

Bug Fixes

  • Fixed abort if esp_spp_deinit() is called without calling esp_spp_init() first

RF PHY Related

Ethernet related

New Functionality

  • Added support for IP101 PHY
  • Added promiscuous mode control

Bug Fixes

  • Cleaned up invalid register mappings for LAN8720 PHY
  • F...
Read more

ESP-IDF Release v3.1.5

18 Jul 06:57

Choose a tag to compare

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

ESP-IDF v3.1.5 is a bugfix-only update for ESP-IDF v3.1.4. Release v3.1.5 is compatible with apps written for ESP-IDF v3.1.x.

At time of writing, the latest stable release is ESP-IDF v3.2.2.

Important: An app using ESP-IDF v3.1.5 will fail to boot if DIO flash mode & PSRAM are both used together with a bootloader from an earlier version. If using this configuration in the bootloader or app, do not update to v3.1.5. This bug will be fixed in ESP-IDF v3.1.6.

This is the list of changes since release v3.1.4:

Known Issues

  • esp_wifi_stop() generates error log message and fails to stop AP netif, but this doesn't otherwise impact system function
  • Infrequent exception when calling esp_mesh_recv() during mesh stop. Suggest only stopping mesh when not concurrently using any mesh functions
  • Infrequent task watchdog timeout message happens when stopping Wi-Fi if BLE is scanning. Wi-Fi stop will finally succeed in a few seconds

Wi-Fi Related

  • Added support for Wi-Fi signal test
  • Fixed issue where spike transmit power of Wi-Fi could be higher than configured if Bluetooth coexistence was enabled
  • Added new failure code WIFI_REASON_CONNECTION_FAIL
  • Fixed following Wi-Fi STA certification issues:
    1. Added support for STA HT2040 coexist management
    2. Added support for WPA2 improvements
    3. Disallowed HT rate when unicast/muticast cipher is TKIP/WEP
  • Fixed scan failure after STA failed to connect to a nonexistent AP
  • Fixed SoftAP crash following STA reset
  • Fixed a WPA2-Enterprise vulnerability
  • Fixed a bug where smartconfig causes a system hang
  • Fixed a memory leak in esp_wifi_stop()
  • Fixed bug where station didn't send WIFI_EVENT_STA_DISCONNECTED event when failing to connect to the AP
  • Fixed bug that no TBTT will be generated anymore after receiving wrong beacon if Bluetooth coexistence is enabled
  • Added WPS event SYSTEM_EVENT_STA_WPS_ER_PBC_OVERLAP

Bluetooth Related

  • Fixed abort if calling esp_spp_deinit() without calling esp_spp_init()
  • Fixed compiler warnings when disabling debug logging

BLE Related

  • Added BLE link timeout config setting
  • Disabled background connection initialization when calling gatts_open
  • Fixed unpack error of HCI_BLE_ENHANCED_CONN_COMPLETE_EVT parameters when SMP is disabled
  • Fixed an issue that HCI_GET_CMD_BUF param_len was always equal to 660

LWIP related

  • ping app: Added ping length and QoS options
  • Add support for LWIP TCP window scale

mDNS related

  • Fixed missing netif re-probing when the ip changed in link-local addressing
  • Fixed crash during init if not enough RAM is available

Bootloader related

  • Added support API for erasing flash regions
  • Ensure custom UART RXD pin is configured as input on boot

System Related

  • Added new config option to use additional touchpad current to drive 32kHz crystal oscillator in deep sleep, fixes problems with some crystals not oscillating correctly in deep sleep.
  • Reduced FLASH_CRYPT_CNT efuse bit width to 7 bits (now matches flash encryption hardware usage)
  • Minor fix: Fixed unnecessary double-enabling of hardware SHA accelerator
  • Fixed an accumulated error if using the libc adjtime() function
  • core dump: Fixed freezing core dump process when flash write address checks are enabled
  • UART: Reset UART peripheral following system reset. This fixed some issues where UART interrupts remained configured after soft reset.

Storage Related

  • spi_flash: Optimized the number of block erases used by spi_flash_erase_range()
  • spi_flash: Added new config option to yield from a task which is performing a long erase operation, preventing resource starvation
  • NVS: Multi-page blob erased using nvs_erase_key is now cleaned properly

Tooling Related

  • cmake: Fixed issues with regenerating sdkconfig on modification
  • cmake: Fix for overriding IDF bootloader with a custom "bootloader" project component

Example Related

  • iperf: Fixed an error on exit

Obtaining v3.1.5

For full installation instructions, see the ESP-IDF Programming Guide.

The source files attached to this release will not work due to our use of git submodules. Use one of the following methods instead:

Using git

To get this release, use the following commands:

git clone -b v3.1.5 --recursive https://github.com/espressif/esp-idf.git esp-idf-v3.1.5
cd esp-idf-v3.1.5/

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

Download an archive with submodules included

Attached to this release is an esp-idf-v3.1.5.zip archive. It includes .git directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.

This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v3.1.5.zip

ESP-IDF Release v3.2.2

27 Jun 00:35

Choose a tag to compare

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

ESP-IDF v3.2.2 is a bugfix update for ESP-IDF v3.2.

Note: ESP-IDF V3.2.1 release was skipped due to an issue deploying docs for this version. All changes from v3.2.1 are listed here for v3.2.2

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

Wi-Fi Related

  • Added CONFIG_ESP32_WIFI_IRAM_OPT to configure WiFi IRAM optimizations for performance or reduced IRAM footprint.
  • Decoupled Wifi and ESP-MESH to reduce binary size: Now no Mesh code is linked if Mesh is not used.
  • Refactored SoftAP power saving mode. SoftAP now supports buffering multicast and broadcast frames correctly when a connected station enables IEEE 802.11 legacy power saving mode (called "modem sleep" in ESP32).
  • Added support for STA HT20/40 coexistence management
  • Added WPA2 security improvements
  • Now disallows HT rate when unicast/multicast cipher is TKIP/WEP
  • Added support for signal test
  • Fixed a bug that WPS fails when AP is encrypted
  • Fixed a bug that scan fails after STA failed to connect to a nonexistent AP
  • Fixed a bug which could block the scan timeout before the scan finished
  • Modified WiFi default RX buffer configuration values in order to achieve better compatility and performance
  • Added configuration option to set number of Wi-Fi mgmt short buffers
  • Fixed a bug when PMK was too long
  • Make WiFi disconnect reason code more accurate: STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of WIFI_REASON_NO_AP_FOUND if it connects the open AP with a valid password or if it connects the encrypted AP with an empty password; STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of other reasons if it connects the encrypted AP with a wrong password.
  • Fixed the bug that smartconfig may hang because of deadlock
  • Fixed the bug that ESP32 AP may crash when the connected STA is reboot
  • Fixed the bug that ESP32 incorrectly deletes the receiving BA session
  • Fixed the bug that STA incorrectly receives packets when scanning in connected status
  • Fixed the bug that STA receives the unexpected packets during background scan

Smartconfig Related

  • Fixed a smartconfig bug which could lead to a deadlock between WiFi task and timer task.

ESP-MESH Related

  • Fixed a bug in group send
  • Fixed a bug in esp_mesh_set_router() when the input argument is not initialized
  • Fixed memory leak ocurred when receiving an unknown option packet

Bluetooth Related

  • Fixed some memory leaks when setting txpower
  • Fixed Disconnect with apple device
  • Fixed case where hci_refresh_enc_key_cmd could be ignored or crash

Coexistence

  • Decoupled WiFi and BT from coexistence to reduce binary size
  • Fixed BT disconnecting due to too many reset BB
  • Fixed the bug that no TBTT is generated after RX wrong beacon when coexistence is enabled
  • Disabled BT TX in "force wifi" mode, and enabled BT TX when not using "force wifi" mode

Classic BT

  • Fixed abort() when calling esp_spp_deinit() without calling esp_spp_init()

BLE

  • Fixed iOS and Windows 10 compatibility error for BLE HID
  • Added scan window and interval check when calling set scan params
  • Added mesh beacon adv and svc uuid for duplicate scan exceptions list
  • Added BLE link timeout config in menuconfig
  • Disabled the background connection when calling gatts_open

Blufi

  • Fixed a crash in Blufi prepare write

Ethernet related

  • Added promiscuous mode control
  • Fixed some minor bugs in IP101 PHY driver

Provisioning related

  • Unified Provisioning: Various fixes in BLE provisioning

LWIP Related

  • Fixed missing DNS crash bug when a static IP is set

Network Protocol Related

HTTP Client

  • Added a esp_http_client_set_redirection function for handling 30x HTTP response codes in direct operations.
  • Added support for using certificates from the global CA store (#3062)
  • Fixed a URL redirection issue (#2631)
  • Added support for HTTP mutual authentication (#3438)

HTTP Server

  • Fixed handling of LF terminated headers in requests
  • Now only accept new socket connections if the server has capacity to handle more (avoids situation where socket is accepted but then closed)

Bootloader related

  • Fixed pin mode setting of custom UART RXD pin for serial console (#2843)
  • Now resets the UART correctly when a custom serial UART is set. Fixes missing log output when custom UART configurations are used and the ESP32 resets from software.

System Related

  • spi_flash: Added vTaskDelay during long multi-sector erase operations, to avoid starving other tasks
  • Fixed newlib adjtime() function when reading the time frequently via gettimeofday()
  • heap: Added integer overflow checks on MALLOC_CAP_32BIT & MALLOC_CAP_EXEC
  • hwcrypto: Prevent esp_sha() function from disabling interrupts for an extended period
  • hwcrypto: Chunk input blocks to improve esp_sha() function performance
  • hwcrypto: Remove redundant enabling of peripheral in esp_sha_lock_engine_common

Register and Low-Level System Related

  • PSRAM: Improve PSRAM SPI CS timing settings
  • PSRAM: Fixed bug when configured for 80MHz flash and 40MHz PSRAM
  • Reduce FLASH_CRYPT_CNT efuse to a 7 bit efuse field as 8th bit is not used by hardware
  • Added option CONFIG_ESP32_RTC_EXTERNAL_CRYSTAL_ADDITIONAL_CURRENT to provide additional wakeup current for an external crystal when waking from deep sleep

Peripheral Driver Related

  • spi: Fixed bug when connecting SPI peripheral functions to read-only pins
  • spi slave: Fix a possible concurrency issue when reading data from ISR

Storage Related

  • VFS: Implemented poll() function - based on select() (#2945)
  • NVS: Multi-page blobs erased using nvs_erase_key() are now cleaned properly (#3255)

NVS & Manufacturing Host Utility Related

  • nvs_util & mfg_util: Fixed to support writing multiple single-page big blob data values
  • nvs_util & mfg_util: Added support for creation of unique encryption keys
  • mfg_util: Fixed unnecessary CSV file creation for values with REPEAT tags

Third Party Libraries

freemodbus

  • freemodbus: Changed critical sections to semaphore mutexes (#3009)

Debugging Related

  • Fixed freezing of the core dump process when flash write address checks are enabled

Build System Related

  • idf.py now re-runs itself with winpty when running under MSYS2. This is done in order to correctly handle Ctrl-C to cancel the build.
  • cmake: Fixed issue where Python files were executed directly, not via PYTHON variable
  • cmake: Now sets COMPONENT_PATH during early expansion of dependencies
  • cmake: Fixed issues with overriding a custom bootloader inside a project "components" directory

Examples Related

  • Fixed iperf example exit error
  • Added README.md for Himem example

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

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

Download an archive with submodules included

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

ESP-IDF Release v3.0.8

06 Jun 05:02

Choose a tag to compare

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

ESP-IDF v3.0.8 is a bugfix-only update for ESP-IDF v3.0.7. Release v3.0.8 is compatible with apps written for ESP-IDF v3.0.x.

The latest stable version of ESP-IDF is v3.2.

This is the list of changes since release v3.0.7:

WiFi Related

  • WiFi disconnect reason code is now more accurate: STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of WIFI_REASON_NO_AP_FOUND if it connects the open AP with a valid password or if it connects the encrypted AP with an empty password; STA reports reason code WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT instead of other reasons if it connects the encrypted AP with a wrong password.
  • Defragmentation is now only applied to data and management frames (other frame types will not be fragmentated)
  • Fixed a bug in APSTA mode where the BA index was incorrectly removed
  • Fixed a crash caused by Wi-Fi static TX buffer alloc/free
  • Fixed iPhone failing to connect to ESP32 AP (enabling AP BAR receive)
  • Fixed Wi-Fi STA failing to connect to some APs (Xiaomi hotspots, some others) after reset
  • All channel scans now always apply the configured threshold to results
  • Fixed bug where ESP32 may connect to an open AP rather than password protected AP following an all channel scan
  • Fixed bug that STA incorrectly deletes BA when receiving DelBA request
  • Added additional out of memory checks in Wi-Fi library
  • Fixed the bug that STA incorrectly receives packets when scanning in connected status
  • Updated some Wi-Fi configuration option ranges and defaults for better performance, especially when using PSRAM
  • Add new WIFI_REASON_CONNECTION_FAIL Wi-Fi failure reason
  • Fixed a bug where WPS fails when AP is encrypted
  • Fixed WPS crashes when connecting to some router models
  • Fixed failure to scan after STA failed to connect to a non-existent AP

ESP-NOW Related

  • Fixed a bug when adding a node in STA+AP mode
  • Fixed a bug where watchdog timer could be triggered when modifying a peer

Bluetooth (BLE) Related

  • BLE active scanning: Added option to immediately report adv data or scan responses to the application layer.
  • Fixed BLE assert(32768, 0) "rwble.c 222"
  • Fixed BLE assert(65536, 0) "rwble.c 222"
  • A2DP: Allow dynamic allocation of SBC decoder buffer used in A2DP sink to save internal DRAM

lwIP Related

  • Fixed a mbox thread-safety issue which could lead to a crash in sys_arch_mbox_fetch()
  • Fixed LWIP autoip memory leak

mDNS Related

  • Fixed crash on network change

System Related

  • Added workaround for Tensilica Erratum 572 (IllegalInstruction exception when zero overhead loop buffer is enabled)
  • freertos: Made xPortGetCoreID() function volatile, fixing an issue where core ID may not be correctly updated when called twice in an un-pinned function. (#3093)
  • log: Fixed tag comparison in esp_log_level_set() (#2996)
  • efuse/flash encryption: Reduce FLASH_CRYPT_CNT to a 7 bit efuse field. 8th bit is not used by hardware.

Bootloader Related

  • Fixed IROM and DROM labels swapped in log messages
  • Fixed an issue where wrong number of cache pages would be mapped if the address was less than 0x20 bytes more than a 64KB page boundary. This bug is also fixed in esptool v2.6, so images generated by the newer esptool will boot correctly even on older bootloaders

Peripheral Driver Related

  • UART: Fixed uart read error bug when using driver with both cores
  • i2c: I2C master hardware filter is now enabled by default

Tooling Related

  • idf_size: Fixed sorting of libraries in idf_size.py output
  • Updated esptool.py to v2.6

Obtaining v3.0.8

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

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

Download an archive with submodules included

Attached to this release is an esp-idf-v3.0.8.zip archive. It includes .git directory and all the submodules, so can be used out of the box. This archive is provided for users who have connectivity issues preventing them from cloning from GitHub.

This archive can also be downloaded from Espressif's download server:
https://dl.espressif.com/dl/esp-idf/releases/esp-idf-v3.0.8.zip

ESP-IDF Release v3.1.4

22 Apr 03:57

Choose a tag to compare

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

ESP-IDF v3.1.4 is a bugfix-only update for ESP-IDF v3.1.3. Release v3.1.4 is compatible with apps written for ESP-IDF v3.1.x.

This is the list of changes since release v3.1.3:

Known Issues

  • Calling esp_wifi_stop() can lead to a memory leak under some rare circumstances

Major Bug Fixes

  • cmake build system: Apply PSRAM compiler workaround correctly
  • gpio driver: Fixed issue with holding GPIO levels in deep sleep
  • Added configuration option for Wi-Fi IRAM optimization, allows reducing IRAM usage
  • Decouple mesh from Wi-Fi libraries, reducing binary size if Wi-Fi is used without Mesh
  • Fixed Wi-Fi STA failing to connect to some APs (Xiaomi hotspots, some others) after reset
  • Updated some Wi-Fi configuration option ranges and defaults for better performance, especially when using PSRAM
  • Fixed iPhone failing to connect to ESP32 AP (enabling AP BAR receive)
  • Fixed BLE adv reports not returned when sleep is enabled
  • Added flow control support for BLE adv reports
  • Fixed two BLE connection params update issues:
  • Fixed iOS and Windows 10 compatibility error with BLE HID

Wi-Fi Related

  • Updated some Wi-Fi configuration option ranges and defaults for better performance, especially when using PSRAM
  • New configuration option for Wi-Fi IRAM optimization, allows reducing IRAM usage.
  • Decouple mesh from Wi-Fi libraries, reducing binary size if Wi-Fi is used without Mesh
  • Added option to configure number of Wi-Fi management short buffers
  • Fixed several Wi-Fi scan bugs
  • Fixed a crash caused by Wi-Fi static TX buffer alloc/free
  • Fixed iPhone failing to connect to ESP32 AP (enabling AP BAR receive)
  • Fixed ESP32 STA failing to connect to some APs (Xiaomi hotspots, some others) after reset
  • Fixed bug that STA incorrectly deletes BA when receiving DelBA request
  • Added additional out of memory checks in Wi-Fi library
  • Fixed the bug that STA incorrectly receives packets when scanning in connected status
  • Increased the block scan internal timeout value

Bluetooth Related

  • Fixed crash when inquiry stops
  • Added vendor HCI command functionality
  • Fixed assert(8192 0) in rwble.c 234
  • Fixed some warnings when Bluedroid logging was disabled

Coexistence

  • Fixed LC protection cause memory corrupted (Strange crash like IllegalInstruction, LoadProhibited and ...)
  • Fixed Bluetooth disconnecting due to too many reset BB
  • Fixed bug where no TBTT would be generated after receiving wrong Wi-Fi beacon (when coexistence is enabled)

BLE Related

  • Fixed iOS and Windows 10 compatibility error with BLE HID
  • Fixed uncommon crash when BE performs re-connect/re-scan/re-adv
  • Fixed two connection params update issues:
    • Connection parameters update cause link loss while data is being sent
    • BLE disconnect while connection parameters is reject by LL_REJECT_IND
  • Fixed not checking scan window and interval when setting scan parameters
  • Fixed BLE not sending or receiving packets under some conditions
  • Fixed esp_ble_gatts_get_attr_value() API error
  • Added flow control support for BLE adv reports
  • Fixed adv reports not returned when sleep is enabled

Blufi

  • Fixed a bug when preparing to write

LWIP related

  • Fixed LWIP autoip memory leak

Ethernet related

  • Increase Ethernet task stack size and make configurable

mDNS related

  • Fixed memory leak when query for services receives multiple PTR entries for one instance
  • Fixed possible crash when mdns_free called while action queue not empty
  • Fixed invalid query_txt
  • Fixed memory leak in pbuf if tcpip_adapter failed to get network interface
  • Fixed possible crash when packet queued for transmit referenced a deleted service
  • Fixed a race condition when updating packet data from a user task if allocation/queueing failed
  • Fixed a possible deadlock in mdns deinit when calling mdns_free()
  • Fixed concurrent access to mdns PCBs when starting the service thread
  • Fixed a possible crash when probing a particular interface whose network has naming conflicts
  • Fixed task synchronization to use a semaphore not a mutex

Bootloader related

  • Fixed issues when bootloader was compiled for a different CPU frequency than the app (#2731)

System Related

  • freertos: Made xPortGetCoreID() function volatile, fixing an issue where core ID may not be correctly updated when called twice in an un-pinned function. (#3093)
  • heap: Added checks for integer overflows
  • psram: Fixed issue where some files (*lock.c, *creat.c) were incorrectly linked to IRAM when PSRAM was enabled

Peripheral Driver Related

  • gpio: Added new APIs for holding GPIO levels in deep sleep
  • rmt: Added missing get function to RMT API: rmt_get_idle_level() (#2666)
  • rmt: Suppressed error message from rmt_wait_tx_done() if wait_time==0 (allows for polling) (#2666)
  • spi: Fixed bug connecting SPI peripheral to read-only pins (#2455)

Protocol Related

  • esp_tls config structure cacert_pem_bytes is now a mutable integer

Storage Related

  • nvs: Fixed out of memory issues due to lazy NVS HashListBlock cleanup (#1642)

Tooling Related

  • idf_size: Fixed sorting of libraries in idf_size.py output
  • kconfig: Fixed compatibility with very old versions of "flex"
  • build system: Fixed some situations where EXTRA_COMPONENT_DIRS finds components in the wrong directories.
  • cmake build system: Apply PSRAM compiler workaround correctly
  • cmake build system: Disable stack protector in startup code (#2990)
  • cmake: Fix some cases where python scripts were executed directly, not via PYTHON variable (
  • nvs_util: Fixed support for writing multiple single pages of big blob data (#3011)
  • nvs_util: Disable multipage blob support by default (requires configuration option to be supported in IDF v3.1 projects)

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

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

Download an archive with submodules included

Attached to this release is an esp-idf-v3.1.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/dl/esp-idf/releases/esp-idf-v3.1.4.zip

ESP-IDF Pre-release v3.3-beta3

13 May 12:18

Choose a tag to compare

Pre-release

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

v3.3-beta3 is a prerelease of ESP-IDF v3.3. See below for a list of known issues in this beta release.

ESP-IDF v3.3-beta3 is a minor update for ESP-IDF v3.2.x. Release v3.3-beta3 is compatible with apps written for ESP-IDF v3.x, but features in v3.3-beta3 may not be available in earlier versions.

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

Known Issues

  • WPS does not work properly
  • esp_smartconfig_stop not return under some rare circumstances
  • BT SPP may ASSERT when use with Wi-Fi
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.

Major New Features

Wi-Fi Related

New Functionality

Bug Fixes

  • Reduced cases where Wi-Fi needs to listen for RX when waking from sleep state, depending on beacon contents
  • Fixed thread safety bug in WPS
  • Reduced IRAM usage of libnet80211.a
  • Fixed Wi-Fi baseband reset issue after baseband switched to 11b weak signal mode
  • Fixed bug that if set_config() was called before connecting to an encrypted AP, PMK would be recalculated
  • Fixed STA HT20/40 coexist
  • Fixed compliance by disallowing WEP/TKIP with HT rates
  • Improved WPA2 support
  • Fixed SoftAP mode multicast and broadcast saving and flushing when the associated stations enable 802.11 legacy power saving mode (called modem sleep in ESP32).

ESP-MESH Related

New Functionality

Bug Fixes

  • Fixed failure of mesh stop caused by block-sending.
  • Fixed when FIXED_ROOT is set, 2nd layer devices can not receive mesh event ESP_ERR_MESH_NO_PARENT_FOUND.
  • Fixed when FIXED_ROOT is set and the root turns off mesh function, 2nd layer devices do not look for new parents.
  • Now disconnects from parent/router when the DSSS channel in received beacon is different from the home channel.

Wi-Fi/Bluetooth Coexistence Related

  • Reduced binary size when coexistence is not enabled, or if only BT is used
  • Fixed issue that spike transmit power of WiFi could be higher than configured when Bluetooth coexistence enabled

Bluetooth Related

BLE Related

New Functionality

Bug Fixes

  • Fixed btc_gatts_arg_deep_copy() and bta_gatts_indicate_handle()
  • Fixed interrupt watchdog timeout in Bluetooth controller
  • Fixed BLE assert(512) or assert(1536) in rwble.c at line 222

Controller Related

  • Supported vendor HCI commands

RF PHY Related

Ethernet related

New Functionality

  • Added support for IP101 PHY

Bug Fixes

  • Cleaned up invalid register mappings for LAN8720 PHY
  • Fixed the power and init functions for LAN8720 PHY
  • Enforced that only ETH_CLOCK_GPIO_IN mode can be used if PSRAM is in use (due to GPIO16 and GPIO17 being occupied by PSRAM)
  • Fixed OTA when using Ethernet
  • Fixed multicast when using Ethernet
  • Fixed potential memory leak of ethernetif structure

LWIP related

tcpip_adapter related

  • Fixed zero initialization of unused system_event_t fields
  • Added field to pass client IP address along with SYSTEM_EVENT_AP_STAIPASSIGNED (#2949)

Network Protocol Related

mDNS related

  • Fixed uninitialized memory bug after some operation failed and strdup() step skipped

HTTP Client

New Functionality

  • Added support for TLS Client authentication (#2688)
  • Added capability to load certificates from the ESP-TLS global CA store

Bug Fixes

  • URI schemes are now treated as case insensitive
  • Fixed infinite loop on esp_http_client_fetch_headers()
  • Fixed bug where member paths were not correctly cleaned up following an error
  • Fixed issue where esp_http_client_open() would set wrong content length (#2967)

HTTP Server

New Functionality

  • Added new "esp_https_server" component allowing HTTP server with TLS connection (#2578)
  • Added uri_match_fn field in config structure which allows a custom URI matching function to be set
  • Added feature to invoke user configurable handlers for server errors (#3005)

Bug Fixes

  • Updated and fixed problems with httpd_sess_get_ and httpd_sess_set_ APIs
  • New helper APIs for sending string content
  • Remove use of 'template' C++ keyword (#2956)
  • Now only accepts new socket connections if server has capacity to handle more concurrent connections
  • Fixed support for LF terminated headers

HTTPS OTA Library

  • Added config option to (optionally) allow insecure HTTP updates
  • Added support for configurable OTA buffer size (#2998)

Unified Provisioning Library

  • Fixed correct conn_id being passed to protocomm_req_handle in transport_simple_ble_write() and transport_simple_ble_exec_write()
  • Fixed case when simple_ble_start() is used with Bluetooth Dual Mode (Classic & BLE)

mbedTLS

  • Fixed AWS-IoT and ESP-TLS builds if ALPN is disabled in mbedTLS config
  • cmake: mbedTLS project is now built using the upstream project's CMakeLists file

ESP-TLS

  • New esp_tls_init_global_ca_store() function (#2654)

App Trace Related

System Related

New Functionality

Read more

ESP-IDF Release v3.2

11 Apr 03:36

Choose a tag to compare

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

ESP-IDF v3.2 is a minor update for ESP-IDF v3.1.x. Release v3.2 is compatible with apps written for ESP-IDF v3.1.x, but features in v3.2 may not be available in earlier versions.

This is the list of changes since release v3.1.3:

Known Issues

  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.
  • ESP32 SoftAP mode may fail to deliver multicast packets to stations which have power save modes enabled.

Major New Features

Breaking Changes

  • RMT peripheral: Removed incorrect rmt_item16_t register access type. Use existing rmt_item32_t instead.
  • ESP-MESH: When Mesh IE encryption is enabled, Mesh V3.1 devices cannot connect to Mesh V3.2 devices. Devices with unencrypted Mesh IE can connect between versions, although features added in V3.2 will not work well in a mixed-version mesh.

Changes not compatible with earlier versions

These changes do not require any action when updating to V3.2, but will require consideration if moving from V3.2 to an earlier version.

  • NVS: Support has been added for NVS blobs larger than 1984 bytes. NVS partitions created from earlier ESP-IDF versions will be automatically updated when written from ESP-IDF V3.2. NVS partitions written from ESP-IDF V3.2 are not compatible with the NVS format used by earlier versions of ESP-IDF. It is possible to support the updated NVS partition format in ESP-IDF v3.1.x via the "Enable multi-page blob support" config option.
  • Wear Levelling: Wear Levelling flash partition format has been updated to Version 2, to support flash encryption. Version 1 Wear Levelling partitions will be automatically updated to Version 2. Version 2 partitions are not compatible with ESP-IDF V3.1.x or earlier.

Wi-Fi Related

  • Added internal API to enable or disable transmitting WiFi MAC frame with fixed rate.
  • Fixed bug that ESP32 crashes because of WiFi static TX buffer alloc/free.
  • Enabled Soft-AP receiving BAR to fix the issue that iphone fails to connect to Soft-AP.
  • Fixed the issue that STA fails to connect to some APs after reset.
  • wpa_supplicant: Implemented BIGNUM and ECC crypto wrapper apis for ESP using mbedtls.
  • Fixed the index of the invalid channel state information(CSI) data.
  • Corrected a mistake of CSI sub-carrier index in Wi-Fi documentation.

Smartconfig Related

  • Added support for broadcast packets sent by newer versions of ESP-TOUCH (useful for 5GHz router compatibility). Multicast packets sent by earlier versions of ESP-TOUCH are also still supported.
  • Fixed the declaration of remote_ip in sc_ack_send_task()

ESP-MESH Related

  • Note: When Mesh IE encryption is enabled, Mesh V3.1 devices cannot connect to Mesh V3.2 devices. Devices with unencrypted Mesh IE can connect between versions, although features added in V3.2 will not work well in a mixed-version mesh.

New Functionality

  • Removed dependencies which cause mesh code to be linked even if mesh is not used
  • Dynamically malloc the routing table
  • Support for not configuring the network channel
  • Support not configuring the router BSSID even if the router is hidden
  • Added allow_channel_switch to mesh configuration
  • Added allow_router_switch to mesh router configuration
  • Support handling beacon without IE of DS Parameter Set
  • Support dynamically modify IE encrypt after mesh is started
  • Automatically detect and resolve root conflicts when router BSSID is not set
  • Modify the max routes limitation from 300 to 1000
  • Add an event MESH_EVENT_NETWORK_STATE that contains information about whether there is a root in the current network
  • Add APIs esp_mesh_disconnect() and esp_mesh_connect()
  • RAM usage reduced 3KB RAM by removing an unnecessary task

Fixes

  • Fixed STAs can not detect disconnection from AP when encrypt transmission is used
  • Fixed memory leak when esp_mesh_stop() is called, the memory occupied by the transmitting remove announcement is not released
  • esp_mesh_connect() will be ignored if mesh automatic reconnection is enabled
  • Fixed vote reason is cleared before vote is done
  • Fixed issues in the example of manual_networking when mesh network is encrypted
  • When root can not connect to the router due to NO_MORE_STAS (reason code:5), root will stop re-connection and perform MESH_NWK_LOOK_FOR_NETWORK
  • Fixed disconnection caused by receiving a deauth frame from non-parent node during scanning
  • Fixed routing table redundant issue due to remove announcing is not 100% reliable
  • Fixed when a STA has not yet completed the 4-way handshake but the max replay count is reached, AP does not deauth the STA
  • New logic: During parent selection, the AP which is found without extended associated IE will be considered it has the same router BSSID as device itself
  • When STA leaves from AP, AP will now always post SYSTEM_EVENT_AP_STADISCONNECTED to mesh layer regardless of whether the STA has passed the encrypted authentication or not
  • Fixed ap_loss that occurs when the parent turns off the mesh function and becomes a normal Wi-Fi with a different SSID
  • Fixed in the process of re-voting to select the root, the device votes for itself even though it does not meet the conditions of being a root
  • Fixed issues in esp_mesh_recv_toDS() when stopping the mesh
  • When the user specifies a parent for the device, the device will now set the authmode and password of its Soft-AP mode to the same value as the specified parent
  • Fixed failure of mesh stop caused by block-sending
  • Fixed when FIXED_ROOT is set, 2nd layer devices can not receive mesh event ESP_ERR_MESH_NO_PARENT_FOUND
  • Fixed when FIXED_ROOT is set and the root turns off mesh function, 2nd layer devices do not look for new parents
  • Now disconnects from parent/router when the DSSS channel in received beacon is different from the home channel

Bluetooth Related

Coexist

Fixes

  • Fixed LC protection cause memory corrupted (Strange crash like IllegalInstruction, LoadProhibited and ...)

Classic BT

  • Added Secure Simple Pairing
  • Added Legacy Pairing

BLE Related

New Functionality

  • Added esp_ble_gap_clear_rand_addr() function to clear random address
  • Added sequential check when add include service
  • Added “service from” param in ESP_GATTC_SEARCH_CMPL_EVT
  • Added gatts send service change indication API
  • Added peer addr type check when set adv params
  • Added auto disconnection when ACCEPT_SPECIFIED_SEC_AUTH operation is failed
  • Added set/clear static passkey option in esp_ble_gap_set_security_param()
  • Added attr_handle for ESP_GATTS_CONF_EVT
  • Added advertisement data filter in scan duplicate

Fixes

  • Optimize bluetooth memory debug
  • Fixed PASSERT_PARAM(2051 0) error generated in llc_util.c
  • Fixed wrong return callback status ESP_GATT_STACK_RSP when do multiple read
  • Fixed remove/get bond list failed
  • Fixed crash when BLE do SMP connect and disconnect stress test
  • Fixed wrong prefered connection interval when setting in adv params
  • Fixed memory leak in service change char
  • Fixed iPhoneX get error when getting wifi list
  • Fixed crash when test multi_connection
  • Fixed reconnect failed in SMP when slave using static random address
  • Fixed stop adv error in dual core
  • Fixed register multi service change when register multi gattc
  • Fixed connection params update issues
    • connection parameters update cause link loss while data is being sent
    • BLE disconnect while connection parameters is reject by LL_REJECT_IND
  • Fixed BLE connection crash when there's higher priority task or interrupt run on the same CPU.
  • Fixed invalid handle value in gatts conf event when GATT server sends indication
  • Fixed crash caused by writin...
Read more

ESP-IDF Pre-release v3.2-rc

03 Apr 08:00

Choose a tag to compare

Pre-release

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

v3.2-rc is a prerelease Release Candidate of ESP-IDF v3.2. See below for a list of known issues in this release candidate.

ESP-IDF v3.2 is a minor update for ESP-IDF v3.1.x. Release v3.2 is compatible with apps written for ESP-IDF v3.1.x, but features in v3.2 may not be available in earlier versions.

This is the list of changes since release v3.1.3:

Known Issues

  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.
  • ESP32 SoftAP mode may fail to deliver multicast packets to stations which have power save modes enabled.

Major New Features

Breaking Changes

  • RMT peripheral: Removed incorrect rmt_item16_t register access type. Use existing rmt_item32_t instead.
  • ESP-MESH: When Mesh IE encryption is enabled, Mesh V3.1 devices cannot connect to Mesh V3.2 devices. Devices with unencrypted Mesh IE can connect between versions, although features added in V3.2 will not work well in a mixed-version mesh.

Changes not compatible with earlier versions

These changes do not require any action when updating to V3.2, but will require consideration if moving from V3.2 to an earlier version.

  • NVS: Support has been added for NVS blobs larger than 1984 bytes. NVS partitions created from earlier ESP-IDF versions will be automatically updated when written from ESP-IDF V3.2. NVS partitions written from ESP-IDF V3.2 are not compatible with the NVS format used by earlier versions of ESP-IDF. It is possible to support the updated NVS partition format in ESP-IDF v3.1.x via the "Enable multi-page blob support" config option.
  • Wear Levelling: Wear Levelling flash partition format has been updated to Version 2, to support flash encryption. Version 1 Wear Levelling partitions will be automatically updated to Version 2. Version 2 partitions are not compatible with ESP-IDF V3.1.x or earlier.

Wi-Fi Related

  • Added internal API to enable or disable transmitting WiFi MAC frame with fixed rate.
  • Fixed bug that ESP32 crashes because of WiFi static TX buffer alloc/free.
  • Enabled Soft-AP receiving BAR to fix the issue that iphone fails to connect to Soft-AP.
  • Fixed the issue that STA fails to connect to some APs after reset.
  • wpa_supplicant: Implemented BIGNUM and ECC crypto wrapper apis for ESP using mbedtls.
  • Fixed the index of the invalid channel state information(CSI) data.
  • Corrected a mistake of CSI sub-carrier index in Wi-Fi documentation.

Smartconfig Related

  • Added support for broadcast packets sent by newer versions of ESP-TOUCH (useful for 5GHz router compatibility). Multicast packets sent by earlier versions of ESP-TOUCH are also still supported.
  • Fixed the declaration of remote_ip in sc_ack_send_task()

ESP-MESH Related

  • Note: When Mesh IE encryption is enabled, Mesh V3.1 devices cannot connect to Mesh V3.2 devices. Devices with unencrypted Mesh IE can connect between versions, although features added in V3.2 will not work well in a mixed-version mesh.

New Functionality

  • Removed dependencies which cause mesh code to be linked even if mesh is not used
  • Dynamically malloc the routing table
  • Support for not configuring the network channel
  • Support not configuring the router BSSID even if the router is hidden
  • Added allow_channel_switch to mesh configuration
  • Added allow_router_switch to mesh router configuration
  • Support handling beacon without IE of DS Parameter Set
  • Support dynamically modify IE encrypt after mesh is started
  • Automatically detect and resolve root conflicts when router BSSID is not set
  • Modify the max routes limitation from 300 to 1000
  • Add an event MESH_EVENT_NETWORK_STATE that contains information about whether there is a root in the current network
  • Add APIs esp_mesh_disconnect() and esp_mesh_connect()
  • RAM usage reduced 3KB RAM by removing an unnecessary task

Fixes

  • Fixed STAs can not detect disconnection from AP when encrypt transmission is used
  • Fixed memory leak when esp_mesh_stop() is called, the memory occupied by the transmitting remove announcement is not released
  • esp_mesh_connect() will be ignored if mesh automatic reconnection is enabled
  • Fixed vote reason is cleared before vote is done
  • Fixed issues in the example of manual_networking when mesh network is encrypted
  • When root can not connect to the router due to NO_MORE_STAS (reason code:5), root will stop re-connection and perform MESH_NWK_LOOK_FOR_NETWORK
  • Fixed disconnection caused by receiving a deauth frame from non-parent node during scanning
  • Fixed routing table redundant issue due to remove announcing is not 100% reliable
  • Fixed when a STA has not yet completed the 4-way handshake but the max replay count is reached, AP does not deauth the STA
  • New logic: During parent selection, the AP which is found without extended associated IE will be considered it has the same router BSSID as device itself
  • When STA leaves from AP, AP will now always post SYSTEM_EVENT_AP_STADISCONNECTED to mesh layer regardless of whether the STA has passed the encrypted authentication or not
  • Fixed ap_loss that occurs when the parent turns off the mesh function and becomes a normal Wi-Fi with a different SSID
  • Fixed in the process of re-voting to select the root, the device votes for itself even though it does not meet the conditions of being a root
  • Fixed issues in esp_mesh_recv_toDS() when stopping the mesh
  • When the user specifies a parent for the device, the device will now set the authmode and password of its Soft-AP mode to the same value as the specified parent
  • Fixed failure of mesh stop caused by block-sending
  • Fixed when FIXED_ROOT is set, 2nd layer devices can not receive mesh event ESP_ERR_MESH_NO_PARENT_FOUND
  • Fixed when FIXED_ROOT is set and the root turns off mesh function, 2nd layer devices do not look for new parents
  • Now disconnects from parent/router when the DSSS channel in received beacon is different from the home channel

Bluetooth Related

Coexist

Fixes

  • Fixed LC protection cause memory corrupted (Strange crash like IllegalInstruction, LoadProhibited and ...)

Classic BT

  • Added Secure Simple Pairing
  • Added Legacy Pairing

BLE Related

New Functionality

  • Added esp_ble_gap_clear_rand_addr() function to clear random address
  • Added sequential check when add include service
  • Added “service from” param in ESP_GATTC_SEARCH_CMPL_EVT
  • Added gatts send service change indication API
  • Added peer addr type check when set adv params
  • Added auto disconnection when ACCEPT_SPECIFIED_SEC_AUTH operation is failed
  • Added set/clear static passkey option in esp_ble_gap_set_security_param()
  • Added attr_handle for ESP_GATTS_CONF_EVT
  • Added advertisement data filter in scan duplicate

Fixes

  • Optimize bluetooth memory debug
  • Fixed PASSERT_PARAM(2051 0) error generated in llc_util.c
  • Fixed wrong return callback status ESP_GATT_STACK_RSP when do multiple read
  • Fixed remove/get bond list failed
  • Fixed crash when BLE do SMP connect and disconnect stress test
  • Fixed wrong prefered connection interval when setting in adv params
  • Fixed memory leak in service change char
  • Fixed iPhoneX get error when getting wifi list
  • Fixed crash when test multi_connection
  • Fixed reconnect failed in SMP when slave using static random address
  • Fixed stop adv error in dual core
  • Fixed register multi service change when register multi gattc
  • Fixed connection params update issues
    • connection parameters update cause link loss while data is being sent
    • BLE disconnect while connection parameters is reject by LL_REJECT_IND
  • Fixed BLE connection crash when there's higher...
Read more