Skip to content

ESP-IDF Pre-release v3.3-beta3

Pre-release
Pre-release
Compare
Choose a tag to compare
@projectgus projectgus released this 13 May 12:18
· 28633 commits to master since this release

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

v3.3-beta3 is a prerelease of ESP-IDF v3.3. See below for a list of known issues in this beta release.

ESP-IDF v3.3-beta3 is a minor update for ESP-IDF v3.2.x. Release v3.3-beta3 is compatible with apps written for ESP-IDF v3.x, but features in v3.3-beta3 may not be available in earlier versions.

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

Known Issues

  • WPS does not work properly
  • esp_smartconfig_stop not return under some rare circumstances
  • BT SPP may ASSERT when use with Wi-Fi
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.

Major New Features

Wi-Fi Related

New Functionality

Bug Fixes

  • Reduced cases where Wi-Fi needs to listen for RX when waking from sleep state, depending on beacon contents
  • Fixed thread safety bug in WPS
  • Reduced IRAM usage of libnet80211.a
  • Fixed Wi-Fi baseband reset issue after baseband switched to 11b weak signal mode
  • Fixed bug that if set_config() was called before connecting to an encrypted AP, PMK would be recalculated
  • Fixed STA HT20/40 coexist
  • Fixed compliance by disallowing WEP/TKIP with HT rates
  • Improved WPA2 support
  • Fixed SoftAP mode multicast and broadcast saving and flushing when the associated stations enable 802.11 legacy power saving mode (called modem sleep in ESP32).

ESP-MESH Related

New Functionality

Bug Fixes

  • Fixed failure of mesh stop caused by block-sending.
  • Fixed when FIXED_ROOT is set, 2nd layer devices can not receive mesh event ESP_ERR_MESH_NO_PARENT_FOUND.
  • Fixed when FIXED_ROOT is set and the root turns off mesh function, 2nd layer devices do not look for new parents.
  • Now disconnects from parent/router when the DSSS channel in received beacon is different from the home channel.

Wi-Fi/Bluetooth Coexistence Related

  • Reduced binary size when coexistence is not enabled, or if only BT is used
  • Fixed issue that spike transmit power of WiFi could be higher than configured when Bluetooth coexistence enabled

Bluetooth Related

BLE Related

New Functionality

Bug Fixes

  • Fixed btc_gatts_arg_deep_copy() and bta_gatts_indicate_handle()
  • Fixed interrupt watchdog timeout in Bluetooth controller
  • Fixed BLE assert(512) or assert(1536) in rwble.c at line 222

Controller Related

  • Supported vendor HCI commands

RF PHY Related

Ethernet related

New Functionality

  • Added support for IP101 PHY

Bug Fixes

  • Cleaned up invalid register mappings for LAN8720 PHY
  • Fixed the power and init functions for LAN8720 PHY
  • Enforced that only ETH_CLOCK_GPIO_IN mode can be used if PSRAM is in use (due to GPIO16 and GPIO17 being occupied by PSRAM)
  • Fixed OTA when using Ethernet
  • Fixed multicast when using Ethernet
  • Fixed potential memory leak of ethernetif structure

LWIP related

tcpip_adapter related

  • Fixed zero initialization of unused system_event_t fields
  • Added field to pass client IP address along with SYSTEM_EVENT_AP_STAIPASSIGNED (#2949)

Network Protocol Related

mDNS related

  • Fixed uninitialized memory bug after some operation failed and strdup() step skipped

HTTP Client

New Functionality

  • Added support for TLS Client authentication (#2688)
  • Added capability to load certificates from the ESP-TLS global CA store

Bug Fixes

  • URI schemes are now treated as case insensitive
  • Fixed infinite loop on esp_http_client_fetch_headers()
  • Fixed bug where member paths were not correctly cleaned up following an error
  • Fixed issue where esp_http_client_open() would set wrong content length (#2967)

HTTP Server

New Functionality

  • Added new "esp_https_server" component allowing HTTP server with TLS connection (#2578)
  • Added uri_match_fn field in config structure which allows a custom URI matching function to be set
  • Added feature to invoke user configurable handlers for server errors (#3005)

Bug Fixes

  • Updated and fixed problems with httpd_sess_get_ and httpd_sess_set_ APIs
  • New helper APIs for sending string content
  • Remove use of 'template' C++ keyword (#2956)
  • Now only accepts new socket connections if server has capacity to handle more concurrent connections
  • Fixed support for LF terminated headers

HTTPS OTA Library

  • Added config option to (optionally) allow insecure HTTP updates
  • Added support for configurable OTA buffer size (#2998)

Unified Provisioning Library

  • Fixed correct conn_id being passed to protocomm_req_handle in transport_simple_ble_write() and transport_simple_ble_exec_write()
  • Fixed case when simple_ble_start() is used with Bluetooth Dual Mode (Classic & BLE)

mbedTLS

  • Fixed AWS-IoT and ESP-TLS builds if ALPN is disabled in mbedTLS config
  • cmake: mbedTLS project is now built using the upstream project's CMakeLists file

ESP-TLS

  • New esp_tls_init_global_ca_store() function (#2654)

App Trace Related

System Related

New Functionality

Bug Fixes

  • Fixed a newlib crash if built with -O2 optimization level
  • When using section attributes (IRAM_ATTR, DRAM_ATTR, etc), now places each variable in a unique section - allows gc-sections to work, and prevents section type conflicts
  • Moved newlib qsort() and setlocale() functions to flash not IRAM when PSRAM is enabled (reduces overall IRAM usage)
  • Added more complete description for CRC APIs in ESP32 ROM
  • esp_intr_alloc: Fixed bug where level 5 interrupts were never called (#3039, #3040)
  • hwcrypto: Fixed issue where esp_sha() function could disable interrupts for an extended period (#3127)
  • secure boot: Use mbedTLS SHA-256 implementation not esp_sha() in IDF apps

Register and Low-Level System Related

  • Fixed incorrect divider setting in rtc_clk_cpu_freq_to_config()
  • Reduced FLASH_CRYPT_CNT register width to 7 bits

FreeRTOS Related

  • Simplified usage of spinlocks protecting the tick count

Peripheral Driver Related

New functionality

  • CAN: Added functions can_clear_transmit_queue() and can_clear_receive_queue() (https://github.com/espressif/esp-idf/issue/2906)
  • RMT: New function rmt_get_channel_status() to get status of all channels
  • RMT: New function rmt_get_idle_level() (#2666)
  • RMT: Allow polling use of rmt_wait_tx_done() with wait_time set to 0 (#2666)
  • SPI: New API to show the owner of the SPI host explicitly
  • SPU: Split configuration of SPI ISRs in IRAM from the IRAM-safe interrup flag, allowing more flexibility
  • SPI: Added runtime checks for valid DMA buffers, valid transaction length

Bug Fixes

  • CAN: Fixed multiple documentation errors (#2898, #2794)
  • CAN: Fixed can_reconfigure_alerts() returning incorrect current_alerts. (#3028)
  • SPI: Fixed selection of input-only vs input-output pins for master vs slave (#2455)
  • SPI Slave: Improved peripheral timing configuration (#1346, #2393)
  • I2S: Fixed APLL clock source when using PDM/ADC/DAC mode
  • LEDC: Fixed errors when fading is too fast (#2903)
  • LEDC: Fixed errors when setting duty cycle and updating immediately (#2903)
  • Timer_Group: Fixed bug where initializing hardware timers could crash after a system soft reset

Storage Related

Third Party Libraries

  • freemodbus: Use semaphores instead of FreeRTOS critical sections for concurrency support

Debugging Related

  • Backtraces now work from inside interrupts to the task code which was running at the time
  • core dump: New API to retrieve current core data layout in flash
  • core dump: New menuconfig option for max tasks in core dump
  • core dump: Fixed core dump when flash write address checks are enabled
  • gdbstub: Allow gdb to list tasks and switch tasks in the gdbstub (#2828)

Build System Related

  • Added initial support for multiple targets (currently only ESP32 is supported)
  • New linker script generation feature
  • cmake: New support for adding IDF as libraries in a non-IDF CMake project, includes example projects
  • cmake: Fix Windows path issues in the convert_to_cmake helper script
  • Set ESP_PLATFORM as a variable in the build system (#2601)
  • cmake: Automatically re-run idf.py under winpty if running in MSYS environment

Host Tools Related

  • nvs_util: Added support for creating unique encryption keys

Examples Related

New Examples Added

Changes in Examples

  • ESP-NOW: Added config item for Long Range mode
  • Wi-Fi Sniffer: Added capability to send captured packets to the host via JTAG
  • Console: Added NVS support
  • openssl_server: Fixed Content_length

Documentation Related

  • Translated more IDF Programming Guide content into Chinese

Obtaining v3.3-beta3

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

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

Download an archive with submodules included

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