Documentation for IDF v4.4.1 is available at https://docs.espressif.com/projects/esp-idf/en/v4.4.1/
ESP-IDF v4.4.1 is a bugfix update for ESP-IDF v4.4.
Obtaining v4.4.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.4.1 --recursive https://github.com/espressif/esp-idf.git esp-idf-v4.4.1
cd esp-idf-v4.4.1/
This is the recommended way of obtaining v4.4.1 of ESP-IDF.
Download an archive with submodules included
Attached to this release is an esp-idf-v4.4.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/github_assets/espressif/esp-idf/releases/download/v4.4.1/esp-idf-v4.4.1.zip
Major changes
This is the list of changes since release v4.4:
Major Bug Fixes
- efuse: Fixed eFuse timing settings for ESP32-C3 and ESP32-S3 chips
- Updated ESP32-S2 PHY library to support ESP32-S2 revision 1 (ECO1) chip
Breaking Changes
- I2S: The value of enum 'i2s_channle_t' changed for backward compatible. The I2S_CHANNEL_MONO and I2S_CHANNEL_STEREO will still be 1 and 2 as in v4.3, meanwhile the TDM channel mask I2S_TDM_ACTIVE_CHx is now at high 16 bits of 'i2s_channel_t'. For now we are able to switch to mono mode for ESP32-C3/ESP32-S3 by calling i2s_set_clk and passing something like I2S_CHANNEL_MONO | I2S_TDM_ACTIVE_CH0 | I2S_TDM_ACTIVE_CH1 or I2S_CHANNEL_MONO into the third parameter.
- Wi-Fi: Disabling PMF in Station configuration no longer possible, Station will always connect in PMF Mode if AP advertises support.
Known Issues
The following issues are present in v4.4.1 release and will be fixed in the next bugfix release (v4.4.2):
- On ESP32-S3, using touch sensor together with sleep modes is not supported yet. Please avoid using this feature in v4.4.1 release, as it may cause permanent damage to the chip.
- On ESP32-S3, DMA may fail to access RTC memory because RTC fast memory's speed is not sufficient. Setting this kind of memory's priority lower when allocating from heap may be a temporary workaround before the next bugfix release.
- On ESP32-S3, BLE may disconnect in extreme low temperature.
Changelog
This is the list of changes since release v4.4.
Bluetooth
Bluetooth Low Energy
- Added the PLL track feature to keep the BLE connection stable
- Fixed BLE LLCP collision for channel map update
- Fixed BLE controller BLE_ADV_UNDERRUN error
Classic Bluetooth
Fixed
- Fixed the issue for delay of HCI_Command_Status event for HCI_Read_Remote_Extended_Features command
- 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
Changed
- Upgraded HFP(Hands Free Unit) to version 1.7.2
Fixed
- HID: Fixed esp_hidh report map length checking function (#7586)
- HID: Fixed output report char declaration (#5369)
- Fixed left right key confusion in comments (#4670)
- 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
Bluetooth Low Energy
- Support hardware CCA threshold value setting
- Support for ESP32-S3 chip in controller_hci_uart_esp32c3 and add esp32s3's README
- Rename
controller_hci_uart_esp32c3
tocontroller_hci_uart_esp32c3_and_esp32s3
- Fixed BLE periodic advertising data length check issue
- Fixed bluedroid compile fail if
BT_MULTI_CONNECTION_ENABLE
andSMP_SLAVE_CON_PARAMS_UPD_ENABLE
are both enabled
NimBLE
Fixed
- Fixed BLE SPP build fail on Windows
- Corrected stack initialisation dependency function checks
ESP-BLE-Mesh
- Added proxy server connect and disconnect events
- Fixed the abnormal disconnection of proxy client
Wi-Fi
Added
- Updated ESP32-S2 PHY library to support ESP32-S2 revision 1 (ECO1) chip
- Added support of EAP-FAST authentication
Changed
- Disabling PMF in Station configuration no longer possible, Station will always connect in PMF Mode if AP advertises support
Fixed
- smartconfig: Fixed smartconfig set socket option failure
- Fixed failing to transmit data or getting stuck in WiFi sleep if running WiFi and BT with modem-sleep together
- Fixed issue "ca md too weak" for certificates in wifi_enterprise example
- Fixed failure to transmit data or getting stuck in WiFi sleep if running WiFi and BT with modem-sleep together
- Added WPS PIN fixes
- Fixed memory corruption in Wi-Fi Enterprise
- Fixed Assoc comeback causing invalid state bug and cleanup in some FTM failure cases
- Bugfix for iperf example issue
Ethernet
Changed
- Updated EMAC start/stop functions to prevent any unintended behavior
Security
Changed
- ESP32-C3: Memory protection API unified for all PMS-aware chips
- Digital Signature: Update gen_digital_signature_tests.py to handle different max key sizes
Fixed
- ssl_ds/configure_ds.py: Fixed error regarding verification for production mode.
Peripheral Drivers
Added
- ADC: Upgraded ADC calibration algorithm on ESP32-C3
- PSRAM: Add support on ESP32-D0WDR2-V3
- SPI Flash: Added support for TH Flash chips
- SPI Flash: Support unlock for MXIC chips
Fixed
- Fixed the unused TAG strings when CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is enabled. (#8250)
- ADC: Fixed ADC calibration error after waking up from light sleep
- ADC: Fixed issue where ADC digital part not disabled by RNG, and not reset by driver
- ADC: Fixed ESP32-S3 ADC conflicts with Wi-Fi issue
- freemodbus: Fixed the modbus controller and port layer to resolve slave IP addresses correctly
- freemodbus: Fixed the setting of UID field in MBAP frame according to a data dictionary
- freemodbus: Fixed crash issue when start tcp_slave after (mbs_interface_ptr!=NULL) in mbc_tcp_slave_destroy() (#8211)
- freemodbus: Fixed memory leak in port_tcp_slave.c
- freemodbus: Fixed the mb_tcp_master to resolve slave IP address correctly when address gaps exist in data dictionary in the examples
- GPIO: Fixed some gpio pin num errors on ESP32-S2 and ESP32-C3
- GPIO: Fixed issue that GPIO interrupt cannot br triggered on APP CPU on ESP32-S3 (#7885)
- GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (#5571)
- GPIO: Changed gpio_hal_iomux_func_sel() to be always inlined to avoid access issues when cache disabled.
- I2C: Fixed typo in timing macro name
- I2C: Fixed I2C command memory check when SPIRAM is used for heap allocation (#8173)
- I2C: Fixed transfers crashing when not finished with a STOP condition
- I2S: Fixed the bug that can't switch mono/stereo by 'i2s_set_clk' on ESP32-C3 and ESP32-S3.
- I2S: Fixed adc/dac clock calculation (#8344, #8327)
- I2S: Fixed mclk stop issue on ESP32-C3/ESP32-S3 when setting clock, now the master clock will be enabled during installation instead of start function, and they will only be disabled after uninstalling the driver
- 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)
- LEDC: Fixed ledc_cb_register not inside cplusplus guard (#8139)
- RGB_LCD: Allocate framebuffer in alignment
- RMT: Fixed wrong RMT register for ESP32-S2, RMT doesn't have RX wrap mode (#8354)
- SDIO Slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area
- SPI: Fixed SPI Master driver cs_ena_posttrans wrong issue (#7758)
- SPI Flash: Changed ID_DEV_MASK() to be always inlined to avoid access issues when cache disabled.
- SPI Flash: Fixed behavior of esp_partition_get_sha256() in case the image is invalid.
- UART: Fixed a bug that prevents RX interrupts to be enabled after filling the RX buffer
- UART: Fixed the incorrect channel num on ESP32-S2, ESP32-C3, ESP32-S3
- UART: Fixed reset logic on ESP32-S3
- USB_SERIAL_JTAG: Fixed the issue that there is no rom log when restarting
- USB_SERIAL_JTAG: Fixed issue that cannot print with wifi by default (#8131)
- USB Host: Added USB Host Library example and documentation.
- USB Host: Fixed incorrect USB PHY initialization on the ESP32-S3. Host stack now uses the USB PHY driver for PHY initialization.
- USB Host: Fixed incorrect implementation of the USB_TRANSFER_FLAG_ZERO_PACK flag.
- USB Host/HCD: Fixed bug where the returned actual number of bytes transferred was incorrect.
- USB Host/Hub: Fixed enumeration flow. Descriptor lengths are now pre-fetched during enumeration to workaround some non-compliant devices.
- USB Host/Hub: Fixed handling of sudden disconnects and port recovery.
- USB Host/Hub: Enumeration will now fetch Manufacturer, Product, and Serial Number string descriptors.
- USB Host/Hub: Fixed bug where the size of wTotalLength was incorrect.
- USB Host/MSC: Fixed bug where MSC Host driver would issue MSC resets after enumeration.
Removed
- I2S: I2S deprecated dma_buf_count and dma_buf_len, use dma_desc_num and dma_frame_num instead
- LCD: Removed check for hsync vsync GPIO unnecessary for DE mode
Core System
Added
- trax: Added ESP32-S3 Support
Changed
- heap: Made multi heap memory regions' priority more reasonable
- esp_ipc: ipc_isr does not use its own initialization task, it is done from ipc_task()
Fixed
- console: Fixed LF ('\r') causing console to get stuck if received less than 30ms after the previous character.
- efuse: Fixed eFuse timing settings issue on ESP32-C3 and ESP32-S3
- spi_flash: Fixed behavior of esp_partition_get_sha256() in case the image is invalid
- esp_system: Fixed RTC_WDT protection in esp_restart_noos. This fixes incompatibility with ESP-IDF v3.1 and older bootloaders.
- Fixed system unable to start up when a toolchain with 64-bit time_t is used (CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS)
Removed
- eFuse: Free some unused eFuse fields (ESP32-C3/ESP32-H2)
Debugging
Added
- apptrace: Added ESP32-S3 Support
- sysview: Add ESP32-C3 into the supported target list
- debug_stubs: Refactored and added support for RISC-V
Changed
- gcov: Do not use shrunk ROM's fake stdout and stderr FILE struct
Fixed
- sysview: Fixed sysview examples build error for ESP32-C3
- gcov: Fixed interference of gcov dump with normal IPC calls
- espcoredump: Fixed a bug preventing variables marked as COREDUMP_DRAM_ATTR to be dumped in core file
FreeRTOS
Added
- Added pm_trace header include that fixed compile error when CONFIG_PM_TRACE was enabled
Changed
- Changed freertos xtensa port to always inline xPortSetInterruptMaskFromISR and vPortClearInterruptMaskFromISR (#8301)
Power Management
Fixed
- Fixed ext1 cannot wakeup via RTCIO >= 18 issue
TCP Transport
Fixed
- Fixed incorrect return value when closing SSL connection
mDNS
Added
- Added support for zero-size values in TXT records
OTA
Fixed
- esp_https_ota: Fixed esp_https_ota_begin may return ESP_OK when HTTP status code is not 200.
- esp_https_ota: Fixed esp_https_ota_begin may exist memory leak.
- esp_https_ota: Fixed the component to check chip id at start of ota
HTTP Client
Fixed
- Added caching mechanism to fix data corruption due to body received during fetch header state
- Fixed that parsing invalid url (with empty hostname) causes crash
- Fixed memory leak in esp_http_client_example
HTTP Server
Added
- WebSocket CLOSE frame can support callback function
Provisioning
Fixed
- wifi_provisioning: Fixed provisioning not stopping in release mode
- Added check for passphrase length in softAP scheme to fix issue reported in #8063
mbedTLS
Changed
- Upgrade to release v2.28.0 from v2.28 LTS series.
Bootloader
Fixed
- Fixed the issue custom uart gpio doesn't take effect
Storage
Fixed
- NVS: Fixed OOM check wrong pointer issue
- VFS: Fixed errno value reported by open function (#8036)
Tools
Added
- idf_size.py: Support .noinit section names (#8428)
Changed
- idf_tools.py: Diagnostics have been improved in install scripts when creating virtualenv
- idf-component-manager version has been updated and maximum compatible version set
Fixed
- Use delay between rename attempts on Windows in the installer (https://esp32.com/viewtopic.php?f=13&t=25962)
- idf_size: Fixed bug with wrong memory calculation for ESP32-C3, ESP32-H2, ESP32-S3 and ESP32
- idf_size.py: Identify objects without extensions (*.{o,obj}) in MAP files
- Fixed stepping and tracing in GDB
- Fixed core dump decoding failure in IDF Monitor (#8099)
Build System
Added
- CMake build can now be called from another project, regardless on previously defined CMAKE_*_FLAGS (#7507).
External Libraries
Changed
- expat: upgrade to release version v2.4.3
Documentation
Added
- Added user-friendly guide about how to use ws_server_example_test.py
- Added an example list for ESP-WROVER-KIT
- Added a note to mck_io_num, to specify that only GPIO0/GPIO1/GPIO3 can be set as MCK signal for ESP32.
Changed
- Updated document of demo Bluetooth discovery
- Updated SPP related demos and documents
- Updated HFP demo README
- Updated A2DP demo documents
- README files updated and minor fixes on Bluetooth examples
- README updated to explain how to use UUID128 for GATT server and client examples
- Updated copyright date for docs automatically at build time
- Updated high-level interrupts and interrupt allocation documentation
- Updated a statement, specifying the heap_caps_malloc usage regarding PSRAM and DMA