Skip to content

ESP-IDF Release v3.3.2

Compare
Choose a tag to compare
@projectgus projectgus released this 09 Apr 10:54
· 30269 commits to master since this release

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

ESP-IDF v3.3.2 is a bugfix update for ESP-IDF v3.3. The latest stable release of ESP-IDF at time of writing is ESP-IDF v4.0.

ESP-IDF v3.3.x is a Long Term Support release and will be supported until March 2022.

Known Issues:

  • Bluedroid BLE could behave abnormally when the transmit queue is full and sending very large packets. If your application needs to send very large packets, please use the same approach as the ble_throughput example (specifically, call esp_ble_get_sendable_packets_num to do flow control in application).

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

New Features

Changes not compatible with earlier versions

(These changes are not breaking changes, but a project that is updated and then downgraded to the earlier version should take notice.)

  • Wi-Fi/BT Coexistence: Removed support to choose software coexistence preference manually in the project configuration, as it is now determined automatically by the coexistence scenario. If a project is updated to v3.3.2 and then downgraded to an earlier version, the removed configuration item SW_COEXIST_PREFERENCE will restore to the default setting ("Balanced").

Wi-Fi

  • Fixed WiFi AMSDU decrypt
  • Fixed Sniffer caused by WiFi mode switching
  • Fixed crash caused by block scan
  • Fixed crash caused by too big association request RSN information length
  • Fixed wifi stop when sniffer enable
  • Fixed wifi timer that leads to rare crash
  • Fixed the bugs for bandwidth
  • Added TX packet size check.
  • Added separate performance configuration option to move some Wi-Fi RX code to IRAM (disable this to save approx 17KB of IRAM)
  • Added check for Wi-Fi stop when calling esp_wifi_deinit
  • Fixed Wi-Fi RX bug by adding support for Wi-Fi/BT MAC register writing when the Wi-Fi/BT common clock is disabled.
  • Fixed bug for setting channel when in NULL mode.
  • Improved Wi-Fi performance
  • Include DMA reserved pool when allocating internal-only memory
  • Now places the Vendor Specific element at the end according to the protocol
  • Reduced the total binary size when using Wi-Fi.
  • Scanning: Fixed Wi-Fi scan RSSI error
  • WPS 2.0: Relax the check on older config methods. Allows WPS handshake to complete on some APs which incorrect 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

SmartConfig

  • Fixed bug where Airkiss couldn't get IP of the cellphone

ESP-MESH (Wi-Fi Mesh)

  • Cleared ie.child field when fully associated or the ie.child was connected
  • Fixed esp_mesh_send returns unexpected ESP_ERR_MESH_TIMEOUT
  • Fixed a lock error in esp_mesh_deinit
  • Fixed incorrect ie.assoc field
  • Increased roots_window_close_time from 60 seconds to 120 seconds
  • Modified mesh packets to use AC_VI instead of AC_BE
  • Fixed ie.rc_rssi field is not updated when receiving internal roots direct/forward events

Bluetooth

  • ACL: Changed the white_list_full message log level from debug to warning
  • Fixed initializer order for BT_CONTROLLER_INIT_CONFIG_DEFAULT when used from C++
  • Fixed issue that Bluetooth controller may not be able to enter sleep after end of wake up request
  • Include DMA reserved pool when allocating internal-only memory
  • OSI: Added handling of OSI memory calloc failure
  • OSI: Added length check for snprintf in osi config
  • bluedroid: Fix bug with fixed_queue semaphore pointer dereference
  • bluedroid: Fixed potential memcpy buffer overflow problem

ESP-BLE-Mesh (SIG Full-Feature Certified)

Guide to the new BLE Mesh support

  • All SIG BLE Mesh Core Features
    • PB-ADV and PB-GATT
    • Provisioner and Node roles
    • Friend and Low Power Node
    • Proxy Server & Client
    • Configuration Server & Client Models
    • Health Server & Client Models
    • Relay, Segmentation and Reassembly, Key Refresh, IV Update, etc
  • All SIG BLE Mesh Client Models
    • Generic Client Models
    • Sensor Client Models
    • Time and Scenes Client Models
    • Lighting Client Models
  • All SIG BLE Mesh Server Models
    • Generic Server Models
    • Sensor Server Models
    • Time and Scenes Server Models
    • Lighting Server Models
  • BLE Mesh and Wi-Fi Coexistence
  • Support both Bluedroid Host and NimBLE Host
  • Includes tutorials and technical documents
  • Performance Optimizations (Fast Provisioning Solution demo video, 100 nodes provisioned within 50s)

Bluetooth Classic

Controller

  • Fixed LMP sniff req timeout behavior
  • Fixed bugs about role switch

Bluedroid

  • HFP: Fixed HFP Client parsing of AT+CNUM
  • HFP: Fixed HFP Client parsing of AT+CIEV items
  • HFP: Disable sniff mode during (e)SCO connection for HFP
  • Choose AVRC category according to A2DP role
  • Fixed AVRC metadata length error
  • Fixed A2DP stuck when BLE advertisement interval is too short

Bluetooth Low Energy

  • Passed the SIG Bluetooth LE 5.0 Certification
    • Passed more test cases compared to ESP32 previous certification
    • Due to hardware limitations, ESP32 does not support Bluetooth LE 5.0 new features like 2M PHY, LE Long Range, and ADV Extensions

Bluedroid

  • Added missing GATT descriptors
  • Fixed not getting complete Identity Address (Public Address) of the Privacy-enabled Bonded Device after bonding
  • GATTC: Fixed open event triggering multiple times
  • GATTC: Fixed issue with pointer type conversion
  • 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

NimBLE

  • Corrected the connection handle in update and enc_change event in NimBLE examples
  • Added project configuration options for NimBLE host flow control
  • Added project configuration options to choose memory allocation strategy (dynamic vs static)
  • Added system level mbuf block count (MSYS_1) option in project configuration
  • Added host based privacy (RPA) feature support
  • Bugfix: Added ble_hs_lock() in ble_gap_unpair()
  • Bugfix: Fixed check for static random address in ble_hs_id_set_rnd()

Blufi

  • Fixed the wrong type from BLUFI_TYPE_DATA_SUBTYPE_SOFTAP_MAX_CONN_NUM to BLUFI_TYPE_DATA_SUBTYPE_SOFTAP_CHANNEL
  • Fixed invalid prepare write buffer length
  • Fixed incorrect Wi-Fi storage mode from WIFI_STORAGE_RAM to default WIFI_STORAGE_FLASH
  • Now checks if BLE is connected before sending a message via BLE

Coexistence

  • Removed support to choose software coexistence preference manually in the project configuration, as it is now determined automatically by the coexistence scenario
  • Improved Wi-Fi throughput in some Classic BT coexistence scenarios (idle, inquire scan, connected, sniff, a2dp pause, etc)
  • Supports coexistence with Wi-Fi + Classic BT + BLE mesh concurrently enabled
  • Improved Wi-Fi scan and connection success ratio when coexistence enabled
  • Fixed issue where A2DP stuck after creating another connection
  • Fixed Bluetooth event scheduling when Wi-Fi is also enabled.
  • Improved coexistence performance according to specific Wi-Fi/BT/BLE scenarios

LWIP

Core System

  • 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
  • Clear RF PHY peripheral status during early startup
  • esp_timer: Fixed overflow case when alarm_reg > counter_reg but FRC_TIMER_INT_STATUS is not set (#2954)
  • esp_timer: Fixed set_alarm function when timestamp < now
  • freertos: Fix configASSERT thread safety issues with unpinned tasks
  • intr_alloc: Fixed calling of ESP_LOG from a critical section
  • ipc: Prevent code being compiled in on single core configuration
  • log: Check for ISR context and use proper API to get Tick Count
  • panic handler: Now triggers system reset if cache error interrupt is set (prevent possible double interrupt or stuck panic handler situation)

Security Features

  • mbedTLS: Fixed hardware accelerated big number multiplication if operand and result overlap
  • Now hides Secure Boot & Flash Encryption config items when using CMake (these features are not supported in v3.3.x when using CMake)

Peripheral Drivers

  • I2S: Fixed crash due to dev array used in ISR (#4545)
  • I2S: Fixed data inversion issue when reading from ADC (#4557)
  • LEDC: Added missing ledc_set_pin declaration in header #4632
  • MCPWM: Corrected fault signal 3 for unit 2
  • MCPWM: mcpwm_fault_set_oneshot_mode now clears the status before setting the mode, no longer necessary to reset the peripheral first
  • MCPWM: Fixed a bug where mcpwm_capture_enable did not work correctly if a PWM channel had not already been enabled by a call to mcpwm_init (as enabling PWM channel had set the prescaler)
  • Timergroup: Fixed crash due to dev array used in ISR (#4545)

mDNS

  • mdns: respond to discovery with the proper pseudo name _services._dns-sd._udp (#4369)

HTTP Client

  • Fixed possible buffer overflow when determining last header item to be written
  • Added support to check the binary length of the received stream and compare it with the size mentioned in the header. This is particularly useful when downloading OTA firmware, as it allows checking for a truncated binary easily. (#3004)
  • Fixed issue where HTTP parser was not invoking message_complete callback (#2625 #4209)

ESP HTTPS OTA

  • Added new error checking API esp_https_ota_is_complete_data_received() to check all OTA data was received correctly. Another fix to improve error messages when binary file is truncated.
  • Fixed OTA with chunked server encoding
  • Fixed OTA in case of URL redirection from webserver
  • Added a check for Wi-Fi disconnect while performing an OTA update

Provisioning

  • wifi_provisioning_softap: Added new API to allow applications to provide an existing webserver instance externally, rather than requiring the provisioning layer to always create a new instance
  • Unified Provisioning: Fixed BLE characteristics read response issue when read response length is a multiple of () length

TCP Transport

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

ESP-TLS

  • Now correctly fails connection if esp_tls_conn_new() timeouts

MQTT

  • 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

Build System

  • cmake: Set the build directory correctly for mconf-idf
  • cmake: Fixed generation of phy_init_data.bin (#4567)
  • cmake: confgen.py: Now escapes special characters for cmake (#4751)
  • cmake: Fixed bug where PHY partition offset incorrectly set
  • cmake: Fixed order of extra component directories

Host Tools

  • gen_esp32part: Fix subtype in PartitionTable.find_by_type (#4723)
  • idf_monitor: Worked around usbser.sys bug (#4676)
  • idf_tools.py: Fixed downloading for tools which have "on_request" options for some platforms
  • idf_tools.py: Fixed install-python-env failure with virtualenv v20.0.0
  • MSYS2: Update the pre-compiled environment to include the pre-compiled Python 2 cryptography package

Examples

  • ble_hid_device_demo: Fixed HID value mask values to correctly match HID protocol
  • ble_throughput: Fixed memory leak, packet loss and crashing bugs
  • espnow example: Fixed bug calling esp_wifi_set_channel() before the sniffer enabled
  • OTA examples: Fixed bugs causing OTA to fail in some circumstances (#4394)
  • Wi-Fi: Added additional code snippets in esp_wifi_scan_example
  • Wi-Fi: Replaced strncpy() with safer alternative strlcpy()

Obtaining v3.3.2

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

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

Using git

To get this release, use the following commands:

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

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

Download an archive with submodules included

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

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