• Stars
    star
    562
  • Rank 79,281 (Top 2 %)
  • Language
    C
  • License
    Other
  • Created about 4 years ago
  • Updated about 1 month ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Bluetooth gamepad, mouse and keyboard support for ESP32 and PicoW

Bluepad32

discord

logo

A Bluetooth gamepad "host" for the ESP32 / ESP32-S3 / ESP32-C3.

Add Bluetooth gamepad support to your projects easily.

Where to start

Choose your target platform:

Platform Start here Further info Community projects
Arduino IDE Watch the video Doc Controller for Tello drone
Arduino using ESP-IDF toolchain Template project Doc Lego Robot (video), gbaHD Shield (a GameBoy consolizer)
Arduino + NINA coprocessor Arduino Library Doc Philips CD-i meets Bluetooth
CircuitPython + AirLift coprocessor CircuitPython Library Doc Quico console, Controlling 4 servos (video)
Unijoysticle Unijoysticle2 Doc
MightyMiggy Unijoysticle for Amiga Doc
Custom Doc

Features

  • Supports most, if not all, modern Bluetooth gamepads and mice (see below)
  • Fast (very low latency)
  • Small footprint
  • Uses only one core (CPU0). The remaining one is free to use.
  • C11 based
  • Open Source (see below)

Supported controllers

Supported gamepads

  • Sony DualSense (PS5)
  • Sony DUALSHOCK 4 (PS4)
  • Sony DUALSHOCK 3 (PS3)
  • Nintendo Switch Pro controller
  • Nintendo Switch JoyCon
  • Nintendo Wii U controller
  • Nintendo Wii Remote + accessories
  • Xbox Wireless controller (models 1708, 1914, adaptive)
  • Android controllers
  • Steam controller
  • Stadia controller
  • PC/Window controller
  • 8BitDo controllers
  • iCade
  • Mouse
  • And more

NOTE: Original ESP32 supports all listed controllers. ESP32-S3 and ESP32-C3 support only a subset.

See: Supported gamepads and supported mice

Pre-compiled binaries

How to compile it

  1. Install ESP-IDF

    Install the ESP32 toolchain. Use version 4.4 or 5.0. Might work on newer / older ones, but not tested.

  2. Clone repo

    git clone --recursive https://gitlab.com/ricardoquesada/bluepad32.git
  3. Integrate BTStack into ESP32

    cd ${BLUEPAD32}/external/btstack/port/esp32
    # This will install BTstack as a component inside Bluepad32 source code (recommended).
    # Remove "IDF_PATH=../../../../src" if you want it installed in the ESP-IDF folder
    IDF_PATH=../../../../src ./integrate_btstack.py
  4. Compile Bluepad32

    Choose target platform (default is Unijoysticle):

    cd ${BLUEPAD32}/src
    idf.py menuconfig

    The Bluepad32 options are in: Components config -> Bluepad32 (find it at the very bottom) -> Target platform

    And compile it:

    idf.py build
  5. Flash it

    idf.py flash monitor

Support

License

Bluepad32 is open source, licensed under Apache 2.

However, Bluepad32 depends on the great BTStack library. Which is free to use for open source projects. But commercial for closed-source projects. Contact them for details. They are very friendly + helpful (Iā€™m not affiliated with them).

More Repositories

1

Spidermonkey

SpiderMonkey
C++
246
star
2

vchar64

editor for the Commodore 64
C++
91
star
3

unijoysticle2

Bluetooth gamepad support for the Commodore 64 / Atari / Amiga, etc.
Assembly
46
star
4

c64-misc

Commodore 64 tips'n tricks
Assembly
44
star
5

bluepad32-arduino

Bluepad32 for Arduino NINA-W10 boards
C++
29
star
6

bios-8088

Disassembled BIOS from 8088 machines
Python
28
star
7

esp-idf-arduino-bluepad32-template

ESP-IDF template that has Arduino and Bluepad32 built-in
C
18
star
8

creator_to_cocos2d

C++ Creator support for Cocos2dx
C++
13
star
9

pc-8088-misc

Misc. programs for old PC DOS machines: Tandy 1000, PCjr, etc.
Assembly
12
star
10

cocosmotion

Sample project combining the great tastes of Cocos2d-iPhone and RubyMotion
Ruby
11
star
11

c64-the-uni-games

The Uni Games, a Commodore 64 game
Assembly
10
star
12

alink

alink: linker for OBJ files. from here: http://alink.sourceforge.net/. Ported to linux/mac
C
9
star
13

unijoysticle

The UniJoystiCle, a unicycle simulator for the Commodore 64
C++
9
star
14

c64-commando-2084

A mod of Commando for the Commodore 64 (mirror)
Assembly
8
star
15

bluepad32-circuitpython

Bluepad32 library for CircuitPython (mirror)
Python
6
star
16

2732-to-2532

2732 to 2532 EPROM adapter
4
star
17

commodore-home

Commodore Home: Home automation for the masses, not the classes
Assembly
4
star
18

android-ndk

Android NDK headers
C
4
star
19

libfreetype

libfreetype repo
C
4
star
20

books

binaries / source code from books
Assembly
3
star
21

test-ios-npot-texture-memory

Objective-C
3
star
22

config_files

config files for my machine
Vim Script
2
star
23

gl_LastFragData

Testing gl_LastFragData
Objective-C
2
star
24

c64-c128-erasoft

Erasoft / RQ progs games/intros from '88 to '92 for the Commodore 64 & 128
2
star
25

template-parkour

parkour template for cocos2d-x
C++
2
star
26

dexloader-sample

Sample that shows how to load a .jar / .apk in runtime in Android
Java
2
star
27

cocoslive

Python
2
star
28

c64-games-unijoysticle

Commodore 64 games that were modified to use enhanced Unijoysticle features
2
star
29

c64-rambo

"Rambo: First blood, Part II" game for the Commodore 64 disassembled and patch to support gamepad rumble.
Assembly
1
star
30

c64-cmania-intro

Commodore Mania intro
Assembly
1
star
31

c64-casual-connect-15

Casual Connect SF 2015. Simple SDKBOX / Cocos2d-x intro for the C64
Assembly
1
star
32

meetup-cocos2d-x-2015-05

Samples presented on the Cocos2d-x meetup 2015-05
C++
1
star
33

ccgraphedit

Experimental work in progress towards a cocos2d graph editor using QT and cocos2d-x
C++
1
star
34

c128-the-race

The Race, a video game for the Commodore 128
Assembly
1
star
35

arduino-misc

quick and dirty projects that shows how to use different shields
C++
1
star
36

cocos2d-console-gui

cocos launcher
C++
1
star
37

c64-lemans

Lemans - Commodore 64 game disassembly. Added gamepad rumble support
Assembly
1
star
38

bluepad32-ble-client

BLE Client for Bluepad32
Dart
1
star