{"id":14963297,"url":"https://github.com/tobozo/esp32-usb-soft-host","last_synced_at":"2025-04-07T12:07:13.571Z","repository":{"id":43770682,"uuid":"346447201","full_name":"tobozo/ESP32-USB-Soft-Host","owner":"tobozo","description":"An Arduino wrapper to @sdima1357's usb_soft_host esp-idf example","archived":false,"fork":false,"pushed_at":"2023-09-14T17:13:53.000Z","size":745,"stargazers_count":312,"open_issues_count":18,"forks_count":47,"subscribers_count":10,"default_branch":"main","last_synced_at":"2025-04-07T12:06:51.732Z","etag":null,"topics":["arduino","esp-idf","esp32","esp32s2","espressif","hid","usb","usb-soft-host"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"agpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tobozo.png","metadata":{"files":{"readme":"ReadMe.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-03-10T18:03:22.000Z","updated_at":"2025-04-01T22:34:15.000Z","dependencies_parsed_at":"2024-09-13T19:37:10.046Z","dependency_job_id":null,"html_url":"https://github.com/tobozo/ESP32-USB-Soft-Host","commit_stats":{"total_commits":40,"total_committers":1,"mean_commits":40.0,"dds":0.0,"last_synced_commit":"434e30ee27cf7a06d42000f085b7174529fc1fd6"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobozo%2FESP32-USB-Soft-Host","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobozo%2FESP32-USB-Soft-Host/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobozo%2FESP32-USB-Soft-Host/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tobozo%2FESP32-USB-Soft-Host/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tobozo","download_url":"https://codeload.github.com/tobozo/ESP32-USB-Soft-Host/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247648977,"owners_count":20972945,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arduino","esp-idf","esp32","esp32s2","espressif","hid","usb","usb-soft-host"],"created_at":"2024-09-24T13:31:19.328Z","updated_at":"2025-04-07T12:07:13.552Z","avatar_url":"https://github.com/tobozo.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32 USB Soft Host library for Arduino IDE\n\n\nWhat is it?\n-----------\n\nThis is mainly a wrapper around the excellent work of [Dmitry Samsonov (@sdima1357)](https://github.com/sdima1357)\nwith [esp32_usb_soft_host](https://github.com/sdima1357/esp32_usb_soft_host)\n\nSome parts of the code (e.g. the timer group isr calls) have been regressed to fit esp-idf 3.3 needs but it has been tested up to 4.4.2.\n\nUSB Low Speed is slow\n---------------------\n\nESP32 USB-LS Soft host (:warning: LS=low speed) is a pure software implementation of USB host thru general IO pins.\n\n\nFeatures\n--------\n\nThe library supports up to 4 HID *low speed* devices simultaneously.\nA callback can be attached both for detection and events.\n\n\nHardware support\n----------------\n\nThis library has been tested on ESP32-Wroom/Wrover and works fine as long as the pins aren't\nshared (beware of the psram pins!).\n\nIt has partial support for ESP32-S2, and remains untested on ESP32-S3 \u0026\u0026 ESP32-C3.\n\n\nKnown working HID devices:\n--------------------------\n\n- USB Keyboards: any, but consider powering externally it has backlights and/or other gadgets\n- USB Mice:\n  - LogiLink ID0062 (idVendor=0x1a2c, idProduct=0x0042): Data recieves - 10/10 , led fired - 10/10;\n  - Microsoft Intellimouse 1.1 (idVendor=0x045e, idProduct=0x0039): Data recieves - 10/10, led fired - 10/10\n  - Microsoft Wheel Mouse (idVendor = 0x045e, idProduct = 0x0040): Data recieves - 6/10, led fired - 6/10;\n  - ASUS Logitech M-UV55A: Data recieves - 7/10 , led fired (complete init?) - 10/10\n  - ASUS (Logitech) Optical USB Black #M-UV55A (idVendor = 0x046d, idProduct = 0xc016): Data recieves - 7/10 , led fired (complete init?) - 10/10;\n  - A4Tech SWOP-48 (idVendor = 0x093a. idProduct = 0x2510): Data recieves - 10/10 , led fired - 10/10\n  - Genius Netscroll 110X (idVendor = 0x0458, idProduct = 0x003a): Data recieves - 10/10, led fired - 10/10\n  - Logitech B100 (idVendor=0x046d, idProduct=0xc077): partial detection, may need several resets before events are fired\n  - Logitech M-BT83 (idVendor = 0x046d, idProduct = 0xc03e), Data recieves - 5/10, led fired - 5/10;\n  - A4Tech X-7??? , gaming mouse w/o label [ VID_09DA\u0026PID_8090\u0026REV_0606\u0026MI_00 ]. Not recognized by driver, no any info in the Serial Monitor exist.\n  - A4Tech OP-720 (idVendor = 0x093a, idProduct = 0x2510): Data recieves - 5/10, led fired - 10/10;\n  - Oklick-305m: Data recieves - 0/10 (sic!), led fired - 10/10 (i guess it always turned on, independing of init result )\n  - Exegate SH-9018: Data recieves - 0/10, led fired - 10/10. Device reaction looks like Oklick-305m\n\n\n| Status    | Brand         | Model Name       | idVendor  |  idProduct | Init  | Events |              Comments                  |\n|:--------- | :------------ | :--------------- |:--------- | :--------- | :-----| :----- | :------------------------------------- |\n|:smile:    | LogiLink      | ID0062           | 0x1a2c    | 0x0042     | 10/10 | 10/10  | Low cost 3 buttons mouse               |\n|:smile:    | Microsoft     | Intellimouse 1.1 | 0x045e    | 0x0039     | 10/10 | 10/10  |                                        |\n|:smile:    | A4Tech        | SWOP-48          | 0x093a    | 0x2510     | 10/10 | 10/10  |                                        |\n|:smile:    | Genius        | Netscroll 110X   | 0x0458    | 0x003a     | 10/10 | 10/10  |                                        |\n|:no_mouth: | Logitech      | M-UV55A          | 0x046d    | 0xc016     | 10/10 | 7/10   | Brand is advertised as ASUS/Logitech   |\n|:no_mouth: | Microsoft     | Wheel Mouse      | 0x045e    | 0x0040     | 6/10  | 6/10   |                                        |\n|:no_mouth: | A4Tech        | OP-720           | 0x093a    | 0x2510     | 10/10 | 5/10   |                                        |\n|:cold_face:| Logitech      | M-BT83           | 0x046d    | 0xc03e     | 5/10  | 5/10   |                                        |\n|:cold_face:| Logitech      | B100             | 0x046d    | 0xc077     | 10/10 | 3/10   |                                        |\n|:skull:    | Oklick        | 305m             | n/a       | n/a        | 10/10 | 0/10   |                                        |\n|:skull:    | Exegate       | SH-9018          | n/a       | n/a        | 10/10 | 0/10   | Device reaction looks like Oklick-305m |\n|:skull:    | A4Tech        | X-7???           | 0x09da    | 0x8090     | 0/10  | 0/10   | Gaming mouse w/o label                 |\n\n\n- USB Joypads:\n  - Quimat QR206 SNES PC Retro Gaming Controller\n  - Retrolink USB Classic Super NES Style Controller\n  - USB Game Controller (NES Style, unknown brand)\n\n\n\nProof of concept:\n-----------------\n\n![](extras/ESP32-USB-host.png)\n![](extras/m5stack-pins_16_17.jpeg)\n\nCredits:\n--------\n- [Dmitry Samsonov ](https://github.com/sdima1357)\n- [Grigory Prigodin](https://github.com/zbx-sadman)\n- [@ivo1981](https://github.com/ivo1981)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobozo%2Fesp32-usb-soft-host","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftobozo%2Fesp32-usb-soft-host","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftobozo%2Fesp32-usb-soft-host/lists"}