{"id":15163228,"url":"https://gitlab.com/ricardoquesada/bluepad32","last_synced_at":"2025-06-29T13:36:00.426Z","repository":{"id":50565407,"uuid":"22342807","full_name":"ricardoquesada/bluepad32","owner":"ricardoquesada","description":"Bluetooth gamepad, mouse and keyboard support for ESP32 and Raspberry Pi PicoW\r\n","archived":false,"fork":false,"pushed_at":null,"size":null,"stargazers_count":35,"open_issues_count":11,"forks_count":13,"subscribers_count":null,"default_branch":"main","last_synced_at":"2024-12-05T08:03:01.132Z","etag":null,"topics":["GitLab CI Embedded Builds Community Examples","arduino","bluetooth","circuitpython","controller","esp-idf","esp32","esp32-arduino","esp32c3","esp32s3","gamepad","mouse","pico-sdk","pico-w"],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://gitlab.com/uploads/-/system/project/avatar/22342807/bluepad32_logo_ok_no_text_320.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2020-11-09T22:23:03.120Z","updated_at":"2024-10-31T03:11:43.547Z","dependencies_parsed_at":"2022-08-20T22:01:10.526Z","dependency_job_id":null,"html_url":"https://gitlab.com/ricardoquesada/bluepad32","commit_stats":null,"previous_names":[],"tags_count":23,"template":null,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ricardoquesada%2Fbluepad32","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ricardoquesada%2Fbluepad32/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ricardoquesada%2Fbluepad32/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories/ricardoquesada%2Fbluepad32/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners/ricardoquesada","download_url":"https://gitlab.com/ricardoquesada/bluepad32/-/archive/main/bluepad32-main.zip","host":{"name":"gitlab.com","url":"https://gitlab.com","kind":"gitlab","repositories_count":4516509,"owners_count":6599,"icon_url":"https://github.com/gitlab.png","version":null,"created_at":"2022-05-30T11:31:42.605Z","updated_at":"2024-07-18T11:24:13.055Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/gitlab.com/owners"}},"keywords":["GitLab CI Embedded Builds Community Examples","arduino","bluetooth","circuitpython","controller","esp-idf","esp32","esp32-arduino","esp32c3","esp32s3","gamepad","mouse","pico-sdk","pico-w"],"created_at":"2024-09-27T02:21:44.097Z","updated_at":"2025-06-29T13:36:00.414Z","avatar_url":"https://gitlab.com/uploads/-/system/project/avatar/22342807/bluepad32_logo_ok_no_text_320.png","language":null,"funding_links":[],"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/gitlab.com%2Fricardoquesada%2Fbluepad32","html_url":"https://awesome.ecosyste.ms/projects/gitlab.com%2Fricardoquesada%2Fbluepad32","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/gitlab.com%2Fricardoquesada%2Fbluepad32/lists"}