Adding GameCube controller ports to my PC case (part 1)

Updated

gc-ports-on-pc-case.jpg

Goal: Add functional Gamecube controller ports to the front panel of a PC.

Parts list:

This insert that converts a 5.25" rack slot into a drawer

This piece is the entire project - I found this exact drawer dropshipped under a bunch of names and found zero competitors otherwise. Most resellers add their own ugly branding to the front, except HORNO, so I bought HORNO. horno.png

The exterior frame is metal and fit well in my PC case; the drawer insert is plastic, relatively sturdy but amenable to low-effort mutation with scissors or drill. It has a spring mechanism that locks/unlocks the drawer when pushed - this would actually be a very bad property for a device panel intended to stay in place when pushed and pulled, but

  1. it's very easily disabled with a wide rubber band around the drawer to keep it from pushing in far enough to unlock the mechanism, and
  2. it means that the drawer front panel is already reinforced on the inside against flexing when pushed on, which is great for this use.

mayflash-gc-adapter-product-image.png

MAYFLASH 4-Port GameCube controller adapter

Supports 4 controllers and gets pretty good reviews across the board, although full behavior with rumble requires a driver. There are also the Raphnet adapters that seem well loved and don't require a driver (and may be lower latency?), but I'm not too worried since they seem at parity otherwise and I'm not planning to use this competitively.

usb-header-splitter.png

USB Header to Internal USB Port Adapter

To completely encapsulate the mod, I don't want any cables routing outside the case to reach USB ports on the rear of the case. This adapter splits my spare USB header into four, and I've occupied two of those to add 4 new ports for now that are internal to the case. There is probably a cleaner way to do this - I found out after ordering these that there are PCI expansion cards that add USB ports as well; I'm not sure how these compare.

3/4" rubber grommets Used to secure ports into the holes drilled in the case drawer, and as clean covers to the rough edges around the holes.

Superglue Used for mounting ports to the case, attaching the grommets, and affixing the polymer clay scaffolding to the case. For a future iteration I might keep it more flexible with screws or clips, but for V1 I didn't bother.

Polymer clay (Sculpey) Used for structure and additional stability behind the port PCB.

Metallic logo sticker To distinguish it from all the other ports I'm going to add to the front panel later.

Tools:

  • Hole saw bits + drill for making holes in the drawer
  • Soldering iron for fixing it when I broke it

Process:

  1. Scan drawer panel and adapter face, arrange in Photoshop.
  2. Create drilling template and print
  3. Attach printed template and drill front panel holes
  4. Disassemble adapter to steal guts, set switch to PC mode
  5. Test fit ports through the new holes and through the rubber grommets
  6. Cut one side off the grommet to better fit the holes and ports
  7. Accidentally break ribbons connecting PCB to ports, both of them. It didn't take much, but then I wasnt supposed to open this anyway.
  8. Fix broken connections by replacing with completely new wires. Not sure all of these traces are used, but replace them all anyway.
  9. Discover gap between P2 and P3 ports is too small, but still centered.
  10. There are no PCB traces between these ports on the board, so I cut between them to make room. Used scissors and wore a mask.
  11. Ports and grommets squeezed together through the front panel holes and glued into place.
  12. Polymer clay shaped into sized cubes to reduce strain when plugging / unplugging controllers. Baked hard and superglued in place in the drawer.
  13. Cut a gap in the back of the drawer slide to accommodate USB cabling.
  14. Re-assembled the drawer slide and mounted in the case. USB routed out the back of the case to external USB for testing.
  15. All ports are recognized, rumble working for all. Configured and tested and working in Dolphin.
  16. Attached metallic label to the front center.
  17. Discovered later that Mayflash adapter boots in "POKKEN" mode from cold boot and there is no way to configure this behavior. Unplugging and replugging the device after boot causes adapter to be recognized correctly. Options: Downgrade Mayflash adapter to Firmware 0x04 (not supported / possible with provided firmware updater) or simulate physical unplug/replug on boot/login.
  18. USB per-port power control is inconsistently supported on consumer mobos in general, has limited support among some USB hubs, and is literally not enabled on Windows at all by design.
  19. Found a hub with great reviews around ease of use and reliability that offers several ports with power control from software (and Windows support); ordered but not yet arrived.
  20. Read online that some of Mayflash' other adapters can be force-downgraded with a key combination during the update process. Can't get it to work for GC adapter, but flipping through the string tables in the exe for the GC firmware updater revealed that there is a downgrade dialog. I'm not smart enough to investigate further but it wouldn't surprise me if this is common code for all their updater tools and simply not enabled for this device family. It might be trivial to modify the updater to skip this check but I haven't dug further; in any case they may have disabled downgrades for good reason and this could be a lot of effort to go through to brick an adapter.

Adding GameCube controller ports to my PC case (part 2)