{"id":14963415,"url":"https://github.com/sdima1357/esp32_usb_soft_host","last_synced_at":"2025-05-15T23:03:29.571Z","repository":{"id":37843123,"uuid":"343218333","full_name":"sdima1357/esp32_usb_soft_host","owner":"sdima1357","description":"ESP32  software USB host through general IO pins. We can connect up to 4 USB-LS HID (keyboard mouse joystick) devices simultaneously.","archived":false,"fork":false,"pushed_at":"2025-02-23T20:19:26.000Z","size":2038,"stargazers_count":456,"open_issues_count":8,"forks_count":55,"subscribers_count":15,"default_branch":"main","last_synced_at":"2025-05-15T23:02:58.742Z","etag":null,"topics":["board","emulators","esp32","esp32c3","espressif","iot","retrocomputing","retrogaming","risc-v","usb","usb-hid","usb-host","xtensa"],"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/sdima1357.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-02-28T21:26:06.000Z","updated_at":"2025-05-15T22:20:05.000Z","dependencies_parsed_at":"2025-03-13T02:16:31.249Z","dependency_job_id":null,"html_url":"https://github.com/sdima1357/esp32_usb_soft_host","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdima1357%2Fesp32_usb_soft_host","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdima1357%2Fesp32_usb_soft_host/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdima1357%2Fesp32_usb_soft_host/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/sdima1357%2Fesp32_usb_soft_host/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/sdima1357","download_url":"https://codeload.github.com/sdima1357/esp32_usb_soft_host/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":254436944,"owners_count":22070946,"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":["board","emulators","esp32","esp32c3","espressif","iot","retrocomputing","retrogaming","risc-v","usb","usb-hid","usb-host","xtensa"],"created_at":"2024-09-24T13:31:28.451Z","updated_at":"2025-05-15T23:03:29.537Z","avatar_url":"https://github.com/sdima1357.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# esp32_usb_soft_host\nesp32 USB-LS pure software host thru general IO pins. Up to 4 HID devices simultaneously. \n\nCode is compatible with ESP-IDF version \u003c 5.0, latest: https://github.com/espressif/esp-idf/releases/tag/v4.4.8\n\n![image1](https://github.com/sdima1357/esp32_usb_soft_host/blob/main/images/IMG_20210303_184755_1.jpg?raw=true)\n\nboard ~$3 :https://www.aliexpress.com/premium/LOLIN32.html or any of https://www.aliexpress.com/premium/ESP32.html\n\nusb connectors(for example): https://www.aliexpress.com/item/1005002027124387.html\n\n\n//set right esp32 env for me it:\n\n\u003eexport IDF_PATH=$HOME/esp/esp-idf\n\n\u003esource $HOME/esp/esp-idf/export.sh\n\n\n//connect the board, build \u0026 flash\n\n\u003egit clone  https://github.com/sdima1357/esp32_usb_soft_host\n\n\u003ecd esp32_usb_soft_host/usb_test/\n\n\u003e idf.py set-target esp32\n\n\u003e idf.py menuconfig\n\n**Please set in Menuconfig-\u003ecompiler options -\u003e optimization level\u003e O2 ( must be in O2 options. \"idf.py set-target esp32\" resets it to Og ,I don't know why)**\n\n\u003e idf.py flash monitor\n\n\nTest run with 3 mouses, $3 CY7C68013A logic analyser  and amazing program https://sigrok.org/wiki/PulseView :\n\n![image2](https://github.com/sdima1357/esp32_usb_soft_host/blob/main/images/PulseView.jpg?raw=true)\n\n\u003eTue Aug 31 15:50:48 IDT 2021\n\nAdd esp32c3 support. \n\n\u003eidf.py set-target esp32c3 \n\n\u003eidf.py menuconfig\n\nset in: \n\nMenuconfig-\u003ecompiler options -\u003e optimization level\u003e O2\n\n**only for esp32c3: Component config-\u003e ESP System Setting -\u003e Memory protection-\u003e Disable.**\n\n\u003e idf.py flash monitor\n\n\n\n**Warning(disclaimer):\nSorry, but target of this project right now - only research \u0026 proof of feasibility. I can't debug hardware which i don't have. Some hardware(devices) may not work, from different reasons. In the case of problem i suggest to check wires \u0026  use $3 CY7C68013A logic analyser. Sometimes i can help.**\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdima1357%2Fesp32_usb_soft_host","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fsdima1357%2Fesp32_usb_soft_host","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fsdima1357%2Fesp32_usb_soft_host/lists"}