github espressif/esp-idf v3.2.5
ESP-IDF Release v3.2.5

latest releases: v5.2.1, v4.4.7, v5.1.3...
3 years ago

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

ESP-IDF v3.2.5 is the final bugfix release for ESP-IDF v3.2.x.

As previously announced, Espressif will stop supporting v3.1 and v3.2 releases after October 2020. For more information please see the ESP-IDF Support Policy. Customers who are using v3.2 release series are encouraged to migrate to more recent releases. ESP-IDF v4.1 is the latest stable release of ESP-IDF at time of writing.

Major Changes

  • Fixed potential live lock cache issue with ESP32 ECO3
  • Fixed Wi-Fi issue if the ESP32 is configured with fragmentation enabled and the fragmentation threshold is configured less than 1600 bytes, the ESP32 will immediately crash if a fragmented frame is received
  • Websocket client component has been backported from ESP-IDF v3.3
  • Bootloader SPI flash configuration was previously used for all apps. The app SPI flash configuration is now used to reconfigure the SPI flash settings when the app starts up.

Security Fixes

Wi-Fi

  • Fixed the issue if the ESP32 is configured with fragmentation enabled and the fragmentation threshold is configured less than 1600 bytes, the ESP32 will immediately crash if a fragmented frame is received
  • Fixed the issue that bandwidth and phy mode not correctly stored into NVS
  • Fixed the issue that the API esp_wifi_get_config didn’t return correct sta.listen_interval
  • SoftAP: Fixed the issue that the TSF of SoftAP would be reset when sending a CSA
  • Dump internal heap size instead of heap size in Wi-Fi log
  • Added API esp_wifi_ap_get_sta_aid to get aid, which can be used by esp_wifi_deauth_sta
  • put Wi-Fi clock enable/disable code into IRAM
  • Fixed the issue that Airkiss fail to find hidden APs
  • Fixed the issue that the first several AMPDU packets may be discarded by peer device
  • Fixed the issue that setting TX DMA buffer above 32 would not take effect
  • Fixed two issues in regulate domain information update
  • Delete duplicated spinlock and counter
  • Improved description of esp_wifi_set_max_tx_power
  • wpa_supplicant: fixed some memory leaks and invalid memory access
  • SoftAP: Fixed the issue that memory leak happens after SoftAP de-initialized
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Fixed the failure to get IPV6 link-local address when AP forwarded multicast NS packets back to the station itself
  • Fixed esp_wifi_stop() crash
  • Fixed WiFi stop when sniffer enable
  • Fixed esp_wifi_sta_get_ap_info() api to return correct value of group cipher
  • Fixed WiFi receiving which is caused by WiFi reloading
  • Fixed WiFi performance, such as BA parameter negotiation etc
  • Fixed AMSDU decrypt
  • Fixed the bugs for bandwidth
  • Fixed some wifi timer bugs
  • Fixed WiFi block scan crash issue
  • Fixed association request RSN information length too big lead crash
  • Fixed some espnow bugs
  • Fixed the API_CHECK_ENABLED
  • Fixed 5.5M signal test bug
  • Placed the Vendor Specific element at the end according to the protocol
  • Added softAP example channel configuration
  • Fixed the timeout issue of EAPOL four-way handshake
  • Fixed ESP32 can't get IP address from China Mobile router
  • Fixed softAP updates second channel
  • Fixed bug where WPA2-Enterprise STA incorrectly connects to an open AP
  • Added separate performance configuration option to move some Wi-Fi RX code to IRAM (disable this to save approx 17KB of IRAM)
  • Include DMA reserved pool when allocating internal-only memory
  • Fixed Wi-Fi RX bug by adding support for Wi-Fi/BT MAC register writing when the Wi-Fi/BT common clock is disabled.
  • WPS 2.0: Relax the check on older config methods. Allows WPS handshake to complete on some APs which incorrectly advertise newer WPS 2.0 config method bits without setting bits for the corresponding older methods.
  • WPS: Fixed WPS config default initializer to work with C++ as well as C syntax
  • WPS: Now allows NULL-padded WPS attributes
  • WPS: Interoperability fixes
  • Place the Vendor Specific element at the end of the frame according to the protocol
  • Fixed AP switch to adjacent channel without disconnect
  • Removed WIFI_REASON_AUTH_CHANGED event
  • Fixed TKIP/CCMP PN replay attack detection bug
  • Increased buffer number type from uint8_t to uint16_t to support more than 255 buffers
  • Fixed bug where a scan with more than 255 results can lead to a crash
  • Avoid recalculating PMK if esp_wifi_set_config() is not called
  • Fixed bug where calling esp_wifi_stop() can lead to task watchdog timeout
  • Fixed SmartConfig IPC crash
  • Fixed issue where sniffer may access flash when cache is disabled
  • Reduced the total binary size when using Wi-Fi
  • Fixed Sniffer caused by WiFi mode switching
  • Added TX packet size check
  • Added check for Wi-Fi stop when calling esp_wifi_deinit
  • Scanning: Fixed Wi-Fi scan RSSI error
  • Return failure when AP channel value is set out of range
  • Fixed bug for setting channel when in NULL mode.

SmartConfig

  • Fixed bug where ESP32 sends broadcasts to phone after SmartConfig is completed
  • Fixed bug where Airkiss couldn't get IP of the cellphone

ESP-MESH (Wi-Fi Mesh)

  • esp_mesh_set_type now supports MESH_IDLE and MESH_STA
  • Support releasing esp_mesh_recv_toDS when the root becomes non-root
  • Support choosing the candidate with less ie.assoc when doing parent switch
  • Fixed if the root is specified (FIXED-ROOT) by set type or set parent, then change ie.mesh_type to MESH_ROOT before connect to router
  • Fixed ie.rc_rssi is not updated during scan and vote
  • Fixed ie.mesh_type does not match ie.layer caused by parent switch
  • Fixed during root switch, the original root doesn't disconnect from the router after it receives the switch request from the new voted root. (root switch happens by invoking esp_mesh_waive_root)
  • Fixed the routing announce timer is not stopped immediately in a new root if the new root is transformed from non-root
  • Fixed root rssi is not updated when receives internal roots direct/forward events
  • Fixed esp_mesh_send returns unexpected ESP_ERR_MESH_TIMEOUT

Bluetooth

Classic Bluetooth

Bluedroid

  • Disabled GATT over BR/EDR
  • Fixed assertion failure if A2DP is deinitialized while playback is running
  • HFP: Fixed HFP Client parsing of AT+CNUM
  • HFP: Fixed HFP Client parsing of AT+CIEV items
  • AVRCP: Choose AVRC category according to A2DP role
  • AVRCP: Fixed AVRC metadata length error
  • Added Bluedroid host stack size config option
  • Fixed issue happened after security information restore when a paired BLE HID device disconnects and then reconnects after a Bluetooth Classic HID device is connected
  • Authentication fixes in Legacy and Secure Connection
  • Fixed cases having fallback to link up event

Controller

  • Fixed bugs about role switch
  • Fixed LMP sniff req timeout behavior
  • Fixed A2DP stuck when BLE advertisement interval is too short

Bluetooth Low Energy

Bluedroid

  • Added missing GATT descriptors
  • Fixed open event triggering multiple times
  • Fixed malloc failed when multi_connection notify performance test
  • Added support for setting a minimum encryption key length requirement
  • Fixed incomplete data packets issue caused by out-of-order ACL data packets
  • Fixed client have no auth event when client Proactively initiate encryption after reboot
  • Fixed prepare write buffer length invalid error
  • Fixed throughput wasting memory and packet loss issues
  • Fixed no BLE_AUTH_CMPL_EVT after restart

Controller

  • Added connect parameter check
  • Fixed disconnection due to channel map instant reverse
  • Fixed assert(65535,0) in lld_evt.c
  • Change tx default octets to 251
  • Fixed assert(1024,0)
  • Fixed assertion failure when a create connection operation is cancelled
  • Fixed issue that Bluetooth controller may not be able to enter sleep after end of wake up request
  • Fixed BLE assert(64,0)

Blufi

  • Now checks if BLE is connected before sending a message via BLE
  • Added memcpy overflow check when blufi received error format data packet and send error report to phone
  • Fixed the issue Blufi still sends data after disconnecting and the sequence still increases

Wi-Fi Coexistence

  • Fixed Bluetooth event scheduling when Wi-Fi is also enabled.
  • Improved stability of WiFi performance with a little sacrifice of throughput
  • Improved BLE advertising and connection performance with dynamic priority. It sacrifices a little WiFi throughput, but achieves balance between WiFi and Bluetooth.

LWIP

  • Made LWIP TCP rto time configurable for users with different project and environment
  • Optimized TCPv6 connect
  • Fixed obsolete interface gethostbyname
  • Added LINGER to menuconfig
  • Fixed a memory leak issue caused by IPv6 didn't release timely
  • Fixed the issue that some UDP packets are lost in ARP during coexistence UDP tx performance testing
  • Fixed the issue of endless loop in dhcp parse reply
  • Fixed double-free of pbuf in IPv4 fragment reassembly
  • Fixed issue that IPv6 ND6 queues too much packets and causes memory out
  • Fixed the failure to get IPv6 address after WiFi is disconnected
  • IPV6: Allow DNS servers to be retrieved from NDS6 as an optimization
  • Randomize the first local port number created after reset. (Configurable)
  • Added support for IPv6 stateless address autoconfiguration
  • Added a check in sys_arch_protect() that mutex is created before use, and allow creating on demand
  • Fixed DHCP client issue with some China Mobile routers
  • TCP MSS: Increase default to 1440 but extend range to allow as small as 536
  • Fixed rare crash of DHCP Server during WIFI AP network reconfiguration (#3466)
  • Added LWIP header missing_C++ guards (#3681)
  • Added hostname option to DHCP request on reboot (#3150)
  • Fixed disable TCP_QUEUE OOSEQ compile fail (#3902)
  • Fixed IP6 that input the wrong broadcast address to return OK
  • Fixed TCP6 send ok when STA disconnect
  • Fixed random UDP port

Core System

  • Bootloader SPI flash configuration was previously used for all apps. Now, the app SPI flash configuration is used to reconfigure the SPI flash settings when the app starts up.
  • Added esp_idf_version.h and related build system macros for version info
  • Fixed DPORT ECO workaround register operation to improve workaround reliability. (Details of workaround in ECO document item 3.10 "When each CPU reads certain different address spaces simultaneously, a read error can occur")
  • Fixed esp_ptr_executable() result when running in single core configuration and pointer is to freed APP CPU cache memory
  • Added an option to disable interrupts to be Level 5 for DPORT workaround
    Added support for building an image for ESP32-D0WD-V3 (revision 3) only, where PSRAM workaround is not needed
  • Removed spurious semicolon in definition of xTaskNotifyGive()?
  • Clear RF PHY peripheral status during early startup
  • esp_timer: Fixed a race condition when a timer is deleted from a higher priority task while trying to run the timer callback
  • esp_timer: Now handles esp_timer_delete() in timer task (#3458)
  • esp_timer: Fixed issue where system time jumps back ~54 secs on an internal overflow (#2513)
  • esp_timer: Fixed set_alarm function when timestamp < now
  • esp_timer: Fixed overflow case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set (#2954)
  • heap: Removed unsafe printf() calls when heap poisoning was enabled
  • heap: Ensure that malloc(0) returns NULL in any poisoning configuration

Bootloader

  • Don't check factory reset triggers when waking from deep sleep (#3800)
  • Fixed bug where bootloader_random_disable() disables ADC incorrectly on boot, meaning the ADC sometimes fails to work in the app

Storage

  • FAT: Fixed memory leak if esp_vfs_fat_sdmmc_mount() failed

VFS

  • Fixed bug when a VFS driver is installed during a select() call (#3554)

Security Features

  • Now hides Secure Boot & Flash Encryption config items when using CMake (these features are not supported in v3.x when using CMake)

Peripheral Drivers

  • PSRAM: fixed 16MB psram id read error
  • Added peripheral module reset before enabling each peripheral (fixes issues with initialization following a soft CPU reset)
  • CAN: Added support for lower bit rates on ESP32 V3
  • CAN: Fixed missing functionality when assertions are disabled in compiler configuration
  • I2C: Fixed ticks_to_wait parameter when set to 0, or time expired
  • I2S: Fixed crash due to dev array used in ISR (#4545)
  • I2S: fixed i2s random data issue due to not disabled completely in the bootloader
  • MCPWM: Fixed off-by-one error when setting period
  • PSRAM: Added support for 2T mode
  • SIGMADELTA: Fixed typo in C++ header guard
  • SPI Driver: Placed argument of macro SPI_SWAP_DATA_TX/RX in parentheses (#3996)
  • Timergroup: Fixed crash due to dev array used in ISR (#4545)
  • Timergroup: Fixed interrupt enable (#5103)
  • ADC: Fixed data inversion issue when reading from digital controller (I2S) (#4557)

HTTP Client

  • Fixed possible buffer overflow when determining last header item to be written

HTTP Server

  • Added support for parsing ICY URLs
  • Fixed parsing of empty header values
  • Fixed LRU counter purge (#4753)
  • Fixed LRU counter when accepting new connection (#3851)

mbedTLS

  • Fixed hardware accelerated big number multiplication if operand and result overlap
  • Remove unnecessary check for "WOULD BLOCK" in lwIP port layer

Provisioning

  • BLE provisioning: Added check for valid ble read offset
  • Unified Provisioning: Fixed BLE characteristics read response issue when read response length is a multiple of () length

ESP-TLS

  • Fixed bug determining if a connection is active or not.

mDNS

  • Fixed crash caused when receiving query responses if the hostname used was an instance name (#4224)
  • Respond to discovery with the proper pseudo name _services._dns-sd._udp (#4369)

ESP-MQTT

  • Added option to configure MQTT task priority (#4947)
  • Fixed disconnect issues
  • Fixed incorrect MQTT API documentation
  • Added support for configurable reconnect time
  • Fixed bug with too early publishing
  • Fixed Potential mutex memory leak
  • Fixed waiting for entire connack message
  • Fixed event loop not getting cleaned up
  • Fixed esp_mqtt_abort_connection() race condition

WebSocket Client

  • Now the client aborts the connection if send fails

Build System

  • cmake: Output partition table info for partition_table target
  • cmake: Fix build failure if git repo is initialized but no first commit
  • kconfig: Fix host build system dependency errors when switching ESP-IDF versions

Host Tools

  • esptool.py: Update to v2.8 release, includes support for detecting ESP32 revision 3
  • idf_monitor: Possible to exit menu with Ctrl-T Ctrl-X (previously required Ctrl-]) (#4167)

Third Party Libraries

  • cJSON updated to v1.7.12
  • expat updated to v2.2.9
  • newlib: Removed macro-definitions for non-threadsafe libc function versions (not safe to use in multithreaded apps)

Examples

  • espnow: Fixed bug calling esp_wifi_set_channel() at invalid time

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

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

Download an archive with submodules included

Attached to this release is an esp-idf-v3.2.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/github_assets/espressif/esp-idf/releases/download/v3.2.5/esp-idf-v3.2.5.zip

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.