ESP-IDF Pre-release v3.3-beta3
Pre-releaseDocumentation 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
- New option to free approx 10KB of IRAM by moving some Wi-Fi functions to flash.
- Fixed Wi-Fi SoftAP mode multicast and broadcast saving and flushing when the associated stations enable 802.11 legacy power saving mode (called modem sleep in ESP32).
- New Efuse Manager component for working with Efuses
- New app rollback and secure anti-rollback features for OTA updates
- cmake: New support for adding IDF as libraries in a non-IDF CMake project, includes example projects
- Added official PPPoS support including cellular modem example
Wi-Fi Related
New Functionality
- Added option to free approx 10KB of IRAM by moving some Wi-Fi functions to flash, at expense of performance
- Fixed issue where PHY data was loaded even if NVS is not initialized
- New WireShark instructions for submitting Wi-Fi diagnostic information
- STA mode: Send the connected event after 4-way handshake with SoftAP is completed
- Added Wi-Fi Debug Log feature to enable detailed Wi-Fi logging
- Added new
WIFI_REASON_CONNECTION_FAIL
disconnect reason
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
- Added network channel switch function
- Added APIs esp_mesh_disconnect() and esp_mesh_connect().
- Expanded ESP-MESH documentation
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
- Added option to support BLE full scans
- Added option to support BLE Adv report flow control
- Added BLE blocking APIs
- Support OOB in SMP
- Added option to configure BLE controller task stack size
- Added option for slave to update connection parameters during pairing. Previously this behaviour was the default, but this can cause iOS and Windows 10 compatibility errors.
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
- Added API to clear RF PHY calibration data kept in NVS
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
- Added official support for PPPoS and cellular modem example
- dhcp_server: suppress send_offer debug output (#2924)
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
- New Efuse Manager component for working with Efuses
- Added configuration option to increase 32KHz crystal current during deep sleep, to prevent an issue where some crystals may fail to start
- Added APIs to get app firmware description
- Print the SHA-256 of the firmware ELF file in the panic handler (also available via firmware description API above)
- New app rollback and secure anti-rollback features
- When using 4MB PSRAM, allow configuring the HSPI host peripheral to output the clock (frees VSPI peripheral)
- POSIX: Allow setting core affinity and thread name for pthreads and std::thread (#2743)
- VFS: Implemented fsync() for the VFS UART driver
- VFS: Implemented standard poll() based on select() implementation
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
- fatfs: Implemented utime()
- fatfs: Added option to prefer external SPIRAM when allocating buffers
- nvs: Improved nvs_flash_init_partition() speed (#2847)
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
- Partition API examples
- BLE Compatibility Test
- FreeRTOS runtime statistics example
- NMEA0183 GPS data parser
- HTTP File Server
- PPPoS cellular modem
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