What Is This?
BT2USB turns a Raspberry Pi Pico W (or Pico 2 W) into a wireless Bluetooth-to-USB adapter. Pair your PS5, Xbox, Switch Pro, or other Bluetooth controller and it shows up as a standard USB gamepad on your PC, Mac, console, or anything with a USB port.
Why would you want this?
- Use wireless controllers on systems that don't support them — older PCs, retro mini consoles, MiSTer FPGA, arcade cabinets
- Low-latency wired output from wireless controllers — great for competitive play
- Multiple output modes — SInput, XInput, PS3, PS4, Switch, and more
- No drivers needed — just plug in and it works
- Zero soldering, zero wiring — this might be the easiest DIY adapter you'll ever build
Why the Pico W?
The Pico W (and Pico 2 W) have built-in Bluetooth — both Classic BT and BLE — and a native USB port. That means one board handles both the wireless input and the USB output, with nothing to wire up. It can talk to basically every wireless controller out there:
| Controller | Supported |
|---|---|
| DualSense (PS5) | ✅ Rumble |
| DualShock 4 (PS4) | ✅ Rumble + touchpad |
| DualShock 3 (PS3) | ✅ Rumble |
| Switch Pro Controller | ✅ Rumble |
| Switch 2 Pro Controller | ✅ |
| Wii U Pro Controller | ✅ |
| NSO GameCube Controller | ✅ |
| Xbox One / Series (Bluetooth mode) | ✅ |
| Google Stadia | ✅ |
| Generic Bluetooth HID gamepads | ✅ Basic |
Note: ESP32-S3 and nRF52840 boards also run BT2USB, but they only support BLE — meaning no PS3, PS4, PS5, or Switch Pro over Classic BT. Stick with the Pico W for the widest compatibility.
Parts List
This build requires no soldering and no wiring. You only need two things:
| Part | Notes |
|---|---|
| Raspberry Pi Pico W (~$6) | Or a Raspberry Pi Pico 2 W |
| Micro-USB data cable | Must be data-capable, not charge-only |
Both the Pico W and Pico 2 W use a Micro-USB connector. That's it — no breakout boards, no wiring, no soldering.
Flash the Firmware
Step 1: Download the UF2
Go to the JoypadOS releases page and grab the right file for your board:
| Board | Firmware File |
|---|---|
| Pico W | joypad_*_bt2usb_pico_w.uf2 |
| Pico 2 W | joypad_*_bt2usb_pico2_w.uf2 |
Optional — build from source: If you'd rather build it yourself, run
make bt2usb_pico_w(ormake bt2usb_pico2_w) from the JoypadOS repo and flash the resulting.uf2.
Step 2: Enter Bootloader Mode
- Unplug the Pico W from your computer
- Hold the BOOTSEL button (the small white button on the board)
- While holding BOOTSEL, plug the USB cable into your computer
- Release BOOTSEL
- A drive named
RPI-RP2appears on your computer
Verify: On the Pico 2 W the bootloader drive may mount under a different name — flash the
.uf2onto whichever drive appears.
Step 3: Flash
- Drag and drop the
.uf2file onto the drive - The drive auto-ejects when flashing is complete
- The Pico W reboots and is immediately ready to pair
Pairing Your Controller
The adapter automatically enters pairing/scan mode on boot — no button press needed.
- Plug the adapter into your PC, console, or device via USB
- Put your Bluetooth controller into pairing mode:
- PS5 DualSense: Hold Share + PS button until the light bar flashes rapidly
- PS4 DualShock 4: Hold Share + PS button until the light bar flashes
- PS3 DualShock 3: Press the PS button (must be unplugged from USB)
- Xbox (Bluetooth mode): Hold the pair button (small button on top) until the Xbox button flashes
- Switch Pro / Switch 2 Pro: Hold the sync button on top of the controller
- The adapter discovers and pairs the controller automatically
- Once paired, the controller reconnects automatically every time you power it on — the bond is saved to the adapter's flash
Pairing Multiple Controllers
BT2USB supports up to 4 Bluetooth connections across 4 player slots. All inputs are merged into a single USB output — great for co-op games that support it, or for building a copilot/accessibility setup.
Rumble
Rumble is forwarded from the host back to the Bluetooth controller, so force feedback works through the adapter on controllers that support it.
Testing
- Open the Joypad controller tester — it works great in Chrome or any modern browser
- You should see the adapter listed as a connected gamepad
- Press buttons on your Bluetooth controller — they should show up immediately
- Test sticks, triggers, and D-pad
Output Modes
The default USB output mode is PS4. To cycle through the available modes (SInput, XInput, PS3, PS4, Switch, and more), hold SELECT + D-pad Up or Down for about 2 seconds.
Your selected mode saves to flash and persists across power cycles.
Web Configuration
Open config.joypad.ai in Chrome or Edge while the adapter is connected for:
- Output mode switching
- Button remapping
- Real-time input monitoring
- Rumble testing
Troubleshooting
Controller Won't Pair
- Make sure the controller is actually in pairing mode (not just powered on)
- The adapter scans automatically on boot. Try unplugging and replugging the adapter, then put the controller back in pairing mode
- Move the controller closer to the adapter for initial pairing
Controller Pairs but Disconnects
- Charge your controller — low battery causes disconnection
- Keep the controller within normal Bluetooth range of the adapter
- Some controllers (Xbox especially) need to be in the correct Bluetooth mode
No USB Device Detected by Computer
- Make sure you're using a data cable, not a charge-only cable
- Try a different USB port
- Reflash the firmware — the flash may not have completed properly
Buttons Are Mapped Wrong
- You may be in the wrong output mode. Hold SELECT + D-pad Up/Down to cycle to the mode your game expects (many games expect XInput)
- Open config.joypad.ai and check/edit your button mappings
RPI-RP2 Drive Doesn't Appear During Flashing
- Hold BOOTSEL before connecting the cable, not after
- Try a different USB cable (must be data-capable)
- Try a different USB port
- On macOS, check Disk Utility for an unmounted drive
What's Next?
- USB2USB Guide — Build the wired USB version (adds a USB-A host port for wired controllers too)
- BT2N64 Guide — Use Bluetooth controllers on a real N64 console
- Controller Archive — Full list of supported controllers and their BT pairing instructions
- Web Configurator — Customize everything
- Community Discord — Share your build, get help
Estimated build time: 10–15 minutes (just flashing and pairing, zero soldering). Difficulty: Easy.