Use any bluetooth gamepad on your Nintendo Switch or Nintendo Switch 2 with a Raspberry Pi Pico 2 W.
This project is possible thanks to Bluepad32 and TinyUSB. This project is a fork of PicoSwitch-WirelessGamepadAdapter
Multiple gamepads support (4 max)
-
Outputs to Switch as a Pro Controller
- Please note that by connecting your controller this way it will disconnect from the adapter and sync with the Switch natively so the adapter is no longer being used and will automatically pair wirelessly without using the adapter again
- Tested working with Wii U Pro Controller
- PS5 controller does not pair back wirelessly unless you disonnect the adapter after its synced
- Testing more controllers
-
Corrected Wii U triggers so that they register properly
-
Corrected Wii Gamepad L/R and triggers so that they register properly
-
Added buttonn command of pressing +/- or Start/Select equivalents to disconnect the controller from the adapter (doesnt work on Switch because the switch will just switch to its own bluetooth instead of communicating via the adapter)
-
Please note that the adapter currently crashes the Nintendo Switch 2 after enabling the device to output as a Switch Pro Controller!
- Download latest
.uf2file - 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.
- Implement Mode Switching to PS3
- Implement Mode Switching to Wii U
- Implement Mode Switching to Wii
- Implement Gamecube Controller output
- Implement PS2 Controller output
- Implement OG Xbox Controller output
- ricardoquesada - maker of Bluepad32
- hathach creator of TinyUSB
- splork and retro-pico-switch - for the hid descriptors and TinyUsb usage examples.
- juan518munoz for the base of the project adapter