ESP-IDF Release v3.0
Documentation for release v3.0 is available at http://esp-idf.readthedocs.io/en/v3.0/.
This is the list of changes since release v3.0-rc1.
If upgrading from previous stable release V2.1, check the v3.0-rc1 release notes for changes which also apply.
Breaking Changes
Release v3.0 is largely compatible with apps written for ESP-IDF v3.0-rc1. However some breaking behaviour and significant API changes have been introduced:
-
Some I2S APIs which mixed return values and error codes have been deprecated. New APIs have been introduced to replace them.
i2s_write
should be used instead ofi2s_write_bytes
andi2s_push_sample
, which are deprecated.i2s_read
should be used instead ofi2s_read_bytes
andi2s_pop_sample
, which are deprecated
-
A new parameter
remote_addr_type
is added foresp_ble_gattc_open()
(esp_ble_gattc_open()) -
Modify the parameter of the
ESP_GATTS_ADD_CHAR_DESCR_EVT
BLE GATTS event, renaming thechar_uuid
parameter of this event todescr_uuid
(!1484) -
Modify the Classic BT AVRC events
- Remove the
feat_mask
parameter from theESP_AVRC_CT_CONNECTION_STATE_EVT
event - Delete the
ESP_AVRC_CT_MAX_EVT
event - Add a new event
ESP_AVRC_CT_REMOTE_FEATURES_EVT
- Remove the
Build System and tools
New functionality
- Support C++ source files with .cc extension
- idf_monitor now supports pausing log output from the console
- Support editorconfig for editing ESP-IDF source files
- Fix for reduced RTC core voltage when waking from sleep
Bug fixes
- Restore application compatibility with pre-IDF v2.1 bootloaders
- Fix SysView support when building in single core mode
Bootloader
- Disable logging before UART is reconfigured by second stage bootloader (possibly setting a custom baud rate)
- Always boost VDD_SDIO voltage 1.8V -> 1.9V if flash frequency is 80MHz
FreeRTOS
New Functionality
- Backported FreeRTOS V9.0.0 task deletion behaviour: a deleted task will be immediately cleaned up if it is not currently running.
- IDF ringbuffer: Add new APIs xRingbufferGetCurFreeSize(), xRingbufferIsNextItemWrapped(), xRingbufferCreateNoSplit()
Bug fixes
- Fix for cross-core deleted tasks not being cleaned up in some circumstances.
System Library Features
New Functionality
- spi_flash: New configuration options to detect invalid writes
Bug Fixes
- Fix esp_timer accuracy issues
- Fix realloc() behaviour when heap tracing is enabled
- Fix realloc() memory corruption bug when heap poisoning is enabled
- Fix memory fragmentation issue when splitting large free blocks
- Fix compilation error when RTC used as clock source
- Fix invalid SPIRAM clock changes by clock subsystem
- Fix clock initialization in single core mode
- Restrict linker size of DRAM to enforce static RAM limits, rather than erroring at runtime
Drivers
New functionality
- ADC eFuse factory calibration functionality
- I2S driver: New function i2s_write_expand() to automatically expand bit width of supplied samples to match hardware
- UART driver: Allow reading character pattern detection position without modifying the pattern detection queue
Bug fixes
- I2C driver: fixes for timeout recovery, thread safety
- I2C driver: allow NACKing last byte read
- I2S driver: fix inaccurate errors returned from some functions
TCP/IP
New Functionality
Bug Fixes
- Fix closing TCP socket causes system crash bug
- Fix the bug that incorrect event is posted when setting static IP of soft-AP or Ethernet
Known Issues
- Long time TCP traffic stability test causes LWIP assert, it is only found in dual core mode with PSRAM is enabled
- TCP traffic stability test causes Interrupt watchdog timeout, it is found in dual core mode and when the WiFi mode of the device is configured as WIFI_MODE_APSTA mode
WiFi
Bug Fixes
- Fix a bug that system crashes when station disconnects from AP.
- Fix the bug that receiving beacon time is not correct.
- Fix the bug that
esp_wifi_restore()
will cause a fail wifi connection.(#233) - Fix the bug that in sniffer mode it asserts when receive misc data.(#1037,#1404)
- Fix a memory leak in espnow
- Fix the bug that wpa2 assert when disconnect from AP
- Fix QoS bug in 11g mode
- Fix
esp_wifi_stop()
never returns bug - Fix
esp_wifi_deinit()
causes system assert bug - Fix EAPOL retransmission causes system crash bug
- Fix WPS not work correctly on WIFI_MODE_APSTA bug (#1045)
- Fix sha256 signature of WPA2 causes system assert bug ([#1297](Unable to use wpa2_enterprise example on ESP32))
Performance Improvements
- Optimize WiFi retransmission and timeout mechanism
BLE
Known Issues
- Bluetooth controller will crash if ESP32 is overloaded, e.g. running the BLE throughput example and printing a lot of logs at the same time
Link Layer
- Fix the bug where the
LL_LENGTH_REQ
packet is sent even if the remote device doesn't support this feature
GATT Server
- Fix the incorrect result of the
esp_ble_gatts_get_attr_value()
event when the characteristic value that the event gets is written by the remote device usingPrepare Write Request
(#1612)
GAP
- Fix the bug where the start/stop advertising completed events sometimes are not accurate
- Fix the bug where the
connection parameters update procedure
sometimes fails in the period of pairing - Fix the bug where the
connection parameter update procedure
sometimes leads to disconnection - Fix the bug where the bonding list that read from the flash is not correct once the chip reboots
SMP
- Fix the bug where the reconnection sometimes fails when the device is already paired (#1561)
Performance optimization
- Improve the stability of the multi-connection
Bluetooth Common Parts
- Fix some bugs related to the memory leakage (BLE SMP, A2DP, Timer)
- Fix some bugs that may lead to crash (xQueueGenericSend, page scan procedure, etc)
Classic BT
- Add the option to configure the stack size of
A2DP sink task
through menuconfig - Fix the bug where the restart of
media task
fails when theesp_a2d_sink_deinit()
is called in the period of connection (#1522
) - Fix the incorrect
disc_rsn
parameter value of theESP_A2D_CONNECTION_STATE_EVT
event when the receiving device acts as a master - Fix the incorrect
remote_bda
parameter value of theESP_AVRC_CT_CONNECTION_STATE_EVT
event - Fix the bug that causes the initiating side to lose the
link key notification
event when the receiving device is repairing insimple_pairing mode
(#1275) - Fix the bug about
string_to_bdaddr
where the address of the device that read from the flash is not converted correctly whennano formatting options
is enabled in the menuconfig
openssl wrapper
- Fix compilation error when ALPN is disabled in mbedTLS configuration
mbedTLS
Bug Fixes
- Backport security fixes from v2.8.0 to v2.6.0. Covers CVE-2018-0488, CVE-2018-0487, CVE-2017-18187, CVE-2018-9988, CVE-2018-9989.
Ultra Low Power Processor
Bug Fixes
- Fix I_DELAY macro error when using new toolchain
- Document execution time for ULP instructions
mDNS
Bug Fixes
- Produce TXT records compatible with all mDNS parsers
- Fix issue when mDNS service is NULL
External Libraries
- cJSON updated to v1.7.1, includes some memory corruption fixes
Documentation
- Add tutorials in some BLE examples
- Modify the readme files in some BLE/BT examples
- Improved RMT driver API documentation
Examples
New Examples
- New RMT driver example
Bug Fixes
- Fix some bugs for the Eddystone example (#1682)
Obtaining v3.0
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 pre-release, use the following commands:
git clone https://github.com/espressif/esp-idf.git esp-idf-v3.0
cd esp-idf-v3.0/
git checkout v3.0
git submodule update --init --recursive
This is the recommended way of obtaining v3.0 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v3.0.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.