Backwards Arduino to Gamecube controller input


I'm currently working on a nintendo controller mod, where I can control a controller via my computer, using an arduino as the PC to controller interface. My current method is using a Wiimote and soldering leads to the button contacts, then using reed relays to short the button. I then have a C# program running on my computer where the arduino and program communicate via serial. This works fine and dandy, however when I want to get into more complex inputs, like using an analog stick for example, it proves much more difficult, as well as the controllers that have analog sticks do not have a good way to solder onto.

This leads me to the arduino forum. I'm looking to replace the controller entirely, and simulate the button-presses directly from the arduino. The way a gamecube/classic controller works is it has 5 lines, 5v, gnd, data, gnd, 3.43v. (there's actually 6, but the fourth one is never used.) A user by the name of Dekunukem has created a program for gamecube to arduino to 3ds, meaning there is a library on how the gamecube sends data. I just need your help on figuring out how to go about replicating this complex signal. Any help is appreciated, thanks!

Dekunukem's project page/instructional: (


There seems to be no shortage of projects where the Arduino reads the gamecube controller but in the past few minutes of searching I couldn't find one doing it in the direction you're planning. That's not a bad thing, it just means whatever you base your project on you're going to have to adapt to write rather than read.

The protocol is serial, and well documented and granted the Arduino can listen successfully, it can talk too. The data line is 3.43V which isn't a native voltage for the Arduino, however if that's held high the Arduino can certainly control it by pulling it low as required to create the transmissions. That should mean you can do this by only connecting the data line and GND.

Cheers! Geoff

Thanks so much! What hardware would allow me to pull the data line low? and how would I test for native high or low?

I believe strykeroz was suggesting an I2C type wiring where the line is held high with a pull-up resistor (often 10k). The Arduino would never set the pin high. It would only pull the line low by setting an I/O pin to an output mode. Setting the I/O pin back to an input would allow the external pull-up to pull the line high.

This sort of setup would keep the GameCube controller safe from the Arduino's 5V logic.

I'm not sure if this particularly matters for your project. If I understand your plans correctly, you don't intend to use a GameCube controller. Do you?

I don't understand what you're trying to do? Do you want to build your own game controller to use with a PC? Or do you want to use a custom controller with a 3DS game system?

From what I'm understanding, it seems like you're introducing unnecessary complications by trying to use the GameCube protocol since I don't think you're trying to interface with a GameCube. Are you?

I am attempting to replicate a gamecube controller's signal and use that as an input on a gamecube. My current setup uses a wiimote where the button terminals are wired to reed relays which are controller by the arduino. I want to use a gamecube because there are inputs that just cannot be done in a short amount of frames on the wiimote. Tl;dr I need to replicate a gamecube controller's signal as an input for a console OR A way to replicate the analog sticks (relays short buttons but what allows me to control the analog sticks?) This post wasn't worded the best, but I think I got the concept across.

I am also interested to know the best way to do this, i'll try tinkering writing via serial. Got my wii stuck at priiloader menu with no wiimote sync, no gamecube controller around in my country.