Installation Guide - OrangeFox86/DreamPicoPort GitHub Wiki

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.

For Host Mode

Host mode is used to connect Dreamcast controllers and other peripherals to a PC over USB. This is the setup to use for integration with flycast. See this wiki article for help on how to setup flycast for use with this project.

Socket Reference

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

DC-Socket-pic-sm

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 controllers
  • 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 - Host Mode drawio

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.

Why is this important for a commercial application? Because I believe in robust designs that can withstand most common fault modes. Imagine your cat/dog/etc chewing on your Dreamcast controller cable, shorting the +5V wire to SDCK-A or SDCK-B. If the simple configuration was used, those I/O on your RP2040/RP2350 are now fried. However, the 74LVCT45DC is 5V-tolerant, so the circuit will continue functioning properly after the controller cable is repaired. This configuration can also withstand most abuse due to incorrect or malfunctioning firmware.

DreamPicoPort - Safe Host Mode drawio

Host Mode Tips

  • The LED on the W variants of the Pico board will not work with this project. On the standard Pico and Pico2 boards, the LED may be used for quick status - when connected to USB, it should remain on when no button is pressed on any controller and turn off once a button is pressed.
  • The included file formatted_storage.bin may be used to delete and format a VMU attached to a controller when this project is used in host mode. For example, rename this file vmu0.bin and copy to DC-Memory drive when a VMU is inserted into the upper slot of Player 1's controller.
  • A serial device shows up on the PC once attached - open serial terminal (BAUD and other settings don't matter), type h, and then press enter to see available instructions.
  • Using a powered USB hub may be helpful if the attached controllers are drawing too much power for your PC to handle

For Client Mode

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.

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
host-1p.uf2 Host pico, pico-w, and RP2040-Zero only A active
host-2p.uf2 Host pico, pico-w, and RP2040-Zero A and B active
host-4p.uf2 Host pico and pico-w A, B, C, and D active
zero_host-4p.uf2 Host RP2040-Zero Host mode configuration similar to the above, but C outputs are moved to gpio 2 & 3, and D outputs are moved to gpio 4 & 5
pico2_host-1p.uf2 Host pico2 and pico2-w only A active
pico2_host-2p.uf2 Host pico2 and pico2-w A and B active
pico2_host-4p.uf2 Host pico2 and pico2-w A, B, C, and D active
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

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.