Use any bluetooth gamepad on your Nintendo Switch with a Raspberry Pi Pico W.
This project is possible thanks to Bluepad32 and TinyUSB.
demo.mp4
Multiple gamepads support (4 max)
PXL_20231016_011716290.2.mp4
- Download latest
.uf2
file from releases. - Plug Pico on PC while holding the bootsel button.
- A folder will appear, drag and drop the
.uf2
file inside it.
- Install Make, CMake (at least version 3.13), and GCC cross compiler
sudo apt-get install make cmake gdb-arm-none-eabi gcc-arm-none-eabi build-essential
- (Optional) Install Pico SDK and set
PICO_SDK_PATH
environment variable to the SDK path. Not using the SDK will download it automatically for each build. - Update submodules
make update
- Build
make build
- Flash!
This
make flash
make
command will only work on OSes where the mounted pico drive is located in/media/${USER}/RPI-RP2
. If this is not the case, you can manually copy the.uf2
file located inside thebuild
directory to the pico drive.
clean
- Clean build directory.flash_nuke
- Flash the pico withflash_nuke.uf2
which will erase the flash memory. This is useful when the pico is stuck in a boot loop.all
-build
andflash
.format
- Format the code usingclang-format
. This requiresclang-format
to be installed.debug
- Start minicom to debug the pico. This requiresminicom
to be installed and uart debugging.
- Bluetooth connection.
- Basic button mapping.
- Complete button mapping.
- Support multiple gamepads at once (needs better testing).
- Update Bluepad32 to latest version.
- Support other platforms.
- ricardoquesada - maker of Bluepad32
- hathach creator of TinyUSB
- splork and retro-pico-switch - for the hid descriptors and TinyUsb usage examples.