Documentation for IDF v4.1.3 is available at https://docs.espressif.com/projects/esp-idf/en/v4.1.3/
ESP-IDF v4.1.3 is a bugfix update for ESP-IDF v4.1. The latest stable release at the time of writing is v4.4.
Obtaining v4.1.3
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.3 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.1.3
cd esp-idf-v4.1.3/
This is the recommended way of obtaining v4.1.3 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.1.3.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/github_assets/espressif/esp-idf/releases/download/v4.1.3/esp-idf-v4.1.3.zip
Major Changes
This is the list of major changes since release v4.1.2:
Breaking Changes
-
In previous versions of ESP-IDF, it was possible to omit the subtype field in the partition table CSV file. This could result in unexpected behavior, since empty subtype value was treated as
0
. At the same time,0
was the numerical value for theotadata
partition subtype. This version of ESP-IDF adds new sanity checks for partition tables:- App partitions can not have empty subtypes.
- Only one
otadata
partition can exist in the partition table, and its size must be 0x2000.
Data partitions with a empty subtypes will now have a subtype
ESP_PARTITION_SUBTYPE_DATA_UNDEFINED
= 0x06. Previously when an empty subtype was encountered, the value was assumed to be 0.This may result in build errors for applications which relied on the previously unchecked behavior. This may also result in compatibility issues, if the application used empty partition subtypes.
Changelog
This is the list of changes since release v4.1.2.
Bluetooth
Controller
- Added Espressif defined HCI command to set coexistence status
- Added change to free resources in deinit that were allocated during controller init procedure.
Bluetooth Low Energy
- Fixed the scan timeout report
- Fixed missing the sleep time
- Fixed the scan failed issue
- Fixed connection failure with LG 5.0 phone
- Fixed crash when shutdown bluetooth
- Fixed modem sleep hardware error
Classic Bluetooth
Fixed
- Fixed the default sdkconfig options for controller_hci_uart example
- Fixed crash after inquiry has finished
- Fixed the issue for delay of HCI_Command_Status event for HCI_Read_Remote_Extended_Features command.
- Fixed the issue HCI_Read_Clock failed read local Bluetooth Clock
- Fixed the issue create Connection request is not properly terminated which blocks BlueZ from reconnecting
- Check only for same X component of public key in BR/EDR
- Fixed the issue during encryption pause and resume procedure that causes failure of SPP connection between ESP32 and Realtek Bluetooth adapter
- Fixed the crash issue in handling HCI_Exit_Sniff_Mode command from Host when controller just switches to active mode
Bluedroid
- Fixed crash in failure of memory allocation after erasing flash (#6170)
Classic Bluetooth
Fixed
- A2DP: Fixed a2dp sink blocked bugs
- A2DP: Fixed for congestion of source audio data packets which causes choppy audio in a2dp sink
- A2DP: Fixed the crash caused by calling esp_a2d_media_ctrl(ESP_A2D_MEDIA_CTRL_START) after stream started
- SPP: Fixed SPP acceptor deadlock
- SPP: Fixed SPP memory leak
- SPP: Fixed bugs for failure of SPP slot allocation
- SPP: Fixed SPP acceptor open with wrong remote address
- HFP: Fixed bug that acl can't disconnect when hfp_client disconnect
- Fixed the timer collision in function bta_sys_start_timer() used by role switch
- HFP: Fixed incorrect sine audio wave of HFP AG exmaple.
- Fixed issues from source code analysis report
Bluetooth Low Energy
- Add new function
esp_ble_gap_clear_whitelist()
to clear all white list - Support low duty cycle directed advertising
- Fixed Bluedroid Host automatically update PPCP after exchange connection parameters.
- Fixed some BLE document description error
- Fixed data length update failed
- Fixed the bug when BLE setting scan parameters
- Fixed the the code analysis report error reported by customer.
- Fixed high duty cycle directed advertising will not be stopped when timeout
- Fixed BLE LLCP collision for channel map update
- Fixed BLE controller BLE_ADV_UNDERRUN error
NimBLE
Fixed
- Check stack initialization status before executing stack commands.
- Modified ble_gap_wl_set function to clear complete whitelist.
- NimBLE NVS: Fix bug in deletion of peer_dev_record.
Blufi
- Fixed an issue that when blufi encryption is interrupted unexpectedly, subsequent encryption operation fails.
ESP-BLE-Mesh
- Updated the SIG recommendations for BLE Mesh CVE issues
- Applied the errata E16350 of BLE Mesh from Bluetooth SIG
- Fixed filtering error when Provisioner receives heartbeat messages
Wi-Fi
Added
- Added SHA384/SHA512 support for internal client
- Added beacon timeout event
- Added WPS strict config option
- Added WPS PIN fixes
Changed
- PMF: Allow keyindex in big endian format to workaround faulty APs
- Updated miswritten and abbreviated words and syntax errors for initializing WiFi section in esp_wifi.h header file
- Allow for minimal scope of wifi_init_config_t.
- Refactored PHY access
Fixed
- Fixed Enterprise connection issue with windows server
- Fixed interoperability issue with Windows 2008.
- Fixed airkiss and esptouch find channel crash issue
- Fixed issue of softAP not initating 4-way handshake if max length passphrase is set
- Fixed issue of hidden AP failure in case of esptouch
- Clear hostpot bss when auth timeout happens
- Fixed open AP connection failure after WPA3 auth fails
- Fixed issue related to hidden AP scan after connecting to an AP
- Fixed the watchdog issue when receiving an action frame
- Fixed set_config return value error
- Fixed the issue of reason code change from 15 to 204 when wrong password is provided
- Fixed AMPDU age timer memory leak
- Fixed issue of esp_wifi_80211_tx
- Fixed crash issue in presence of WEP AP
- Fixed the MIC comparison logic AES-128-CMAC decryption
- Fixed issue of setting incorrect log_length of NVS misc log
- Fixed SoftAP crash by handling public action frames
- Fixed a bug that Wi-Fi stack may crash when receive AMSDU length bigger then 3200
- Fixed compilation error in wpa_supplicant logging
- Fixed fragment plt loss when 2nd pn is compared with 1st pn
- smartconfig: Fixed smartconfig set socket option failure
- Fixed the issue that no TBTT is generated in station+softap mode when maximum modem sleep is enabled
- Fixed the issue of restart in espnow example blocking system
- Fixed esp-now channel config range
- Fixed memory leak in WPA3 connection
- Fixed issue "ca md too weak" for certificates in wifi_enterprise example
- Fixed memory corruption in WiFi Enterprise
- Fixed miss-overwrite of some PHY registers when Wi-Fi modem sleep is enabled
- Fixed issues with bcast deauth in PMF connection
ESP-WIFI-MESH
Added
- Add esp_mesh_send_block_time to set blocking time of esp_mesh_send
Fixed
- Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
Ethernet
Changed
- Only warn about negotiation timeout when link is up
- Configure EMAC data interface before resetting PHY chip
Fixed
- Fixed eth2ap example crash issue
Peripheral Drivers
Added
- freemodbus: Added the FMB_PORT_TASK_AFFINITY kconfig option for modbus tasks (#6700)
- GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (#6918)
- PSRAM: Added support for ESP32-D0WDR2-V3
- PSRAM: Added support for esp32-pico-v3-02
- SPI Flash: Added support for TH Flash chips
Changed
- freemodbus: Added processing of events in one poll cycle
- freemodbus: Changed the default value of FMB_TIMER_PORT_ENABLED to disabled
Fixed
- freemodbus: Fixed error handling in mbc_master_get(set)_parameter() for duplicate parameter key in parameter descriptor list (#7362)
- freemodbus: Fixed rs485 rts de-assert fail when tx delayed (#6728)
- I2S: Fixed the write failure issue in 32bit slave mode
- LEDC: Fixed ledc_set_duty failed to take effect when called frequently (#7288)
- LEDC: Fixed incorrect fading behaviour with LEDC_FADE_NO_WAIT fade mode (#6710)
- MCPWM: Fixed wrong deadtime preset modes (#7321)
- SDIO Slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area
- SDIO Slave: Fixed the issue that interrupt may be cleared with finished trans unhandled
- Timer Group: Fixed the issue that timer group can't re-alarm if auto-reload is disabled (#8095)
- Touch sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (#6895)
- UART: Ensure the driver object is in SRAM even PSRAM is malloc-able (#7044)
- UART: Add missing critical section wrappers around rx_buffered_len (#6396)
Core System
Changed
- Watchdog Timers: Task WDT now prints a backtrace when triggered
Fixed
- SoC: Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end
- Fixed
longjump
function to be context switch-safe - Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock.
- C++: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore.
- esp_event: Fixed and improved docs
- newlib: Fixed FD_ISSET macro when n==-1
- partition_table: Fixed case when a few similar to otadata partitions are in the table
- efuse: Fixed a bug related to the non-sequential way of describing eFuses in efuse_table when such fields go together sequentially
- Fixed power management lock bug in dual core mode
Debugging
Added
- Gcov: Added ESP32-S2 support
Fixed
- coredump: Fixed EPC and EPS register values printed by espcoredump.py
- Gcov: Fixed ESP32 gcov dump issue
- coredump: Fixed ESP-specific panic reasons handling
FreeRTOS
Fixed
- esp_ringbuf: Fixed a bug where the Rx and Tx semaphore release sequence was incorrect in xRingbufferSend and xRingbufferSendFromISR functions.
- esp_ringbuf: Fixed a bug where comparision between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers (#7344)
Power Management
Fixed
- sleep: Fixed driver using wrong print function in a critical section (#7942)
LWIP
Added
- Added configuration to disable DHCP client identification
Fixed
- Added missing extern "C" directive in dhcpserver header file.
- Fixed DNS server index to overflow to DNS_MAX_SERVERS causing LWIP_ASSERT (to enable local queries when no DNS server is set, #6878)
OTA
Fixed
- otatool: Fixed a crash when imported as external python lib
- otatool: Fixes read_ota_partition cmd, required output arg
HTTP Client
Changed
- Updated the root certificate of https examples
Fixed
- Fixed memory leak identified by cppcheck
- Fixed header truncated when responded header length over buffer_size
- Fixed wrong handling of an EAGAIN case
- Fix HEAD request will affect the all next HTTP requests unless we close the HTTP request
Provisioning
Fixed
- Fixed wifi warning in wifi_prov_mgr application
mbedTLS
Changed
- Upgrade to latest bugfix release v2.16.12
Bootloader
Added
- Added anti-FI checks around secure version in anti-rollback scheme
Fixed
- Fixed psram cache issue work-arounds also being applied to the bootloader
- Fixed the issue that SPI Flash ROM functions are not correctly linked when CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not enabled (#7508)
- Fixed and re-enable bootloader_debug_buffer function for logging relevant Bootloader buffers
ESP-TLS
Fixed
- Fixed esp_mbedtls_write API when 0 bytes are written
Storage
Changed
- VFS: timeout of select function is now POSIX compliant.
Fixed
- vfs/uart: Fixed memory leak identified by cppcheck
Tools
Added
- IDF component manager beta support has been added. Dependencies listed in
idf_component.yml
manifest are downloaded automatically.
Changed
- Upgrade OpenOCD version to v0.11.0-esp32-20211220
- idf_tools.py: Change AppData seeder to pip seeder
- Constrain the cryptography package version in order to avoid breaking changes
- Constrain version of the cffi package for 3.6 or older Python versions
- Use delay between rename attempts on Windows in the installer (https://esp32.com/viewtopic.php?f=13&t=25962)
Fixed
Build System
Added
- test_utils: Added extern C decl to ccomp timer
Changed
- Define IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables during the early expansion phase of component CMakeLists.txt file
External Libraries
Changed
- expat: Updated library from 2.2.9 to 2.4.1.
- cJSON: Updated cJSON submodule to v1.7.15
- nghttp2: upgrade to v1.41.0 release
Documentation
Fixed
- Fixed ADC pad number error, and MOSI error
- Fixed OpenOCD debug level option
- Fixed the default maximum length of SPI transaction
Examples
Added
- esp-modem: Added access technology used by the modem.
- esp-modem: Added get operator functionality for BG96 and SIM800L.
Fixed
- esp-modem: Fixed PPP stack smashing protect failure in OVERALL mode