Skip to content

Client Mode Installation Guide (experimental)

James edited this page Jun 20, 2026 · 2 revisions

Client mode is used to connect a PS4 controller to a Dreamcast.

NOTE: This mode is a proof-of-concept, so it should not be considered fully-featured or completely working.

General Disclaimer

Proceed at your own risk! I am not liable for any damage that may occur due to the use of any provided schematics, firmware, or any other recommendations made within this project (see LICENSE.md). There is risk of damage to any attached hardware (ex: USB port, Dreamcast peripheral, or Dreamcast) if circuitry is improperly handled.

Plug Reference

The host mode configuration requires a Dreamcast controller plug. You may harvest this from a Dreamcast controller extension cable or from the plug of a Dreamcast controller.

DC-Plug-small

Simple Configuration

This simple configuration directly ties the GPIO to the connected Dreamcast controller. This makes things more accessible to DIYers, but it has some drawbacks:

  • This is insufficient fault protection for faulty/invalid firmware or faulty Dreamcast
  • The RP2040/RP2350 doesn't have over-voltage tolerant inputs, so accidental shorting to the 5V line will cause damage
  • Hot-swapping should be avoided

DreamPicoPort - Simple Client Mode

Safe Configuration

This option completely isolates the Maple Bus I/O from the RP2040/RP2350 at the expense of being more complex and less accessible to DIYers. I highly recommend this or something like this for any commercial application. The chip number 74LVC2T45DC made by Texas Instruments or Nexperia (found on digikey.com or mouser.com) is a 2-bit bus transceiver which completely isolates I/O.

DreamPicoPort - Safe Client Mode drawio

Selecting the Appropriate Binary

Each release will contain multiple uf2 files as described below. Please note that the LED will not be functional if any of the W variants of the hardware is used.

Binary Hardware Mode Compatibility Notes
client-with-usb-host.uf2* Client pico, pico-w, and RP2040-Zero supporting a single Dualshock4 controller connected to the USB port
pico2_client-with-usb-host.uf2* Client pico2 and pico2-w supporting a single Dualshock4 controller connected to the USB port

*Client mode is no longer deployed in new releases. Last deployed release is Version 1.01.

Loading the UF2 Binary

Hold the BOOTSEL button on the Pico while plugging the USB connection into your PC. A drive with a FAT partition labeled RPI-RP2 should pop up on your system. Open this drive, and then copy the desired uf2 file for either host or client operation here. The Pico should then automatically load the binary into flash and run it. For more information, refer to the official Raspberry Pi Pico documentation.

Clone this wiki locally