Additional components for ESP-IDF, maintained by Espressif

Overview

Espressif IDF Extra Components

This repository aims to store ESP-IDF extra components which have been seperated and uploaded into IDF Component Manager.

Important note

This repository is used only for Espressif components, it is not mean to store third party components.

Resources

IDF Component Manager repository.

Contribution

We welcome all contributors.

Please if you find some issue regarding IDF extra components, report it directly in IDF Component manager repository mentioned above.

Comments
  • coap_config_posix.h: Set up defines for correct mutex usage

    coap_config_posix.h: Set up defines for correct mutex usage

    if COAP_CONSTRAINED_STACK is defined (is for esp-idf), the mutexes set up to protect the critical sections were not working as expected and were just dummy entries.

    Use the pthread_ version of the mutex instead by defining HAVE_PTHREAD_H and HAVE_PTHREAD_MUTEX_LOCK.

    opened by mrdeep1 17
  • Some fixes/enhancements for esp_encrypted_img

    Some fixes/enhancements for esp_encrypted_img

    Love the esp_encrypted_img component and I've been trying it out in a C++ ESP IDF project, this PR just addresses a few small issues I found.

    The first is that the esp_encrypted_img_<whateever> functions currently accept esp_decrypt_handle_t* parameter rather than a esp_decrypt_handle_t. This is not correct and produces compiler errors in C++ (esp_decrypt_handle_t is already the handle pointer)

    The next is that there seemed a bunch of unnecessary memory allocations with (calloc()), moving the gcm_key and iv directly into the esp_encrypted_img_handle only adds 48 bytes to it (and it is already dynamically allocated), and also simplifies the setup/error handling. Likewise, got_auth is only 16 bytes and can be allocated on the stack.

    Finally, there was a possible memory leak of rsa_pem, if esp_encrypted_img_decrypt_end() was called without doing any decryption. This might happen if you wanted to cancel the decryption (e.g. a network error meant you could not download the firmware).

    opened by MacDue 17
  • coap: Upgrade libcoap to more recent commit, to fix blockwise GET issues

    coap: Upgrade libcoap to more recent commit, to fix blockwise GET issues

    I would like to request that the version of libcoap be bumped to a more recent commit.

    With the current commit https://github.com/obgm/libcoap/tree/3aa11612c143c9734d72022720f33e12506f7a2c, I ran into issues related to blockwise GET transfers. After investigating, I realized that it was a bug that has since been fixed in libcoap. I don't recall the specifics of the bug, or which PR/commit fixed it, but I might be able to find out if that's needed.

    For my use, I forked the coap component, and updated libcoap to https://github.com/obgm/libcoap/tree/50128de191d558593bc9a48a08eb04735f942e45. This fixed the blockwise GET issues. However, it's not ideal for me to maintain the fork, and it would preferable if it could be updated here in this repo.

    opened by ncmiller 9
  • Draft: add touch_element component

    Draft: add touch_element component

    Checklist

    • [x] Component contains License
    • [x] Component contains README.md
    • [x] Component contains idf_component.yml file with url field defined
    • [x] Component was added to upload job
    • [x] Component was added to build job
    • [x] Optional: Component contains unit tests
    • [ ] CI passing

    Change description

    Please describe your change here

    opened by L-KAYA 8
  • Ignore format warnings

    Ignore format warnings

    This is the first step to fix IDF's format warnings.

    IDF has globally enabled compiler option -Wno-format. The fix will be in three steps:

    1. add -Wno-format to affected components
    2. disable the global option -Wno-format
    3. fix format warnings for each component
    opened by Lapshin 7
  • components: esp_foc: added esp FoC motor control

    components: esp_foc: added esp FoC motor control

    component to the extra component list.

    Signed-off-by: Felipe Neves [email protected]

    Checklist

    • [x] Component contains License
    • [x] Component contains README.md
    • [x] Component contains idf_component.yml file with url field defined
    • [x] Component was added to upload job
    • [x] Component was added to build job
    • [ ] Optional: Component contains unit tests
    • [ ] CI passing

    Change description

    Adds esp FoC vector controller for permanent magnet sychronous motors aka PMSM.

    opened by uLipe 6
  • USB host UVC class

    USB host UVC class

    Checklist

    • [x] Component contains License
    • [x] Component contains README.md
    • [x] Component contains idf_component.yml file with url field defined
    • [x] Component was added to upload job
    • [x] Component was added to build job
    • [x] Optional: Component contains unit tests
    • [x] CI passing

    Change description

    Moving USB host UVC class from IDF to esp-extra-components

    opened by MaValki 6
  • essl: fixed build failure issue on chip which doesn't support SDMMC host

    essl: fixed build failure issue on chip which doesn't support SDMMC host

    Fixed build issue

    On all chips except ESP32, essl_sdio.c should be able to be built. Theoratically ESSL should be able to make use of the SPI interface to communicate with ESP32 SDIO slave, even if the chip have no SDIO Slave interface.

    • On ESP32-S3, there is no SDIO slave, but it can use SDMMC host to communicate with slave;
    • On all chips, there is no SDIO slave, but ideally it can make use of SPI interface, though currently there is a bug with its timing.

    Fix this issue.

    Remove dependency to soc/host_reg.h

    The host should work without depending on the private information of ESP32. Only the public part is necessary. Remove the dependency to (esp32)/soc/host_reg.h so that ESSL can be built, and be more portable.

    Upgrade to v1.0.1

    I think these can be treated as bugs.

    opened by ginkgm 5
  • USB MSC Transfer timeout increased to 5 seconds.

    USB MSC Transfer timeout increased to 5 seconds.

    Transfer timeout increased from 1 second to 5 seconds (as recommended in USB specs). Shorter timeout caused undesired behavior on some USB flash drives, such as re-connection issues: https://github.com/espressif/esp-idf/issues/9619

    opened by MaValki 5
  • usb_host: Add CDC-ACM driver

    usb_host: Add CDC-ACM driver

    Move USB Host CDC driver to idf-extra-components

    1. CDC driver copy pasted (with history) from esp-idf (including bugfix commit https://github.com/tore-espressif/esp-idf/commit/438234ad702fcd8ddc9781dcb2782f15a014d235)
    2. Copy USB test_app to idf-extra-components
    • [x] Change name of the uploaded package to usb_host_cdc_acm
    • USB tests are not build/run in this PR yet
    • Component uploaded to stagging server for testing https://staging.components.espressif.tools/component/espressif/usb_host_cdc_acm
    • This component should then be used in https://github.com/espressif/esp-protocols/pull/25
    opened by tore-espressif 5
  • ci: add static analysis with clang-tidy

    ci: add static analysis with clang-tidy

    One of the options to address https://github.com/espressif/idf-extra-components/issues/25.

    1. https://github.com/espressif/clang-tidy-runner is used to run clang-tidy on the test app
    2. Resulting warnings.txt file is converted to SARIF format using https://github.com/psastras/sarif-rs/tree/main/clang-tidy-sarif
    3. At this point, the issues list contains also warnings reported for ESP-IDF source code. We use filter_sarif.py to include only issues reported for the source code from this repository. At the same time, we convert absolute paths to relative, which helps Github associate the issue with the file in the repository.
    4. Resulting filtered SARIF file is uploaded to Github as Code Quality result.

    Note that the CI job takes about 12 minutes to run. Not sure if it's okay to run it for PRs, or we should only run it for the master branch.

    The results look as follows:

    • open issues: https://github.com/igrr/idf-extra-components/security/code-scanning
    • example if the file is in idf-extra-components repo: https://github.com/igrr/idf-extra-components/security/code-scanning/486
    • example if the file is in a submodule: https://github.com/igrr/idf-extra-components/security/code-scanning/485
    • analysis results for this PR: https://github.com/espressif/idf-extra-components/security/code-scanning?query=is%3Aopen+pr%3A28+

    Future work: https://github.com/espressif/clang-tidy-runner/issues/7, https://github.com/espressif/clang-tidy-runner/issues/9

    opened by igrr 5
  • Change minimum IDF version for `cbor` component to IDF v5.0

    Change minimum IDF version for `cbor` component to IDF v5.0

    Checklist

    • [x] Component contains License
    • [x] Component contains README.md
    • [x] Component contains idf_component.yml file with url field defined
    • [x] Component was added to upload job
    • [x] Component was added to build job
    • [] Optional: Component contains unit tests
    • [x] CI passing

    Change description

    • IDF versions below v5.0 already include the cbor component in source format.
    • Due to this, there is a conflict if the cbor component is used on lower versions of IDF and the only way to fix it is by adding a rule to the idf_component.yml
    • This commit sets the minimum version to IDF v5.0 to fix this behaviour.
    opened by dhavalgujar 3
  • Do not pass the private key for encryption, the public one will be en…

    Do not pass the private key for encryption, the public one will be en…

    …ough and safe

    Checklist

    • [ ] Component contains License
    • [ ] Component contains README.md
    • [ ] Component contains idf_component.yml file with url field defined
    • [ ] Component was added to upload job
    • [ ] Component was added to build job
    • [ ] Optional: Component contains unit tests
    • [ ] CI passing

    Change description

    It is unsafe to require the private key on encryption stage, just use public key.

    opened by RaD 1
  • led_strip example

    led_strip example

    as there is no Example for LED Strip, i made one:

    https://gitlab.com/meisterschulen-am-ostbahnhof-munchen/esp32-4diac-example-application/-/tree/LEDRainbow/TestLEDStrip

    Enjoy !

    opened by franz-ms-muc 1
  • pre_encrypted_ota example fails in esp_encrypted_img_decrypt_end()

    pre_encrypted_ota example fails in esp_encrypted_img_decrypt_end()

    I am running examples/system/ota/pre_encrypted_ota/ with ESP-IDF: v5.0 esp_encrypted_img: v2.0.2

    Since this is just a test for now, I have not changed the rsa_key/private.pem file.

    HTTPS connection to the OTA server succeeds. Originally the download was failing to complete; it seems the server was closing the connection before all data was transferred. Here is example log output (at DEBUG log level):

    D (53877) HTTP_CLIENT: need_read=512, byte_to_read=512, rlen=512, ridx=512
    D (53887) HTTP_CLIENT: http_on_body 512
    D (53897) esp_https_ota: Written image length 590336
    D (53897) pre_encrypted_ota_example: Image bytes read: 590336
    D (53907) HTTP_CLIENT: is_data_remain=1, is_chunked=0, content_length=932336
    D (53937) HTTP_CLIENT: need_read=1024, byte_to_read=512, rlen=-1, ridx=0
    W (53937) HTTP_CLIENT: esp_transport_read returned:-1 and errno:128 
    D (53937) HTTP_CLIENT: Data processed 589824 != Data specified in content length 932336
    E (53947) esp_https_ota: data read -1, errno 128
    D (53947) HTTP_CLIENT: Data processed 589824 != Data specified in content length 932336
    E (53957) pre_encrypted_ota_example: Complete data was not received.
    E (53967) pre_encrypted_ota_example: ESP_HTTPS_OTA upgrade failed
    

    Setting "Enable partial HTTP download" in SDK Configuration editor solved that problem & the full download of the binary completes.

    But then esp_encrypted_img_decrypt_end() fails with ESP_FAIL (I have added an error log to the example code):

        if (!esp_https_ota_is_complete_data_received(https_ota_handle)) {
            // the OTA image was not completely received and user can customise the response to this situation.
            ESP_LOGE(TAG, "Complete data was not received.");
        } else {
            err = esp_encrypted_img_decrypt_end(decrypt_handle);
            if (err != ESP_OK) {
    -->         ESP_LOGE(TAG, "esp_encrypted_img_decrypt_end() returned %d = %s", err, esp_err_to_name(err));
                goto ota_end;
            }
    

    Below is the end of the log output (at DEBUG log level).

    What is causing esp_encrypted_img to log the error Invalid operation?

    I (135817) esp-x509-crt-bundle: Certificate validated
    D (136637) HTTP_CLIENT: Write header[4]: GET /ota/pre_encrypted_ota_secure.bin HTTP/1.1
    User-Agent: ESP32 HTTP Client/1.0
    Host: myserver.net
    Content-Length: 0
    Range: bytes=918016-
    
    
    D (136917) HTTP_CLIENT: on_message_begin
    D (136917) HTTP_CLIENT: HEADER=Date:Sun, 18 Dec 2022 13:48:24 GMT
    D (136917) HTTP_CLIENT: HEADER=Server:Apache
    D (136917) HTTP_CLIENT: HEADER=Vary:IS_SUBREQ,User-Agent
    D (136927) HTTP_CLIENT: HEADER=Upgrade:h2
    D (136927) HTTP_CLIENT: HEADER=Connection:Upgrade
    D (136927) HTTP_CLIENT: HEADER=Last-Modified:Sun, 18 Dec 2022 08:00:42 GMT
    D (136937) HTTP_CLIENT: HEADER=ETag:"e39f0-5f0159970331c"
    D (136947) HTTP_CLIENT: HEADER=Accept-Ranges:bytes
    D (136947) HTTP_CLIENT: HEADER=Content-Length:14320
    D (136957) HTTP_CLIENT: HEADER=Cache-Control:max-age=172800
    D (136957) HTTP_CLIENT: HEADER=Expires:Tue, 20 Dec 2022 13:48:24 GMT
    D (136967) HTTP_CLIENT: HEADER=Content-Range:bytes 918016-932335/932336
    D (136977) HTTP_CLIENT: HEADER=Content-Type:application/octet-stream
    D (136977) HTTP_CLIENT: http_on_headers_complete, status=206, offset=421, nread=421
    D (136987) HTTP_CLIENT: content_length = 14320
    D (136987) esp_https_ota: Connection start
    D (136997) pre_encrypted_ota_example: Image bytes read: 918016
    D (136997) HTTP_CLIENT: is_data_remain=1, is_chunked=0, content_length=14320
    D (137037) HTTP_CLIENT: need_read=1024, byte_to_read=512, rlen=512, ridx=0
    D (137037) HTTP_CLIENT: http_on_body 512
    D (137037) HTTP_CLIENT: is_data_remain=1, is_chunked=0, content_length=14320
    D (137047) transport_base: remain data in cache, need to read again
    D (137047) HTTP_CLIENT: need_read=512, byte_to_read=512, rlen=512, ridx=512
    D (137057) HTTP_CLIENT: http_on_body 512
    D (137107) esp_https_ota: Written image length 919040
    D (137107) pre_encrypted_ota_example: Image bytes read: 919040
    D (137107) HTTP_CLIENT: is_data_remain=1, is_chunked=0, content_length=14320
    D (137117) transport_base: remain data in cache, need to read again
    ( ... etc ...)
    D (138007) HTTP_CLIENT: need_read=1024, byte_to_read=512, rlen=512, ridx=0
    D (138017) HTTP_CLIENT: http_on_body 512
    D (138017) HTTP_CLIENT: is_data_remain=1, is_chunked=0, content_length=14320
    D (138027) transport_base: remain data in cache, need to read again
    D (138037) HTTP_CLIENT: need_read=512, byte_to_read=512, rlen=496, ridx=512
    D (138037) HTTP_CLIENT: http_on_body 496
    D (138047) HTTP_CLIENT: http_on_message_complete, parser=3ffbe5d0
    D (138047) HTTP_CLIENT: is_data_remain=0, is_chunked=0, content_length=14320
    D (138067) esp_https_ota: Written image length 932336
    D (138067) pre_encrypted_ota_example: Image bytes read: 932336
    D (138067) HTTP_CLIENT: is_data_remain=0, is_chunked=0, content_length=14320
    D (138077) esp_https_ota: Connection closed
    E (138077) esp_encrypted_img: Invalid operation
    E (138087) pre_encrypted_ota_example: esp_encrypted_img_decrypt_end() returned -1 = ESP_FAIL
    E (138097) pre_encrypted_ota_example: ESP_HTTPS_OTA upgrade failed
    
    opened by ashelman-ec 2
  • Example for Eigen idf component

    Example for Eigen idf component

    Checklist

    • [x ] Component contains License
    • [ x] Component contains README.md
    • [ x] Component contains idf_component.yml file with url field defined
    • [ x] Component was added to upload job
    • [x ] Component was added to build job
    • [ ] Optional: Component contains unit tests
    • [ ] CI passing

    Change description

    This PR add example to the Eigen component directory that shows how to use the eigen library and IDF Eigen component.

    Regards, Dmitry

    opened by dmitry1945 0
Owner
Espressif Systems
Espressif Systems
Collection of additional Ethernet drivers for ESP-IDF

Collection of additional Ethernet drivers for ESP-IDF This repository aims to store additional Ethernet drivers which are not available directly in ES

Espressif Systems 6 Dec 21, 2022
Compatibility tool for Steam Play based on Wine and additional components

Introduction Proton is a tool for use with the Steam client which allows games which are exclusive to Windows to run on the Linux operating system. It

Valve Software 19.1k Dec 30, 2022
The ESP-BOX is a new generation AIoT development platform released by Espressif Systems.

中文版本 ESP-BOX AIoT Development Framework Important Note: We recommend updating the ESP32-S3-BOX firmware when you first receive the product to have the

Espressif Systems 160 Dec 29, 2022
idf.py.exe, wrapper tool to invoke idf.py on Windows

IDF wrapper tool (idf.py.exe) This tools helps invoke idf.py in Windows CMD shell. In Windows CMD shell, python scripts can be executed directly (by t

Espressif Systems 3 Dec 13, 2021
An Arduino wrapper to @sdima1357's usb_soft_host esp-idf example

ESP32 USB Soft Host library for Arduino IDE This is mainly a wrapper around the excellent work of Dmitry Samsonov (@sdima1357) with esp32_usb_soft_hos

tobozo 151 Jan 3, 2023
GFX Demo for the ESP-IDF

Display Drivers and Demo for GFX This is a Demo of GFX With Several Display Drivers This is not GFX itself, but it includes it. GFX Documentation is b

honey the codewitch 67 Dec 4, 2022
ESP32 S2 C++ host library compatible with arduino, esp-idf.

Info I would like to announce USB host library for esp32 S2 compatible with arduino, esp-idf and PIO (when pio will be updated to most recent esp-idf)

null 17 Nov 15, 2022
To simplify the development of ESP32 in ESP-IDF, Easyio provides a complete driver library

Easyio 开源驱动库 Easyio 是一款适配于ESP-IDF框架的开源驱动库,以支持ESP32的简便开发。目的是简化乐鑫ESP-IDF开发框架的使用难度。(真要方便的话,有现成的Arduino和Platform可以用,不过实在迫于工作要求,有的开源东西不让用,同时便于对接FAE,于是就有了 E

null 212 Dec 30, 2022
使用ESP-IDF、ESP-ADF、LVGL等库,基于ESP32S2实现简单的网络收音机和FM收音机功能。

【电子森林项目】网络收音机/FM收音机 这个项目是报名《硬禾“暑期一起练”第3个平台 - 基于ESP32-S2模块的网络收音机和音频信号处理》所做的。 基本功能: 可以连接WiFi收听HLS协议的网络电台节目 收听空中的FM电台88MHz~108MHz OLED0.96寸显示 四个独立按键控制两种模

DaMi 17 Nov 2, 2022
LVGL8 for ESP-IDF

X-UI LVGL8 for ESP-IDF 移植自X-TRACK项目的页面栈框架,新增支持异步通信的订阅发布数据中心 特点 使用C语言重构,方便继承复用 核心文件 ui_page_manager.h、ui_page_manager.c 实现页面栈、订阅发布数据中心 完整页面生命周期 MVC架构 数

Zing 13 Aug 5, 2022
Add tensilica esp32 cpu and a board to qemu and dump the rom to learn more about esp-idf

qemu_esp32 Add tensilica esp32 cpu and a board to qemu and dump the rom to learn more about esp-idf ESP32 in QEMU. This documents how to add an esp32

null 358 Jan 8, 2023
This FreeRTOS example builds a simple Timer application for Linux using the ESP-IDF

Supported Targets Linux This FreeRTOS example builds a simple Timer application for Linux using the ESP-IDF. Build Source the IDF environment as usual

null 13 Apr 4, 2022
SX1276/77/78/79 Low Power Long Range Transceiver driver for esp-idf

esp-idf-sx127x SX1276/77/78/79 Low Power Long Range Transceiver driver for esp-idf. I based on this. Changes from the original Added support for ESP32

null 20 Jan 4, 2023
WireGuard Implementation for ESP-IDF

esp_wireguard, WireGuard Implementation for ESP-IDF This is an implementation of the WireGuard® for ESP-IDF, based on WireGuard Implementation for lwI

Tomoyuki Sakurai 107 Dec 31, 2022
SX1262//68 Low Power Long Range Transceiver driver for esp-idf

esp-idf-sx126x SX1262//68 Low Power Long Range Transceiver driver for esp-idf. I ported from here. Ai-Thinker offers several LoRa modules. You can get

null 3 May 9, 2022
SI4432 ISM Transceiver driver for esp-idf

esp-idf-si4432 SI4432 ISM Transceiver driver for esp-idf. I refered this. Software requirements esp-idf v4.4 or later. This is because this version su

null 4 Dec 29, 2022
CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf

esp-idf-cc2500 CC2500 Low-Cost Low-Power 2.4 GHz RF Transceiver driver for esp-idf. I ported from this. 2.00mm pitch External Antena 1.27mm pitch PCB

null 3 May 29, 2022
ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

ESP Insights is a remote diagnostics solution that allows users to remotely monitor the health of ESP devices in the field.

Espressif Systems 46 Dec 26, 2022
This is the Arduino® compatible port of the AIfES machine learning framework, developed and maintained by Fraunhofer Institute for Microelectronic Circuits and Systems.

AIfES for Arduino® AIfES (Artificial Intelligence for Embedded Systems) is a platform-independent and standalone AI software framework optimized for e

null 166 Jan 4, 2023