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

latest releases: v5.4-dev, v5.2.1, v4.4.7...
3 years ago

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

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

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

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

Download an archive with submodules included

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

Change Log

This is the list of changes since release v3.3.4

Major Changes

  • Added soft solution for ESP32 ECO3 live lock issue
  • NVS: if a user erases a partition which has been initialized, and then uses that partition without re-initializing it, this fails from now on. Hence, it's technically a breaking change. But before, this has been undefined behaviour anyway.

Known Issues

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

Wi-Fi

  • Fixed spin lock allocation in PSRAM bug
  • Optimized some debug logs for probe response
  • Optimized phy and soc files
  • Fixed the no event bug for connect
  • Fixed the bug that set_channel doesn't work for softAP
  • Drop packets received from the device itself.
  • Fixed an issue of timestamp check that didn't disconnect AP when AP's timestamp decreased abnormally
  • Update WiFi toolchain to 1.22.0-97-gc752ad5
  • Fixed the parameter "opt" not initialised bug in iperf example
  • Fixed links to example directories for fast_scan and scan (#5186)
  • Optimised TCP timer interval
  • Added wpa_supplicant debug logging as a configurable option
  • Optimized wifi log
  • Optimized 4-way handshake failure time
  • Fixed eapol frames encryption during reauth
  • Set softap beacon DTIM count according to TSF timer
  • Removed wifi tx buffer limits
  • Optimized WiFi TX performance
  • Added limitation for setting maximum WiFi TX power
  • Updated description for new API esp_wifi_set_inactive_time() in wifi.rst
  • Updated description to avoid using WiFi modem sleep for WiFi/BT coexistence
  • Fixed description of unusable API esp_wifi_restart()
  • Updated esp_now_fetch_peer description
  • Updated table format problem for esp_wifi_set_max_tx_power()
  • Reduced image size of Wi-Fi and Bluetooth by not linking coexist code
  • Fixed inconsistency of log levels
  • Added support for setting log-level while wifi_init for smartconfig and esp-now
  • Added check CSA state before CSA timer process
  • Use deport register instead of ahb
  • Check TID in ieee80211_recv_bar()
  • Revert to report specific reason code when receiving deauth during 4-way-handshark
  • Fixed the bug that tx ampdu parameter is not from peer device
  • Fixed csa timer issue
  • Changed country code last byte to space instead of \0
  • Fixed softap cannot forward A-MSDU
  • WiFi station connect improvement, avoid 100ms passive scan
  • Added FCS failed packets filter
  • Updated ESP32 phy lib to v4660
  • Fixed max tx power to 20dBm
  • Fixed the issue that the esp_wifi_sta_get_ap_info can not get country
  • Fixed phy version log could not disable issue
  • Scan failure should not cause system crash
  • Do not check the return value of esp_wifi_connect()
  • Fixed espnow receive fail

Bluetooth

Controller

  • Added protection for ACL-U packet type exchange procedure
  • Reduce IRAM consumption about 300kbytes
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed the crash after controller disable and re-enable
  • Fixed BT controller dead issue caused by clk overflow
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Fixed an issue that BT may use memory already freed when initializing bt controller

Bluetooth Low Energy

  • Fixed a crash when cache disabled
  • Fixed an HCI timeout issue caused by BLE scan
  • Fixed two BLE assert issues
  • Fixed a watchdog timeout issue of btu task during multi-connection
  • Fixed tx_prog insert error
  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed exl200
  • Added btdm_disable_adv_delay function to disable adv random delay
  • Fixed RPA addr update error

Bluetooth Classic

  • Workaround for a hardware bug when entering sniff mode
  • Removed dummy assert when ESP32 receives a passkey request
  • Fixed HCI Timeout of 0x40F or 0x41C opcode by freeing ACL RX Buffer in Exchange Memory
  • Added protection for ACL-U packet type exchange procedure
  • Added check for NULL valued combination key to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability (CVE-2020-26555)
  • Rewrite ld_acl_frm_isr to make clock read more precise and use less IRAM

Bluedroid

Bluetooth Classic

  • Added protection for btc_init
  • A2DP: fixed Sink send ESP_A2D_MEDIA_CTRL_CHECK_SRC_RDY command return success
  • A2DP: Fixed sending the ESP_A2D_MEDIA_CTRL_STOP or ESP_A2D_MEDIA_CTRL_SUSPEND command when disconnected will return success
  • Separated AVRC and A2DP
  • GAP: added remove bond device complete event in GAP module
  • GAP: fixed Read Rssi Delta Bug in Bredr (#5660)
  • Fixed bugs in esp_bt_gap_get_bond_device_list (#5395)
  • Fixed limit of devices which have more than 2 extend feature pages (#5470)
  • SPP: Optimize the function bta_jv_free_rfc_cb to make sure the server has a listening port after reaching the maximum RFCOMM session number and then closing the one of session
  • SPP: Fixed the error parameter in example_spp_initiator_demo.c at line 119(#5409)
  • SPP: Added API esp_spp_stop_srv to stop an SPP server and release the listening slot
  • SPP: Transfer ESP_SPP_CLOSE_EVT in BTU layer not just in BTC layer
  • SPP: Fixed API esp_spp_start_srv
  • SPP: fixed SPP using NULL point with dynamic memory
  • SPP: fixed SPP init dynamic memory bugs
  • SPP: fixed SPP flow control and vfs write
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • SPP: fixed SPP connect failed or discovery failed after the first connection release
  • SPP: Add protection for RFCOMM port
  • Fixed an issue that bluedroid enable takes long time sometimes

Bluetooth Low Energy

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Optimized the ble_spp_server_demo example
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: (CVE-2020-26555)
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Fix added to not accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555)
  • Added check for peer device bdaddr to be different than ours when sending conn req to prevent ‘Impersonation in the Pin Pairing Protocol’ Vulnerability
  • Fixed the problem of incomplete data packets caused by disordered acl data packets
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Support BLE Authorization
  • Support BLE Application Layer Encryption key size check
  • Support BLE Read Attribute value by UUID
  • Support BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Fixed the issue that L2CAP link disconnect timeout in host too short
  • Fixed a potential double free error

NimBLE

  • Check for received buffer size less than configured event buffer size
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone

ESP-BLE-Mesh

  • Added support of receiving heartbeat messages for Provisioner
  • Optimized Provisioner delete device function
  • Fixed storing the allocated next net_idx and app_idx
  • Continued restoring info even if failure happens
  • Split model settings store/clear operations
  • Added clearing heartbeat publication in settings
  • Added mutex for protecting settings operation
  • Added restored role check before enabling device
  • Fixed node info is not erased when deinit mesh stack
  • Optimized Provisioner related erase operations
  • No pending timeout when erasing mesh information
  • Update mesh device property to v2
  • Make mesh stack net buf debug option invisible
  • Fixed wrong description of BLE Mesh server model autorsp flag
  • New Kconfig options introduced to reduce code size
  • Added node local netkey/appkey get/add and bind AppKey functions
  • Updated connection parameters used by central
  • Need uuid when adding device for provisioning
  • Fixed Node ID adv with wrong timeout
  • Synchronized a few Zephyr BLE Mesh updates
    • Fix rpl not check by proxy configuration
    • Store kr phase after value changed

Blufi

  • Fixed an issue that sending longer customer data will lead to congestion
  • Fixed an issue that the sequence still increases when Blufi is sending data on disconnection

Wi-Fi Coexistence

  • Fixed three small issues in BLE dynamic priority
  • Fixed an issue that BLE failed to disconnect sometimes
  • Changed wifi scan duration from 120ms to 100ms

Wi-Fi Mesh

  • Fix FIX-ROOT does not reconnect to router when disconnect reason is too many
  • Added API esp_mesh_print_scan_result
  • Modified not to reset mesh_xonseq of self and children when flush_upstream_packets
  • Fixed not switch to a parent candidate which has the same layer and assoc as current parent
  • Fixed not arm parent monitor when a parent candidate is cleared without sending an event to mesh layer
  • Fixed the new voted root does not reconnect to router if rssi is weak
  • mesh: Removed coexist warnings in ESP_WIFI_MESH

LWIP

  • Fixed endless loop in DHCP parse reply
  • Fixed double-free of pbuf in ip4_reass
  • Fixed the issue in IPv6 ND6 queuing too many packets caused no memory issue
  • Fixed the IPv6 address status to invalid on setting an interface down
  • Fixed the UDPv6 issue of failing to receive data for the first time
  • Fixed DHCP routing issue when sending too many UDP packets
  • Enabled TCP initial sequence number (ISN) randomization hook
  • Fixed missing C++ header guards in netdb.h (#5900)
  • Fixed TCP OOSEQ (Out of sequence Queue) issue causing tcp recv assert
  • Fixed ICMP specify length issue

Peripheral Drivers

  • SPI: Fixed setting CS polarity correctly
  • SPI: Turned off DMA before CPU reset to avoid memory corruption after the reset
  • SDSPI: Fixed the probe issue that forbid sdspi working in highspeed mode
  • MCPWM: Fixed fault pin initialization issue
  • MCPWM: Fixed inaccurate period
  • CAN: Added support for running ISR when cache is disabled
  • CAN: Fixed a bug where log functions were called from within critical sections leading a crash
  • CAN: Fixed a bug where semaphores were taken from within a critical section
  • ADC: Fixed the issue that ADC power is affected by Wi-Fi usage
  • ADC: Disabled the synchronization operation function of ADC1 and DAC
  • I2C: Fixed PM lock release in case of a timeout
  • I2S: Fix I2S word-order issue caused by incomplete reset

Core System & FreeRTOS

  • Added soft solution for ESP32 ECO3 live lock issue
  • PSRAM: Fixed 16mbit PSRAM id read error
  • Added PSRAM stack check in backtrace
  • pthreads: Fixed priority inheritance in pthread_mutex_destroy
  • Fixed flash mmap failing when there are enough free MMU pages

Build System & Tooling

  • Fixed C identifier generation from embedded file in CMake
  • Core Dump: Fixed error if core dump partition is uninitialized
  • Updated OpenOCD version to 'v0.10.0-esp32-20200709'
  • Fixed path handling errors in gen_esp_err_to_name.py for Windows
  • ldgen: added support for paths with Unicode characters in archive files parsed by ldgen (#5996)
  • ldgen: fixed parsing of sections names on Windows
  • Brought a toolchain version 1.22.0-97-gc752ad5. Reverted a part of the PSRAM workaround because of regression. Added a C++ locale fix for multithreading
  • idf.py: removed broken defconfig from the list of idf.py commands
  • Added deprecation warning for Python 2 and Python 3.5 and older (in both Chinese and English)
  • esptool: updated to latest release/v2
  • Fixed xtensa-esp32-elf-gdb not working in espressif/idf Docker image (#5817)
  • Installation of 3.3 works on Windows

Storage

  • NVS: if a user erases a partition which has been initialized, and then uses that partition without re-initializing it, this fails from now on. Hence, it's technically a breaking change. But before, this has been undefined behaviour anyway.
  • SPI_FLASH: fixed issue that WEL is possibly left uncleared after some actions
  • SPI_FLASH: Don't call vTaskDelay in non-os context, fixing situation when coredump is triggered from an interrupt handler
  • vfs: Support setting UART line endings for specified UART number

Third Party Libraries

  • mbedTLS: Updated to mbedTLS release v2.16.7

Provisioning

  • wifi_provisioning_manager: Fixed issue faced while adding 2 or more endpoints in wifi_provisioning_manager ( #6121)

HTTP Client

  • Fixed issue with esp_http_client when disable_auto_redirect is enabled
  • Fixed issue with digest auth when opaque field is not present in response
  • Added a configuration in esp_http_client_config_t to set user agent string

ESP-TLS

  • Fixed incorrect closing of fd 0 on connection failure

ESP HTTPS OTA

  • Add fix to return failure if (-1) is returned from esp_http_client_read (#4960)

Security

  • Fixed openssl port to correctly convert between openssl and mbedTLS verification modes
  • Added config option to disable UART download mode entirely on ESP32 V3
  • Disabling plaintext flashing is now implemented by setting FLASH_CRYPT_CNT efuse to max value, to avoid also write-protecting the UART_DL_DISABLE efuse on ESP32 V3

Bootloader

  • Fixed anti-rollback feature memory map bug for partition size greater than 3.2MB (#5911)
  • Fixed bootloader_common_get_sha256_of_partition(), can handle a long image

WebSocket Client

  • Fixed potential deadlock if stop called from event handler
  • Fixed posting disconnect event twice when read error
  • Avoid timeout reconnection when set disable_auto_connect

MQTT

  • Added a config option for skipping common name check (espressif/esp-mqtt#158)
  • Websocket: Allow the query part of the uri to be a part of the path (espressif/esp-mqtt#161)
  • Added check for consistency between config settings
  • Added IDF version check for secure element feature
  • Fixed esp_mqtt_client_stop deadlock (espressif/esp-mqtt#163)
  • Added dispatch error event for read errors (#5704)
  • Cleanup expired messages when offline (#5668)
  • Renamed error type MQTT_ERROR_TYPE_ESP_TLS to MQTT_ERROR_TYPE_TCP_TRANSPORT
  • Added configuration value to set network timeout
  • Used size_t for all lengths to allow for other architectures
  • Removed unused retry_count field from outbox_item_t
  • Fixed typo for configuring OUTBOX_EXPIRED_TIMEOUT_MS
  • Fixed missing MQTT_API_UNLOCK in esp_mqtt_client_stop error path (espressif/esp-mqtt#173)
  • Added esp_mqtt_client_get_outbox_size API
  • Added config value to disable keepalive mechanism

TCP Transport

  • Fixed issue in SSL mode: if esp_transport_poll_read function is used, the cache data in mebdtls will block

Documentation

  • Specified that sleep wakeup source restrictions apply to all current ESP32 revisions (#4681)
  • Added information about Python 2 deprecation

Don't miss a new esp-idf release

NewReleases is sending notifications on new releases.