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
.uf2file from releases. - Plug Pico on PC while holding the bootsel button.
- A folder will appear, drag and drop the
.uf2file 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_PATHenvironment 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
makecommand 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.uf2file located inside thebuilddirectory to the pico drive.
clean- Clean build directory.flash_nuke- Flash the pico withflash_nuke.uf2which will erase the flash memory. This is useful when the pico is stuck in a boot loop.all-buildandflash.format- Format the code usingclang-format. This requiresclang-formatto be installed.debug- Start minicom to debug the pico. This requiresminicomto 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.