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

latest releases: v5.3-beta1, v5.1.4, v5.4-dev...
3 years ago

Important

A high severity bug has been found in the Wi-Fi functionality of ESP-IDF v3.2.4. 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. The circumstances of fragmentation will depend on the AP configuration and the Wi-Fi mode(s) currently in use.

For this reason, we recommend not to update to ESP-IDF v3.2.4 if Wi-Fi will be used. The download link and documentation for this version have been removed. For users who have updated to ESP-IDF v3.2.4 already, it is recommended to immediately roll back to ESP-IDF v3.2.3 or update to pre-release ESP-IDF commit 688c623 where this issue is fixed.

This issue will be fixed in the upcoming ESP-IDF v3.2.5 release, and all users are encouraged to update once it is available.


Major Changes

  • Websocket client component has been backported from ESP-IDF v3.3
  • 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.

Security Fixes

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

Wi-Fi

  • 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)

  • Fixed bug that receiving a mesh packet when stopping mesh will cause a crash
  • Fixed two small bugs in cycle detection
  • Fixed bug that root rssi not updated when receiving internal roots direct/forward events
  • Fixed bug that association information in mesh ie is incorrect
  • Increased the success rate to form single mesh network
  • Improved the efficiency of mesh transmission
  • Fixed the bug that esp_mesh_send returns unexpected ESP_ERR_MESH_TIMEOUT sometimes

Bluetooth

  • Disabled BR/EDR GATT
  • OSI: Added handling of OSI memory calloc failure
  • Added Bluedroid host stack size config option
  • Added support for setting a minimum encryption key length requirement
  • HID: Fixed issue with security info restore when a paired BLE HID device disconnects and then reconnects after a BT Classic HID device has connected
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Fixed incomplete data packets issue caused by out-of-order ACL data packets
  • Fixed A2DP stuck when BLE advertisement interval is too short

Bluetooth Classic

  • 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
  • Choose AVRC category according to A2DP role
  • Fixed AVRC metadata length error

Bluetooth Low Energy

  • Added missing GATT descriptors
  • Fixed bug with fixed_queue semaphore pointer dereference
  • GATTC: Fixed open event triggering multiple times
  • GATTC: Fixed issue with pointer type conversion
  • Fixed prepare write buf len invalid error
  • Fixed malloc failed when multi_connection notify performance test
  • Fixed client have no auth event when client Proactively initiate encryption after reboot
  • Fixed throughput wasting memory and packet loss issues.
  • ble_throughput example: Fixed the throughput clinet crash bug when open the CONFIG_GATTC_WRITE_THROUTHPUT option

Controller

  • Fixed bugs about role switch
  • 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 LMP sniff req timeout behavior

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.

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

  • 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

  • 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

  • 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

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

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.