ESP-IDF is the development framework for Espressif SoCs supported on Windows, Linux and macOS.

Overview

Espressif IoT Development Framework

ESP-IDF is the development framework for Espressif SoCs supported on Windows, Linux and macOS.

ESP-IDF Release and SoC Compatibility

The following table shows ESP-IDF support of Espressif SoCs where alt text and alt text denote preview status and support, respectively. In preview status the build is not yet enabled and some crucial parts could be missing (like documentation, datasheet). Please use an ESP-IDF release where the desired SoC is already supported.

Chip v3.3 v4.0 v4.1 v4.2 v4.3 v4.4
ESP32 alt text alt text alt text alt text alt text alt text
ESP32-S2 alt text alt text alt text
ESP32-C3 alt text alt text
ESP32-S3 alt text alt text Announcement
ESP32-H2 alt text Announcement

Espressif SoCs released before 2016 (ESP8266 and ESP8285) are supported by RTOS SDK instead.

Developing With ESP-IDF

Setting Up ESP-IDF

See https://idf.espressif.com/ for links to detailed instructions on how to set up the ESP-IDF depending on chip you use.

Note: Each SoC series and each ESP-IDF release has its own documentation. Please see Section Versions on how to find documentation and how to checkout specific release of ESP-IDF.

Non-GitHub forks

ESP-IDF uses relative locations as its submodules URLs (.gitmodules). So they link to GitHub. If ESP-IDF is forked to a Git repository which is not on GitHub, you will need to run the script tools/set-submodules-to-github.sh after git clone. The script sets absolute URLs for all submodules, allowing git submodule update --init --recursive to complete. If cloning ESP-IDF from GitHub, this step is not needed.

Finding a Project

As well as the esp-idf-template project mentioned in Getting Started, ESP-IDF comes with some example projects in the examples directory.

Once you've found the project you want to work with, change to its directory and you can configure and build it.

To start your own project based on an example, copy the example project directory outside of the ESP-IDF directory.

Quick Reference

See the Getting Started guide links above for a detailed setup guide. This is a quick reference for common commands when working with ESP-IDF projects:

Setup Build Environment

(See the Getting Started guide listed above for a full list of required steps with more details.)

  • Install host build dependencies mentioned in the Getting Started guide.
  • Run the install script to set up the build environment. The options include install.bat or install.ps1 for Windows, and install.sh or install.fish for Unix shells.
  • Run the export script on Windows (export.bat) or source it on Unix (source export.sh) in every shell environment before using ESP-IDF.

Configuring the Project

  • idf.py set-target sets the target of the project to . Run idf.py set-target without any arguments to see a list of supported targets.
  • idf.py menuconfig opens a text-based configuration menu where you can configure the project.

Compiling the Project

idf.py build

... will compile app, bootloader and generate a partition table based on the config.

Flashing the Project

When the build finishes, it will print a command line to use esptool.py to flash the chip. However you can also do this automatically by running:

idf.py -p PORT flash

Replace PORT with the name of your serial port (like COM3 on Windows, /dev/ttyUSB0 on Linux, or /dev/cu.usbserial-X on MacOS. If the -p option is left out, idf.py flash will try to flash the first available serial port.

This will flash the entire project (app, bootloader and partition table) to a new chip. The settings for serial port flashing can be configured with idf.py menuconfig.

You don't need to run idf.py build before running idf.py flash, idf.py flash will automatically rebuild anything which needs it.

Viewing Serial Output

The idf.py monitor target uses the idf_monitor tool to display serial output from Espressif SoCs. idf_monitor also has a range of features to decode crash output and interact with the device. Check the documentation page for details.

Exit the monitor by typing Ctrl-].

To build, flash and monitor output in one pass, you can run:

idf.py flash monitor

Compiling & Flashing Only the App

After the initial flash, you may just want to build and flash just your app, not the bootloader and partition table:

  • idf.py app - build just the app.
  • idf.py app-flash - flash just the app.

idf.py app-flash will automatically rebuild the app if any source files have changed.

(In normal development there's no downside to reflashing the bootloader and partition table each time, if they haven't changed.)

Erasing Flash

The idf.py flash target does not erase the entire flash contents. However it is sometimes useful to set the device back to a totally erased state, particularly when making partition table changes or OTA app updates. To erase the entire flash, run idf.py erase-flash.

This can be combined with other targets, ie idf.py -p PORT erase-flash flash will erase everything and then re-flash the new app, bootloader and partition table.

Resources

Issues
  • PSRAM Cache Issue stills exist (IDFGH-31)

    PSRAM Cache Issue stills exist (IDFGH-31)

    We stumbled upon the fact that cache issue with PSRAM still exist, even in the newest development environment. This can produce random crashes, even if the code is 100 % valid.

    This very small example program reproduces the problem easily, at least if compiled with newest ESP-IDF and toolchain under Mac OS X (did not try other environments): https://github.com/neonious/memcrash-esp32/

    (As a side note: We noticed this problem when we implemented the dlmalloc memory allocator in a fork of ESP-IDF. We worked around this problem (hopefully you can fix it correctly), and now have an ESP-IDF with far faster allocations. Take a look at the blog post here: https://www.neonious-basics.com/index.php/2018/12/27/faster-optimized-esp-idf-fork-psram-issues/ ).

    opened by ThomasRogg 180
  • Bricked ESP32 Modules - XMC flash chip corrupt (IDFGH-6332)

    Bricked ESP32 Modules - XMC flash chip corrupt (IDFGH-6332)

    Environment

    • Module or chip used: ESP32-WROVER-E (16M)
    • IDF version: 3.3.5
    • Build System: Make
    • Compiler version: 1.22.0-97-gc752ad5d
    • Operating System: Windows
    • (Windows only) environment type: MSYS2 mingw32
    • Power Supply: external 3.3V

    Chip is ESP32-D0WD-V3 (revision 3) Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None Crystal is 40MHz MAC: e0:e2:e6:4b:be:f8

    Problem Description

    We've recently gotten at least 3 bricked devices returned from customers with exactly the same symptoms. ESP module does not boot from flash. It seems to be a failure of the first-stage bootloader.

    This was reported a few months ago on esp32.com but didn't get any attention from Espressif. I then filled-out the form here a couple weeks ago: But I didn't even get an email confirmation that it was received.

    WiFive pointed out that the garbage load address 0xff001cff looks like a left-shifted version of the correct 0x3fff001c

    Steps to reproduce

    I'm unable to reproduce the issue in the lab. It has occurred in a small percentage ( ~ 0.1%) of units which have been sold and used by customers for up to 3 years.

    Code to reproduce this issue

    My application is based on this project, which includes a OTA update mechanism.

    Debug Logs

    ets Jul 29 2019 12:21:46
    
    rst:0x10 (RTCWDT_RTC_RESET),boot:0x13 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0xee
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:1
    load:0x3fff0018,len:4
    load:0xff001cff,len:1809471
    1150 mmu set 00010000, pos 00010000
    1150 mmu set 00020000, pos 00020000
    1150 mmu set 00030000, pos 00030000
    1150 mmu set 00040000, pos 00040000
    1150 mmu set 00050000, pos 00050000
    1150 mmu set 00060000, pos 00060000
    1150 mmu set 00070000, pos 00070000
    1150 mmu set 00080000, pos 00080000
    1150 mmu set 00090000, pos 00090000
    1150 mmu set 000a0000, pos 000a0000
    1150 mmu set 000b0000, pos 000b0000
    1150 mmu set 000c0000, pos 000c0000
    1150 mmu set 000d0000, pos 000d0000
    1150 mmu set 000e0000, pos 000e0000
    ets Jul 29 2019 12:21:46
    
    rst:0x10 (RTCWDT_RTC_RESET),boot:0x3 (DOWNLOAD_BOOT(UART0/UART1/SDIO_REI_REO_V2))
    waiting for download
    

    Other items

    sdkconfig.txt

    Awaiting Response Status: Done Resolution: Done 
    opened by phatpaul 95
  • Wifi - meaning of log message (IDFGH-1299)

    Wifi - meaning of log message (IDFGH-1299)

    Sorry for the cross-post - I just remembered that I was told to post issues here instead on the sub projects as they are less monitored. I'll close the other issue.

    I'm trying to figure out why the wifi driver is running out of memory, when there is 4MB free:

    W (115021) wifi: alloc eb len=24 type=3 fail, heap:4098144

    I can't find where this is logged so I assume that it is part of the still closed-source libraries(?)

    What does type=3 mean in this case and what other possible values are there? Desired type DRAM/IRAM or memory capability?

    opened by PerMalmberg 87
  • [TW#17765] I2C crashing - watchdog timeout (master & v3.0 branch)

    [TW#17765] I2C crashing - watchdog timeout (master & v3.0 branch)

    I have a project that has three I2C slave devices on a single bus (running at 100kHz). For some time I was developing with ESP-IDF 2.1.1 and everything was working pretty well, except for a weird problem where the I2C master would freeze up after a few minutes. I did some research and it looks like this is a problem with the I2C master hardware state machine which has been addressed in more recent commits of ESP-IDF. So to make use of this fix I migrated my project to use master (595688a32ad653d8e6cb1c7682b813f96125853e). I had to make a few changes (remove references to FreeRTOS heap measurement commands, add nvs_flash_init() before initialising WiFi) but then everything seemed to work well. The slave devices are all being polled correctly and everything seems happy.

    The project is here: https://github.com/DavidAntliff/esp32-poolmon/tree/ESP-IDF_master

    I came back a little while later and the application is crashing over and over with the following console output shortly after boot:

    Guru Meditation Error: Core  0 panic'ed (Interrupt wdt timeout on CPU0)
    Register dump:
    PC      : 0x400859f3  PS      : 0x00060034  A0      : 0x80084685  A1      : 0x3ffb0590  
    0x400859f3: xQueueGenericSendFromISR at /Users/david/esp32/esp-idf-master/components/freertos/./queue.c:2037
    
    A2      : 0x00000001  A3      : 0x00000000  A4      : 0x3ffb05b0  A5      : 0x00000002  
    A6      : 0x3ffbc970  A7      : 0x00060021  A8      : 0x800859f3  A9      : 0x3ffb0570  
    A10     : 0x00000000  A11     : 0x00000000  A12     : 0x00000002  A13     : 0x3ffbadc0  
    A14     : 0x00000000  A15     : 0x400849fc  SAR     : 0x00000012  EXCCAUSE: 0x00000005  
    0x400849fc: i2c_isr_handler_default at /Users/david/esp32/esp-idf-master/components/driver/./i2c.c:1023
    
    EXCVADDR: 0x00000000  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff  
    
    Backtrace: 0x400859f3:0x3ffb0590 0x40084682:0x3ffb05b0 0x40084a89:0x3ffb05e0 0x40082ba5:0x3ffb0610 0x4000bfed:0x00000000
    0x400859f3: xQueueGenericSendFromISR at /Users/david/esp32/esp-idf-master/components/freertos/./queue.c:2037
    
    0x40084682: i2c_master_cmd_begin_static at /Users/david/esp32/esp-idf-master/components/driver/./i2c.c:1023
    
    0x40084a89: i2c_isr_handler_default at /Users/david/esp32/esp-idf-master/components/driver/./i2c.c:1023
    
    0x40082ba5: _xt_lowint1 at /Users/david/esp32/esp-idf-master/components/freertos/./xtensa_vectors.S:1105
    
    Rebooting...
    

    A software or on-board reset does not stop this endless reset behaviour, however removing power for a short period of time does "fix" the issue. It is strange that a brief ESP32 reset does not clear it. (EDIT: but a long reset press does).

    opened by DavidAntliff 78
  • MODBUS Serial example not working (IDFGH-5822)

    MODBUS Serial example not working (IDFGH-5822)

    Hi newbie here, working with esp-idf 4.2.2

    I am working on MODBUS Serial example of esp-idf,I simply just connected the hardware as shown in the example.

    ESP32-1(Master) and ESP32-2(Slave) by using two TTL to RS485 converters.

    But I am not able to get the expected output. I am gettinfg the 0x108 Err that is invalid slave response.

    Master output: E (65579) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65579) MASTER_TEST: Characteristic #0 (Data_channel_0) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65599) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65609) MASTER_TEST: Characteristic #1 (Humidity_1) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65619) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65629) MASTER_TEST: Characteristic #2 (Temperature_1) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65649) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65649) MASTER_TEST: Characteristic #3 (Humidity_2) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65669) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65679) MASTER_TEST: Characteristic #4 (Temperature_2) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65699) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65699) MASTER_TEST: Characteristic #5 (Humidity_3) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). E (65719) MB_CONTROLLER_MASTER: mbc_master_get_parameter(111): SERIAL master get parameter failure error=(0x108) (ESP_ERR_INVALID_RESPONSE). E (65729) MASTER_TEST: Characteristic #6 (Test_regs) read fail, err = 0x108 (ESP_ERR_INVALID_RESPONSE). I (65739) MASTER_TEST: Characteristic #7 RelayP1 (on/off) value = OFF (0x55) read successful. I (65749) MASTER_TEST: Characteristic #8 RelayP2 (on/off) value = OFF (0xaa) read successful. E (67749) MASTER_TEST: Alarm is not triggered after 30 retries. I (67749) MASTER_TEST: Destroy master...

    Slave Response: I (97984) SLAVE_TEST: COILS READ (97681730 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (97994) SLAVE_TEST: COILS READ (97690818 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (100154) SLAVE_TEST: COILS READ (99851729 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (100164) SLAVE_TEST: COILS READ (99860956 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (102324) SLAVE_TEST: COILS READ (102021659 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (102334) SLAVE_TEST: COILS READ (102030886 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (104494) SLAVE_TEST: COILS READ (104191526 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (104504) SLAVE_TEST: COILS READ (104200746 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (106664) SLAVE_TEST: COILS READ (106361451 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (106674) SLAVE_TEST: COILS READ (106370676 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (108834) SLAVE_TEST: COILS READ (108532558 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (108844) SLAVE_TEST: COILS READ (108541925 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (111004) SLAVE_TEST: COILS READ (110702488 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (111014) SLAVE_TEST: COILS READ (110711785 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (113174) SLAVE_TEST: COILS READ (112872418 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (113184) SLAVE_TEST: COILS READ (112881716 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (115344) SLAVE_TEST: COILS READ (115042417 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (115354) SLAVE_TEST: COILS READ (115051715 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (117514) SLAVE_TEST: COILS READ (117212208 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (117524) SLAVE_TEST: COILS READ (117221581 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (119684) SLAVE_TEST: COILS READ (119382138 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (119694) SLAVE_TEST: COILS READ (119391435 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (121854) SLAVE_TEST: COILS READ (121552068 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (121864) SLAVE_TEST: COILS READ (121561365 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (124024) SLAVE_TEST: COILS READ (123722067 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (124034) SLAVE_TEST: COILS READ (123731364 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (126194) SLAVE_TEST: COILS READ (125891858 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (126204) SLAVE_TEST: COILS READ (125901224 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (128364) SLAVE_TEST: COILS READ (128061788 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (128374) SLAVE_TEST: COILS READ (128071085 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (130534) SLAVE_TEST: COILS READ (130231718 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (130544) SLAVE_TEST: COILS READ (130241014 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (132704) SLAVE_TEST: COILS READ (132401717 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (132714) SLAVE_TEST: COILS READ (132411014 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (134874) SLAVE_TEST: COILS READ (134571511 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (134884) SLAVE_TEST: COILS READ (134580874 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (137044) SLAVE_TEST: COILS READ (136741438 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (137054) SLAVE_TEST: COILS READ (136750734 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (139214) SLAVE_TEST: COILS READ (138911367 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (139224) SLAVE_TEST: COILS READ (138920664 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (141384) SLAVE_TEST: COILS READ (141081367 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (141394) SLAVE_TEST: COILS READ (141090663 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (143554) SLAVE_TEST: COILS READ (143251158 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (143564) SLAVE_TEST: COILS READ (143260524 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (145724) SLAVE_TEST: COILS READ (145421087 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (145734) SLAVE_TEST: COILS READ (145430384 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (147894) SLAVE_TEST: COILS READ (147591017 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (147904) SLAVE_TEST: COILS READ (147600314 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (150064) SLAVE_TEST: COILS READ (149761016 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (150074) SLAVE_TEST: COILS READ (149770313 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (152234) SLAVE_TEST: COILS READ (151930807 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (152244) SLAVE_TEST: COILS READ (151940174 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (154404) SLAVE_TEST: COILS READ (154100737 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (154414) SLAVE_TEST: COILS READ (154110034 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (156574) SLAVE_TEST: COILS READ (156270667 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (156584) SLAVE_TEST: COILS READ (156279964 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (158744) SLAVE_TEST: COILS READ (158440666 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (158754) SLAVE_TEST: COILS READ (158449963 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (160914) SLAVE_TEST: COILS READ (160610527 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (160924) SLAVE_TEST: COILS READ (160619893 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 I (163084) SLAVE_TEST: COILS READ (162780387 us), ADDR:0, TYPE:32, INST_ADDR:0x3ffb26a4, SIZE:8 I (163094) SLAVE_TEST: COILS READ (162789685 us), ADDR:8, TYPE:32, INST_ADDR:0x3ffb26a5, SIZE:8 ![processed](https://user-images.githubusercontent.com/46959108/132165759-24327fb1-46d1-4ec9-89d4-218db4b1ed43.jpeg)

    Please help to solve this issue.

    Thank you in advance.

    Awaiting Response Status: Done Resolution: Done 
    opened by rjrajbir 76
  • [TW#13919] Bluetooth HID implementation progress? (IDFGH-6354)

    [TW#13919] Bluetooth HID implementation progress? (IDFGH-6354)

    Hi all,

    I'm considering to build a bluetooth keyboard by myself later on with ESP32 as its microcontroller. But I can't find much details or documentations about those HID APIs. I did found a topic on Espressif forum saying "will implement it eventually". So...did you finish implementing those stuff?

    Regards, Jackson

    Status: Done Resolution: Done 
    opened by huming2207 71
  • flash read err, 1000 (IDFGH-807)

    flash read err, 1000 (IDFGH-807)

    Hi,

    I see the above message on average 5 out of 6 times when resetting ESP32 DevKitJ board The whole log with this message looks like below (02_blink example loaded):

    ets Jun  8 2016 00:22:57
    
    rst:0x1 (POWERON_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
    flash read err, 1000
    Falling back to built-in command interpreter.
    OK
    >ets Jun  8 2016 00:22:57
    
    rst:0x10 (RTCWDT_RTC_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0x00
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:2
    load:0x3ffc0008,len:0
    load:0x3ffc0008,len:1964
    load:0x40078000,len:3648
    ho 0 tail 12 room 4
    load:0x40080000,len:256
    entry 0x40080034
    I (305) heap_alloc_caps: Initializing heap allocator:
    I (306) heap_alloc_caps: Region 19: 3FFB1B9C len 0002E464 tag 0
    I (307) heap_alloc_caps: Region 25: 3FFE8000 len 00018000 tag 1
    I (317) cpu_start: Pro cpu up.
    I (323) cpu_start: Single core mode
    I (329) cpu_start: Pro cpu start user code
    rtc v118 Oct 19 2016 15:22:11
    XTAL 40M
    I (368) cpu_start: Starting scheduler on PRO CPU.
    

    The log without message looks as follows:

    ets Jun  8 2016 00:22:57
    
    rst:0x1 (POWERON_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
    ets Jun  8 2016 00:22:57
    
    rst:0x10 (RTCWDT_RTC_RESET),boot:0x16 (SPI_FAST_FLASH_BOOT)
    configsip: 0, SPIWP:0x00
    clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
    mode:DIO, clock div:2
    load:0x3ffc0008,len:0
    load:0x3ffc0008,len:1964
    load:0x40078000,len:3648
    ho 0 tail 12 room 4
    load:0x40080000,len:256
    entry 0x40080034
    I (305) heap_alloc_caps: Initializing heap allocator:
    I (306) heap_alloc_caps: Region 19: 3FFB1B9C len 0002E464 tag 0
    I (307) heap_alloc_caps: Region 25: 3FFE8000 len 00018000 tag 1
    I (317) cpu_start: Pro cpu up.
    I (323) cpu_start: Single core mode
    I (329) cpu_start: Pro cpu start user code
    rtc v118 Oct 19 2016 15:22:11
    XTAL 40M
    I (368) cpu_start: Starting scheduler on PRO CPU.
    

    Observations:

    1. Massage flash read err, 1000 shows up as well when I erase_flash using esptool.py.
    2. There seem to be no issues with esp-idf examples running on this board (except the message on start up)
    3. Message show up for all examples I tried
    4. I do not see this message on two other boards I have; ESP32 Demo Board V2 and Core Board V2 (aka DevKitC)

    Do you think I can troubleshoot something about it?

    opened by krzychb 68
  • Trouble with PPPoS client - Address of function esp_handle_uart_data() become null (in esp_modem.c) (IDFGH-4162)

    Trouble with PPPoS client - Address of function esp_handle_uart_data() become null (in esp_modem.c) (IDFGH-4162)

    Environment

    • Development Kit: none
    • Module or chip used: ESP32-WROOM-32
    • IDF version: v4.1
    • Build System: PlatformIO (2.0.0+sha.3688b7b)
    • Operating System: macOS
    • Using an IDE?: VSCode with PlatformIO
    • Power Supply: USB or external 5V

    Problem Description

    In the example of PPPoS (client), there is something troubles and the application crash with a Guru Meditation Error: Core 0 panic'ed (InstrFetchProhibited). Exception was unhandled. The message is:

    Guru Meditation Error: Core  0 panic'ed (InstrFetchProhibited). Exception was unhandled.
    Core 0 register dump:
    PC      : 0x00000000  PS      : 0x00060a30  A0      : 0x800d56de  A1      : 0x3ffbccb0  
    A2      : 0x3ffbb428  A3      : 0x00000000  A4      : 0x3ffbb98c  A5      : 0x00000000  
    A6      : 0x3ffbb9cc  A7      : 0x00000000  A8      : 0x800d5584  A9      : 0x3ffbcc60  
    A10     : 0x3ffbb46c  A11     : 0x00000009  A12     : 0x00000000  A13     : 0x00000000  
    A14     : 0x3ffbb670  A15     : 0x00000009  SAR     : 0x00000004  EXCCAUSE: 0x00000014  
    EXCVADDR: 0x00000000  LBEG    : 0x4000c2e0  LEND    : 0x4000c2f6  LCOUNT  : 0xffffffff  
    
    ELF file SHA256: e3e23c687850dc53
    
    Backtrace: 0xfffffffd:0x3ffbccb0 |<-CORRUPTED
    

    After multiple debugs with JTAG (ESP-Prog) and debug messages, I have found where the trouble is. The application crash in the method esp_handle_uart_data in esp_modem.c file. To debug the trouble, I have created a specific repository (https://github.com/jonathandreyer/esp32-sim7000) with the code which exposes the trouble. With this code, the debug log is:

    D (7516) sim800: STATUS of module is OK
    D (7516) pppos-example: Device SIM800 is power_up()
    D (7516) sim800: start opening of SIM800 module
    D (7516) sim800: try to sync with the module
    D (7526) esp-modem: modem>>: DST: 0
    
    E (7526) esp-modem: esp_dte_handle_line(90): no handler for line
    W (7526) pppos-example: Unknow line received: DST: 0
    
    D (7636) esp-modem: modem>>: *PSUTTZ: 20/10/25,21:41:30","+04",0
    
    E (7636) esp-modem: esp_dte_handle_line(90): no handler for line
    W (7636) pppos-example: Unknow line received: *PSUTTZ: 20/10/25,21:41:30","+04",0
    
    D (8516) sim800: .
    D (8516) esp-modem: modem<<: AT
    D (8516) esp-modem: handle_uart_data #1, len 3
    I (8516) esp-modem: 0x3ffbb46c   41 54 0d                                          |AT.|
    D (8516) esp-modem: handle_uart_data #2, callback method is NULL
    assertion "esp_dte->receive_cb" failed: file "components/modem/esp_modem.c", line 152, function: esp_handle_uart_data
    abort() was called at PC 0x40119e57 on core 0
    
    ELF file SHA256: 74d46404e09b68da
    
    Backtrace: 0x400841e1:0x3ffbcc40 0x40084575:0x3ffbcc60 0x40119e57:0x3ffbcc80 0x400d565e:0x3ffbccb0 0x400d57fb:0x3ffbcce0 0x40085a41:0x3ffbcd10
      #0  0x400841e1:0x3ffbcc40 in invoke_abort at /Users/<USER>/.platformio/packages/framework-espidf/components/esp32/panic.c:157
      #1  0x40084575:0x3ffbcc60 in abort at /Users/<USER>/.platformio/packages/framework-espidf/components/esp32/panic.c:174
      #2  0x40119e57:0x3ffbcc80 in __assert_func at /builds/idf/crosstool-NG/.build/HOST-x86_64-apple-darwin12/xtensa-esp32-elf/src/newlib/newlib/libc/stdlib/assert.c:62 (discriminator 8)
      #3  0x400d565e:0x3ffbccb0 in esp_handle_uart_data at components/modem/esp_modem.c:152 (discriminator 1)
      #4  0x400d57fb:0x3ffbcce0 in uart_event_task_entry at components/modem/esp_modem.c:172
      #5  0x40085a41:0x3ffbcd10 in vPortTaskWrapper at /Users/<USER>/.platformio/packages/framework-espidf/components/freertos/port.c:143
    

    Expected Behavior

    Actual Behavior

    Steps to reproduce

    In this case, I use a SIM7000E but it will probably work with SIM800 or another module.

    Code to reproduce this issue

    The code to reproduce this trouble is available here: https://github.com/jonathandreyer/esp32-sim7000

    opened by jonathandreyer 65
  • If optimize for performance in menuconfig, modbus failed on incomplete message (IDFGH-2371)

    If optimize for performance in menuconfig, modbus failed on incomplete message (IDFGH-2371)

    On latest master. Optimize for size works, but if set to Optimize for performance, I got:

    Modbus Error: [Input/Output] Modbus Error: [Invalid Message] Incomplete message received, expected at least 2 bytes (0 received)
    

    Just change sdkconfig, no source code modified.

    I'm using baudrate 230400, and I tried 115200 but still failed on the same error. ModbusSerialClient(strict=False or True) also have no effect.

    Here is my test script in Python3(>=3.6):

    import time
    
    import serial
    
    from pymodbus.client.sync import ModbusSerialClient
    
    
    def reset(port, wait=1):
            with serial.Serial(port) as ser:
                    ser.dtr = False
                    ser.rts = False
            time.sleep(wait)
    
    
    port = 'COM32'
    baudrate=230400
    
    reset(port)
    
    client = ModbusSerialClient(
            method="rtu", strict=False,
            port=port, baudrate=baudrate, bytesize=8, stopbits=1, parity='N')
    client.connect()
    
    unit = 1
    res = client.write_registers(0, [500], unit=unit)
    if res.isError():
            print(f'{res}')
    else:
            print('OK')
    
    client.close()
    

    sdkconfig and esp32 debug log also attached: SDKConfig & Log.zip

    opened by keelung-yang 65
  • Adding WebSocket server support for esp_http_server (IDFGH-2151)

    Adding WebSocket server support for esp_http_server (IDFGH-2151)

    Hi all,

    This Pull Request adds the WebSocket support for esp_http_server library. It mainly does:

    • Handling WebSocket handshake
      • Parsing HTTP upgrade request
      • Reply the upgrade request
    • Receive WebSocket packets
      • Parse header, decode to a struct
      • Unmask payload (if required)
    • Send WebSocket packets

    I've tested my implementation with websocat (ref: https://github.com/vi/websocat) and it works just fine for now.

    Here's a quick and dirty example for testing:

    static esp_err_t ws_ping_handler(httpd_req_t *req)
    {
        uint8_t buf[128] = { 0 };
        httpd_ws_pkt_t ws_pkt;
        memset(&ws_pkt, 0, sizeof(httpd_ws_pkt_t));
        ws_pkt.payload = buf;
    
        esp_err_t ret = httpd_ws_recv_pkt(req, &ws_pkt, 128, 60000);
        ESP_LOGI(TAG, "Got packet with message: %s", ws_pkt.payload);
    
        ret = ret ? : httpd_ws_send_pkt(req, &ws_pkt);
        return ret;
    }
    
    static const httpd_uri_t ws = {
        .uri        = "/ws",
        .method     = HTTP_GET,
        .handler    = ws_ping_handler,
        .user_ctx   = NULL,
        .is_websocket = true
    };
    
    static httpd_handle_t start_webserver(void)
    {
        httpd_handle_t server = NULL;
        httpd_config_t config = HTTPD_DEFAULT_CONFIG();
    
        // Start the httpd server
        ESP_LOGI(TAG, "Starting server on port: '%d'", config.server_port);
        if (httpd_start(&server, &config) == ESP_OK) {
            // Set URI handlers
            ESP_LOGI(TAG, "Registering URI handlers");
            // ...some other HTTP endpoint handlers also add at here
            httpd_register_uri_handler(server, &ws);
            return server;
        }
    
        ESP_LOGI(TAG, "Error starting server!");
        return NULL;
    }
    

    Then run websocat ws://{ESP32_IP_ADDR}/ws, type in something and press Enter.

    Meanwhile, I will submit some other examples soon on another Pull Request later.

    Please review this Pull Request and provide some advice if possible. Thanks!

    Regards, Jackson Hu

    opened by huming2207 65
  • Issues with mdns server and now with websocket server too (IDFGH-5259)

    Issues with mdns server and now with websocket server too (IDFGH-5259)

    Hi,

    My mdns server and websocket server were working properly for a long time. I ended up putting the project aside for few months because i am waiting for the launch of the esp32-s3 modules.

    When i came back to the project i decided to do some tests, and the mdns server was behaving strangely. Using wireshark i saw that the mdns server sent the ad for about 6 times and stopped(after manual reset). The first 4 times every 1 seconds and the last 2 times every 2 seconds and stopped. I configured mdns on menuconfig so that it would send the notification to the network every 1 second.

    During this period we moved to an new internet provider and also to a new wifi router. I thought the problem could be the new wifi router, but i haven't been able to find the problem yet.

    So i decided to update the esp-idf. I updated to v4.4-dev-1254-g639e7ad49.

    After esp-idf update the mdns problem still persists. And now the websocket server also bugged.

    Using the idf.py monitor, i can see that websocket server start ok, but when i connect to the server through my android application, the following message appears: W (00:00:08.807) httpd_ws: httpd_ws_get_frame_type: Failed to read header byte (socket FD invalid), closing socket now W (00:00:08.816) httpd_ws: httpd_ws_get_frame_type: Failed to read header byte (socket FD invalid), closing socket now

    Before the update of the esp idf, the websocket server worked ok, including "ESP-IDF Release v4.2.1".

    Some suggestion on how to resolve the mdns server and now the websocket server bug ?

    Note: i changed the httpd priority from "config.httpd.task_priority = tskIDLE_PRIORITY + 5" to "config.httpd.task_priority = configMAX_PRIORITIES".

    @david-cermak

    Thank's.

    Awaiting Response Status: Done Resolution: Done 
    opened by baldhead69 61
  • How do I reference esp_wpa2.h in esp-idf v4.4+ (IDFGH-7971)

    How do I reference esp_wpa2.h in esp-idf v4.4+ (IDFGH-7971)

    In esp-idf v4.1 you can use #include "esp_wpa2.h" to reference this file

    When I try it in esp-idf v4.4 I get this error:

    fatal error: esp_wpa2.h: No such file or directory
     #include "esp_wpa2.h"
    
    Status: Opened 
    opened by MATTYGILO 1
  • BLE failed to get charactreristic value after reconnection (IDFGH-7970)

    BLE failed to get charactreristic value after reconnection (IDFGH-7970)

    Hi,

    ENVIRONMENT:

    • [email protected] -> framework-espidf @ 3.40300.0 (4.3.0)
    • BLE driver: Bluedroid (loaded dynamically)

    DESCRIPTION I am trying to perform a new connection and BLE transfer after being connected or have tried being connected. But I am finding troubles when reading characterictics value.

    It only works ok properly when coming freshly from deep_sleep (charactristic value is read properly by ESP when phone writes via BLE). But during the same boot I always find the same trouble. The fisrt characteristic is not read properly, read value is not the expected one.

    I have tried several things: - Unregister ble app via esp_ble_gatts_app_unregister -> no success

        esp_ble_gap_stop_advertising();
        esp_bluedroid_disable();
        esp_bluedroid_deinit();
    
        esp_bt_controller_disable();
        esp_bt_controller_deinit();
    
        esp_ble_gatts_app_unregister(gl_profile_tab[PROFILE_A_APP_ID].gatts_if);
    

    - Unload full BLE driver via -> no success

        esp_ble_gap_stop_advertising();
        esp_bluedroid_disable();
        esp_bluedroid_deinit();
    
        esp_bt_controller_disable();
        esp_bt_controller_deinit();
    
        esp_bt_mem_release( ESP_BT_MODE_BLE );   // OK for deep sleep  // crash from idle
    
    

    Any help will be welcome.

    Status: Opened 
    opened by jrHernandezSio 0
  • Hidden stack overflow? (IDFGH-7969)

    Hidden stack overflow? (IDFGH-7969)

    Hi,

    ENVIRONMENT: [email protected] -> ESP-IDF 4.3

    I am having a crash when starting my device, but it is not happening consistently, it happens only sometimes and there is no way to reproduce it.

    I would like to know if this may be related to stack overflow problem. If so, how can I increase stack size for main task? The main task is the only task running when creashing.

    Core  0 register dump:
    PC      : 0x40093aad  PS      : 0x00060330  A0      : 0x8012f41a  A1      : 0x3ffbacc0
    A2      : 0xc000b83f  A3      : 0xffffffff  A4      : 0x00060b20  A5      : 0x08000000
    A6      : 0x00000009  A7      : 0x3ffbab94  A8      : 0x3ffc3e14  A9      : 0x00000001
    A10     : 0x00000000  A11     : 0x00060323  A12     : 0x3f400464  A13     : 0x3f4001f8
    A14     : 0x00000400  A15     : 0x3f400bdc  SAR     : 0x00000004  EXCCAUSE: 0x0000001c
    EXCVADDR: 0xc000b87f  LBEG    : 0x400014fd  LEND    : 0x4000150d  LCOUNT  : 0xfffffffc
    
    Backtrace:0x40093aaa:0x3ffbacc0 0x4012f417:0x3ffbad00 0x400dc207:0x3ffbad40 0x400dd08d:0x3ffbad80 0x400dd09f:0x3ffbada0 0x400dd307:0x3ffbadc0 0x400dd371:0x3ffbade0 0x400d9075:0x3ffbae00 0x400d3a47:0x3ffbae20 0x400d4b01:0x3ffbae40 0x400d577e:0x3ffbae60 0x400d6cb3:0x3ffbae90 0x401c5b27:0x3ffbafd0 0x40095db9:0x3ffbaff0
      #0  0x40093aaa:0x3ffbacc0 in xQueueSemaphoreTake at C:\Users\jr.hernandez\.platformio\packages\framework-espidf\components\freertos/queue.c:1447 (discriminator 1)
      #1  0x4012f417:0x3ffbad00 in uart_flush_input at C:\Users\jr.hernandez\.platformio\packages\framework-espidf\components\driver/uart.c:1270 (discriminator 2)
      #2  0x400dc207:0x3ffbad40 in SI_execute at lib/SERIAL_INTERFACE/serial_interface.c:297
      #3  0x400dd08d:0x3ffbad80 in is_attached at lib_prj/BG95/bg95.c:535
      #4  0x400dd09f:0x3ffbada0 in detach at lib_prj/BG95/bg95.c:553
      #5  0x400dd307:0x3ffbadc0 in BG95_off_avd at lib_prj/BG95/bg95.c:758
      #6  0x400dd371:0x3ffbade0 in BG95_off at lib_prj/BG95/bg95.c:732
      #7  0x400d9075:0x3ffbae00 in SEND_get_barcodes_to_file at src/send_manager.c:2178
      #8  0x400d3a47:0x3ffbae20 in HD_rx_barcodes_to_file at src/main.c:970
      #9  0x400d4b01:0x3ffbae40 in SYSTEM_notify at src/main.c:1714
      #10 0x400d577e:0x3ffbae60 in SYSTEM_setup at src/main.c:1917
      #11 0x400d6cb3:0x3ffbae90 in app_main at src/main.c:6600
      #12 0x401c5b27:0x3ffbafd0 in main_task at C:\Users\jr.hernandez\.platformio\packages\framework-espidf\components\freertos\port/port_common.c:133 (discriminator 2)
      #13 0x40095db9:0x3ffbaff0 in vPortTaskWrapper at C:\Users\jr.hernandez\.platformio\packages\framework-espidf\components\freertos\port\xtensa/port.c:168
    
    
    ELF file SHA256: 3639363134373436
    
    Rebooting...
    
    Boot!...
    

    I would like to know if this may be related to stack overflow problem. If so, how can I increase stack size for main task?

    I have tried to check usStackHighWaterMark, but not sure how to get xHandle for main task.

    Regards, Ramon.

    Status: Opened 
    opened by jrHernandezSio 1
  • ESP32-S3 BLE 5.0 backwards compatibility with older devices (IDFGH-7967)

    ESP32-S3 BLE 5.0 backwards compatibility with older devices (IDFGH-7967)

    Hello. Its been a while. I have been further testing this with LightBlue and NRF connect app with different phones and there is my results:

    1. Using wire shark connected to NRF52840 :

    image

    1. Using LightBlue app on the Samsung galaxy S8 edge Android version 9. The ESP32 BLE does not show up in the scanned device list. MicrosoftTeams-image

    2. Using NRF connect app on the Samsung galaxy S8 edge Android version 9. The ESP32 BLE does not show up in the scanned device list

    MicrosoftTeams-image (1)

    1. Using Lightblue app on the Pocophone F1 Android version 9 MicrosoftTeams-image (5)

    2. Using NRF connect on Pocophone F1 android version 9 MicrosoftTeams-image (4)

    3. Using Lightblue on Huawei P10 android version 9 huavei_lightblue

    4. Using NRF Connect on Huawei P10 android version 9 huavei_nrf

    5. Using NRF Connect on IPhone 12 pro max MicrosoftTeams-image (6)

    Results summed up: only the Iphone 12 pro max and Pocohpone F1 were able to capture the ESP32 5.0 BLE device.

    Samsung galaxy s8 edge and Huawei p10 did not discover ESP32-S3 5.0 BLE device.

    Is BLE 5.0 not backwards compatible with BLE 4? I was under impression that if the phone does not support BLE 5.0 I would still be able to connect to this device. Could someone clarify to me how does backwards compatibility work and how to overcome this issue?

    For example, reading about compatibility on internet: https://www.jabra.com/blog/bluetooth-5-headsets/#:~:text=Will%20Bluetooth%205.0%20headphones%20or,Bluetooth%20versions%20are%20backwards%20compatible.

    It says that BLE 5.0 headphone will be compatible with phone that does not support 5.0 so I dont understand why would some older phones does not detect ESP32-S3 BLE 5.0 as BLE device

    What if I am developing code with ESP32-S3 and ble 5.0 and the client develop app for it. How to ensure that older phones that do not support BLE 5.0 can still use the app to connect to my device?

    Status: Opened 
    opened by krupis 4
  • A2dp sink volume control turning off (IDFGH-7966)

    A2dp sink volume control turning off (IDFGH-7966)

    I would like to "lock" volume on my esp32 sink module and i don't know where i have to change received value for my constant value. I was trying to change volume_set_by_controller and volume_set_by_local_host but it gives no response. Only printing right value in terminal. How can I turn off this feature and don't receive volume from host(phone). If this possible to set 100% on my phone and 10% volume on esp sink??

    Type: Feature Request Status: Opened 
    opened by qombajn 2
Releases(v4.3.3)
  • v4.3.3(Jun 13, 2022)

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

    ESP-IDF v4.3.3 is a bugfix update for ESP-IDF v4.3. At the time of writing, ESP-IDF v4.4.1 is the latest stable release.

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

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

    Download an archive with submodules included

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

    Major changes

    This is the list of major changes since release v4.3.2:

    Major Bug Fixes

    • Heap: Fixed a bug in the TLSF allocator returning a chunk of memory smaller than requested
    • efuse: Fixed eFuse time settings issue on ESP32-C3

    Breaking Changes

    • http2_request/sh2lib: The sh2lib_connect API now now takes sh2lib configuration (sh2lib_config_t) as input instead of connection URI.
    • The following config options have been renamed -
      • MBEDTLS_KEY_EXCHANGE__SOME__PSK_ENABLEDMBEDTLS_KEY_EXCHANGE_SOME_PSK_ENABLED
      • MBEDTLS_KEY_EXCHANGE__WITH_CERT__ENABLEDMBEDTLS_KEY_EXCHANGE_WITH_CERT_ENABLED
    • Disabling PMF in Station configuration by menuconfig no longer possible. Station will connect in PMF Mode by default if AP advertises PMF support. API esp_wifi_disable_pmf_config is provided to disable PMF for testing purposes.

    Changelog

    Bluetooth

    Bluetooth Low Energy

    Fixed

    • Fixed BLE scannable extended adv performance issue in case of Wi-Fi coexistence
    • Fixed the BLE task watchdog timeout issue
    • Fixed BLE LLCP collision for channel map update
    • Fixed BLE controller BLE_ADV_UNDERRUN error
    • Fixed Link error of Bluetooth Kconfig
    • Fixed the issue in libphy.a that Wi-Fi gets disconnected after Bluetooth is de-initialized

    Classic Bluetooth

    Fixed

    • Fixed the delayed response 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

    Classic Bluetooth

    Changed

    • Updated HFP_HF version to 1.7.2
    • Improved HFP example README document
    • Improved bt discovery document
    • Improved SPP examples and documents
    • Improved A2DP examples and documents

    Fixed

    • SPP: Fixed SPP cannot malloc slot bugs
    • SPP: Fixed memory leak for SPP initiator when the connection is failed
    • SPP: Fixed SPP crash after calling esp_spp_deinit
    • SPP: Fixed SPP initialization failure without free mutex
    • SPP: Fixed SPP acceptor open with wrong remote address
    • HID: Fixed esp_hidh report map length checking function (https://github.com/espressif/esp-idf/issues/7586)
    • HID: Fixed output report char declaration (https://github.com/espressif/esp-idf/pull/5369)
    • HID: Fixed left right key confusion in comments (https://github.com/espressif/esp-idf/pull/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
    • A2DP: Fixed A2DP sink example which fails to get re-connected due to inapproper use of I2S driver
    • HFP: Fixed error during disconnecting audio in HFP example

    Bluetooth Low Energy

    Added

    • Support low duty cycle directed advertising
    • Added README files for the Bluetooth Bluedroid BLE 5.0 examples
    • Added Walkthrough tutorial files for the Bluetooth Bluedroid BLE 5.0 examples
    • Support HW CCA threshold value setting

    Fixed

    • Fixed high duty cycle directed advertising will not be stopped when timeout
    • Fixed issue that can not find mac address error
    • Fixed BLE data length of periodic advertising check issue
    • Fixed bluedroid compile failed if both enable BT_MULTI_CONNECTION_ENABLE and SMP_SLAVE_CON_PARAMS_UPD_ENABLE
    • Fixed the null pointer deference issue reported by BLE dos
    • Fixed crash in failure of memory allocation after erasing flash (https://github.com/espressif/esp-idf/issues/6170)

    NimBLE

    Added

    • Added BLE SPP service

    Changed

    • Changed write api call in throughput demo example to write without response

    Fixed

    • Fixed memory leak of timer during NimBLE Host start-stop process
    • Fixed BLE SPP build fail on Windows
    • Corrected stack initialisation dependency function checks
    • Added esp-timer guard check in porting layer.

    Blufi

    Fixed

    • Fixed blufi encryption interrupted unexpectedly lead to unable encryption again

    ESP-BLE-Mesh

    • Added proxy server connect and disconnect events
    • Fixed the abnormal disconnection of proxy client
    • Fixed that the oversized SegN may be used during provisioning

    Wi-Fi

    Added

    • Added new documentation page for Wi-Fi Security, DPP
    • Added support of EAP-FAST authentication
    • Updated ESP32-S2 phy lib to support ESP32-S2 revision 1 (ECO1) chip
    • Added PMF disable API

    Changed

    • Added changes for scan resumption in PBC mode
    • Allow for minimal scope of wifi_init_config_t.
    • Updated miswritten and abbreviated words and syntax errors for initializing WiFi section in esp_wifi.h header file
    • PMF: Allow keyindex in big endian format to workaround faulty APs

    Fixed

    • Added WPS PIN fixes
    • Fixed verbosity of supplicant logs
    • smartconfig: Fixed smartconfig set socket option failure
    • Fixed memory leak in WPA3 connection
    • Fixed failure during data transmission and getting stuck in Wi-Fi sleep if running WiFi and BT with modem-sleep together
    • Fixed "ca md too weak" issue for certificates in wifi_enterprise example
    • Fixed memory corruption in Wi-Fi Enterprise
    • Fixed Assoc comeback causing invalid state bug and cleanup in some FTM failure cases
    • Fixed fragment loss when 2td pn compare with 1th pn
    • Fixed sniffer FCS error crash issue
    • Fixed stale FTM report issue (https://github.com/espressif/esp-idf/pull/7773)
    • Fixed repeated FTM failures and other minor issues (https://github.com/espressif/esp-idf/issues/7702, https://github.com/espressif/esp-idf/issues/7753)
    • Always connect Station in PMF mode if possible
    • Fixed build warning for unused variables
    • Fixed scanning of AP's with mixed key management
    • Added some BTM fixes
    • Fixed issue reported by static analyser
    • Fixed phy tx power limit for ESP32-S2/ESP32-C3
    • Fixed clearing default wifi netif procedure
    • Fixed issue of data loss when WiFi power-save is enabled with WiFi API being called
    • Remove group cipher check for PMF connection

    ESP-WIFI-MESH

    Fixed

    • Fixed the device can not receive IP_EVENT_STA_GOT_IP when the router restarted

    Ethernet

    Changed

    • Increased LAN8720 ETH-PHY reset assertion time
    • DM9051: Improved Tx throughput rate (when sending large amount of data, the TCR_TXREQ bit is not cleared in time, causing packet loss and retransmission, which greatly reduces the throughput rate)
    • Using the blocking method, when it is judged that the TCR_TXREQ bit is automatically cleared to zero before sending, the measured blocking time is up to 77us, and the iperf tx throughput rate can reach 7.3Mbps(12MHz)

    Fixed

    • Fixed ESP32 EMAC stop/start sequence

    Security

    Added

    • secure_boot: Added missing #include "esp_flash_encrypt.h"

    Fixed

    • secure_boot: Fixed warning when UART ROM DL mode is disabled.
    • AES/SHA: Fixed issue with descriptors and buffer potentially being placed in RTC ram
    • AES/SHA: Fixed cache writeback/invalidate not being applied for CONFIG_SPIRAM_USE_MEMMAP
    • ssl_ds/configure_ds.py: Fixed error regarding verification for production mode

    Peripheral Drivers

    Added

    • PSRAM: Added support on ESP32-D0WDR2-V3
    • SPI Flash: Added support for TH Flash chips
    • SPI Flash: Support unlock for MXIC chips
    • USB_SERIAL_JTAG: Added blocking driver for supporting VFS
    • USB_SERIAL_JTAG: Can print through USB_SERIAL_JTAG port without changing the config option from UART
    • SOC: Added support to specify the maximum descriptor length when setting up the DMA descriptor link

    Changed

    • ADC: Upgraded ADC calibration algorithm on ESP32-C3
    • GPIO: Changed gpio_hal_iomux_func_sel() to be always inlined to avoid access issues when cache disabled
    • SPI flash: Changed ID_DEV_MASK() to be always inlined to avoid access issues when cache disabled
    • Timer Group: Reset timer group peripheral in timer_init() function (https://github.com/espressif/esp-idf/issues/6466)

    Fixed

    • Fixed brownout not working issue after deepsleep
    • 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
    • Freemodbus: Fixed the example mb_tcp_master to resolve slave IP address correctly when address gaps exist in data dictionary
    • 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/tcp_slave: Fixed memory leak in port_tcp_slave.c
    • Freemodbus: Fixed crash issue when start tcp_slave after (mbs_interface_ptr!=NULL) in mbc_tcp_slave_destroy()
    • Freemodbus: Fixed uart_set_pin() check error in modbus master serial example
    • GPIO: Fixed some gpio pin num errors on ESP32-S2 and ESP32-C3
    • GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (https://github.com/espressif/esp-idf/issues/5571)
    • GPIO: Fixed the issue that config struct is not properly initialized
    • GPIO: Fixed wrong GPIO_IS_DEEP_SLEEP_WAKEUP_VALID_GPIO macro (https://github.com/espressif/esp-idf/issues/8733)
    • HAL/ESP32-C3: Fixed SBA access from debugger in WFI mode
    • I2C: Fixed typo in timing macro name
    • I2C: Corrected some I2C functions IRAM usage and placement (https://github.com/espressif/esp-idf/issues/8422, https://github.com/espressif/esp-idf/issues/7249)
    • LEDC: Fixed ledc_set_duty failed to take effect when called frequently (https://github.com/espressif/esp-idf/issues/7288)
    • LEDC: Fixed incorrect fading behaviour with LEDC_FADE_NO_WAIT fade mode (https://github.com/espressif/esp-idf/issues/6710)
    • RMT: Fixed wrong RMT register for ESP32-S2, RMT doesn't have RX wrap mode (https://github.com/espressif/esp-idf/issues/8354)
    • 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
    • SPI: Fixed crash calling spi_bus_free when not initialized (https://github.com/espressif/esp-idf/issues/8642)
    • SPI: Fixed SPI Master driver cs_ena_posttrans wrong issue (https://github.com/espressif/esp-idf/issues/7758)
    • SPI: Fixed SPI Master Fullduplex DMA mode single-direction-transaction bug
    • SPI SLAVE: Fixed an issue with placing the interrupt handler into IRAM (https://github.com/espressif/esp-idf/issues/3870)
    • SPI SLAVE HD: Fixed stack variable bug in seg_slave example (https://github.com/espressif/esp-idf/issues/7163)
    • SPI Flash: Fixed behavior of esp_partition_get_sha256() in case the image is invalid.
    • SPI Flash: Fixed esp_flash_erase_region function over-erasing when requested size is 0 (https://github.com/espressif/esp-idf/pull/7314, https://github.com/espressif/esp-idf/issues/7272).
    • Timer Group: Fixed the issue that timer group can't re-alarm if auto-reload is disabled (https://github.com/espressif/esp-idf/issues/8095)
    • Touch Sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (https://github.com/espressif/esp-idf/pull/6895)
    • UART: Fixed a bug which prevented 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
    • UART: Fixed issue to free a registered custom ISR (https://github.com/espressif/esp-idf/issues/8150)
    • UART: Fixed uart_enable_tx_intr can't disable the interrupt (fixes https://github.com/espressif/esp-idf/issues/8150)
    • UART: Fixed RTS mis-reset before sending caused by context switch
    • USB: Fixed incorrect setting of D- pull down resistor
    • USB_SERIAL_JTAG: Fixed issue that cannot print with wifi by default (https://github.com/espressif/esp-idf/issues/8131)
    • USB_SERIAL_JTAG: Fixed the issue that there is no rom log when restarting

    Removed

    • Removed a deprecated macro: SPI_TRANS_SET_CD

    Core System

    Added

    • Added support for ESP32-C3 ECO4

    Fixed

    • RISC-V: Fixed usage of mcause within the interrupt handler
    • RISC-V: Fixed GDB backtrace of interrupted threads
    • RISC-V: Fixed GDB backtrace end function to point to prvTaskExitError
    • RISC-V: Fixed handling exceptions when running under debugger
    • Pthread thread-local destructor functions are now called with the ordering required by the specification (https://github.com/espressif/esp-idf/issues/6643)
    • rtc clock calibration: Fixed bootup time increase when using usb-serial-jtag
    • efuse: Fixed a bug related to the non-sequential way of describing eFuses in efuse_table when such fields go together sequentially.
    • efuse: Validate written data after burning and re-burns it if necessary
    • Heap: Fixed a bug in the TLSF allocator returning a chunk of memory smaller than requested
    • Heap: Fixed a bug in memory free bytes calculation causing esp_get_minimum_free_heap_size() to return a wrong value
    • Fixed RTC_WDT protection in esp_restart_noos. App is compatible with 3.1 bootloader
    • Watchdog Timers: Fixed literal overflow issue when calculating Task WDT timeout
    • Fixed system unable to start up when a toolchain with 64-bit time_t is used (https://github.com/espressif/esp-idf/issues/7980)
    • Fixed cpu crash bug caused by memory lost after woken up from lightsleep on ESP32-C3

    Removed

    • eFuse: Free some unused eFuse fields (ESP32-C3)

    Debugging

    Added

    • apptrace: Added ESP32-C3 support
    • coredump: Added ESP32-C3 support
    • coredump: Added API to get core dump summary
    • coredump: Added on device core dump parsing support for ELF file

    Changed

    • apptrace: Refactored apptrace for better support of various tracing HW

    FreeRTOS

    Added

    • Added Best Effort Round Scheduling. Replaces old behavior where tasks can be skipped indefinitely when time slicing. (https://github.com/espressif/esp-idf/issues/7256)

    Changed

    • Changed freertos xtensa port to always inline xPortSetInterruptMaskFromISR and vPortClearInterruptMaskFromISR (https://github.com/espressif/esp-idf/issues/8301)

    Fixed

    • Fixed thread safety issue with configASSERT
    • Fixed xStreamBufferReset function always crashing
    • 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 (https://github.com/espressif/esp-idf/issues/7344)
    • Fixed prvTaskIsTaskSuspended() where a task pending ready can be mistaken as suspended

    Power Management

    Changed

    • Increase lightsleep current on ESP32-C3, to avoid memory lost

    Fixed

    • Fixed ext1 cannot wakeup via RTCIO >= 18 issue
    • Fixed pm lock issue in dual core mode
    • Fixed _rtc_slow_length being incorrectly optimized by compiler
    • Fixed neither enter light sleep nor enter "waiti" state in idle task

    newlib libc

    Added

    • Added missing atomic load/store operations when building with Clang.
    • Added missing atomic libcalls SYNC_LOCK_TEST_AND_SET & SYNC_LOCK_RELEASE for supported integer types.
    • Additional atomic builtins were implemented: __atomic_OP_fetch_n, __sync_OP_and_fetch_n, all nand related builtins (https://github.com/espressif/arduino-esp32/issues/5948)

    Fixed

    • Fixed flushing console output when CONFIG_VFS_SUPPORT_IO is disabled
    • Console: Fixed potential usage of an uninitialized buffer (https://github.com/espressif/esp-idf/issues/6440)

    LWIP

    Fixed

    • Added security fixes from upstream (CVE-2020-22283, CVE-2020-22284)
    • Fixed potential null-dereference when processing valid PPPoS packet containing zero characters (#8300)
    • Fixed NAPT forwarding of reference type pbufs, used by the default Ethernet interface
    • Fixed potential DHCP memory issues by disabling vendor class option (option 60)

    mDNS

    Fixed

    • Fixed parsing queries containing non-standard domains

    OTA

    Fixed

    • Fixed esp_https_ota_begin memory leak in some scenarios
    • Fixed the component to check chip id at start of ota
    • Fixed handling of HTTP 303 redirection status code

    HTTP Client

    Added

    • Added caching mechanism to fix data corruption in http_on_body
    • Added HTTP 303 redirection status code handling

    Fixed

    • Fixed that parsing invalid url (with empty hostname) causing crash
    • Fixed memory leak in esp_http_client_example
    • Fixed location header field for multiple redirects

    HTTP Server

    Added

    • WebSocket CLOSE frame can support callback function

    Fixed

    • Fix websocket server to support handling multiple connections when client send CLOSE frame

    Provisioning

    Changed

    • wifi_provisioning: Optimized the number of AP for wifi scan operation

    Fixed

    • wifi_provisioning: Fixed provisioning not stopping in (compiler release mode
    • Fixed device disconnection issue after pairing

    mbedTLS

    Changed

    • Upgraded to v2.28.0 LTS series
    • Decrease SSL peak heap cost by around 30% in dynamic buffer configuration feature
    • Disable MBEDTLS_DYNAMIC_BUFFER feature when MBEDTLS_SSL_PROTO_DTLS is selected

    Fixed

    • Fixed issue where hardware MPI was not being used in some cases for ESP32-C3

    Bootloader

    Added

    • Add fault injection protection for checking secure version in anti rollback use-case

    Fixed

    • Fixed the issue that SPI Flash ROM functions are not correctly linked when CONFIG_SPI_FLASH_ROM_DRIVER_PATCH not enabled (https://github.com/espressif/esp-idf/pull/7508)
    • Fixed and re-enable bootloader_debug_buffer function for logging relevant Bootloader buffers.
    • Fixed psram cache issue work-arounds also being applied to the bootloader
    • Fixed the issue custom uart gpio doesn't take effect

    ESP-MQTT

    Added

    • Added config option to configure custom retransmission interval

    Changed

    • Updated MQTT example test broker url and doc

    Fixed

    • Fixed build issue if certificate bundle or websocket transport disabled
    • Fixed publishing message longer than Tx buffer size (https://github.com/espressif/esp-mqtt/issues/214)
    • Fixed esp_mqtt_client_enqueue() API to send data with correct dup flag

    Storage

    Added

    • SPIFFS: Added built-in checks for partition size, alignment and page size (https://github.com/espressif/esp-idf/issues/8593)

    Changed

    • VFS: timeout of select function is now POSIX compliant (https://github.com/espressif/esp-idf/issues/7514)

    Fixed

    • VFS: Fixed errno value reported by open function (https://github.com/espressif/esp-idf/pull/8036)
    • VFS: Bugfix vfs_fat_write/pwrite errno and return value upon disk-full (https://github.com/espressif/esp-idf/issues/5027)
    • NVS: Fixed issues found by Coverity
    • FatFS: Fixed ff.c compilation warning in putc_bfd() (https://github.com/espressif/esp-idf/issues/5870)

    Tools

    Added

    • Added support for IDF component manager. Dependencies listed in idf_component.yml manifest are downloaded automatically.

    Changed

    • Upgrade OpenOCD version to v0.11.0-esp32-20211220
    • idf_tools.py: Check if the PIP_USER environment variable exists and if exists, set to value "no"
    • idf_tools.py: Diagnostics have been improved in install scripts when creating virtual environment

    Fixed

    • Allow to specify port and baud rate for otadata commands (https://github.com/espressif/esp-idf/issues/8317)
    • IDF Monitor flashes with the same and unmodified port it was invoked with (https://github.com/espressif/esp-idf/issues/8432)
    • Fixed ldgen not allowing '+' sign in archive names (https://github.com/espressif/esp-idf/issues/8073)
    • Avoid shell autocomplete initialization for bash version lower than 4
    • 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 in ESP32-C3, ESP32-H2, ESP32-S3, ESP32
    • idf_size.py: Identify objects without extensions (*.{o,obj}) in MAP files
    • idf_size.py: Support .noinit section names (https://github.com/espressif/esp-idf/issues/8428)
    • Fixed core dump decoding failure in IDF Monitor (https://github.com/espressif/esp-idf/issues/8099)
    • Fixed incompatible package dependencies of gdbgui (https://github.com/espressif/esp-idf/issues/8760)

    External Libraries

    Changed

    • expat: Upgraded to release version v2.4.3

    Documentation

    Added

    • Added pin layout diagram and header block description to ESP32-S2-Saola-1 User Guide
    • Added pin layout diagram and updated external antenna connector name in ESP32-S2-DevKitM-1 User Guide
    • Added a user-friendly guide about how to use ws_server_example_test.py
    • Added an example list to ESP-WROVER-KIT Getting Started Guide

    Changed

    • Updated CN translation for console.rst and ota.rst
    • Updated CN translation for esp32-devkitc and esp32-s2-kaluga-1-kit user guides
    • Updated CN translation for ledc.rst for ESP32-C3
    • Updated CN translation for sdmmc.rst ad vfs.rst in api-reference/storage.rst
    • Updated wifi.rst and nvs_flash.rst documents
    • Updated a statement, specifying the heap_caps_malloc usage regarding PSRAM and DMA

    Fixed

    • Fixed typos in ESP32-S2-Saola-1 User Guide
    • Fixed broken links in queue.h
    Source code(tar.gz)
    Source code(zip)
    esp-idf-v4.3.3.zip(782.27 MB)
  • v4.4.1(Apr 19, 2022)

    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: (https://github.com/espressif/esp-idf/issues/6170)

    Classic Bluetooth

    Changed

    • Upgraded HFP(Hands Free Unit) to version 1.7.2

    Fixed

    • HID: Fixed esp_hidh report map length checking function (https://github.com/espressif/esp-idf/issues/7586)
    • HID: Fixed output report char declaration (https://github.com/espressif/esp-idf/pull/5369)
    • Fixed left right key confusion in comments (https://github.com/espressif/esp-idf/pull/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 to controller_hci_uart_esp32c3_and_esp32s3
    • Fixed BLE periodic advertising data length check issue
    • Fixed bluedroid compile fail if BT_MULTI_CONNECTION_ENABLE and SMP_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. (https://github.com/espressif/esp-idf/issues/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() (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/7885)
    • GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/8344, https://github.com/espressif/esp-idf/pull/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 (https://github.com/espressif/esp-idf/issues/7288)
    • LEDC: Fixed incorrect fading behaviour with LEDC_FADE_NO_WAIT fade mode (https://github.com/espressif/esp-idf/issues/6710)
    • LEDC: Fixed ledc_cb_register not inside cplusplus guard (https://github.com/espressif/esp-idf/pull/8139)
    • RGB_LCD: Allocate framebuffer in alignment
    • RMT: Fixed wrong RMT register for ESP32-S2, RMT doesn't have RX wrap mode (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/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 https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/pull/8036)

    Tools

    Added

    • idf_size.py: Support .noinit section names (https://github.com/espressif/esp-idf/issues/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 (https://github.com/espressif/esp-idf/issues/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
    Source code(tar.gz)
    Source code(zip)
    esp-idf-v4.4.1.zip(857.03 MB)
  • v4.1.3(Apr 19, 2022)

    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 the otadata 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

    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

    Changed

    • freemodbus: Added processing of events in one poll cycle
    • freemodbus: Changed the default value of FMB_TIMER_PORT_ENABLED to disabled

    Fixed

    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 (https://github.com/espressif/esp-idf/issues/7344)

    Power Management

    Fixed

    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 (https://github.com/espressif/esp-idf/pull/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
    Source code(tar.gz)
    Source code(zip)
    esp-idf-v4.1.3.zip(667.80 MB)
  • v4.2.3(Mar 11, 2022)

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

    ESP-IDF v4.2.3 is a bugfix update for ESP-IDF v4.2. At the time of writing, ESP-IDF v4.4 is the latest stable release.

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

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

    Download an archive with submodules included

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

    Major changes

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

    Major Bug Fixes

    • Fixes for multiple Bluetooth vulnerabilities as highlighted in advisory at https://www.espressif.com/sites/default/files/advisory_downloads/AR2021-004%20Bluetooth%20Security%20Advisory.pdf
    • Secure boot/ESP32-S2: Disabled the ability to read protect efuses containing public key digest

    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 the otadata 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

    Bluetooth

    Controller

    • No changes

    Bluetooth Low Energy

    • Added change to free resources in deinit that were allocated during controller init procedure
    • Fixed BLE ACL tx flush issue during Reset/Reboot
    • Fixed the scan timeout report
    • Fixed missing the sleep time
    • Fixed BLE scan failed issue
    • Fixed connection failed with LG 5.0 phone
    • Fixed crash when shutdown Bluetooth
    • Fixed modem sleep hardware error

    Classic Bluetooth

    Added

    • Added README.md for demo controller_hci_uart_demo

    Fixed

    • Fixed crash when lmp flooding
    • Fixed the start scan crash issue
    • Removed duplicate events in r_lld_evt_end
    • Fixed unable to initiate SCO connection when peer device not accept sniff mode.
    • Fixed the default sdkconfig options for controller_hci_uart example
    • Fixed crash after inquiry has finished
    • Fixed the issue create Connection request is not properly terminated which blocks BlueZ from reconnecting
    • Fixed the issue bt_spp_acceptor example fails when SPP is initiated on a windows machine using Realtek Bluetooth adapter
    • Fixed the issue HCI_Read_Clock failed read local Bluetooth Clock
    • Fixed cs event for rd_rem_ext_feats delayed issue.
    • Check only for same X component of public key in BR/EDR

    Bluedroid

    Fixed

    • Fixed some code logic errors

    Classic Bluetooth

    Added

    • SPP: Added some common FAQs in SPP Demo README
    • Added hci command to set coexistence status

    Fixed

    • A2DP: Fixed a2dp sink blocked bugs.
    • SPP: Fixed SPP acceptor deadlock
    • A2DP: Fixed a2dp deinit crash
    • A2DP: Fixed a2dp source audio data packet congestion causing 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 memory leak
    • SPP: Fixed SPP cannot malloc slot bugs
    • SPP: Fixed SPP acceptor open with wrong remote address
    • Fixed a bug that ACL can't disconnect when hfp_client disconnect.
    • Fixed the timer collision in function bta_sys_start_timer() used by role switch
    • Fixed hfp_ag demo not create sine audio
    • Fixed output report char declaration (https://github.com/espressif/esp-idf/pull/5369)
    • Fixed left right key confusion in comments (https://github.com/espressif/esp-idf/pull/4670)
    • Fixed crash in failure of memory allocation after erasing flash (https://github.com/espressif/esp-idf/issues/6170)

    Bluetooth Low Energy

    • Added new function esp_ble_gap_clear_whitelist() to clear all white list.
    • Support low duty cycle directed advertising
    • Fixed the bug when BLE setting scan parameters
    • Fixed data length update failed
    • Fixed no data length update callback when the value being used is the same as the value to be set
    • Fixed Bluedroid Host auto update PPCP after exchange connection parameters
    • Fixed some BLE document description error
    • Fixed the the code analysis report error reported by customer
    • Fixed high duty cycle directed advertising will not be stopped when timeout

    NimBLE

    Added

    • Check stack initialization status before executing stack commands

    Changed

    • Modified ble_gap_wl_set function to clear complete whitelist

    Fixed

    • Include NimBLE upstream fix to remove build error when NIMBLE_ROLE_BROADCASTER is disabled.
    • Added fix while deleting peer_dev_records entry in NVS

    Blufi

    • Fixed blufi encryption interrupted unexpectedly lead to unable encryption again

    ESP-BLE-Mesh

    • Check Provisioning Random & Confirmation sent and received by Provisioner(CVE-2020-26556 & CVE-2020-26560)
    • Apply the errata E16350 of BLE Mesh from Bluetooth SIG
    • Recommend to use OOB mechanism to exchange Public Key (CVE-2020-26559)
    • Recommend to use randomly generated AuthValue for Static OOB (CVE-2020-26557)
    • Make Unprovisioned Device Beacon interval configurable
    • Updated the SIG recommendations for BLE Mesh CVE issues
    • Fixed filtering error when Provisioner receives heartbeat messages

    Wi-Fi

    Added

    • Added support for EAP-FAST authentication
    • Added config option for WPS strict
    • Added SHA384/SHA512 support for internal client
    • Added beacon timeout event
    • Allow for minimal scope of wifi_init_config_t
    • Added support of SHA256 AKM without PMF enabled
    • Added station based check for auth frame formation
    • Modified connect example to add scan mode config
    • Store PHY digital registers before disabling PHY and load them after enabling PHY
    • Added WPS PIN fixes

    Changed

    • Refactored PHY access
    • Updated ESP32-S2 phy lib to support ESP32-S2 eco1 chip

    Fixed

    • Fixed amsdu and fragment vulnerabilities
    • wpa_supplicant: Fixed supplicant logs crashing
    • Fixed Enterprise connection issue with windows server
    • Fixed interoperability issue with Windows 2008
    • Fixed airkiss and esptouch find channel crash issue
    • Fixed RF signal test without 9M rate issue
    • Fixed issue of setting invalid size to nvs misc log even after erasing it
    • Fixed WEP connection and crash issue
    • Fixed verbosity of supplicant logs
    • Fixed fragment plt loss when 2nd pn is compared with 1st pn
    • PMF: Allow keyindex in big endian format to workaround faulty APs
    • Updated miswritten and abbreviated words and syntax errors for "initialize WiFi section" in esp_wifi.h header file
    • Fixed memory leak in WPA3 connection
    • Fixed smartconfig set socket option fail
    • Fixed sniffer fcs error crash issue
    • Fixed the issue of restart in espnow blocking system
    • Init phy data to default if invalid in flash partition to avoid bootloops
    • Fixed the issue that no tbtt is generated in station+softap mode when maximum modem sleep is enabled
    • Fixed issue "ca md too weak" for certificates in wifi_enterprise example
    • Fixed memory corruption in WiFi Enterprise

    ESP-WIFI-MESH

    Fixed

    • esp_mesh_send is blocked in nodes(layer>=3), when a FIXED-ROOT root is duty master
    • Fixed the issue that layer2 node connect to lower-layer node when FIXED-ROOT root disappeared
    • Fixed the device can not receive IP_EVENT_STA_GOT_IP when the router restarted

    Ethernet

    Changed

    • Increased LAN8720 ETH-PHY reset assertion time

    Fixed

    • Fixed eth2ap example crash issue (#7260)
    • Fixed driver to only warn about negotiation timeout when link is up
    • Fixed driver to configure EMAC data interface before resetting PHY chip (#7227)

    Security

    Added

    • Added fault injection protection for secure version check in anti-rollback scheme
    • local_ctrl: Added support for protocomm security1 and custom security

    Fixed

    • AES: Removed potential unaligned access to buffers in AES HAL/LL which could be a problem for certain cache mappings to external PSRAM on ESP32-S2 and later chips.
    • Secure boot/ESP32-S2: Disabled the ability to read protect efuses containing public key digest
    • Secure boot: Fixed warning when UART ROM DL mode is disabled
    • Fixed esp_ota_revoke_secure_boot_public_key API documentation not appearing correctly in the docs
    • esp_ds: Fixed memory leak identified by cppcheck

    Peripheral Drivers

    Added

    • GPIO: Enable GPIO20 for ESP32-PICO-V3 chip package (https://github.com/espressif/esp-idf/pull/6918)
    • PSRAM: Add support on ESP32-D0WDR2-V3
    • SPI Flash: Added support for TH Flash chips TH25Q

    Changed

    • freemodbus: Increased the maximum modbus tasks priority

    Fixed

    • Fixed all direct 8/16 bit-width access to peripherals on ESP32-S2
    • ADC: Fixed ADC coexist with WiFi issue on ESP32-S2 by using FSM to control ADC power
    • freemodbus: Fixed error handling in mbc_master_get(set)_parameter() for duplicate parameter key in parameter descriptor list (https://github.com/espressif/esp-idf/issues/7362)
    • freemodbus: Fixed rs485 rts de-assert fail when tx delayed (https://github.com/espressif/esp-idf/issues/6728)
    • GPIO: Fixed interrupt watchdog timeout when calling gpio_uninstall_isr_service (https://github.com/espressif/esp-idf/issues/5571)
    • I2C: Delete i2c cmd_mux semaphore more cleanly (https://github.com/espressif/esp-idf/pull/6848)
    • I2S: Fixed driver uninstall can't disable the module
    • MCPWM: Fixed wrong deadtime preset modes (https://github.com/espressif/esp-idf/issues/7321)
    • RMT: Fixed wrong RMT register for ESP2-S2, RMT doesn't have RX wrap mode (https://github.com/espressif/esp-idf/issues/8354)
    • SDIO Slave: Fixed the issue that DMA descriptors allocated to non-DMA capable area
    • SPI Flash: Increase the CS line setup used by the driver to make it more stable
    • SPI Master: Fixed driver cs_ena_posttrans wrong issue (https://github.com/espressif/esp-idf/issues/7758)
    • SPI Master: Fixed the crash when using interrupt mode when cache is disabled (https://github.com/espressif/esp-idf/issues/6529, https://github.com/espressif/esp-idf/issues/6781, https://github.com/espressif/esp-idf/issues/7368)
    • Timer Group: Fixed auto reload problem in default isr callback
    • Timer Group: Fixed the issue that timer group can't re-alarm if auto-reload is disabled (https://github.com/espressif/esp-idf/issues/8095)
    • Touch_sensor: Fixed the touch measurement interval becomes longer after wake-up from sleep on ESP32-S2
    • Touch_sensor: Fixed the issue measure times is set to wrong value during deep sleep on ESP32. (https://github.com/espressif/esp-idf/pull/6895)
    • TWAI: Fixed incorrect timing configuration initializers for the 1K, 5K and 10K bit rates.
    • UART: Add missing critical section wrappers around rx_buffered_len (https://github.com/espressif/esp-idf/issues/6396)
    • UART: Ensure the driver object is in SRAM even PSRAM is malloc-able (https://github.com/espressif/esp-idf/issues/7044)
    • UART: Fixed a typo in the error message of invalid rx_thresh_xoff
    • USB: Fixed incorrect setting of D- pull down resistor
    • wave_gen example: Remove the ESP_INTR_FLAG_IRAM flag when register the ISR

    Core System

    Added

    • ESP32-S2: Added support for BROWNOUT reset

    Fixed

    • Fixed longjump function to be context switch-safe
    • Fixed possible deadlock when using pthread_join() and log level set to Debug or higher
    • C++: Fixed C++ exception stubs. No linkage of large unwinding code parts when building with -fno-exception anymore.
    • SoC: Added dummy bytes to end of flash.text to prevent errors with CPU prefetching instructions past the end
    • Fixed incorrect address definition of ROM functions
    • esp_event: Fixed and improved docs
    • Fixed the internal devices/registers access corruption due to concurrent read/write by a spinlock
    • Fixed the sizes of .text and .rodata segments on ESP32-S2
    • rtc clock calibration: Fixed multi-calibration process protection logic
    • rtc clock calibration: Fixed bootup time increase when using usb-serial-jtag
    • 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 RTC_WDT protection in esp_restart_noos. App is compatible with 3.1 bootloader
    • Watchdog Timers: Fixed literal overflow issue when calculating Task WDT timeout
    • Fixed app crash when running OTA and OTA related task's stack is in RTC fast memory at the same time

    Removed

    • Disabled ESP32-S2 option "Allow .bss segment placed in external memory", this option is currently only supported on ESP32

    Debugging

    Added

    • gcov: Added ESP32S2 support

    Fixed

    • gcov: Fixed using on-the-fly (non-hardcoded) gcov dumping
    • 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 comparison between a signed and unsigned operand resulted in incorrect free size for no-split/allow-split buffers (https://github.com/espressif/esp-idf/issues/7344)

    Power Management

    Fixed

    • Fixed esp32s2 not awaken when deep-sleep time is set to 0

    newlib libc

    Fixed

    • Fix for FD_ISSET macro when n==-1

    LWIP

    Added

    • Documented lwIP not supporting deletion of a task while it is actively waiting on select() or poll()
    • Added macro to disable DHCP client's vendor class option
    • Added configuration to disable DHCP client identification (#7912)

    Fixed

    • esp_netif: Fixed state transition of DHCP server (if stopped before setting the interface up)
    • ping_sock: Fixed an issue that esp_ping_new_session could return ESP_OK on error.
    • Fixed ICMP ping on a specific network interface (https://github.com/espressif/esp-idf/pull/7397)
    • Fixed DNS server index to overflow to DNS_MAX_SERVERS causing LWIP_ASSERT (to enable local queries when no DNS server is set, #6878)
    • Added missing extern "C" directive in DHCP server header file.

    mDNS

    Added

    • Added support for simple mDNS responders (closes #7124)

    Fixed

    • Fixed potential crash if WiFi interface gets deleted and mdns continues to receive packets (closes #6973)

    OTA

    Fixed

    • app_update: Fixed incorrect first byte from esp_ota_get_app_elf_sha256 for -O2 optimization level.
    • otatool: Fixed read_ota_partition cmd, required output arg
    • otatool: Fixed a crash when imported as external python lib

    HTTP Client

    Changed

    • Updated the root certificate of https examples

    Fixed

    • Fixed truncated headers issue when response header length goes over buffer size
    • Fixed memory leak identified by cppcheck
    • Fixed wrong handling of an EAGAIN case
    • Fixed HEAD request will affect the all next HTTP requests unless we close the HTTP request

    HTTP Server

    Fixed

    • Fixed ws server handling messages with length over 1440(MTU) incorrectly.

    Provisioning

    Added

    • BLE: Added API support to set manufacturer data in advertisement packets.

    Fixed

    • Fixed wifi warning in wifi_prov_mgr application

    mbedTLS

    Changed

    • Upgraded to latest bugfix release v2.16.12

    Bootloader

    Changed

    • Changed range of the factory reset pin in Kconfig for ESP32-S2

    Fixed

    • Fixed support for QIO & QOUT modes on ESP32-U4WDH chip and default configuration (https://github.com/espressif/esp-idf/issues/6191)
    • 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 (https://github.com/espressif/esp-idf/pull/7508)
    • Fixed and re-enabled bootloader_debug_buffer function for logging relevant Bootloader buffers.

    ESP-TLS

    Fixed

    • Fixed esp_mbedtls_write API when 0 bytes are written.

    ESP-MQTT

    Added

    • Added a new API to enqueue publish messages with qos>0

    Changed

    • Updated certificates used in MQTT examples on ssl and wss.

    Storage

    Fixed

    • fatfs: fix SPIRAM allocation not used due to Kconfig option name error
    • vfs/uart: Fixed memory leak identified by cppcheck
    • vfs: timeout of select function is now POSIX compliant.

    Tools

    Added

    • Allow installation on arm64 macOS
    • Added possibility to install tools for selected chip targets only

    Changed

    • Upgrade OpenOCD version to v0.11.0-esp32-20211220
    • idf_size.py: --archive_details output was re-formatted
    • 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 Pythons older than 3.6
    • Create the ".espressif" directory on the first run on clean system (https://github.com/espressif/esp-idf/issues/7848)
    • idf_tools.py: Check if the PIP_USER environment variable exists and if exists, set to value "no"

    Fixed

    • Fixed a bug in ldgen where an object file name gets truncated with mapping symbols
    • GDB Stub: Fixed GDB assertion when listing threads
    • Catch the correct exception raised when the external tool is not available (https://github.com/espressif/esp-idf/issues/7140)
    • Reinstall virtualenv if it is broken
    • Fixed crash of idf_monitor.py in case processing input with Unicode character
    • idf_size.py: Fixed calculation size for ESP32-S2
    • idf_size.py: Fixed appearing NaN value when calling idf_size.py --json
    • idf_size.py: Fixed bug with --archive_details that always runs like with --diff label
    • idf_size: Fixed bug with wrong memory calculation in ESP32-C3, ESP32-H2, ESP32-S3, ESP32
    • Fixed the docker build for ARM (https://github.com/espressif/esp-idf/issues/6730)
    • Fixed export.bat "/tools/idf.py not found" issue (https://github.com/espressif/esp-idf/issues/7605, https://github.com/espressif/esp-idf/issues/7927)
    • Use delay between rename attempts on Windows in the installer (https://esp32.com/viewtopic.php?f=13&t=25962)
    • test_utils: Added missing "extern C" guard to ccomp timer

    Build System

    Changed

    • Improved error message if the Python dependency check completely fails to run due to an issue with the Python interpreter

    Fixed

    • Fixed overriding Python path with -DPYTHON when building IDF as CMake library (https://github.com/espressif/esp-idf/issues/6285)
    • Fixed CMake build system to correctly pass the -Wwrite-string compiler flag if configured
    • IDF_VERSION_MAJOR, IDF_VERSION_MINOR, IDF_VERSION_PATCH variables are now defined during the early expansion phase of component CMakeLists.txt files.

    External Libraries

    Changed

    • libsodium: Updated third party libsodium library to 1.0.18
    • cJSON: Updated cJSON submodule to v1.7.15
    • expat: Updated library from 2.2.9 to 2.4.1.
    • nghttp2: upgrade to v1.41.0 release

    Documentation

    Added

    • Added ESP32-S2-DevKitC-1 and ESP32-S2-DevKitM-1(U) User Guide
    • Added pin layout diagram and header block description to ESP32-S2-Saola-1 User Guide
    • Added pin layout diagram and updated external antenna connector name in ESP32-S2-DevKitM-1 User Guide
    • Added description of power management logic for ESP32-S2

    Changed

    • Updated NVS documentation
    • Linked to https://idf.espressif.com/ to help navigate to documentation for specific ESP32-x chip
    • Updated docs/en/api-reference/protocols/icmp_echo.rst
    • Updated docs/en/get-started/windows-setup.rst
    • Updated ESP32-C3 ROM elf download link

    Fixed

    • Corrected UART default pin names and provided more information about ESP-Prog board
    • Fixed broken links to ESP-IDF VS Code Extension documentation
    • Fixed ADC pad number error, and MOSI error
    • Fixed ESP32-S2 specific commands appearing in ESP32 flash encryption docs
    • Fixed peripheral channel Doxygen documentation for ESP32-S2
    • SPI: Fixed the default maximum transaction length.

    Removed

    • Removed a deprecated macro: SPI_TRANS_SET_CD
    Source code(tar.gz)
    Source code(zip)
    esp-idf-v4.2.3.zip(708.23 MB)
Owner
Espressif Systems
Espressif Systems
Redirect esp-idf logging to the network

esp-idf-net-logging Redirect esp-idf logging to the network. esp-idf has a Logging library. The Logging library contains the "esp_log_set_vprintf" fun

null 7 Aug 1, 2022
Drogon: A C++14/17 based HTTP web application framework running on Linux/macOS/Unix/Windows

English | 简体中文 | 繁體中文 Overview Drogon is a C++14/17-based HTTP application framework. Drogon can be used to easily build various types of web applicat

An Tao 7.8k Aug 9, 2022
Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif IoT Library. IoT Device Drivers, Documentations And Solutions.

Espressif Systems 1.2k Jul 31, 2022
ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.

ImmortalWrt is a fork of OpenWrt, with more packages ported, more devices supported, better performance, and special optimizations for mainland China users.

null 4 Jan 31, 2022
Dolphin is an emulator for running GameCube and Wii games on Windows, Linux, macOS, and recent Android devices.

Dolphin is a GameCube / Wii emulator, allowing you to play games for these two platforms on PC with improvements.

Dolphin Emulator 8.9k Aug 3, 2022
Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

GMLC-TDC 9 Aug 2, 2022
Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Graphical small-internet client for windows, linux, MacOS X and BSDs. Supports gemini, http, https, gopher, finger.

Felix Queißner 540 Jul 30, 2022
Netif - Header-only C++14 library for getting network addresses associated with network interface without name lookups on Windows, macOS, Linux, and FreeBSD

NetIF Get addresses associated with network interfaces on a system without using name lookups. Header-only, requires C++14. Usage Add the header file

GMLC-TDC 9 Feb 4, 2022
Enabling services on your device 70 Jul 31, 2022
RPI Pico WIFI via ESP-01S, LWESP, FreeRTOS, and MQTT example

RPIPicoRTOSMQTT RPI Pico WIFI via ESP-01S, LWESP, FreeRTOS, and MQTT example Demo code for RPI Pico using ESP-01S for wifi connection over uart. With

Dr Jon Durrant 2 Dec 2, 2021
ESP 32 webserver to serve a static page for wifi settings

ESP32 Settings WebServer This is a ESP32 Firmware developed in PlatformIO which consists in a HTTP server for serve static files and provides an API f

Mateus Mello de Oliveira 2 Oct 29, 2021
Free Media Player for Windows and Linux with Youtube support.

SMPLAYER SMPlayer is a free media player for Windows and Linux with Youtube support.

Ricardo 274 Aug 7, 2022
Enabling the Windows Subsystem for Linux to include support for Wayland and X server related scenarios

Welcome to WSLg WSLg is short for Windows Subsystem for Linux GUI and the purpose of the project is to enable support for running Linux GUI applicatio

Microsoft 7.8k Aug 2, 2022
A single-header socket library for both Linux and Windows

COMS What is COMS? COMS is a single-header library designed to be simple to use. It supports TCP and UDP, Server and Client. Available for Windows and

null 5 Dec 23, 2021
Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC or RDP)

Linux Terminal Service Manager (LTSM) is a set of service programs that allows remote computers to connect to a Linux operating system computer using a remote terminal session (over VNC)

null 14 Jan 5, 2022
Intel Wi-Fi Drivers for macOS

An Intel Wi-Fi Adapter Kernel Extension for macOS, based on the OpenBSD Project.

OpenIntelWireless 5.6k Aug 4, 2022
macOS 12.0 Monterey SDK for Mach engine

macOS 12.0 Monterey SDK for Mach Engine This repository contains native system binary files required to build Mach Engine for macOS, from any host OS.

Hexops 6 Aug 7, 2022
C++ FTP Server Library for Windows, Linux & more

fineFTP Server FineFTP is a minimal FTP server library for Windows and Unix flavors. The project is CMake based and only depends on asio, which is int

Continental 0 Jul 28, 2022
To have platform independent network interfaces over usb which is working with Linux, Windows, Mac OS ect.

To have platform independent network interfaces over usb which is working with Linux, Windows, Mac OS ect. called RNDIS. This project is a RNDIS demo, which addtionally implements a http server. It runs out of the box on a stm32f411 BlackPill board. My RNDIS library with an empty template for the second interface (which can ba UART, CAN, ETH or like in this demo a tcp/ip stack) can be found under following link: https://github.com/RDMsmartnetworks/STM32_HAL_RNDIS

Nico Korn 13 Jun 22, 2022