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.
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
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.
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.
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
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.
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.