Skip to content

Use any bluetooth gamepad on your Nintendo Switch with a Raspberry Pi Pico W.

License

Notifications You must be signed in to change notification settings

juan518munoz/PicoSwitch-WirelessGamepadAdapter

Repository files navigation

PicoSwitch-WirelessGamepadAdapter

Use any bluetooth gamepad on your Nintendo Switch with a Raspberry Pi Pico W.

List of supported controllers

This project is possible thanks to Bluepad32 and TinyUSB.

demo.mp4

Multiple gamepads support (4 max)

PXL_20231016_011716290.2.mp4

Installing

  1. Download latest .uf2 file from releases.
  2. Plug Pico on PC while holding the bootsel button.
  3. A folder will appear, drag and drop the .uf2 file inside it. image

Building

  1. 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
  2. (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.
  3. Update submodules
    make update
  4. Build
    make build
  5. Flash!
    make flash
    This 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 the build directory to the pico drive.

Other make commands:

  • clean - Clean build directory.
  • flash_nuke - Flash the pico with flash_nuke.uf2 which will erase the flash memory. This is useful when the pico is stuck in a boot loop.
  • all - build and flash.
  • format - Format the code using clang-format. This requires clang-format to be installed.
  • debug - Start minicom to debug the pico. This requires minicom to be installed and uart debugging.

Development roadmap

  • Bluetooth connection.
  • Basic button mapping.
  • Complete button mapping.
  • Support multiple gamepads at once (needs better testing).
  • Update Bluepad32 to latest version.
  • Support other platforms.

Acknowledgements