Converting A GameCube Controller To USB

The GameCube controller is a favorite among the console enthusiasts new and old, and with Nintendo’s recent release of the Smash Bros. edition of this controller, this is a controller that has been in production for a very, very long time. [Garrett] likes using the GameCube controller on his PC, but this requires either a bulky USB adapter, or an off-brand GameCube ‘style’ controller that leaves something to be desired. Instead of compromising, [Garrett] turned his GameCube controller into a native USB device with a custom PCB and a bit of programming.

First, the hardware. [Garrett] turned to the ATtiny84. This chip is the big brother of the ubiquitous 8-pin ATtiny85. The design of the circuit board is just under a square inch and includes connections for the USB differential pairs, 5V, signal, and ground coming from the controller board.

The software stack includes the micronucleus bootloader for USB firmware updates and V-USB to handle the USB protocol. There are even a few additions inspired by [Garrett]’s earlier shinewave controller mod. This controller mod turns the GameCube controller into a glowing hot mess certain to distract your competitors while playing Super Smash Bros. It’s a great mod, and since [Garrett] kept the board easily solderable, it’s something that can be easily retrofitted into any GameCube controller.

24 thoughts on “Converting A GameCube Controller To USB

  1. Not to take away from the project (which is sweet), but once again, I’m confounded how Atmel parts even exist. Why on earth would you bit-bang USB in software on a $1.70 MCU, when you can buy a USB-equipped MCU like a Silicon Labs EFM8UB1 for literally *half* the price?

    1. Agreed, but in cases like this it’s usually because people want their hack to be as easily reproducible by others as possible in which case Arduino (or rather its simplified tool chain) is the more attractive option. If the project actually needed to do any serious work then he might have been forced to reconsider, but you know…joystick!

    2. I had never heard of the EFM8UB1, so I googled up a datasheet. It looks like quite a nice micro, almost-nonexistent Digikey stock notwithstanding. Internal regulator, direct link to USB, all the IO I could need.

      So I then started to look into how I would integrate this chip into my projects, and then I discovered why Atmel still holds my heart. After 30 minutes of searching, I was able to deduce that its programs appear to be written in C. The only compiler I found was the one built in to the manufacturer’s own IDE. All the documentation for the API appears to be in the IDE as well.

      I never found any code written for the EFM8UB1. There isn’t any community of users. No one is putting libs out on github for this thing. I’d be completely alone.

      Even discounting arduino-related results, if I been trying to learn how to use an AVR, I would have quickly found avrdude, avr-gcc, the AVRFreaks forum, and all sorts of libraries to show me how to talk the language of this thing. That’s why Atmel is still in business, or at least why they’re still in my business.

      1. If you want to take the hobbyist approach to MCU development — using GCC command-line tools, avoiding the manufacturer’s official IDE and app notes, and getting all your code from blog posts, Instructables, and random GitHub repos you stumble upon, then yeah, the EFM8 (or any other non-Atmel MCU) isn’t for you.

        Manufacturer-supplied toolchains and code examples have historically been expensive and kind of buggy, but all that has completely changed in the last five years. Almost all of them are free (or effectively free, given most projects’ code-size constraints), and quite lovely to use. I’d highly recommend hobbyists re-evaluate these toolchains when picking parts.

  2. Would it be possible to do this in reverse?
    I would love to purchase the wiiU “link” controller and use a gc male port to play gc..
    What would happen if you just wired the usb lines and reversed the direction?
    Im pretty viod with wiring but those circuits look a little complex for me to find parts/build.
    Thank you

    1. It’d be possible, but a bit more complex than what you’re probably thinking. You’ll need to build a device that can act as a “host” to the Wii U controller and translate its inputs into the Gamecube’s format. Since you’re heading in the opposite direction, very little of the code I’ve written would be useful.

Leave a Reply

Please be kind and respectful to help make the comments section excellent. (Comment Policy)

This site uses Akismet to reduce spam. Learn how your comment data is processed.