{"id":19871434,"url":"https://github.com/esp32beans/esp32-ble-hid-exp","last_synced_at":"2025-09-18T17:31:39.693Z","repository":{"id":181924780,"uuid":"667656066","full_name":"esp32beans/ESP32-BLE-HID-exp","owner":"esp32beans","description":"Arduino ESP32 BLE HID Explorer and Xbox One Controller","archived":false,"fork":false,"pushed_at":"2023-07-21T01:39:12.000Z","size":9,"stargazers_count":16,"open_issues_count":0,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-04-01T22:46:53.506Z","etag":null,"topics":["arduino","arduino-ide","ble","blue","esp32","hid","nimble","xbox-one"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/esp32beans.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":"2023-07-18T02:43:10.000Z","updated_at":"2025-02-10T06:40:41.000Z","dependencies_parsed_at":null,"dependency_job_id":"7db9edea-86ac-4767-a431-904b59e42408","html_url":"https://github.com/esp32beans/ESP32-BLE-HID-exp","commit_stats":null,"previous_names":["esp32beans/esp32-ble-hid-exp"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/esp32beans/ESP32-BLE-HID-exp","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32-BLE-HID-exp","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32-BLE-HID-exp/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32-BLE-HID-exp/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32-BLE-HID-exp/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/esp32beans","download_url":"https://codeload.github.com/esp32beans/ESP32-BLE-HID-exp/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/esp32beans%2FESP32-BLE-HID-exp/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":275804676,"owners_count":25531730,"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","status":"online","status_checked_at":"2025-09-18T02:00:09.552Z","response_time":77,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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","arduino-ide","ble","blue","esp32","hid","nimble","xbox-one"],"created_at":"2024-11-12T16:12:20.040Z","updated_at":"2025-09-18T17:31:39.686Z","avatar_url":"https://github.com/esp32beans.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# ESP32 BLE HID Explorer\n\nThis program scans for BLE HID devices. When a device is found, scanning stops.\nDump out all services and characteristics. For all subscrible characteristics,\nsubscribe to notifications or indications. For all readable characteristics,\nread and dump values, While connected to the device, print\nnotification/indication notification/indication data in hex. When disconnected,\nresume scanning for a new HID device.\n\nThe first time a BLE HID device is used with this program it must be paired.\nThis usually means holding down a button while turning the device. Consult the\ndevice docs for details. For devices with one button, entering pairing mode\ncan usually by turning on the device then long pressing the same button.\n\nFor example, the Xbox One controller has a button next to the USB connector.\nWhen the controller is off, press and hold this button then press and hold the\nXbox logo button until the logo lights up. Release both buttons. This program\nshould find the controller and dump out information. The next time it is not\nnecessary to pair. Just press the Xbox logo button until it lights up.\n\nAs an extra bonus, this program can decode the Xbox One binary data into X, Y\naxes values, etc.\n\nNote this a demo program so it is slow. It fetches and prints a lot of\ninformation which is useful for understanding how BLE works but is not needed\nin real world operation. For example, fetching the Device Information is\ncompletely optional. Same for the Report Map which can be hundreds of bytes\nlong.\n\n## Software\n\n* Tested with Arduino IDE 1.8.19 but 2.x should work.\n* NimBLE-Arduino Library installed using the IDE Library Manager.\n\n## Hardware\n\nThis program should work on any ESP32 board supported by NimBLE.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesp32beans%2Fesp32-ble-hid-exp","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fesp32beans%2Fesp32-ble-hid-exp","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fesp32beans%2Fesp32-ble-hid-exp/lists"}