Skip to content

Releases: espressif/esp-idf

ESP-IDF Pre-release v4.3-beta1

10 Feb 10:12
Compare
Choose a tag to compare
Pre-release

Documentation for pre-release v4.3-beta1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.3-beta1/

ESP-IDF v4.3 is a minor update for ESP-IDF v4.2.

Obtaining v4.3-beta1

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

This is the recommended way of obtaining v4.3-beta1 of ESP-IDF.

Download an archive with submodules included

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

Changelog

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

Major New Features

  • Support for ESP32-C3 SoC
    • Wi-Fi
      • 802.11 bgn mode
      • 802.11 LR mode
      • Station, SoftAP, sniffer mode
      • ESP-NOW
      • CSI support
      • TX/RX A-MPDU, RX A-MSDU
      • TX Fragment, TXOP
      • WEP/TKIP/CCMP
      • WPA/WPA2-PSK/WPA2-ENT/WPA3-PSK
      • WAPI-PSK
      • ESP-Touch v1/v2
      • Fine Time Measurement(FTM)
      • Device Provisioning Protocol(DPP)
      • WAPI-PSK
      • Network-assisted roaming using 802.11k (Radio Measurements) and 802.11v (BTM) specifications
      • Wi-Fi Modem/Light Sleep
      • Wi-Fi Mesh support
    • Bluetooth
      • BLE 5.0 Controller support
      • BLE Modem/Light sleep support
      • UHCI support
      • Bluedroid host support with BLE5.0
      • NimBLE host support with BLE5.0
      • BLE-Mesh support
    • Security
      • Secure boot
      • Flash encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • HMAC peripheral
      • RNG
      • Digital signature
      • Memory protection
      • mbedtls integration of Digital Signature
    • Peripherals
      • UART
      • Timer group
      • GPIO — Supported, except IO19
      • SPI Master
      • SPI Slave
      • I2C
      • LEDC
      • SigmaDelta
      • RMT
      • ADC
      • ADC DMA
      • SD card over SPI
      • Ethernet over SPI
      • Brownout detector
      • TWAI
      • GDMA
    • System features
      • Cache
      • esp_timer
      • SPI Flash auto suspend and auto resume
      • RTC Slow clock selection
      • Task, interrupt watchdogs
      • Efuse API
      • espefuse.py
      • Stack overflow "canary" detection
      • RISC-V architecture support
      • Watchpoint stack protection
      • Brownout reset
    • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
      • Light sleep MAC/BB power down
      • Light sleep CPU power down
    • Debugging
      • Core dump
      • OpenOCD
    • Protocols
      • Provisioning
      • Other protocols on top of TCP/IP
  • Added more support for ESP32-S2 SoC
    • Touch Element library for touch sensor
    • Waterproof
    • USB Host HAL layer
      • TX A-MSDU
      • FTM
      • DPP
      • WAPI-PSK
      • ESP-Touch v2 support
      • 11kv
      • SPI Slave HD Append Mode
    • ADC calibration scheme v2
      • TinyUSB CDC Device class
      • Async memcpy driver
  • New Wi-Fi features for ESP32 SoC
    * TX A-MSDU
    * FTM
    * DPP
    * WAPI-PSK
    * ESP-Touch v2 support
    * 11kv
  • Updated FreeRTOS, based on upstream version v10.2.0
  • Heap: Switched heap algorithm to one based on TLSF, improves performance especially when using a high number of allocations in PSRAM
  • Light sleep: Added new options to reduce average current in light sleep: PM_SLP_IRAM_OPT, PM_RTOS_IDLE_OPT, WIFI_SLP_IRAM_OPT
  • Preview support for the "ESP32-S3 Beta 2" SoC is provided in v4.3. This SoC is different from the ESP32-S3 production SoC which will be supported in ESP-IDF v4.4, and ESP-IDF v4.3 will not work on the production ESP32-S3. After ESP32-S3 is released, support for "ESP32-S3 Beta 2" is planned to be removed in a future v4.3 bugfix release.

Major Bug Fixes

  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Breaking Changes

  • BLE_Mesh: Previously if starting/stopping BLE advertising when BLE Mesh is enabled, the corresponding events will be notified through the callback registered by esp_ble_mesh_register_prov_callback(). With this MR, the function esp_ble_mesh_register_ble_callback() need to be invoked for registering the callback used for BLE coexistence related functionalities (i.e. ADV/SCAN)
  • esp_tls_wolfssl: Previously an API named wolfssl_tlsext_host_name was inappropriately used for domain (host) name check.
    In earlier case if the domain name was different than the ISSUER field in the peer's server certificate, then the connection might have succeeded (provided skip_common_name = false).
    The old API is now replaced with wolfSSL_check_domain_name, which makes wolfSSL to check if the domain name provided matches with the ISSUER name on the peer's server certificate. With this API change, wolfSSL_connect should return a fatal error in case of a domain name mismatch
  • esp-tls: esp-tls client connection will now return error by default in the absence of server verification option
  • tinyusb: The return value of tusb_init has changed from tusb_error_t to bool in the upstream tinyusb (hathach/tinyusb@d887829)
  • NVS Encryption: "NVS Encryption" feature is now automatically enabled whenever the Flash Encryption feature is enabled.

Future Breaking Changes

Known Issues

  • ESP32-C3 does not support BLE multiple connections.
  • Deep sleep power consumption on ESP32-C3 is higher than expected (currently 0.5mA).
  • Nimble pairing may trigger task watchdog. We can disable CONFIG_BT_NIMBLE_CRYPTO_STACK_MBEDTLS in menuconfig to workaround this issue.
  • Occasionally not return from Wi-Fi Mesh esp_mesh_deinit function.
  • ESP32-C3 Bluetooth modem sleep using external crystal cannot work in the condition of 80MHz mininum CPU frequency when Dynamic Frequency Scaling or Automatic Light Sleep is enabled.
  • Skip image validation when exiting deep sleep doesn't work in ESP32-S2 or single core ESP32 unless the option Enable RTC fast memory for dynamic allocations is disabled

Known issues are planned to be fixed before the final v4.3 release.

Bluetooth

Controller

  • Reduce IRAM consumption about 300 bytes
  • Added support of Bluetooth 5.0

Bluetooth Low Energy

  • Fixed exl200, add btdm_disable_adv_delay, fix RPA addr update error

Classic Bluetooth

  • Fixed unexpected LMP timeout problem when rejecting remote device
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory

Bluedroid

  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: -26558
  • Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: -26555
  • Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability
  • Disabled Bluetooth before esp_restart

Classic Bluetooth

  • Fixed crash caused by dividing zero
  • SPP: fixed SPP vfs demo crash when use dynamic memory
  • SPP: fixed SPP vfs memory leaks when exception occurs
  • Added protection for ACL-U packet type exchange procedure
  • Rejected connection request if BD_ADDR of peer is same as ours (-26555)
  • Added API to config QoS for Classic Bluetooth ACL link
  • HFP: modified hfp console style by using esp console
  • HFP: first atuomatic connection of HFP
  • HFP: fixed the crash issue when bta_hf_client_sco_co_out_data is called
  • AVRC: fixed the issue that target unhandles set_player_app_value cmd
  • A2DP: added Init & Deinit Event for A2DP
  • A2DP: fixed A2DP sink audio crash
  • A2DP: fixed data stream underrun for A2DP sink
  • Added SPP inp...
Read more

ESP-IDF Release v4.1.1

29 Jan 08:21
Compare
Choose a tag to compare

Documentation for IDF v4.1.1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.1.1/

ESP-IDF v4.1.1 is a bugfix update for ESP-IDF v4.1. ESP-IDF v4.2 is the latest stable release at time of writing.

ESP-IDF v4.1.x will be supported until February 2023, according to the ESP-IDF Support Policy.

Obtaining v4.1.1

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 v4.1.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.1.1
cd esp-idf-4.1.1/

This is the recommended way of obtaining v4.1.1 of ESP-IDF.

Download an archive with submodules included

Attached to this release is an esp-idf-v4.1.1.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-v4.1.1.zip

Changelog

This is the list of changes since release v4.1:

Major Bug Fixes

  • Bluedroid: Fixed ‘Impersonation in the Passkey Entry Protocol’ Vulnerability: CVE-2020-26558
  • Bluedroid: Added comments to avoid ‘Impersonation in the Pin Pairing Protocol' Vulnerability: (CVE-2020-26555)
  • Bluedroid: Added comments to avoid ‘Authentication of the LE Legacy Pairing Protocol' Vulnerability.
  • Bluedroid: Fixed the issue that bluedroid may accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555).
  • Secure Boot: Fixed crash in app if signature verification fails (#6210)

Bluetooth

Classic Bluetooth

Controller

  • Fixed BT controller dead if CLKN overflow
  • Provided a workaround for an issue when entering sniff mode
  • Rewrite ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Remove dummy assert when ESP32 receives a passkey request
  • Fixed incorrect time computation and replaced the use of "+" with CLK_ADD2()
  • Rewrite ld_acl_frm_isr to make clock read more precise
  • Fixed memory corruption caused by bluetooth memory release

Bluedroid

  • Separated BTA_JV_L2CAP to reduce bin size of SPP profile

  • SPP: Added API esp_spp_stop_srv()

  • SPP: Fixed the error parameter in spp examples (#5408)

  • SPP: Moved RFCOMM rx flow control in btc layer

  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000

  • SPP: Fixed task watch dog when running SPP demo in VFS mode

  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled

  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API

  • HID: Added support for more Bluetooth HID devices (#5481)

  • HFP AG: fixed error of AG API return line (#5554)

  • HFP AG: fixed AG Example Outgoing Callback Not Triggered (#4967)

  • HFP: Enabled PCM config in menuconfig and controller

  • A2DP: Added information to Application layer that the A2DP is connecting to peer device

  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up

  • A2DP: Added a2dp init & deinit state variable to inidcate a2dp statement

  • Separate A2DP and AVRC init procedure and set the sequence of initialization of them

  • Added bool open_fail to choose whether post disconnection event to app layer

  • GAP: Fixed read rssi delta issue in bredr (#5660)

  • GAP: Authentication fixes in Legacy and Secure Connection

  • GAP: Calling esp_bt_gap_get_bond_device_list in some scenarios may return invalid Bluetooth address (#5395)

  • GAP: Fixed redundant events of ESP_BT_GAP_DISC_STATE_CHANGED_EVT occurring in registering GAP callback function

  • Added BTC Init failure protection

  • Changed state machine set before EVT up to APP layer in some cases

  • Fixed BTC task name mismatch (#4966)

  • Fixed issue that bluedroid enable takes long time

  • Fixed the issue that state failed to synchronize between controller and host when disconnected

  • Fixed crash caused by calling a2dp_deinit directly when a2dp connected

  • 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.

  • Fixed the issue that bluedroid may accept connection request if BD_ADDR of peer is same as ours (CVE-2020-26555).

Bluetooth Low Energy

Controller

  • Added BLE connection paramter check
  • Fixed channel map instant reverse
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed cache disable crash
  • Fixed tx_prog insert error
  • Changed the default value of the TxOctets support length from 27 to 251
  • Fixed hci timeout, added timer to monitor scan event
  • Fixed assert(9, 10) when rx and evt_end interrupts exist at the same time, use the information of rx to determine the execution order
  • Fix ble assert(1024, 0), ADV_UNDERRUN error
  • Fixed ble assert(512, 0), IFS_UNDERRUN error
  • Fixed assert(10, 9) when the AFPM happens
  • Fixed exl200, add btdm_disable_adv_delay, fix RPA addr update error
  • Fixed the problem of early release of pointer(p_ccb) in function
  • Fixed HCI Timeout by 0x40F or 0x41C by freeing ACL RX Buffer in Exchange Memory
  • Added protection for ACL-U packet type exchange procedure
  • Fixed a potential double free error

Bluedroid

  • Added support of BLE Authorization
  • Added support of BLE Application Layer Encryption key size check
  • Added support of BLE Read Attribute value by UUID
  • Added support of BLE Non-Resolvable Private Address setting
  • Fixed BLE incorrect encryption flag setting
  • Fixed the btu task watchdog timeout during multi-connection
  • Fixed name typo of BTA_GATTS_CREATE_SRVC_EVT event (#5446)

Blufi

  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection
  • Fixed an error caused by incorrect conn_id parameters
  • Add a macro to control the compilation of blufi

NimBLE

  • Added Non Resolvable Private Address support to existing Host based Privacy framework
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c (apache/mynewt-nimble#843)
  • Check for received buffer size less than configured event buffer size
  • Fixed some bugs in NimBLE NVS storage and ble_eddystone
  • Remove recursive call (apache/mynewt-nimble#857)
  • Added missing MYNEWT_VAL_BLE_L2CAP_COC_MPS definition (#5825)

ESP-BLE-Mesh

  • Updated connection parameters used by Central
  • Added Node local NetKey & AppKey get/add/bind functions
  • New Kconfig options introduced to reduce code size
  • Fixed wrong description of BLE Mesh server model auto_rsp flag (#5966)
  • Fixed info not erased when deinit node with "erase_flag" set to true
  • No store pending timeout will be used when node is not provisioned or Provisioner is disabled with erase operation performed
  • Make mesh stack net buf debug option invisible
  • Updated mesh device property to v2
  • Check device role when enabling node/Provisioner functionality
  • Added mutex to protect settings operations
  • Optimized Provisioner erase info operations
  • Optimized Provisioner delete device function
  • Check if stack is initialized before initializing vendor client
  • Fixed not using the latest iv_index for provisioning
  • Synchronized a few BLE Mesh updates from Zephyr
    • Using callbacks for model init operations
    • Optimized model recv message operation
    • Added net_buf_simple_init_with_data
    • Porting the full implementation of tinycrypt
  • Avoid unnecessary assert in mesh stack
  • Fixed updating ccc handle incorrectly when using NimBLE host
  • Client model related miscellaneous optimizations
  • Fixed handling health current status incorrectly
  • Added proxy cfg pdu length check
  • Reworked using dev flag to check scan status
  • Added more checks of input provisioning bearers
  • Updated options of using PSRAM for BLE Mesh
  • Updated send_ttl in btc layer when receiving a message (#5300)
  • Added support to get node info with pre-configured node name (#5397)
  • Fixed compile error when only proxy enabled
  • Fixed the issue that recv_rssi of received messages is always 0 (#5505)
  • Added a few checks of model status with variable length
  • Added check of if subnet exists before updating beacon_sent
  • Fixed the issue of DO NOT #define bool when compiling in C++ (#5100)
  • Fixed wrong log output when using bt_hex
  • Fixed node failed to send messages to 0xFFFF
  • Added support of subscribing group address by a local model (https://github.com/espressif/esp-idf/iss...
Read more

ESP-IDF Release v4.2

07 Dec 03:48
Compare
Choose a tag to compare

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

ESP-IDF v4.2 is a minor update for ESP-IDF v4.1.

ESP-IDF v4.2.x will be supported until June 2023, according to the ESP-IDF Support Policy. The Service Period (during which this version is recommended for new projects) is until December 2021.

Major New Features

  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Support for ESP32+ATECC608A (ESP32-WROOM-32SE) platform along with sample application
  • Added feature to utilize residual IRAM as data memory for ESP32 single core configuration
  • Added support of Bluetooth 5.0 for ESP32
  • Added ESP-HID Component
  • WiFi: Added and utilize WPA3/WPA2 Mixed mode Authtype
  • WiFi: Added support of multiple phy init data
  • WiFi: Added wpa_supplicant parsing support for WEP40 key
  • ESP-WIFI-MESH: Support chain topology
  • ESP-WIFI-MESH: Support mesh network power save function (Beta version)
  • Support for ESP32-S2 SoC
    • Wi-Fi
      • Wi-Fi driver
      • Wi-Fi modem sleep
      • Wi-Fi with automatic light sleep
    • Security
      • Flash & PSRAM encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • Digital signature
      • HMAC
      • Secure Boot V2
    • Peripherals
      • UART
      • Timer group
      • GPIO
      • SPI Master
      • SPI Slave
      • I2C
      • I2S
      • LEDC
      • PCNT
      • SigmaDelta
      • RMT
      • USB Device
      • Touch sensor
      • ADC
      • DAC
      • SD card over SPI
      • Ethernet over SPI
      • RTC interrupts
      • Brownout detector
      • Temperature sensor
      • ULP coprocessor (RISC-V)
    • System features
      • Cache
      • esp_timer
      • SPI Flash
      • PSRAM — 2MB
      • I/D RAM separation
      • OTA
      • RTC Slow clock selection (e.g. 32k XTAL)
      • Task, interrupt watchdogs
      • Efuse API and espefuse.py
      • Console over USB
      • DFU flashing
      • CDC flashing
      • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
    • Debugging
      • Core dump
      • app_trace
      • Systemview
      • OpenOCD
    • Protocols
      • Modbus
      • Provisioning
      • Other protocols on top of TCP/IP

Known Issues

  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet. This issue is under active debugging.
  • When Wi-Fi mesh power save is enabled, mesh performance is not desirable on large networks (>50 nodes)
  • Can't discover devices in limited discovery inquiry scan mode by general discovery

This is the list of changes since release v4.1:

Bluetooth

Classic Bluetooth

Controller

  • Fixed the issue that when host runs different core from controller and sleep enabled,HCI timeout may occur
  • Added user invisible kconfig for BT MAC offset (#5320)
  • Fixed time jitter in FHS during role switch
  • Fixed time jitter in first POLL packet during role switch
  • Fixed failure in receiving EDR packet after role switch
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Set non-zero initial value for BT sleep clock cycle to avoid div-by-zero error in function "btdm_us_2_lpcycles" when BT modem sleep is not enabled
  • Fixed assert when creating connection cancellled
  • Fixed ASSERT for RXDESC
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • 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
  • Fixed future events scheduling error in case of wifi and bluetooth
  • Fixed clk offset error in ld_acl.c
  • Fixed assert issue and null pointer issue in controller
  • Fixed BT controller dead if CLKN overflow
  • Added a workaround for a hardware bug when entering sniff mode
  • Rewrote ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Removed dummy assert when ESP32 receives a passkey request

Bluedroid

  • Separate BTA_JV_L2CAP for less bin size
  • Fixed cases having fallback to link up event
  • GAP: Fixed error EIR type in config eir event
  • GAP: fixed the issue when calling esp_bt_gap_remove_bond_device to remove a bonded device and then calling esp_bt_gap_get_bond_device_list, it may return invalid Bluetooth address (#5395)
  • SPP: Added API esp_spp_stop_srv()
  • SPP: Fixed task watchdog when running SPP example in VFS mode
  • SPP: Fixed the error parameter in spp examples (#5408)
  • HID-Host: Added HID Host support in Bluedroid
  • A2DP: Fixed the issue that A2DP_SINK example cannot successfully compile when Compiler Optimization Level is performance (O-2)
  • AVRCP: Replaced U+0092 with regular apostrophes in avrc_defs.h (#4667)
  • HFP-AG: Fixed connection failure and crash when receiving unknown AT command
  • HFP-AG: Fixed error of return line in AG API (#5554)
  • HFP-AG: Fixed AG audio crash (change the return position)
  • HFP: Enabled PCM config in menuconfig and controller
  • Fixed the issue that bluedroid enable takes long time
  • Fixed read rssi delta issue in bredr (#5660)
  • Updated read rssi related function names
  • HFP-AG: fixed Ag Example Outgoing Callback Not Triggered (#4967)
  • SPP: Moved RFCOMM rx flow control in btc layer
  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000
  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API
  • Fixed the issue that state failed to synchronize between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled
  • SPP: added protection for SPP api
  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up
  • Added limitations to use of A2DP and AVRCP because of their coupling in the implemetation
  • Fixed BTC task name mismatch (#4966)
  • Added BTC Init failure protection

Bluetooth Low Energy

Controller

  • Added BLE connect parameter check
  • Fixed channel map instant reverse
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed ble crash issue triggered by ble event irq miss(0x20000) (d2a1d18d)
  • Fixed the crash when controller disabled and then re-enabled for ble
  • Fixed the missed channel map update when the slave latency is greater than 0.
  • Fixed the missed channel map update when the instant value is 0
  • Fixed assert(10, 9), when the AFPM happens
  • Fixed tx_prog insert error
  • Fixed HCI timeout
  • Added timer to monitor scan event
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed the issue that the ble terminate ack packet cannot be received with a high probability in coex mode
  • Fix assert(9, 10), Insert the llcp packet to the top of the tx_preg linked list
  • fixed memory damage caused by bluetooth memory release
  • Fixed no event end isr sometimes when scanning
  • Fixed can not disconnect issue due to supervision timeout when LLC is in LLC_DISC_BUSY status

Bluedroid

  • Added API to query the number of available buffers for the current connection
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Changed HCI task size back to 2048
  • Fixed the issue of incomplete data packets caused by disordered acl data packets
  • Fixed ble memory leak issue, buff_semaphore was not released
  • Added HID Host and Device support in Bluedroid
  • Added some general HID utilities and definitions to help integrate with other stacks and native USB
  • Fixed the issue that bluedroid task pinned_to_core doesn't take effect
  • Authentication fixes in Legacy and Secure Connection
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed btc disable crash some times
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the btu task watchdog timeout during multi-connection

Blufi

  • Reply with an error response when the format of the received data packet is wrong
  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection

NimBLE

  • Added menuconfig option for NimBLE host flow control
  • Added Non-Resolvable private address (NRPA) support
  • Added NimBLE config options in sdkconfig.rename
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Added ble_hs_lock in ble_gap_unpair: upstream upstream (apache/mynewt-nimble#584)
  • Added Host based privacy (RPA) feature support
  • Added IRAM allocation provision under nimble_platform_mem_malloc()
  • Fixed repeated pairing fa...
Read more

ESP-IDF Pre-release v4.2-rc

23 Nov 22:20
Compare
Choose a tag to compare
Pre-release

Documentation for pre-release v4.2-rc is available at https://docs.espressif.com/projects/esp-idf/en/release-v4.2/

ESP-IDF v4.2 is a minor update for ESP-IDF v4.1.

This is the list of changes since release v4.1:

Major New Features

  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Support for ESP32+ATECC608A (ESP32-SE) platform along with sample application
  • Added feature to utilize residual IRAM as data memory for ESP32 single core configuration
  • Added support of Bluetooth 5.0 for ESP32
  • Added ESP-HID Component
  • WiFi: Added and utilize WPA3/WPA2 Mixed mode Authtype
  • WiFi: Added support of multiple phy init data
  • WiFi: Added wpa_supplicant parsing support for WEP40 key
  • ESP-WIFI-MESH: Support chain topology
  • ESP-WIFI-MESH: Support mesh network power save function (Beta version)
  • Support for ESP32-S2 SoC
    • Wi-Fi
      • Wi-Fi driver
      • Wi-Fi modem sleep
      • Wi-Fi with automatic light sleep
    • Security
      • Flash & PSRAM encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • Digital signature
      • HMAC
      • Secure Boot V2
    • Peripherals
      • UART
      • Timer group
      • GPIO
      • SPI Master
      • SPI Slave
      • I2C
      • I2S
      • LEDC
      • PCNT
      • SigmaDelta
      • RMT
      • USB Device
      • Touch sensor
      • ADC
      • DAC
      • SD card over SPI
      • Ethernet over SPI
      • RTC interrupts
      • Brownout detector
      • Temperature sensor
      • ULP coprocessor (RISC-V)
    • System features
      • Cache
      • esp_timer
      • SPI Flash
      • PSRAM — 2MB
      • I/D RAM separation
      • OTA
      • RTC Slow clock selection (e.g. 32k XTAL)
      • Task, interrupt watchdogs
      • Efuse API and espefuse.py
      • Console over USB
      • DFU flashing
      • CDC flashing
      • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
    • Debugging
      • Core dump
      • app_trace
      • Systemview
      • OpenOCD
    • Protocols
      • Modbus
      • Provisioning
      • Other protocols on top of TCP/IP

Known Issues

  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • When GPIO wakeup is enabled, light sleep current of ESP32-S2 is 2mA higher than expected value in datasheet. This issue is under active debugging.
  • When Wi-Fi mesh power save is enabled, mesh performance is not desirable on large networks (>50 nodes)
  • Can't discover devices in limited discovery inquiry scan mode by general discovery

Bluetooth

Classic Bluetooth

Controller

  • Fixed the issue that when host runs different core from controller and sleep enabled,HCI timeout may occur
  • Added user invisible kconfig for BT MAC offset (#5320)
  • Fixed time jitter in FHS during role switch
  • Fixed time jitter in first POLL packet during role switch
  • Fixed failure in receiving EDR packet after role switch
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Set non-zero initial value for BT sleep clock cycle to avoid div-by-zero error in function "btdm_us_2_lpcycles" when BT modem sleep is not enabled
  • Fixed assert when creating connection cancellled
  • Fixed ASSERT for RXDESC
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • 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
  • Fixed future events scheduling error in case of wifi and bluetooth
  • Fixed clk offset error in ld_acl.c
  • Fixed assert issue and null pointer issue in controller
  • Fixed BT controller dead if CLKN overflow
  • Added a workaround for a hardware bug when entering sniff mode
  • Rewrote ld_acl_frm_isr to make clock read more precise and use less IRAM
  • Removed dummy assert when ESP32 receives a passkey request

Bluedroid

  • Separate BTA_JV_L2CAP for less bin size
  • Fixed cases having fallback to link up event
  • GAP: Fixed error EIR type in config eir event
  • GAP: fixed the issue when calling esp_bt_gap_remove_bond_device to remove a bonded device and then calling esp_bt_gap_get_bond_device_list, it may return invalid Bluetooth address (#5395)
  • SPP: Added API esp_spp_stop_srv()
  • SPP: Fixed task watchdog when running SPP example in VFS mode
  • SPP: Fixed the error parameter in spp examples (#5408)
  • HID-Host: Added HID Host support in Bluedroid
  • A2DP: Fixed the issue that A2DP_SINK example cannot successfully compile when Compiler Optimization Level is performance (O-2)
  • AVRCP: Replaced U+0092 with regular apostrophes in avrc_defs.h (#4667)
  • HFP-AG: Fixed connection failure and crash when receiving unknown AT command
  • HFP-AG: Fixed error of return line in AG API (#5554)
  • HFP-AG: Fixed AG audio crash (change the return position)
  • HFP: Enabled PCM config in menuconfig and controller
  • Fixed the issue that bluedroid enable takes long time
  • Fixed read rssi delta issue in bredr (#5660)
  • Updated read rssi related function names
  • HFP-AG: fixed Ag Example Outgoing Callback Not Triggered (#4967)
  • SPP: Moved RFCOMM rx flow control in btc layer
  • SPP: Fixed the parameter size of API spp_vfs_write cannot exceed 1000
  • SPP: Added events if there are some internal errors when calling esp_spp_xxx API
  • Fixed the issue that state failed to synchronize between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • SPP: Fix SPP using NULL pointer when bluedroid dynamic memory option is enabled
  • SPP: added protection for SPP api
  • A2DP: Added reaction for A2DP SNK & SRC disconn req when no link up
  • Added limitations to use of A2DP and AVRCP because of their coupling in the implemetation
  • Fixed BTC task name mismatch (#4966)
  • Added BTC Init failure protection

Bluetooth Low Energy

Controller

  • Added BLE connect parameter check
  • Fixed channel map instant reverse
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed ble crash issue triggered by ble event irq miss(0x20000) (d2a1d18d)
  • Fixed the crash when controller disabled and then re-enabled for ble
  • Fixed the missed channel map update when the slave latency is greater than 0.
  • Fixed the missed channel map update when the instant value is 0
  • Fixed assert(10, 9), when the AFPM happens
  • Fixed tx_prog insert error
  • Fixed HCI timeout
  • Added timer to monitor scan event
  • Fixed the issue that supervision timeout in LLC DISC busy state can not disconnect
  • Fixed the issue that the ble terminate ack packet cannot be received with a high probability in coex mode
  • Fix assert(9, 10), Insert the llcp packet to the top of the tx_preg linked list
  • fixed memory damage caused by bluetooth memory release
  • Fixed no event end isr sometimes when scanning
  • Fixed can not disconnect issue due to supervision timeout when LLC is in LLC_DISC_BUSY status

Bluedroid

  • Added API to query the number of available buffers for the current connection
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Changed HCI task size back to 2048
  • Fixed the issue of incomplete data packets caused by disordered acl data packets
  • Fixed ble memory leak issue, buff_semaphore was not released
  • Added HID Host and Device support in Bluedroid
  • Added some general HID utilities and definitions to help integrate with other stacks and native USB
  • Fixed the issue that bluedroid task pinned_to_core doesn't take effect
  • Authentication fixes in Legacy and Secure Connection
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed btc disable crash some times
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the btu task watchdog timeout during multi-connection

Blufi

  • Reply with an error response when the format of the received data packet is wrong
  • Fixed the issue that sending longer customer data will cause congestion
  • Fixed the issue that the sequence still increases when Blufi is sending data on disconnection

NimBLE

  • Added menuconfig option for NimBLE host flow control
  • Added Non-Resolvable private address (NRPA) support
  • Added NimBLE config options in sdkconfig.rename
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Added ble_hs_lock in ble_gap_unpair: upstream upstream (apache/mynewt-nimble#584)
  • Added Host based privacy (RPA) feature support
  • Added IRAM allocation provision under nimble_platform_mem_malloc()
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c: upstream (apache/mynewt-nimble#843)
  • Included changes in blecent example: upstream (https://github.com/apache/mynew...
Read more

v4.0.2

06 Nov 01:01
Compare
Choose a tag to compare

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

ESP-IDF v4.0.2 is a bugfix update for ESP-IDF v4.0. ESP-IDF v4.1 is the latest stable release at time of writing.

ESP-IDF v4.0.x will be supported until October 2021, 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 Changes

  • Fixed potential live lock cache issue with ESP32 ECO3
  • Updated toolchain to esp-2020r3

Wi-Fi

  • PHY: improve the RX performance when ESP32 wakes up from sleep and CPUs work on 240MHz
  • Added API esp_wifi_ap_get_sta_aid to get aid, which can be used by esp_wifi_deauth_sta
  • Implemented ESPNOW + PMF Co-existence
  • Fixed the issue that the API esp_wifi_get_config didn’t return correct sta.listen_interval
  • Fixed the issue that bandwidth and phy mode not correctly stored into NVS
  • Fixed the failure to get IPV6 link-local address when AP forwarded multicast NS packets back to the station itself
  • Fixed the issue that setting TX DMA buffer above 32 would not take effect
  • Fixed the issue that Airkiss fail to find hidden APs
  • Fixed the issue that the first several AMPDU packets may be discarded by peer device
  • Fixed the issue that STA fail to connect an AP if it never disconnected from the AP
  • Fixed a crash in ESPNOW
  • Fixed a crash when wifi stop after deinit
  • Fixed the issue that wifi_scan_time_t type not correct, which may lead to wrong scan parameter
  • Fixed two issues in regulate domain information update
  • Fixed the issue that APs with WPA2-PSK-SHA256 key management categorised as Open during scan
  • SoftAP: Fixed the issue that the TSF of SoftAP would be reset when sending a CSA
  • SoftAP: Fixed the issue that the secondary channel of softAP not correctly updated
  • SoftAP: Fixed the issue that memory leak happens after SoftAP de-initialized
  • PMF: Fixed the issue that when PMF enabled in STA will cause SoftAP not work correctly
  • PMF: Skipped WPA-TKIP profile if PMF is required
  • PMF: Fixed crashes in receiving management packets
  • wpa_supplicant: Skipped & cleared Supplicant PMK Cache for mismatching AP config
  • wpa_supplicant: fixed some memory leaks and invalid memory access
  • wpa_supplicant: deinited wpa2 states in wifi deinit
  • WPA2-Enterprise: Fixed the issue that STA may try to connect to an open AP when
    configured to connect to a WPA2-Enterprise AP
  • WPA3: fixed WPA3 and WPA2 transition related failures
  • WPA3: fixed WPA3 connection timeout issue in coexistence scenario
  • WPS: allowed NULL-padded WPS attributes
  • WPS: bypassed WPS-Config method validation
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Moved Wi-Fi clock enable/disable code into IRAM
  • Improved esp_wifi_set_max_tx_power description
  • Improved document about security mode and reason code
  • Dump internal heap size instead of heap size in Wi-Fi log

Bluetooth

Classic Bluetooth

Controller

  • Fixed ASSERT for RXDESC and save the log for future debug
  • Fixed ASSERT in ld_acl at line 302 for clkoff1 and localval
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed ASSERT(25,0) in lc_task.c
  • Fixed ASSERT in ld_pscan.c at line 1032
  • Fixed ld_acl schedule issue to parity shift
  • Fixed connection failure in Event Arbitory loop
  • Freed lmp_tx_buf in Exchange Memory in the procedure of handling LMP_detach_req PDU when not received the last acknowledge from the peer device
  • Fixed the issue that when slave initiate unsniff procedure and meet transaction collision, no mode change event is reported
  • Now reset AFH channel map in BTDM Task when WiFi channel changes
  • Fixed int_wdt due to disabling interrupts too long time
  • Disabled frequent warning log in ld_acl
  • Moved default log level to WARNING instead ERROR in BT Controller

Bluedroid

  • Improved description of esp_bt_gap_start_discovery and esp_bt_gap_cancel_discovery
  • Fixed BT Classic GAP bond list corrupt or invalid after removing bond (#5395)
  • Added API esp_spp_stop_srv() for SPP Acceptor
  • Now esp_spp_disconnect() transfers event ESP_SPP_CLOSE_EVT in BTU Task rather than just BTC Task
  • Optimized bta_jv_free_rfc_cb to make sure the spp server always has a listening port after reaching the maximum RFCOMM session number
  • Fixed the issue that when calling esp_spp_start_srv() without any SPP client connecting to the server, calling esp_spp_deinit() can not release the port
  • Now SPP uses NULL point with dynamic memory
  • Kconfig: Updated data type and the default value of the vendor-specific even

Bluetooth Low Energy

Controller

  • Fixed ASSERT(64,0) in rwble.c
  • Fixed assert(9, 10) when rx and evt_end interrupts exist at the same time and use RX information to determine the execution order
  • Fixed assert(10, 9) when missing evt_end or rx and evt_end come the same time
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fiexed cache disable crash when connection parameters update
  • insert the contol packet to the top of the tx prog list
  • Added connect parameter check
  • Fixed assert(1024,0) in rwble.c
  • Fixed assert(512,0) in rwble.c
  • Fixed channel map update failed due to instant reverse
  • Changed tx default octets to 251

Bluedroid

  • Added api to query the number of available buffers for the current connection
  • Fixed the issue of receiving incomplete data packets caused by disordered acl data packets
  • Fixed memory leak when buff_semaphore was not released
  • Fixed cases having fallback to link up event
  • Fixed the state not synchronized between controller and host when disconnected
  • Fixed the watchdog timeout of btu task during multi-connection
  • Authentication fixes in Legacy and Secure Connection, prevent a remote device from doing a Bluetooth impersonation attack
  • Added support for more Bluetooth HID devices

NimBLE

  • Added Non Resolvable Private Address (NRPA) support to existing Host based Privacy (RPA) framework
  • Fixed repeated pairing failure in RPA framework
  • Reduced the size of the compiled binary (PR #6)
  • Allow the host to resolve peer RPA without using local RPA (PR #7)
  • Closing bracket conditional for C++ (PR #12)
  • Upstream fixes
    • Fix NULL pointer passed as a parameter (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)
    • Fix potential issue with strncpy in os_mempool.c (PR #843)

ESP-BLE-Mesh

  • Added functions for model subscribe/unsubscribe group address locally
  • Addded check of the result of creating timers
  • Updated the check of sensor model states during model initialization
  • 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
  • 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 that recv_rssi of received message is always 0 (PR #5505)
  • Fixed send_ttl is not updated in the received message context
  • 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
  • Make the Kconfig options of using different memory for allocation more clear
  • Added check if the length of received proxy configuration pdu is valid
  • Added check if the input provisioning bearers is valid
  • Fixed handling the received Health Current Status incorrectly
  • Opt...
Read more

ESP-IDF Release v3.2.5

04 Nov 23:47
Compare
Choose a tag to compare

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

ESP-IDF v3.2.5 is the final bugfix release for ESP-IDF v3.2.x.

As previously announced, Espressif will stop supporting v3.1 and v3.2 releases after October 2020. For more information please see the ESP-IDF Support Policy. Customers who are using v3.2 release series are encouraged to migrate to more recent releases. ESP-IDF v4.1 is the latest stable release of ESP-IDF at time of writing.

Major Changes

  • Fixed potential live lock cache issue with ESP32 ECO3
  • Fixed Wi-Fi issue if the ESP32 is configured with fragmentation enabled and the fragmentation threshold is configured less than 1600 bytes, the ESP32 will immediately crash if a fragmented frame is received
  • Websocket client component has been backported from ESP-IDF v3.3
  • Bootloader SPI flash configuration was previously used for all apps. The app SPI flash configuration is now used to reconfigure the SPI flash settings when the app starts up.

Security Fixes

Wi-Fi

  • Fixed the issue if the ESP32 is configured with fragmentation enabled and the fragmentation threshold is configured less than 1600 bytes, the ESP32 will immediately crash if a fragmented frame is received
  • Fixed the issue that bandwidth and phy mode not correctly stored into NVS
  • Fixed the issue that the API esp_wifi_get_config didn’t return correct sta.listen_interval
  • SoftAP: Fixed the issue that the TSF of SoftAP would be reset when sending a CSA
  • Dump internal heap size instead of heap size in Wi-Fi log
  • Added API esp_wifi_ap_get_sta_aid to get aid, which can be used by esp_wifi_deauth_sta
  • put Wi-Fi clock enable/disable code into IRAM
  • Fixed the issue that Airkiss fail to find hidden APs
  • Fixed the issue that the first several AMPDU packets may be discarded by peer device
  • Fixed the issue that setting TX DMA buffer above 32 would not take effect
  • Fixed two issues in regulate domain information update
  • Delete duplicated spinlock and counter
  • Improved description of esp_wifi_set_max_tx_power
  • wpa_supplicant: fixed some memory leaks and invalid memory access
  • SoftAP: Fixed the issue that memory leak happens after SoftAP de-initialized
  • Fixed SPIFFS conflicts with WIFI when using SPIRAM (#5629)
  • Fixed the failure to get IPV6 link-local address when AP forwarded multicast NS packets back to the station itself
  • Fixed esp_wifi_stop() crash
  • Fixed WiFi stop when sniffer enable
  • Fixed esp_wifi_sta_get_ap_info() api to return correct value of group cipher
  • Fixed WiFi receiving which is caused by WiFi reloading
  • Fixed WiFi performance, such as BA parameter negotiation etc
  • Fixed AMSDU decrypt
  • Fixed the bugs for bandwidth
  • Fixed some wifi timer bugs
  • Fixed WiFi block scan crash issue
  • Fixed association request RSN information length too big lead crash
  • Fixed some espnow bugs
  • Fixed the API_CHECK_ENABLED
  • Fixed 5.5M signal test bug
  • Placed the Vendor Specific element at the end according to the protocol
  • Added softAP example channel configuration
  • Fixed the timeout issue of EAPOL four-way handshake
  • Fixed ESP32 can't get IP address from China Mobile router
  • Fixed softAP updates second channel
  • Fixed bug where WPA2-Enterprise STA incorrectly connects to an open AP
  • Added separate performance configuration option to move some Wi-Fi RX code to IRAM (disable this to save approx 17KB of IRAM)
  • Include DMA reserved pool when allocating internal-only memory
  • Fixed Wi-Fi RX bug by adding support for Wi-Fi/BT MAC register writing when the Wi-Fi/BT common clock is disabled.
  • WPS 2.0: Relax the check on older config methods. Allows WPS handshake to complete on some APs which incorrectly advertise newer WPS 2.0 config method bits without setting bits for the corresponding older methods.
  • WPS: Fixed WPS config default initializer to work with C++ as well as C syntax
  • WPS: Now allows NULL-padded WPS attributes
  • WPS: Interoperability fixes
  • Place the Vendor Specific element at the end of the frame according to the protocol
  • Fixed AP switch to adjacent channel without disconnect
  • Removed WIFI_REASON_AUTH_CHANGED event
  • Fixed TKIP/CCMP PN replay attack detection bug
  • Increased buffer number type from uint8_t to uint16_t to support more than 255 buffers
  • Fixed bug where a scan with more than 255 results can lead to a crash
  • Avoid recalculating PMK if esp_wifi_set_config() is not called
  • Fixed bug where calling esp_wifi_stop() can lead to task watchdog timeout
  • Fixed SmartConfig IPC crash
  • Fixed issue where sniffer may access flash when cache is disabled
  • Reduced the total binary size when using Wi-Fi
  • Fixed Sniffer caused by WiFi mode switching
  • Added TX packet size check
  • Added check for Wi-Fi stop when calling esp_wifi_deinit
  • Scanning: Fixed Wi-Fi scan RSSI error
  • Return failure when AP channel value is set out of range
  • Fixed bug for setting channel when in NULL mode.

SmartConfig

  • Fixed bug where ESP32 sends broadcasts to phone after SmartConfig is completed
  • Fixed bug where Airkiss couldn't get IP of the cellphone

ESP-MESH (Wi-Fi Mesh)

  • esp_mesh_set_type now supports MESH_IDLE and MESH_STA
  • Support releasing esp_mesh_recv_toDS when the root becomes non-root
  • Support choosing the candidate with less ie.assoc when doing parent switch
  • Fixed if the root is specified (FIXED-ROOT) by set type or set parent, then change ie.mesh_type to MESH_ROOT before connect to router
  • Fixed ie.rc_rssi is not updated during scan and vote
  • Fixed ie.mesh_type does not match ie.layer caused by parent switch
  • Fixed during root switch, the original root doesn't disconnect from the router after it receives the switch request from the new voted root. (root switch happens by invoking esp_mesh_waive_root)
  • Fixed the routing announce timer is not stopped immediately in a new root if the new root is transformed from non-root
  • Fixed root rssi is not updated when receives internal roots direct/forward events
  • Fixed esp_mesh_send returns unexpected ESP_ERR_MESH_TIMEOUT

Bluetooth

Classic Bluetooth

Bluedroid

  • Disabled GATT over BR/EDR
  • Fixed assertion failure if A2DP is deinitialized while playback is running
  • HFP: Fixed HFP Client parsing of AT+CNUM
  • HFP: Fixed HFP Client parsing of AT+CIEV items
  • AVRCP: Choose AVRC category according to A2DP role
  • AVRCP: Fixed AVRC metadata length error
  • Added Bluedroid host stack size config option
  • Fixed issue happened after security information restore when a paired BLE HID device disconnects and then reconnects after a Bluetooth Classic HID device is connected
  • Authentication fixes in Legacy and Secure Connection
  • Fixed cases having fallback to link up event

Controller

  • Fixed bugs about role switch
  • Fixed LMP sniff req timeout behavior
  • Fixed A2DP stuck when BLE advertisement interval is too short

Bluetooth Low Energy

Bluedroid

  • Added missing GATT descriptors
  • Fixed open event triggering multiple times
  • Fixed malloc failed when multi_connection notify performance test
  • Added support for setting a minimum encryption key length requirement
  • Fixed incomplete data packets issue caused by out-of-order ACL data packets
  • Fixed client have no auth event when client Proactively initiate encryption after reboot
  • Fixed prepare write buffer length invalid error
  • Fixed throughput wasting memory and packet loss issues
  • Fixed no BLE_AUTH_CMPL_EVT after restart

Controller

  • Added connect parameter check
  • Fixed disconnection due to channel map instant reverse
  • Fixed assert(65535,0) in lld_evt.c
  • Change tx default octets to 251
  • Fixed assert(1024,0)
  • Fixed assertion failure when a create connection operation is cancelled
  • Fixed issue that Bluetooth controller may not be able to enter sleep after end of wake up request
  • Fixed BLE assert(64,0)

Blufi

  • Now checks if BLE is connected before sending a message via BLE
  • Added memcpy overflow check when blufi received error format data packet and send error report to phone
  • Fixed the issue Blufi still sends data after disconnecting and the sequence still increases

Wi-Fi Coexistence

  • Fixed Bluetooth event scheduling when Wi-Fi is also enabled.
  • Improved stability of WiFi performance with a little sacrifice of throughput
  • Improved BLE advertising and connection performance with dynamic priority. It sacrifices a little WiFi throughput, but achieves balance between WiFi and Bluetooth.

LWIP

  • Made LWIP TCP rto time configurable for users with different project and environment
  • Optimized TCPv6 connect
  • Fixed obsolete interface gethostbyname
  • Added LINGER to menuconfig
  • Fixed a memory leak issue caused by IPv6 didn't release timely
  • Fixed the issue that some UDP packets are lost in ARP during coexistence UDP tx performance testing
  • Fixed the issue of endless loop in dhcp parse reply
  • Fixed double-free of pbuf in IPv4 fragment reassembly
  • Fixed issue that IPv6 ND6 queues too much packets and causes memory out
  • Fixed the failure to get IPv6 address after WiFi is disconnected
  • IPV6: Allow DNS servers to be retrieved from NDS6 as an optimization
  • Randomize the first local port number created after reset. (Configurable)
  • Added support for IPv6 stateless address autoconfiguration
  • Added a check in sys_arch_protect() that mutex is created before use, and allow creating on demand
  • Fixed DHCP client issue with some China Mobile routers
  • TCP MSS: Increase d...
Read more

ESP-IDF Pre-release v4.2-beta1

01 Oct 08:15
Compare
Choose a tag to compare
Pre-release

Documentation for pre-release v4.2-beta1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.2-beta1/

ESP-IDF v4.2 is a minor update for ESP-IDF v4.1.

This is the list of changes since release v4.1:

Major New Features

  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Support for ESP32+ATECC608A (ESP32-WROOM-32SE) platform along with sample application
  • Added feature to utilize residual IRAM as data memory for ESP32 single core configuration
  • Added support of Bluetooth 5.0 for ESP32
  • Added ESP-HID Component
  • WiFi: Added and utilize WPA3/WPA2 Mixed mode Authtype
  • WiFi: Added support of multiple phy init data
  • WiFi: Added wpa_supplicant parsing support for WEP40 key
  • ESP-WIFI-MESH: Support chain topology
  • ESP-WIFI-MESH: Support mesh network power save function
  • Support for ESP32-S2 SoC
    • Wi-Fi
      • Wi-Fi driver
      • Wi-Fi modem sleep
      • Wi-Fi with automatic light sleep
    • Security
      • Flash & PSRAM encryption
      • RSA accelerator
      • AES accelerator
      • SHA accelerator
      • Digital signature
      • HMAC
    • Peripherals
      • UART
      • Timer group
      • GPIO
      • SPI Master
      • SPI Slave
      • I2C
      • I2S
      • LEDC
      • PCNT
      • SigmaDelta
      • RMT
      • USB Device
      • Touch sensor
      • ADC
      • DAC
      • SD card over SPI
      • Ethernet over SPI
      • RTC interrupts
      • Brownout detector
      • Temperature sensor
      • ULP coprocessor (RISC-V)
    • System features
      • Cache
      • esp_timer
      • SPI Flash
      • PSRAM — 2MB
      • I/D RAM separation
      • OTA
      • RTC Slow clock selection (e.g. 32k XTAL)
      • Task, interrupt watchdogs
      • Efuse API and espefuse.py
      • Console over USB
      • DFU flashing
      • CDC flashing
    • Build system and tools
      • Building the project using CMake (build, flash, monitor, menuconfig)
      • "idf.py size"
    • Sleep modes
      • Deep sleep
      • Light sleep
      • DFS
      • Automatic light sleep and esp_pm power management
      • Light sleep GPIO wakeup
    • Debugging
      • Core dump
      • app_trace
      • Systemview
      • OpenOCD
    • Protocols
      • Modbus
      • Provisioning
      • Other protocols on top of TCP/IP

Known Issues

  • The esp-2020r2 toolchain has been added in this release which includes some fixes for C++ exceptions, a fix for -O2 optimization of volatile word accesses, and 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. It is possible to roll back to the esp-2020r1 toolchain release by running git revert --no-edit 298f23c9 in the ESP-IDF directory, then re-run the install.sh/install.bat/install.ps1 and . export.sh/export.bat/export.ps1 steps as described in the Get Started guide. This issue will be fixed in the v4.2 final release.
  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • Secure Boot is not yet supported on ESP32-S2. Will be included in the v4.2 final release.
  • Early boot Random Number Generation is not enabled on ESP32-S2. The Flash Encryption feature should not be used in this release, unless keys are generated on the host and burned to eFuse manually. Do not rely on any random numbers generated before Wi-Fi is enabled. Early boot RNG for ESP32-S2 will be enabled before the v4.2 final release.
  • SPP: Not able to use BT SPP because exception happens when init BT SPP.
  • Light sleep: Wi-Fi light sleep is not stable on ESP32-S2. Wi-Fi could disconnect from AP in light sleep.

Bluetooth

Classic Bluetooth

Controller

  • Fixed the issue that when host runs different core from controller and sleep enabled,HCI timeout may occur
  • Added user invisible kconfig for BT MAC offset (#5320)
  • Fixed time jitter in FHS during role switch
  • Fixed time jitter in first POLL packet during role switch
  • Fixed failure in receiving EDR packet after role switch
  • Fall back to main XTAL as Bluetooth sleep clock when EXT 32K CRYS is configured but not detected
  • Set non-zero initial value for BT sleep clock cycle to avoid div-by-zero error in function "btdm_us_2_lpcycles" when BT modem sleep is not enabled
  • Fixed assert when creating connection cancellled
  • Fixed ASSERT for RXDESC
  • Fixed ASSERT in ld_acl at line 302 forclkoff1 and localval
  • Fixed ld_acl schedule issue to parity shift
  • 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
  • Fixed future events scheduling error in case of wifi and bluetooth
  • Fixed clk offset error in ld_acl.c

Bluedroid

  • Separate BTA_JV_L2CAP for less bin size
  • Fixed cases having fallback to link up event
  • GAP: Fixed error EIR type in config eir event
  • GAP: fixed the issue when calling esp_bt_gap_remove_bond_device to remove a bonded device and then calling esp_bt_gap_get_bond_device_list, it may return invalid Bluetooth address (#5395)
  • SPP: Added API esp_spp_stop_srv()
  • SPP: Fixed task watchdog when running SPP example in VFS mode
  • SPP: Fixed the error parameter in spp examples (#5408)
  • HID-Host: Added HID Host support in Bluedroid
  • A2DP: Fixed the issue that A2DP_SINK example cannot successfully compile when Compiler Optimization Level is performance (O-2)
  • AVRCP: Replaced U+0092 with regular apostrophes in avrc_defs.h (#4667)
  • HFP-AG: Fixed connection failure and crash when receiving unknown AT command
  • HFP-AG: Fixed error of return line in AG API (#5554)
  • HFP-AG: Fixed AG audio crash (change the return position)
  • HFP: Enabled PCM config in menuconfig and controller

Bluetooth Low Energy

Controller

  • Added BLE connect parameter check
  • Fixed channel map instant reverse
  • Fixed ASSERT(64,0) in rwble.c
  • Fixed for HCI desync deadlock issue in BLE controller
  • Fixed ble crash issue triggered by ble event irq miss(0x20000) (d2a1d18d)
  • Fixed the crash when controller disabled and then re-enabled for ble
  • Fixed the missed channel map update when the slave latency is greater than 0.
  • Fixed the missed channel map update when the instant value is 0

Bluedroid

  • Added API to query the number of available buffers for the current connection
  • Consider link_xmit_data_q in congest events to prevent excessive memory usage
  • Changed HCI task size back to 2048
  • Fixed the issue of incomplete data packets caused by disordered acl data packets
  • Fixed ble memory leak issue, buff_semaphore was not released
  • Added HID Host and Device support in Bluedroid
  • Added some general HID utilities and definitions to help integrate with other stacks and native USB
  • Fixed the issue that bluedroid task pinned_to_core doesn't take effect
  • Authentication fixes in Legacy and Secure Connection
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed btc disable crash sometimes
  • Fixed the state not synchronized between controller and host when disconnected

Blufi

  • Reply with an error response when the format of the received data packet is wrong

NimBLE

  • Added menuconfig option for NimBLE host flow control
  • Added Non-Resolvable private address (NRPA) support
  • Added NimBLE config options in sdkconfig.rename
  • Added header guards and closing bracket conditional for c++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Added ble_hs_lock in ble_gap_unpair: upstream PR!584
  • Added Host based privacy (RPA) feature support
  • Added IRAM allocation provision under nimble_platform_mem_malloc()
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c: upstream PR!843
  • Included changes in blecent example: upstream PR!702
  • Fix checking for NOP in ble_hs_hci_rx_evt: upstream PR!738
  • Fixed check for static random address & add MSYS_1 in menuconfig
  • Fixed NIMBLE_HS_FLOW_CTRL_TX_ON_DISCONNECT in esp_nimble_cfg and bleprph README
  • Fixed build failures due to non static declarations in RPA feature (#4413)
  • Reset master and slave states on host reset
  • Use macros for log level filtering which reduces the size of the compiled binary, PR: espressif/esp-nimble#6
  • Fix NULL pointer passed as a parameter: upstream [PR!701)(https://github.com/apache/mynewt-nimble/pull/701)
  • Pairing procedure abort on unexpected req: upstream PR!710
  • Fix conn flags after pairing: upstrea...
Read more

ESP-IDF Release v3.3.4

25 Sep 02:05
Compare
Choose a tag to compare

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

ESP-IDF v3.3.4 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.4 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.

Note: This release comes soon after v3.3.3 due to a process failure, these fixes were tested as part of the v3.3.3 release but incorrectly not included in the release. The internal release process has been revised to avoid this failure repeating again.

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.5.
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP

WiFi

ESP-WIFI-MESH

  • Remove coexist warnings in ESP_WIFI_MESH
  • If the root is specified (FIXED-ROOT) by set type or set parent, it will change ie.mesh_type to MESH_ROOT before connect to router
  • Release esp_mesh_recv_toDS when the root becomes non-root
  • esp_mesh_set_type now supports MESH_IDLE and MESH_STA
  • Fixed esp_mesh_deinit blocking issue

Bluetooth

Bluetooth 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

  • Added api to query the number of available buffers for the current connection

NimBLE

  • NimBLE: Add Non-Resolvable private address support
  • Added documentation for ble_hs_pvcy_rpa_config() API in its declaration
  • Added header guards and closing bracket conditional for C++ in ble_hs_pvcy.h (espressif/esp-nimble#12)
  • Fixed repeated pairing failure in RPA (#5530)
  • Fixed potential issue with strncpy in os_mempool.c (apache/mynewt-nimble#843)

ESP-BLE-MESH

  • Add two TTL related macros for mesh applications
  • Callback send_ttl to the app layer when a message is received

LWIP

  • Added option to make TCP/IP RTO time configurable
  • Fixed bug with IPV6 fragmentation not correctly disabling according to the config
  • Fixed IPV6 memory leak
  • Fixed UDP TX packet loss issue when the ARP cache table is full

MSYS2

  • Prebuilt MSYS2 environment now contains the same 1.22.0-96-g2852398 toolchain as the other platforms

Build System

  • CMake Preview: Output partition table info for partition_table target
  • CMake Preview: Fix build failure when git is initialized with no first commit (#3920)
  • GNU Make: Fix build failure if build directory is a symlink (#3626)

Obtaining v3.3.4

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

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

Download an archive with submodules included

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

ESP-IDF Release v3.3.3

13 Sep 09:08
Compare
Choose a tag to compare

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...
Read more

ESP-IDF Release v4.1

24 Aug 00:07
Compare
Choose a tag to compare

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

ESP-IDF v4.1 is a minor update for ESP-IDF v4.0. ESP-IDF v4.1 will be supported until February 2023 in accordance with the ESP-IDF Support Policy.

Note: This is the first ESP-IDF release since the Support Policy was updated to change all ESP-IDF stable release support periods to 30 months. Previously this support period only applied to designated "Long Term Support" releases.

This is the list of changes since release v4.0:

Major New Features

  • Wi-Fi: Added support for Protected Management Frames (PMF)
  • Wi-Fi: Added SAE authentication support for WPA3 Personal
  • New Python-based menuconfig tool
  • Networking: Added new esp_netif API to manage network interfaces, replaces tcpip_adapter which is now deprecated.
  • Classic Bluetooth: Added support for Hands Free Profile (HFP) Audio Gateway (AG)
  • DTLS support in libcoap using mbedTLS (#3977)
  • Secure Boot V2 support (RSA based) added for ESP32 V3
  • Preview support for ESP32-S2 Beta SoC. This support will be replaced with ESP32-S2 SoC support in ESP-IDF v4.2. ESP32-S2 Beta firmware is not compatible with the ESP32-S2 production SoC, and not all features are supported.

Major Bug Fixes

  • Security fix: Fixed AP switch to adjacent channel without disconnect (-12638)
  • Updated toolchain fixes for PSRAM issue in ESP32 revisions prior to V3 (note: there is a known issue with this fix, see below.)

Breaking Changes

  • As part of the fix for -12638, the event WIFI_EVENT_STA_AUTHMODE_CHANGE has been removed. STA will now disassociate (with reason WIFI_REASON_AUTH_CHANGED) and reassociate in this case.

Known Issues

  • The esp-2020r2 toolchain has been added in this release which includes some fixes for C++ exceptions, a fix for -O2 optimization of volatile word accesses, and 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. It is possible to roll back to the esp-2020r1 toolchain release by running git revert --no-edit 298f23c9 in the ESP-IDF directory, then re-run the install.sh/install.bat/install.ps1 and . export.sh/export.bat/export.ps1 steps as described in the Get Started guide. This issue will be fixed in the v4.1.1 release.
  • A new macro to call a function with a user-allocated stack has been added but is non-functional
  • Using ADC in DMA mode does not work correctly
  • Can not correctly config IPv6 segmentation and reassembly from menuconfig
  • Nimble doesn't support non-resolvable private address
  • Watchdog timeout when using an RSA 4096-bit key to connect to WPA2-Enterprise (EAP-TLS) AP.
  • CAN driver doesn't work correctly if assertions are disabled in menuconfig

Bluetooth

Controller

  • Added API to query the number of available buffers for the current connection
  • Improved handling of calloc() failure
  • Fixed HCI timeout issues when using multiple cores and sleep is enabled
  • Fixed BLE crash issue triggered by BLE event interrupt missed
  • Fixed bugs related to role switch
  • Fall back to main XTAL as Bluetooth sleep clock source if the External 32kHz crystal is configured but not detected
  • Fixed a division by zero error in BT sleep clock cycle calculation
  • Fixed software assertion of invalid state when using HCI_Create_Connection_Cancel command
  • Fixed LMP timeout issue when handling LMP_sniff_req
  • Fixed the issue of repeatedly sending LMP_features_req_ext

Bluedroid

  • Fixed bug with fixed_queue semaphore pointer dereference
  • Fixed potential memcpy buffer overflow problem
  • Fixed wrong complete Identity Address (Public Address) of the Privacy-enabled Bonded Device got after bonding
  • Fixed the issue with pointer type conversion in gattc
  • Added missing GATT descriptors 0x2909 (Number of Digitals) through 0x290E (Time Trigger Setting) (#4082, #4470)
  • Fixed some spurious uninitialized variable warnings when optimization level set to Performance

NimBLE

Classic Bluetooth

  • GAP: Added new esp_bt_gap_read_remote_name() function to get remote device's Bluetooth name at any time
  • GAP: Fixed error on EIR type in Config EIR event
  • HFP: Added Audio Gateway (AG) support
  • HFP: Added AT+NREC=0 command for disabling AG echo cancellation (#3665)
  • HFP: Fixed crash on incoming audio
  • HFP: Fixed connection fail and crash when receiving unknown AT command
  • HFP: Fixed AG audio crash (change the return position)
  • A2DP: Fixed assertion for de-initializing A2DP while audio streaming is ongoing
  • AVRC: Fixed AVRC metadata length error

Bluetooth Low Energy

  • Fixed BLE throughput wasting memory
  • Fixed the BLE throughput client crash when enable the CONFIG_GATTC_WRITE_THROUTHPUT option
  • Fixed client no BLE_AUTH_CMPL_EVT when client proactively initiate an encryption request after device restart
  • Fixed notify malloc failed when testing multi-connection notify performance
  • Fixed btc disable crash sometimes
  • Fixed don't dequeue the command queue after process the read_by_type_req
  • Add BLE API to set channel classification
  • Added support to enable Peripheral Preferred Parameters in GAP service
  • Fixed data loss and send same pkt twice sometimes
  • Fixed adv data error in air sometimes
  • Fixed adv start/stop crash sometimes
  • Fixed the wrong mask value according to HID protocol
  • Fixed GATTC trigger open event multiple times

Blufi

  • Fixed the wrong type from BLUFI_TYPE_DATA_SUBTYPE_SOFTAP_MAX_CONN_NUM to BLUFI_TYPE_DATA_SUBTYPE_SOFTAP_CHANNEL
  • Fixed blufi prepare write buf len invalid
  • Reply with an error response when the format of the received data packet is wrong
  • Check if BLE is connected before sending a message via BLE

ESP-BLE-Mesh

  • Miscellaneous modifications for Provisioner
    • Support Provisioner persistent functionality
    • Add a function to set Provisioner static oob value
    • Add a function to set Provisioner unicast address
    • Add a function to provision devices with fixed address
    • Add a function to store node composition data
    • Add a function to get node with device uuid
    • Add a function to get node with unicast address
    • Add a function to delete node with device uuid
    • Add a function to delete node with unicast address
    • Add a function for Provisioner to update local AppKey
    • Add a function for Provisioner to update local NetKey
    • Fix Provisioner entering IV Update procedure
    • Fix Provisioner failed to publish messages
    • Provisioner ignores msg from removed node
    • Fixed Provisioner provisioning deadlock
    • Checks if the AppKey exists before deleting it
    • Updated next allocated address when node info is added
  • Synchronized a few Zephyr BLE Mesh updates
  • Support using a specific partition for BLE Mesh
  • Add a function to de-initialize BLE Mesh stack
  • Fixed use-after-free issue when de-initialize mesh
  • Fixed not free beacon timer when de-initialize mesh
  • Fixed de-initialize error when using NimBLE host
  • Supports using SPIRAM for BLE Mesh dynamic memory, queue, etc.
  • Fixed compile error when using performance optimization level
  • Fixed compile error when including from C++ files
  • Made RSSI value available to mesh applications
  • Fixed reset transport info when node is removed
  • Now allows sending maximum 377 octet payload
  • Now uses lock for mesh timer operations
  • Fix an issue which may cause client failing to send msg
  • Added check of the result of creating mesh timer
  • NULL can be used if client message has no parameters
  • Unified client application and lower transport layer timeout
  • Removed timeout for client message to non-unicast address
  • Fixed timer start when sending client message
  • Fixed client local parameters not initialized
  • Calculates incomplete message timeout based on message info
  • Added check of buf->ref before decrementing buffer r...
Read more