{"id":22264533,"url":"https://github.com/ricardoquesada/bluepad32","last_synced_at":"2025-04-05T16:09:09.807Z","repository":{"id":40265321,"uuid":"311484541","full_name":"ricardoquesada/bluepad32","owner":"ricardoquesada","description":"Bluetooth gamepad, mouse and keyboard support for ESP32 and PicoW","archived":false,"fork":false,"pushed_at":"2024-04-13T20:37:50.000Z","size":6359,"stargazers_count":307,"open_issues_count":12,"forks_count":46,"subscribers_count":12,"default_branch":"main","last_synced_at":"2024-04-14T04:10:38.951Z","etag":null,"topics":["arduino","bluetooth","esp-idf","esp32","gamepad","keyboard","mouse","pico-sdk","pico-w"],"latest_commit_sha":null,"homepage":"https://bluepad32.readthedocs.io/","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ricardoquesada.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"docs/supported_gamepads.md","governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null},"funding":{"github":["ricardoquesada"],"patreon":null,"open_collective":null,"ko_fi":"ricardoquesada","tidelift":null,"community_bridge":null,"liberapay":null,"issuehunt":null,"otechie":null,"lfx_crowdfunding":null,"custom":null}},"created_at":"2020-11-09T22:48:06.000Z","updated_at":"2024-04-15T15:07:12.143Z","dependencies_parsed_at":"2023-11-11T20:29:31.209Z","dependency_job_id":"874790bb-1bfd-4929-a73e-7a8eb57f73c2","html_url":"https://github.com/ricardoquesada/bluepad32","commit_stats":null,"previous_names":[],"tags_count":51,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Fbluepad32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Fbluepad32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Fbluepad32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ricardoquesada%2Fbluepad32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ricardoquesada","download_url":"https://codeload.github.com/ricardoquesada/bluepad32/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247361691,"owners_count":20926643,"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","bluetooth","esp-idf","esp32","gamepad","keyboard","mouse","pico-sdk","pico-w"],"created_at":"2024-12-03T10:09:26.684Z","updated_at":"2025-04-05T16:09:09.789Z","avatar_url":"https://github.com/ricardoquesada.png","language":"C","funding_links":["https://github.com/sponsors/ricardoquesada","https://ko-fi.com/ricardoquesada"],"categories":[],"sub_categories":[],"readme":"# Bluepad32\n\n[![discord](https://img.shields.io/discord/775177861665521725.svg)](https://discord.gg/r5aMn6Cw5q)\n\n\u003cp align=\"center\"\u003e\n\u003cimg src=\"https://github.com/ricardoquesada/bluepad32/blob/develop/docs/images/bluepad32_logo_ok_280.png?raw=true\" alt=\"drawing\" width=\"216\"/\u003e\n\u003c/p\u003e\n\nA Bluetooth controller \"host\" for the ESP32, ESP32-S3, ESP32-C3, ESP32-C6, ESP32-H2, Raspberry Pi Pico W, Pico 2 W, and\nPosix (Linux, macOS).\n\nAdd Bluetooth gamepad, mouse and keyboard support to your projects easily.\n\nIn other words, it allows you to control a robot using a DualSense controller.\n\n## Where to start\n\nChoose your target platform:\n\n| Platform                            | Start here                                                        | Further info              | Community projects                                                                                        |\n|-------------------------------------|-------------------------------------------------------------------|---------------------------|-----------------------------------------------------------------------------------------------------------|\n| Arduino IDE                         | [![Watch the video][youtube_image]](https://youtu.be/0jnY-XXiD8Q) | [Doc][plat_arduino]       | [Controller for Tello drone][tello]                                                                       |\n| Arduino using ESP-IDF toolchain     | [Template project][esp-idf-bluepad32-arduino]                     | [Doc][plat_arduino]       | [Lego Robot][esp32_example] ([video][esp32_video]), [gbaHD Shield][esp32_example2] (a GameBoy consolizer) |\n| Arduino + NINA coprocessor          | [Arduino Library][bp32-arduino]                                   | [Doc][plat_nina]          | [Philips CD-i meets Bluetooth][nina_example]                                                              |\n| CircuitPython + AirLift coprocessor | [CircuitPython Library][bp32-circuitpython]                       | [Doc][plat_airlift]       | [Quico console][airlift_example], Controlling 4 servos ([video][airlift_video])                           |\n| Pico W                              | [Pico W example][pico-w-example]                                  | [Doc][plat_picow_picosdk] | [Pico Switch][pico_switch], [PicoNtrol][pico_ntrol]                                                       |\n| ESP-IDF                             | [ESP32 example][esp32-example]                                    | [Doc][plat_esp32_espidf]  | [OGX-Wireless-Lite][ogx_wireless_lite]                                                                    |\n| Posix (Linux, macOS)                | [Posix example][posix-example]                                    | [Doc][plat_custom]        |                                                                                                           |\n| Unijoysticle                        | [Unijoysticle2][unijoysticle2]                                    | [Doc][plat_unijoysticle]  |                                                                                                           |\n| MightyMiggy                         | [Unijoysticle for Amiga][unijoysticle_sukko]                      | [Doc][plat_mightymiggy]   |                                                                                                           |\n\n[airlift_example]: https://gitlab.com/ricardoquesada/quico\n\n[airlift_video]: https://twitter.com/makermelissa/status/1482596378282913793\n\n[bp32-arduino]: https://github.com/ricardoquesada/bluepad32-arduino\n\n[bp32-circuitpython]: https://github.com/ricardoquesada/bluepad32-circuitpython\n\n[esp-idf-bluepad32-arduino]: https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template\n\n[esp32_example2]: https://github.com/ManCloud/GBAHD-Shield\n\n[esp32_example]: https://github.com/antonvh/LMS-uart-esp/blob/main/Projects/LMS-ESP32/BluePad32_idf/README.md\n\n[esp32_video]: https://www.instagram.com/p/Ca7T6twKZ0B/\n\n[nina_example]: https://eyskens.me/cd-i-meets-bluetooth/\n\n[ogx_wireless_lite]: https://github.com/wiredopposite/OGX-Wireless-Lite\n\n[pico_ntrol]: https://github.com/ShadeReogen/PicoNtrol\n\n[pico_switch]: https://github.com/juan518munoz/PicoSwitch-WirelessGamepadAdapter\n\n[plat_airlift]: https://bluepad32.readthedocs.io/en/latest/plat_airlift\n\n[plat_arduino]: https://bluepad32.readthedocs.io/en/latest/plat_arduino\n\n[plat_custom]: https://bluepad32.readthedocs.io/en/latest/adding_new_platform\n\n[plat_esp32_espidf]: https://bluepad32.readthedocs.io/en/latest/plat_esp32\n\n[plat_mightymiggy]: https://bluepad32.readthedocs.io/en/latest/plat_mightymiggy\n\n[plat_nina]: https://bluepad32.readthedocs.io/en/latest/plat_nina\n\n[plat_unijoysticle]: https://bluepad32.readthedocs.io/en/latest/plat_unijoysticle\n\n[plat_picow_picosdk]: https://bluepad32.readthedocs.io/en/latest/plat_picow\n\n[tello]: https://github.com/jsolderitsch/ESP32Controller\n\n[unijoysticle2]: https://retro.moe/unijoysticle2/\n\n[unijoysticle_sukko]: https://gitlab.com/SukkoPera/unijoysticle2\n\n[youtube_image]: https://lh3.googleusercontent.com/pw/AJFCJaXiDBy3NcQBBB-WFFVCsvYBs8szExsYQVwG5qqBTtKofjzZtJv_6GSL7_LfYRiypF1K0jjjgziXJuxAhoEawvzV84hlbmVTrGeXQYpVnpILZwWkbFi-ccX4lEzEbYXX-UbsEzpHLhO8qGVuwxOl7I_h1Q=-no?authuser=0\n\n## Features\n\n* Supports most, if not all, modern Bluetooth gamepads, mice and keyboards (see below)\n* Supports ESP32 and Pico W families\n* Supported APIs: ESP-IDF, Pico-SDK, Arduino and CircuitPython\n* Fast (very low latency)\n* Small footprint\n* Uses only one core (CPU0). The remaining one is free to use.\n* C11 based\n* Open Source (see below)\n* Easy to integrate into 3rd party projects\n\n## Supported controllers\n\n![Supported gamepads](https://lh3.googleusercontent.com/pw/AMWts8BB7wT51jpn3HxWHuZLiEM2lX05gmTDsnldHszkXuYqxbowNvtxPtpbHh3CNjv1OBzeyadZjNLNBgE4w2tl2WmP8M9gGBCfWhzmZGQnHBlERSoy5W2dj6-EYmT84yteKTFjp4Jz2H3DgByFiKXaxfFC2g=-no)\n\n* Sony DualSense (PS5)\n* Sony DualShock 4 (PS4)\n* Sony DualShock 3 (PS3)\n* Nintendo Switch Pro controller\n* Nintendo Switch JoyCon\n* Nintendo Wii U controller\n* Nintendo Wii Remote + accessories\n* Xbox Wireless controller (models 1708, 1914, adaptive)\n* Android controllers\n* Steam controller\n* Stadia controller\n* PC/Window controller\n* 8BitDo controllers\n* Atari joystick\n* iCade\n* Mouse\n* Keyboards\n* And more\n\nNOTE: Original **ESP32**, **Pico W** and **Pico 2 W** support all listed controllers. **ESP32-S3**, **ESP32-C3**,\n**ESP32-C6** and **ESP32-H2** only support a subset.\n\nSee: [Supported gamepads][gamepads], [supported mice][mice] and [supported keyboards][keyboards]\n\n[gamepads]: https://bluepad32.readthedocs.io/en/latest/supported_gamepads/\n\n[mice]: https://bluepad32.readthedocs.io/en/latest/supported_mice/\n\n[keyboards]: https://bluepad32.readthedocs.io/en/latest/supported_keyboards/\n\n## Pre-compiled binaries\n\nDownload pre-compiled binaries for Unijoysticle, Nina, AirLift, MightyMiggy:\n\n* https://github.com/ricardoquesada/bluepad32/releases\n\n## Creating your project\n\nSee the examples folder which includes examples for:\n\n* [Bluepad32 for ESP32][esp32-example] (ESP32, ESP32-S3, ESP32-C3, ESP32-C6 and ESP32-H2)\n* [Bluepad32 for Pico W][pico-w-example] (Pico W and Pico 2 W)\n* [Bluepad32 for Posix (Linux, macOS)][posix-example]\n\nArduino examples are in:\n\n* [Bluepad32 for Arduino IDE][arduino-ide-example]\n* [Bluepad32 for Arduino + ESP-IDF][arduino-esp-idf-example]\n\n[esp32-example]: examples/esp32/\n\n[pico-w-example]: examples/pico_w/\n\n[posix-example]: examples/posix\n\n[arduino-ide-example]: https://www.youtube.com/watch?v=0jnY-XXiD8Q\n\n[arduino-esp-idf-example]: https://github.com/ricardoquesada/esp-idf-arduino-bluepad32-template\n\n## Support\n\n* [Documentation][docs] [![Documentation Status](https://readthedocs.org/projects/bluepad32/badge/?version=latest)](https://bluepad32.readthedocs.io/?badge=latest)\n* [Discord][discord] [![discord](https://img.shields.io/discord/775177861665521725.svg)](https://discord.gg/r5aMn6Cw5q)\n\n[docs]: https://bluepad32.readthedocs.io/\n\n[discord]: https://discord.gg/r5aMn6Cw5q\n\n## License\n\nBluepad32 is open source, [licensed under Apache 2][apache2].\n\nHowever, Bluepad32 depends on the great [BTstack library][btstack-github]. Which is free to use for\nopen source projects. But commercial for closed-source projects.\n\nIf you are developing a commercial product for:\n\n- ESP32: [You should contact BTstack people][btstack-homepage].\n- Pico W: [You are already covered by Raspberry Pi License][rpi-btstack-license].\n\nNotice: I’m not affiliated with BTstack people. They are super friendly and willing to help.\n\n[btstack-github]: https://github.com/bluekitchen/btstack\n\n[apache2]: https://www.apache.org/licenses/LICENSE-2.0\n\n[btstack-homepage]: https://bluekitchen-gmbh.com/\n\n[rpi-btstack-license]: https://github.com/raspberrypi/pico-sdk/blob/master/src/rp2_common/pico_btstack/LICENSE.RP\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoquesada%2Fbluepad32","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fricardoquesada%2Fbluepad32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fricardoquesada%2Fbluepad32/lists"}