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

latest releases: v5.4-beta1, v5.1.5, v5.2.3...
4 years ago

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

ESP-IDF v3.3.3 is a bugfix update for ESP-IDF v3.3. IDF v4.1 is the latest stable release of ESP-IDF at time of writing.

ESP-IDF v3.3.3 will be supported until February 2022, according to the ESP-IDF Support Policy. Since ESP-IDF v4.1, each ESP-IDF major and minor release (V4.1, V4.2, etc) is supported for 30 months after the initial stable release date.

Major Bug Fixes

  • Security fix: Fixed AP switch to adjacent channel without disconnect (CVE-2020-12638)

Known Issues

  • The 1.22.0-96-g2852398 GCC 5.2.0 toolchain version added in this release includes an improved PSRAM fix. Extended stress testing of Wi-Fi & BT coexistence with heavy PSRAM use show there is a difficult to reproduce issue with the updated PSRAM fix. To avoid this problem it is possible to keep the toolchain supplied with ESP-IDF V3.3.2 (version 1.22.0-80-g6c4433a) and use this ESP-IDF version, despite the warning printed by the build system. This issue will be fixed in ESP-IDF V3.3.4.
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP

Wi-Fi

  • Fixed v3.3.2 introduced memory corruption when receiving fragment packets
  • Added API esp_wifi_ap_get_sta_aid()
  • Fixed the issue of TCP socket connection failure during TCP send/recv stress test
  • Fixed the issue that TCP connection can't be created by IPv6
  • Optimize Wi-Fi sleep in WiFi/BT coexist mode
  • Fixed esp_wifi_stop() crash if Wi-Fi not initialized
  • Fixed Wi-Fi log print level
  • Now returns an error if the AP's channel setting is out of range
  • esp_wifi_sta_get_ap_info() now returns actual values of group ciphers
  • Fixed TKIP/CCMP PN replay attack detection bug
  • wpa_supplicant: Fix some memleaks and invalid memory access
  • wpa_supplicant: allow NULL-padded WPS attributes
  • wpa_supplicant: bypass WPS-Config method validation
  • Fixed an issue where AP switches to adjacent channel without disconnect
  • Fixed a timeout issue of EAPOL four-way handshake
  • Fixed a crash issue when peer is fetched after delete cur_peer
  • Fixed the issue that softAP updates second channel wrong
  • Improved esp_wifi_set_max_tx_power description
  • Changed the default value of TCP_MSS to 1440 and TCP_MSS Range : [536 1460]
  • Removed auth_changed event
  • Fixed WPA2 enterprise authmode threshold
  • Fixed obsolete interface gethostbyname
  • Avoid parsing RSN/WPA IE's after connection
  • Removed AUTH_CHANGED reason code logic

Bluetooth

Bluetooth Classic

Controller

  • Fixed compiler err when performance optimization enabled
  • Fixed ASSERT for RXDESC and save the log for debug
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed ASSERT in ld_pscan.c at line 1032
  • Fixed free lmp tx buf in EM in the procedure of handling LMP_detach_Req when not received the last acknowledge from peer device and separate them by ACL State
  • Fixed no mode change event reported when slave initiates unsniff procedure and a transaction collision occurs
  • Fixed Interrupt WDT timeout due to interrupt disabled period
  • Fixed Connection fail in loop
  • Fixed ASSERT(25,0) in lc_task.c
  • Disabled frequent warning log in ld_acl
  • Move default log level to WARNING instead ERROR in BT Controller

Bluedroid

  • Removed duplicate variable for BCM_STRNCPY_S and BCM_STRCPY_S
  • Improved description of esp_bt_gap_start_discovery and esp_bt_gap_cancel_discovery

Bluetooth Low Energy

Controller

  • Fixed ASSERT(1024, 0) in rwble.c
  • Fixed ASSERT(512, 0) in rwble.c
  • Fixed controller tx default octets error
  • Added invalid channel map parameters check (Invalid Channel Map bug fix)
  • Added invalid connection parameters check
  • Fixed channel map update failed when latency is greater than 0
  • Fixed ASSERT(65535, 0) in lld_evt.c when update channel map

Bluedroid

  • Fixed bluedroid btc deinit crash
  • Authentication fixes in Legacy and Secure Connection
  • Added congest directly triggers the callback and modify congest event trigger threshold
  • Fixed notify malloc failed when multi_connection
  • Fixed the issue that don't dequeue the command queue after processing the read_by_type_req
  • Fixed the master does not report BLE_AUTH_CMPL_EVT after the device restarts and re-encrypts
  • Added coexist API to enable BLE connection dynamic priority

NimBLE

  • Reset master and slave states on host reset
  • Added ble_gap_reset_state to clear advertising and discovery states when ble_hs_reset is called
  • Fixed Nimble task crash after disconnect under heavy load
  • Fixed the issue that unable to restart Advertising after NimBLE reset event occurred
  • Fixed the issue that task watchdog got triggered in BLE functions
  • Fixed the issue that NimBLE client cannot reconnect to bonded peer when both devices use RPA
  • Upstream fixes
    • Reduced the size of the compiled binary (PR #6)
    • Added upstream NULL pointer check (PR #701)
    • Fixed pairing procedure abort on unexpected pairing request (PR #710)
    • Fixed connection flags after pairing (PR #730)
    • Removed notification for update process timeout (Vol 6, Part B, section 5.2 ) (PR #782)
    • Fixed CCCD behavior in case of an overflow and while storing for bonded devices (PR #790)(PR #804)
    • Host based Privacy (RPA) fix (PR #7)

ESP-BLE-Mesh

  • Added functions for model subscribe/unsubscribe group address locally
  • Added check of the result of creating timers
  • Added BLE Mesh scan whitelist test functions
  • Added support of sending BLE advertising packets when mesh is enabled
  • Updated the check of sensor model states during model initialization
  • Added mutex protection for segmented msg operations
  • Fixed node failed to restore information during initialization
  • Fixed node not erased information completely during node reset
  • Added length check for some mesh copy operations
  • Initialized device name during proxy server initialization
  • Added support of checking model status with variable length
  • Added support of getting node info with pre-configured node name
  • Added a function to get the entry of the nodes table
  • Added check if the subnet still exists before updating its "beacon_sent"
  • Associated replay protection list size with nodes count
  • Removed BLE_MESH_MAX_STORED_NODES option from menuconfig
  • Fixed Provisioner provisioning deadlock
  • Fixed the issue that Provisioner failed to publish
  • Updated next allocated address when node info is added
  • Added check if the assigned node address is duplicated
  • Removed some internal redundant functions
  • Provisioner continues restoring node info event if failure happened
  • Updated client message timeout value calculation
  • Fixed uninitialized client local parameters
  • Fixed the misspelling of time scene macro name
  • Fixed compile error when -O2 (performance) is chosen
  • Fixed compile error when only proxy enabled
  • Fixed Provisioner unicast address not updated in fast provisioning
  • Fixed Provisioner ignored messages from nodes whose unicast addresses are not in the provisioning database when fast provisioning is enabled
  • Fixed Provisioner failed to send Secure Network Beacon if no device is provisioned
  • Fixed the issue Do not #define bool when compiling in C++ (PR #5100)
  • Fixed the issue bt_mesh_generic_server received message recv_rssi is always 0 (PR #5505)
  • Fixed node failed to send messages to fixed group addresses when RELAY is not supported
  • Removed the previously added patch for Bluetooth Mesh Android App from other vendor
  • Fixed wrong log output with bt_hex
  • Optimized a few BLE Mesh log output
  • Updated BLE Mesh stack structure, including:
    • Rename mesh_kernel.* to mesh_timer.*
    • Split mesh mutex related into a separate file
    • Split mesh os related into a separate file
    • Split mesh_util.h into different header files
    • Move fast provisioning related into a separate file
  • Added Zephyr v2.0 BLE Mesh fixes, including:
    • Enable Segmented Control Messages
    • Allow models to skip a periodic publish interval by returning an error
      from the publish update callback if update fails
    • Fixed the issue that provisioning buffer initialization resulted in a corrupted buffer with buf->data pointing to NULL
    • Add support of reliable sending when publishing
    • Add GATT Proxy Spec 1.0.1 changes
    • Fixed typo in condition in comp_add_elem of cfg_srv
    • Add support of Group resends in proxy nodes
    • Add support of Segmented TX to groups
    • Rework msg_cache
    • Add Friend SeqAuth cleanup
    • Fixed restore when revoke keys
    • Fixed dereferencing pointer before checking for NULL
    • net_key_status only pull one key idx
    • Add comment explaining use of byte order
    • optimize net_buf_simple routines
    • Add 24 bit variants
    • Add support for 24 bit data type
    • Add 48 bit variants
    • Add support for 48 bit data type
    • Add support for 64 bit data type
    • Use 24-bit functions
    • Add push functions for supported bit-variants
    • Add and use transport macro definitions
    • Friend with unknown appkey
    • Transport tx fields overflow
    • Update model recv operation
    • Add net_buf_simple_init_with_data
    • Correct the return type
    • Port full implementation of tinycrypt
  • BLE Mesh examples miscellaneous updates, including:
    • Rename common_vendor_models to components
    • Move the button & example init into components
    • Renam some of the example files
    • Fix some tutorial links in README.md
    • Add mesh example common nvs operations
    • Add nvs operations for some examples
    • Add BLE Mesh vendor model examples
    • Add BLE Mesh sensor model examples

Blufi

  • Blufi: When the format of the received data packet is wrong, now replies with an error response

Wi-Fi Coexistence

  • coexistence: fixed incorrect wakeup delay when DFS is enabled
  • coexistence: improved Wi-Fi scan and connection success ratio when coexistence enabled
  • Set AFH in BTDM Task when WiFi changes channel
  • Fix BLE disconnect due to instant of channel map is too small in coexist

LWIP

  • Fixed UDP packet loss caused by ARP cache
  • Fixed IP6 slow memory leak
  • Make IP6 fragment configurable on menuconfig
  • Added separate option to disable LWIP_ASSERT
  • Add TCP LINGER option to menuconfig
  • Fixed the issue that enabling macro LWIP_ND6_RDNSS_MAX_DNS_SERVERS will cause lookup failure
  • Fixed the issue that in IPv6 environment, the socket can still send data after the station is disconnected from WiFi

Peripheral Drivers

  • ADC: Disabled the synchronization operation function of ADC1 and DAC
  • GPIO: Fixed gpio_wake_up_disable not working for RTC IO
  • PSRAM: Added support for 2T mode
  • SDMMC: Correctly check function parameters before using them (PR #5000)
  • SIGMA_DELTA: Fixed the cpp guard in the header file
  • TIMER_GROUP: Fixes the interrupt enable/disable of timer groups
  • UART: Fix issue in reading UART rxfifo_cnt on ESP32.

Core System & FreeRTOS

  • Added config option to retry 32 kHz external crystal calibration
  • esp_event: Fixed a crash when unregistering a handler instance in itself (PR 4139)
  • esp_event: Added semicolon to esp_event_loop_create(...)
  • heap: Calling malloc(0) now always returns a NULL pointer, regardless of poisoning configuration
  • efuse: improved timing settings when burning efuses
  • efuse: Fixed call to esp_efuse_get_coding_scheme() if flash encryption is enabled and log level is Debug. (#4862)
  • Fixed case where panic handler tries to print ELF SHA-256 value but cache is disabled

Build System & Tooling

  • Updated toolchain to version 1.22.0-96-g2852398
  • cmake: Added support of outputting partition table info for partition_table target
  • cmake: Fixed build failure when git repo is initialized but no first commit
  • cmake: Fixed build issue on make when build directory is a symlink
  • kconfiglib: fixed a Unicode error in kconfiglib while opening files (#4977)
  • tools: Make Unicode from subprocess result in the CMake convert script
  • ldgen: added determinism in mapping rule order in the output file
  • Updated pre-compiled MSYS2 environment, uses Python 3 now (no more Python 2 in MSYS2)
  • partition_table: Fix parttool.py crashes when retrieving partition info
  • Fixed the broken python lint on Github Action

Provisioning

  • BLE: Changed service_uuid to non-standard 128-bit UUID
  • WiFi provisioning: Fixed the issue that Wi-Fi provisioning manager ignores subsequent Wi-Fi events if the first Wi-Fi connection attempt fails

OTA

  • Fixed size calculation when erasing partition range for OTA image (would try to over-erase by one sector if the length was already sector aligned

HTTP Server

  • Fixed an issue which could cause issues with LRU purge
  • Updated LRU counter on accepting a new connection

mbedTLS

  • Updated to upstream release v2.16.5

Bootloader

  • Added definition of esp_clk_apb_freq

esp_common

  • esp_common: Added version definitions in code and build system

WebSocket Client

  • Backported the websocket client and example
  • Added configurable timeout for disconnecting if no PONG received with a certain period
  • Fixed handling of received messages longer than the receive buffer
  • Fixed fragmented send setting proper opcodes
  • The client now aborts the connection if send fails

MQTT

  • Added option to configure mqtt task priority (# PR4947)
  • Fixed an issue which could result in a race condition and subsequent crash
  • Changed an error print to use ESP_LOGE instead of ESP_LOGI
  • Moved Sending MQTT connect message log from Info to Debug level

Storage

  • spi_flash: Fixed the inconsistency in clock between SPI0 and SPI1. (#5099)
  • spi_flash: Fixed spi flash clock config error when using bootloader build with 40MHz mode and app build with 80MHz mode, the system can not start up correctly

Third Party Library

  • newlib: Removed macro definitions for non-threadsafe libc function versions (not safe to use in multithreaded app)

Documentation

  • Updated some BLE-MESH documents
  • MQTT: Makes clear that publish API could block
  • Updated doc regarding usage of WPA/WEP security modes

Examples

  • Renamed ble_mesh_vendor_models to common_vendor_models in examples
  • ble_mesh: Added bluedroid and nimble example configurations
  • ble_mesh: Added ble mesh sensor model examples
  • ble_mesh: Change the EXTRA_COMPONENT_DIRS used by examples
  • ble_mesh: updated ble mesh nvs store example
  • ble_mesh: fixed example README & tutorial link error
  • Add softap example channel configuration

Obtaining v3.3.3

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

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

Download an archive with submodules included

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

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.