🔧

Build a USB-to-3DO Controller Adapter

Hard90–120 minutes💰 $28–49🧩 6 parts

🛒 Don't want to build? Buy a ready-made adapter and support Joypad.

Build a USB-to-3DO Controller Adapter

What Is This?

USB23DO lets you use any modern USB controller (Xbox, PlayStation, Switch, 8BitDo, etc.) on a real 3DO Interactive Multiplayer console. It supports up to 8 players via USB hub, 3 button mapping profiles, and even extension passthrough so you can daisy-chain native 3DO controllers.

Why would you want this?

  • Use modern controllers on 3DO — the original 3DO controller is... not great
  • Up to 8 players — connect a USB hub with multiple controllers
  • 3 button profiles — Default (SNES-style), Fighting, and Shooter layouts
  • Mouse support — USB mouse → 3DO mouse for Myst, The Horde, etc.
  • Extension passthrough — native 3DO controllers can be daisy-chained after the adapter
  • Profile switching on the fly — Hold Select + D-Pad to cycle

This is the most complex build in the Joypad adapter lineup due to the required level shifters — the 3DO uses 5V logic and the RP2040 is only 3.3V tolerant. Don't skip the level shifter or you'll damage your board.

Parts List

Part Price Where to Buy
Waveshare RP2040-Zero $5.99 Waveshare / AliExpress
4-channel BSS138 level shifter $1–3 AliExpress / Adafruit
USB-A female breakout board $2.50 Adafruit
DB9 female connector $1–3 Electronics suppliers / AliExpress
DB9 male connector (optional) $1–3 For native controller passthrough
22–26 AWG wire $3–5 Any electronics supplier
Soldering iron + solder $15–30 If you don't have one
USB-C data cable ~$5 For flashing firmware

Total: ~$25–40

Or buy pre-built: USB-2-3DO Adapter at controlleradapter.com

Understanding the Level Shifter

⚠️ This is critical. The 3DO controller port uses 5V logic. The RP2040 GPIO is 3.3V only and NOT 5V tolerant. Connecting 3DO signals directly to the RP2040 will damage your board.

A bidirectional level shifter sits between the RP2040 and the 3DO, translating:

  • Low side (LV): 3.3V from RP2040
  • High side (HV): 5V from 3DO

All 4 signal lines (CLK, DATA_OUT, DATA_IN, CS_CTRL) must go through the level shifter.

Step 1: Wire the 3DO Connection (via Level Shifter)

3DO Controller Port Pinout (DB9)

Pin 1: Clock (CLK) — from console
Pin 2: Data Out — to console
Pin 3: Data In — from next controller in daisy chain
Pin 4: Audio Left (unused)
Pin 5: Audio Right (unused)
Pin 6: VCC (5V) — power from console
Pin 7: GND
Pin 8: Control Select
Pin 9: GND

Wiring Diagram

All signal lines go through the bidirectional level shifter:

RP2040-Zero Level Shifter (Low) Level Shifter (High) DB9 Female Signal
3V3 LV 3.3V reference
5V HV 5V reference
GND GND GND Pin 7, Pin 9 Common ground
GPIO 2 L1 H1 → Pin 1 CLK (Clock in)
GPIO 3 L2 H2 → Pin 2 DATA_OUT (to console)
GPIO 4 L3 ← H3 Pin 3 DATA_IN (from next controller)
GPIO 5 L4 H4 → Pin 8 CS_CTRL (Control Select)
Pin 6 (5V) 5V power to level shifter HV

Extension Passthrough (Optional)

To allow native 3DO controllers to be daisy-chained after your adapter, add a DB9 male connector:

DB9 Female Pin DB9 Male Pin Signal
Pin 1 Pin 1 CLK (passed through)
Pin 2 Pin 2 DATA_OUT (passed through)
Pin 3 Pin 3 DATA_IN (from next controller)
Pin 6 (5V) Pin 5 VCC
Pin 7 (GND) Pin 9 GND

Step 2: Wire the USB Host Port

RP2040-Zero → USB-A Host

RP2040-Zero Pin USB-A Pin Signal Wire Color (typical)
GPIO 10 Pin 3 D+ Green
GPIO 11 Pin 2 D- White
5V Pin 1 VBUS (5V) Red
GND Pin 4 Ground Black

Wiring Tips

  • ⚠️ NEVER connect 3DO signals directly to the RP2040 — always go through the level shifter
  • ⚠️ D+ and D- are the most common USB mistake — if controllers aren't detected, these are swapped
  • Keep USB wires under 15cm (6 inches)
  • USB hubs are supported for multi-player — up to 8 controllers via powered hub

Step 3: Flash the Firmware

Download the UF2

Go to github.com/joypad-ai/joypad-os/releases and download:

Board Firmware File
RP2040-Zero joypad_*_usb23do_rp2040zero.uf2

Enter Bootloader Mode

  1. Disconnect the board
  2. Hold BOOT
  3. While holding, plug the USB-C cable into your computer
  4. Release BOOT
  5. RPI-RP2 drive appears

Flash

  1. Drag and drop the .uf2 file onto the RPI-RP2 drive
  2. Drive auto-ejects — firmware is flashed
  3. Done!

Step 4: Test It

On the 3DO

  1. Power off the 3DO
  2. Connect the adapter via the DB9 cable to the controller port
  3. Plug a USB controller into the adapter's USB-A port
  4. Power on the 3DO
  5. Navigate menus and test in a game

LED Status

  • 🔴 Red breathing = no controller connected
  • 🔴 Solid red = Player 1 connected
  • 🔵 Blue = Player 2
  • 🟢 Green = Player 3

Button Mapping Profiles

How to Switch Profiles

  1. Hold Select for 2 seconds
  2. Press D-Pad Up/Down to cycle profiles
  3. LED blinks and controller rumbles to confirm
  4. Profile saves to flash

Default Profile (SNES-Style)

Your Controller 3DO Button
Cross / B B (middle)
Circle / A C (bottom)
Square / X A (top)
Triangle / Y — (disabled)
L1 / LB L
R1 / RB R
L2 / LT L
R2 / RT R
Select / Back X (Stop)
Start P (Play/Pause)
D-pad D-pad
Left Stick D-pad

Fighting Profile

Optimized for Way of the Warrior and other fighting games:

Your Controller 3DO Button
Cross / B B (Light Punch)
Circle / A C (Medium Punch)
Square / X A (Heavy Punch)
Triangle / Y P (Light Kick)
L1 / LB L (Medium Kick)
R1 / RB R (Heavy Kick)
Select X (Stop)
Start P (Pause)

Shooter Profile

Optimized for Doom, PO'ed, and Killing Time:

Your Controller 3DO Button
Cross / B C (Jump)
Circle / A B (Action)
Square / X A (Weapon Switch)
Triangle / Y X (Special)
L1/L2 L (Primary Fire)
R1/R2 R (Secondary Fire)
Start P (Pause)

Mouse Mode

USB mouse maps directly to 3DO mouse protocol:

USB Mouse 3DO Mouse
Left Click Left Button
Right Click Right Button
Middle Click Middle Button
Movement 1:1 Movement

Compatible 3DO Consoles

  • Panasonic FZ-1 / FZ-10
  • Goldstar GDO-101M / GDO-202M
  • Sanyo TRY 3DO
  • Creative Labs 3DO Blaster (PC card)

Troubleshooting

3DO Doesn't Detect the Adapter

  • Check all level shifter connections — every signal line must pass through it
  • Verify 5V power from DB9 Pin 6 to level shifter HV
  • Check 3.3V from RP2040 to level shifter LV
  • Verify GND connections (DB9 Pin 7 and/or Pin 9)

Controller Not Detected (USB Side)

  • D+ and D- swapped — GPIO 10 → D+ (green), GPIO 11 → D- (white)
  • Try a different controller
  • For multi-player, make sure the USB hub is powered

Extension Passthrough Not Working

  • Check DATA_IN (Pin 3) connection through the level shifter
  • Native controller must be at the end of the daisy chain

Board Damaged / Not Responding

  • If you connected 3DO signals without a level shifter, the RP2040 GPIO may be damaged
  • 5V on 3.3V-only GPIO is destructive — you may need a new board

What's Next?


Estimated build time: 90–120 minutes (includes soldering and level shifter wiring). Difficulty: Hard.

More Build Guides

Need help with this build?

Join our community for build support. Get help on Discord →