ESP32 S2 USB host with examples.

This new USB host library based is based on changed and hopefully somehow final API from espressif.

The idea is to make this library usable with esp-idf and arduino. I see the need to add files required by arduino and i think this will be maintained in other branch.

For start it is very simple library without proper error handling and probably with many errors, but i decided to share it because i have functional USB MSC code with cool example (functional, not finished).

Currently library is working only with esp-idf, due to missing some files in arduino.

Maybe someone would like to join and to add other examples:

  • simple read/write example using POSIX
  • remote pendrive - we can connect regular pendrive and open files with web browser, there is missing upload files option.
  • simple CDC ACM example

Added CDC ACM serial class. Maybe next step is to add USB HID class with some examples.

Comments
  • building failed

    building failed

    open the example/"read_write"by VScode

    FAILED: esp-idf/usb_host/CMakeFiles/__idf_usb_host.dir/host/usb_host.cpp.obj F:\esp32_tools\tools\xtensa-esp32s2-elf\esp-2021r2-8.4.0\xtensa-esp32s2-elf\bin\xtensa-esp32s2-elf-g++.exe -Iconfig -IE:/esp32project/esp32-usb-host/components/usb_host/include -IF:/ESP32VSCODE/esp-idf/components/newlib/platform_include -IF:/ESP32VSCODE/esp-idf/components/freertos/include -IF:/ESP32VSCODE/esp-idf/components/freertos/include/esp_additions/freertos -IF:/ESP32VSCODE/esp-idf/components/freertos/port/xtensa/include -IF:/ESP32VSCODE/esp-idf/components/freertos/include/esp_additions -IF:/ESP32VSCODE/esp-idf/components/esp_hw_support/include -IF:/ESP32VSCODE/esp-idf/components/esp_hw_support/include/soc -IF:/ESP32VSCODE/esp-idf/components/esp_hw_support/include/soc/esp32s2 -IF:/ESP32VSCODE/esp-idf/components/esp_hw_support/port/esp32s2/. -IF:/ESP32VSCODE/esp-idf/components/esp_hw_support/port/esp32s2/private_include -IF:/ESP32VSCODE/esp-idf/components/heap/include -IF:/ESP32VSCODE/esp-idf/components/log/include -IF:/ESP32VSCODE/esp-idf/components/lwip/include/apps -IF:/ESP32VSCODE/esp-idf/components/lwip/include/apps/sntp -IF:/ESP32VSCODE/esp-idf/components/lwip/lwip/src/include -IF:/ESP32VSCODE/esp-idf/components/lwip/port/esp32/include -IF:/ESP32VSCODE/esp-idf/components/lwip/port/esp32/include/arch -IF:/ESP32VSCODE/esp-idf/components/soc/include -IF:/ESP32VSCODE/esp-idf/components/soc/esp32s2/. -IF:/ESP32VSCODE/esp-idf/components/soc/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/hal/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/hal/include -IF:/ESP32VSCODE/esp-idf/components/hal/platform_port/include -IF:/ESP32VSCODE/esp-idf/components/esp_rom/include -IF:/ESP32VSCODE/esp-idf/components/esp_rom/include/esp32s2 -IF:/ESP32VSCODE/esp-idf/components/esp_rom/esp32s2 -IF:/ESP32VSCODE/esp-idf/components/esp_common/include -IF:/ESP32VSCODE/esp-idf/components/esp_system/include -IF:/ESP32VSCODE/esp-idf/components/esp_system/port/soc -IF:/ESP32VSCODE/esp-idf/components/esp_system/port/public_compat -IF:/ESP32VSCODE/esp-idf/components/xtensa/include -IF:/ESP32VSCODE/esp-idf/components/xtensa/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/driver/include -IF:/ESP32VSCODE/esp-idf/components/driver/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/esp_pm/include -IF:/ESP32VSCODE/esp-idf/components/esp_ringbuf/include -IF:/ESP32VSCODE/esp-idf/components/efuse/include -IF:/ESP32VSCODE/esp-idf/components/efuse/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/vfs/include -IF:/ESP32VSCODE/esp-idf/components/esp_wifi/include -IF:/ESP32VSCODE/esp-idf/components/esp_event/include -IF:/ESP32VSCODE/esp-idf/components/esp_netif/include -IF:/ESP32VSCODE/esp-idf/components/esp_eth/include -IF:/ESP32VSCODE/esp-idf/components/tcpip_adapter/include -IF:/ESP32VSCODE/esp-idf/components/esp_phy/include -IF:/ESP32VSCODE/esp-idf/components/esp_phy/esp32s2/include -IF:/ESP32VSCODE/esp-idf/components/esp_ipc/include -IF:/ESP32VSCODE/esp-idf/components/app_trace/include -IF:/ESP32VSCODE/esp-idf/components/esp_timer/include -IF:/ESP32VSCODE/esp-idf/components/usb/include -IF:/ESP32VSCODE/esp-idf/components/fatfs/diskio -IF:/ESP32VSCODE/esp-idf/components/fatfs/vfs -IF:/ESP32VSCODE/esp-idf/components/fatfs/src -IF:/ESP32VSCODE/esp-idf/components/wear_levelling/include -IF:/ESP32VSCODE/esp-idf/components/spi_flash/include -IF:/ESP32VSCODE/esp-idf/components/sdmmc/include -mlongcalls -ffunction-sections -fdata-sections -Wall -Werror=all -Wno-error=unused-function -Wno-error=unused-variable -Wno-error=deprecated-declarations -Wextra -Wno-unused-parameter -Wno-sign-compare -ggdb -Og -fmacro-prefix-map=E:/esp32project/esp32-usb-host/examples/read_write=. -fmacro-prefix-map=F:/ESP32VSCODE/esp-idf=IDF -fstrict-volatile-bitfields -Wno-error=unused-but-set-variable -fno-jump-tables -fno-tree-switch-conversion -std=gnu++11 -fno-exceptions -fno-rtti -D_GNU_SOURCE -DIDF_VER="v4.4-dev-3703-gddc44956bf" -DESP_PLATFORM -D_POSIX_READER_WRITER_LOCKS -MD -MT esp-idf/usb_host/CMakeFiles/__idf_usb_host.dir/host/usb_host.cpp.obj -MF esp-idf\usb_host\CMakeFiles__idf_usb_host.dir\host\usb_host.cpp.obj.d -o esp-idf/usb_host/CMakeFiles/__idf_usb_host.dir/host/usb_host.cpp.obj -c E:/esp32project/esp32-usb-host/components/usb_host/host/usb_host.cpp E:/esp32project/esp32-usb-host/components/usb_host/host/usb_host.cpp: In member function 'bool USBhost::init(bool)': E:/esp32project/esp32-usb-host/components/usb_host/host/usb_host.cpp:68:31: error: 'const usb_host_client_config_t' has no non-static data member named 'client_event_callback' .max_num_event_msg = 5}; ^ E:/esp32project/esp32-usb-host/components/usb_host/host/usb_host.cpp: In member function 'bool USBhost::open(const usb_host_client_event_msg_t*)': E:/esp32project/esp32-usb-host/components/usb_host/host/usb_host.cpp:83:15: warning: unused variable 'err' [-Wunused-variable] esp_err_t err = usb_host_device_open(client_hdl, event_msg->new_dev.address, &dev_hdl); ^~~ [1022/1032] Building CXX object esp-idf/usb_host/CMakeFiles/__idf_usb_host.dir/acm/usb_acm.cpp.obj E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp: In member function 'void USBacmDevice::setControlLine(bool, bool)': E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp:115:15: warning: unused variable 'err' [-Wunused-variable] esp_err_t err = usb_host_transfer_submit_control(_host->clientHandle(), xfer_ctrl); ^~~ E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp: In member function 'void USBacmDevice::setLineCoding(uint32_t, uint8_t, uint8_t, uint8_t)': E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp:128:15: warning: unused variable 'err' [-Wunused-variable] esp_err_t err = usb_host_transfer_submit_control(_host->clientHandle(), xfer_ctrl); ^~~ E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp: In member function 'void USBacmDevice::getLineCoding()': E:/esp32project/esp32-usb-host/components/usb_host/acm/usb_acm.cpp:135:15: warning: unused variable 'err' [-Wunused-variable] esp_err_t err = usb_host_transfer_submit_control(_host->clientHandle(), xfer_ctrl); ^~~ [1024/1032] Building CXX object esp-idf/usb_host/CMakeFiles/__idf_usb_host.dir/msc/usb_msc.cpp.obj E:/esp32project/esp32-usb-host/components/usb_host/msc/usb_msc.cpp: In member function 'void USBmscDevice::reset()': E:/esp32project/esp32-usb-host/components/usb_host/msc/usb_msc.cpp:149:15: warning: unused variable 'err' [-Wunused-variable] esp_err_t err = usb_host_transfer_submit_control(_host->clientHandle(), xfer_ctrl); ^~~ [1025/1032] Building CXX object esp-idf/main/CMakeFiles/__idf_main.dir/main.cpp.obj ../main/main.cpp: In function 'void inquiry_cb(usb_transfer_t*)': ../main/main.cpp:59:37: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] device->mount(MOUNT_POINT, 0); ^ ../main/main.cpp:60:38: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] device->mount(MOUNT_POINT1, 1); ^ ../main/main.cpp: In function 'void client_event_callback(const usb_host_client_event_msg_t*, void*)': ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::cbw_cb' [-Wmissing-field-initializers] }; ^ ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::data_cb' [-Wmissing-field-initializers] ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::csw_cb' [-Wmissing-field-initializers] ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::unit_ready_cb' [-Wmissing-field-initializers] ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::max_luns_cb' [-Wmissing-field-initializers] ../main/main.cpp:105:17: warning: missing initializer for member 'msc_transfer_cb_t::sense_cb' [-Wmissing-field-initializers] ../main/main.cpp: In function 'void read_test(int)': ../main/main.cpp:46:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] #define MOUNT_POINT "/msc" ^~~~~~ ../main/main.cpp:136:17: note: in expansion of macro 'MOUNT_POINT' mount = MOUNT_POINT; ^~~~~~~~~~~ ../main/main.cpp:46:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] #define MOUNT_POINT "/msc" ^~~~~~ ../main/main.cpp:140:17: note: in expansion of macro 'MOUNT_POINT' mount = MOUNT_POINT; ^~~~~~~~~~~ ../main/main.cpp:167:21: warning: ISO C++ forbids converting a string constant to 'char*' [-Wwrite-strings] char* dirpath = "/msc/"; ^~~~~~~ ../main/main.cpp: At global scope: ../main/main.cpp:75:13: warning: 'void sense_cb(usb_transfer_t*)' defined but not used [-Wunused-function] static void sense_cb(usb_transfer_t transfer) ^~~~~~~~ ../main/main.cpp:70:13: warning: 'void max_luns_cb(usb_transfer_t)' defined but not used [-Wunused-function] static void max_luns_cb(usb_transfer_t transfer) ^~~~~~~~~~~ ../main/main.cpp:65:13: warning: 'void unit_ready_cb(usb_transfer_t)' defined but not used [-Wunused-function] static void unit_ready_cb(usb_transfer_t transfer) ^~~~~~~~~~~~~ ../main/main.cpp:36:13: warning: 'void csw_cb(usb_transfer_t)' defined but not used [-Wunused-function] static void csw_cb(usb_transfer_t *transfer) ^~~~~~ ninja: build stopped: subcommand failed. 终端进程“C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -Command cmake --build .”已终止,退出代码: 1。

  • Arduino support

    Arduino support

    Hi @chegewara,

    Thanks for your work creating an USB host library for ESP32S2! This is needed so much since ESP32S2 exists! In the description you mentioned you are aiming for Arduino too. Currently, Arduino community is huge in DIY projects. If we add the word "USB" to "Arduino" we get to Pro Micro and Leonardo, and many many projects where people are building custom game controllers. (Joysticks, button boxes, simulator steering wheels, simulator pedals, etc.) But now, I am interested in the other way: Using Arduino framework to read USB game controllers (HIDs), and your repo sounds pretty much promising. It is sad it is in the early stages...

    What do you think, how far is this down the line, when Arduino libraries also arrive for ESP32S2? And can it be used to read USB HID devices? (e.g. a PlayStation gamepad)

  • fatal error: usb/usb_host.h: No such file or directory

    fatal error: usb/usb_host.h: No such file or directory

    I am getting the following error

    In file included from /home/v-robotics/esp2/test/esp32-usb-host-main/components/usb_host/include/usb_acm.hpp:2, from /home/v-robotics/esp2/test/esp32-usb-host-main/components/usb_host/acm/usb_acm.cpp:4: /home/v-robotics/esp2/test/esp32-usb-host-main/components/usb_host/include/usb_device.hpp:3:10: fatal error: usb/usb_host.h: No such file or directory #include "usb/usb_host.h" ^~~~~~~~~~~~~~~~ compilation terminated.

    idf.py --version ESP-IDF v4.4-beta1-dirty

  • Connecting ESP32-S2 and USB Modem - Error HUB: Root port reset failed

    Connecting ESP32-S2 and USB Modem - Error HUB: Root port reset failed

    Hi Chegewara,

    I am trying to use your USB Host CDC-ACM to connect an LTE Modem via USB to my ESP32-S2 using development board.

    The USB port Modem-side is powered-on and D+ and D- correctly connected.

    Unfortunately, I have the following error and no other events happen.

    I (261) cpu_start: Starting scheduler on PRO CPU. I (326) : install status: 0 I (326) : client register status: 0 E (576) HUB: Root port reset failed E (131536) HUB: Root port reset failed E (135496) HUB: Root port reset failed E (139316) HUB: Root port reset failed

    Might you help me with some suggestions on how to proceed?

    Do you know what does this error mean?

    Thanks a lot in advanc e for you help. BR, Lorenzo.

  • E (702) HUB: Short device descriptor transfer failed

    E (702) HUB: Short device descriptor transfer failed

    Using the Espressif ESP32-S3-DevKitC-1-N8 board after compiling and flashing the cdc_acm example I get the following output when no device is connected to the USB port.

    ELF file SHA256: 41774b36c811cff1
    
    Rebooting...
    ESP-ROM:esp32s3-20210327
    Build:Mar 27 2021
    rst:0xc (RTC_SW_CPU_RST),boot:0x8 (SPI_FAST_FLASH_BOOT)
    Saved PC:0x40375774
    0x40375774: esp_restart_noos at C:/Users/spenc/esp/esp-idf/components/esp_system/port/soc/esp32s3/system_internal.c:143 (discriminator 1)
    
    SPIWP:0xee
    mode:DIO, clock div:1
    load:0x3fcd0108,len:0x1718
    load:0x403b6000,len:0x8c8
    load:0x403ba000,len:0x2eb4
    entry 0x403b61c0
    I (29) boot: ESP-IDF v4.4-beta1-48-gddc44956bf-dirty 2nd stage bootloader
    I (29) boot: compile time 12:45:35
    I (29) boot: chip revision: 0
    I (33) boot.esp32s3: Boot SPI Speed : 80MHz
    I (38) boot.esp32s3: SPI Mode       : DIO
    I (42) boot.esp32s3: SPI Flash Size : 8MB
    I (47) boot: Enabling RNG early entropy source...
    W (53) bootloader_random: RNG for ESP32-S3 not currently supported
    I (59) boot: Partition Table:
    I (63) boot: ## Label            Usage          Type ST Offset   Length
    I (70) boot:  0 nvs              WiFi data        01 02 00009000 00006000
    I (78) boot:  1 phy_init         RF data          01 01 0000f000 00001000
    I (85) boot:  2 factory          factory app      00 00 00010000 00100000
    I (93) boot: End of partition table
    I (97) esp_image: segment 0: paddr=00010020 vaddr=3c020020 size=0a4f4h ( 42228) map
    I (113) esp_image: segment 1: paddr=0001a51c vaddr=3fc91010 size=02750h ( 10064) load
    I (116) esp_image: segment 2: paddr=0001cc74 vaddr=40374000 size=033a4h ( 13220) load
    I (125) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=1f228h (127528) map
    I (154) esp_image: segment 4: paddr=0003f250 vaddr=403773a4 size=09c6ch ( 40044) load
    I (163) esp_image: segment 5: paddr=00048ec4 vaddr=50000000 size=00010h (    16) load
    I (168) boot: Loaded app from partition at offset 0x10000
    I (168) boot: Disabling RNG early entropy source...
    W (172) bootloader_random: RNG for ESP32-S3 not currently supported
    I (190) cpu_start: Pro cpu up.
    I (190) cpu_start: Starting app cpu, entry point is 0x403751f0
    0x403751f0: call_start_cpu1 at C:/Users/spenc/esp/esp-idf/components/esp_system/port/cpu_start.c:156
    
    I (168) cpu_start: App cpu up.
    I (204) cpu_start: Pro cpu start user code
    I (204) cpu_start: cpu freq: 160000000
    I (204) cpu_start: Application information:
    I (207) cpu_start: Project name:     usb_host_arduino
    I (213) cpu_start: App version:      0de63ac
    I (218) cpu_start: Compile time:     Dec 13 2021 12:44:55
    I (224) cpu_start: ELF file SHA256:  41774b36c811cff1...
    I (230) cpu_start: ESP-IDF:          v4.4-beta1-48-gddc44956bf-dirty
    I (237) heap_init: Initializing. RAM available for dynamic allocation:
    I (244) heap_init: At 3FC94198 len 0004BE68 (303 KiB): D/IRAM
    I (250) heap_init: At 3FCE0000 len 0000EE34 (59 KiB): STACK/DRAM
    I (257) heap_init: At 3FCF0000 len 00008000 (32 KiB): DRAM
    I (263) heap_init: At 600FE000 len 00002000 (8 KiB): RTCRAM
    I (270) spi_flash: detected chip: gd
    I (274) spi_flash: flash io: dio
    I (278) sleep: Configure to isolate all GPIO pins in sleep state
    I (285) sleep: Enable automatic switching of GPIO sleep configuration
    I (292) cpu_start: Starting scheduler on PRO CPU.
    I (0) cpu_start: Starting scheduler on APP CPU.
    I (372) : install status: 0
    I (372) : client register status: 0
    create async task
    E (702) HUB: Short device descriptor transfer failed
    
    assert failed: enum_stage_cleanup_failed hub.c:453 (dequeued_enum_urb == p_hub_driver_obj->single_thread.enum_urb)
    
    
    Backtrace:0x40375aba:0x3fce14d00x4037907d:0x3fce14f0 0x4037f539:0x3fce1510 0x4200bc66:0x3fce1630 0x4200bd9b:0x3fce1650 0x4200c0c6:0x3fce1670 0x420071c3:0x3fce1690 0x42005ef0:0x3fce16b0 0x4037bd0d:0x3fce16e0
    0x40375aba: panic_abort at C:/Users/spenc/esp/esp-idf/components/esp_system/panic.c:402
    
    0x4037907d: esp_system_abort at C:/Users/spenc/esp/esp-idf/components/esp_system/esp_system.c:121
    
    0x4037f539: __assert_func at C:/Users/spenc/esp/esp-idf/components/newlib/assert.c:85
    
    0x4200bc66: enum_stage_cleanup_failed at C:/Users/spenc/esp/esp-idf/components/usb/hub.c:453 (discriminator 1)
    
    0x4200bd9b: enum_handle_events at C:/Users/spenc/esp/esp-idf/components/usb/hub.c:515
    
    0x4200c0c6: hub_process at C:/Users/spenc/esp/esp-idf/components/usb/hub.c:652
    
    0x420071c3: usb_host_lib_handle_events at C:/Users/spenc/esp/esp-idf/components/usb/usb_host.c:490
    
    0x42005ef0: client_async_seq_task(void*) at C:/Users/spenc/esp/esp32-usb-host/components/usb_host/host/usb_host.cpp:40
    
    0x4037bd0d: vPortTaskWrapper at C:/Users/spenc/esp/esp-idf/components/freertos/port/xtensa/port.c:130
    
ESP8266 software USB host through general IO pins. We can connect up to 2 USB-LS HID (keyboard mouse joystick) devices simultaneously.
ESP8266 software USB host through general IO pins. We can connect up to 2 USB-LS HID (keyboard mouse joystick) devices simultaneously.

esp8266_usb_soft_host Test for esp8266 usb host . Works with ESP-IDF v3.4 80MHz and 160MHz. WorkInProgress Test run with mouse & combined mouse & keyb

Sep 1, 2022
Tiny and portable usb host and device stack for mcu with usb ip

Tiny and portable usb host and device stack for mcu with usb ip

Nov 29, 2022
esp32S2 USB HID host example.

Simple usb host HID example Since usb host support is still beta stage and include file is in private_include i copied component to this example. Code

Oct 10, 2022
ESP32S2 Arduino USB host printer, MIDI, and keyboard demos
ESP32S2 Arduino USB host printer, MIDI, and keyboard demos

ESP32 S2 USB Host Jumpstart A collection of experiments and demos using Espressif ESP32 S2 in USB host mode. Most of the sketches have little or no C+

Nov 21, 2022
USB host implementation using PIO of raspberry pi pico (RP2040).

Pico-PIO-USB USB host implementation using PIO of raspberry pi pico (RP2040). You can add additional USB port to RP2040. ?? This library is WIP. API m

Nov 28, 2022
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.
ESP32-Skid-Steer - Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on the model.

ESP32-Skid-Steer Bruder Catepillar Skid Steer model converted to RC, controlled by an ESP32 with 2 analog joysticks and a receiver that is an ESP32 on

Oct 27, 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)

Nov 15, 2022
USB-C_PCB_experiments - USB-C ports made from a flex PCB and an ATtiny84A
USB-C_PCB_experiments - USB-C ports made from a flex PCB and an ATtiny84A

USB-C PCB Experiments This is part of an ongoing series of projects involving creative interpretations of the USB mechanical standards. You've probabl

Sep 5, 2022
Anotter USB temperature logger that can record up to four channels with thermocouple or NTCs connected via CDC directly or SCPI to USB.
Anotter USB temperature logger that can record up to four channels with thermocouple or NTCs connected via CDC directly or SCPI to USB.

temperature-logger Anotter USB temperature logger that can record up to four channels with thermocouple or NTCs connected via CDC directly or SCPI to

Nov 24, 2022
ESP32 based USB C Programmable Power Supply
ESP32 based USB C Programmable Power Supply

ESP32 USB-C Power Supply The idea for this ESP32 usb-c power supply project came to me when I discovered that components exist that communicate to par

Nov 26, 2022
An USB Rubberducky example for ESP32-S2 module with SD Card 🦆
An USB Rubberducky example for ESP32-S2 module with SD Card 🦆

ESP32-S2 WUD-Ducky This project is an attempt to add USB HID to the default example provided with @AprilBrother's WUD (*), however it also supports an

Nov 14, 2022
Nov 29, 2022
Allows for multiple SwitchBot buttons and curtains to be controlled via MQTT sent to ESP32. ESP32 will send BLE commands to switchbots and return MQTT responses to the broker. Also supports Meter/Temp Sensor

SwitchBot-MQTT-BLE-ESP32 Switchbot local control using ESP32. no switchbot hub used/required. works with any smarthub that supports MQTT https://githu

Nov 26, 2022
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.
AnalogWrite for ESP32 and ESP32-S2 with LEDC PWM. Includes PWM Phase Control, DAC and Smart GPIO resource management.

analogWrite() ESP32 Installation Instructions This library was tested using using the ESP32 Arduino IDE Boards Manager installation method. Stable rel

Nov 26, 2022
ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

esp32-internet-ota ESP32 + GitHub Actions + Husarnet. A boilerplate project for ESP32 allowing in-field firmware update using GitHub Actions workflow.

Sep 22, 2022
PoC for CVE-2021-28476 a guest-to-host "Hyper-V Remote Code Execution Vulnerability" in vmswitch.sys.
PoC for CVE-2021-28476 a guest-to-host

CVE-2021-28476: a guest-to-host "Microsoft Hyper-V Remote Code Execution Vulnerability" in vmswitch.sys. This is a proof of concept for CVE-2021-28476

Nov 26, 2022
Phage-Host Interaction Search Tool
Phage-Host Interaction Search Tool

PHIST Phage-Host Interaction Search Tool A tool to predict prokaryotic hosts for phage (meta)genomic sequences. PHIST links viruses to hosts based on

Nov 25, 2022
mini-plugin host as plugin
mini-plugin host as plugin

DISTRHO Ildaeil DISTRHO Ildaeil is mini-plugin host working as a plugin, allowing one-to-one plugin format reusage. Load a VST2 plugin inside a LV2 ho

Nov 22, 2022
Header-only VMWare Backdoor API Implementation & Effortless VMX Patcher for Custom Guest-to-Host RPCs
 Header-only VMWare Backdoor API Implementation & Effortless VMX Patcher for Custom Guest-to-Host RPCs

VmxHijack Header-only VMWare Backdoor API Implementation & Effortless VMX Patcher for Custom Guest-to-Host RPCs Sample // --- RPC Server Code (VmxHija

Sep 9, 2022