Introduction: How to Piggyback an Xbox360 Controller on a Universal PCB

The Universal PCB (UPCB for short) project was started to allow a single game controller, especially fighting sticks, on as many different consoles as possible. Information about the project can be found on the following thread in the Shoryuken.com forums: Shoryuken.com

Due to the security measures Microsoft has put in place on all Xbox360 controllers, it is not currently possible to have the UPCB natively speak with the Xbox360. So, in order to play your stick on an Xbxo360, we need to connect the Xbox360 controller to our controller.

This Instructable will guide you through the process of preparing a common ground Xbox360 controller to be piggybacked on a UPCB.

Before beginning on this path, please take some time to verify the controller works on your computer! Nothing is more heartbreaking than finding out the controller is dead AFTER you've put all of this work into it. Once you've tested everything and seen the buttons work on your computer, then can you safely get started.

Step 1: Understand How the Controllers Work

Before we get into the actual instructions, I want to take a moment to explain a bit of theory. I feel its best that if you understand how things work, you'll be better suited for building and troubleshooting those things. So before we get into how to make a piggyback PCB, I want to take a moment to explain how and why it works; we're gonna get a little electrical. Those of you who already have a decent understanding may want to correct some points like about electron holes; there is no need. The explanations given here are meant to be simple, and meant to apply to single power supply digital electronics, like video game console controller.

Other great guides to help you understand this stuff:
http://www.gamesx.com/misctech/controltech.htm
http://www.gamesx.com/controldata/controlprimer2.htm

Don't get scared, but we need to cover something quick before we just into how this all affects you: 'voltage'. You've heard it, and may not be sure what it means. That's fine. It's just a build up of electricity, a bunch of electrons under pressure, ready to shoot out if it just had someplace to go. Someplace less crowded with electrons. High voltage: lots of electrons under lots of pressure. Low voltage, not so much. If you put the two together, those electrons from the High voltage will shoot out and intermingle with the Low voltage point, until they are all at the same pressure on both sides. Once they've evened out the pressure, there's nowhere else to go. Since they are at the same pressure, they are at the same voltage.

By itself, you can't tell how much pressure a spot it under; you have to have another spot to compare it to. That's why a voltmeter has two probes on it; one to test a point, and the other to say 'compare it to this spot'.

You've probably heard the term 'ground' before in dealing with sticks, but you may not understand what it really means. Ground is just an easy way of saying 'low voltage' or '0 volt reference point'. We're all familiar with 9 volt batteries, and how one end has the plus sign, and the other has a minus sign. If the positive side has 9 volts, what's it comparing it to? The minus side, a.k.a. Ground.

If you've looked up the pinouts of your favorite console controller online, you've probably seen one line with a certain voltage on it (+3.4 volts on Sony controllers, +5 volts on just about everything else. ) and another line marked Ground. So plugging in a controller to your console is just like plugging in a 5 volt battery to your controller, with Ground going to the minus side of the battery.

In everything we're going to do in this Instructable, when we talk about voltage, we are going to compare it to Ground. A low voltage is one really close to ground. A high voltage is one higher than ground.

We've all heard about how digital stuff is all 1's or 0's, even if we didn't really understand it. The idea is, when we check something, we're checking its voltage. It's either going to under a whole lot of pressure, or under almost no pressure. That's it. That's all we care about. We check that voltage, and we get our answer. High, or low.

The chips on your controller PCB, including the Universal PCB, have one wire for each switch in your controller: up, down, start, and every other direction and button you have. If it sees that line has High pressure, it knows that button has not been pressed. If it sees that line has low pressure, it know the button has been pressed.

But how does each line get high or low? We know that there is high pressure at the plus side of our battery. We know there is low pressure at the minus side, or ground, of our battery. So all we have to do is have the line connected to high when the button is not pressed, and have it connected to ground when the button is pressed. The line to the PCB is made high because its connected to the plus side of the battery with the resistor. When the button is pressed (closed), all of those high pressure electrons see a place to go, and shoot out to the ground connection. Because all of the pressure on the line is no longer there, the chip sees a low pressure and knows you pressed the button. Because we can connect that same ground to all of the switches, this setup is referred to as a 'common ground', because all switches has one line in common: ground.

This is how most controller PCB's work to see what you've pressed. The nice thing is we can check a line in multiple places. Checking the pressure on the line doesn't change the pressure on the line, so we can have different chips checking them all at once. As long as the PCB's all use a common ground (so it knows that high means not pressed, and low means pressed), we can have bunches and bunches of them all checking the line at the same time and working just fine.

Most chips will act funny if they aren't powered. They'll actually try and take power from any pins that have a high pressure on them. Since they're taking the power, the pressure on that line drops, and the other PCB will think you've pressed the button, even though you haven't. This is why making sure all of your PCB's are powered is important.

So, a quick recap:
1. Both PCB's must to powered, otherwise neither will operate.
2. Both the UPCB and the Piggybacked controller can check the pressure on a line at the same time with no problems.

So, all we gonna do is connect up the lines for the power, and the lines for each of the switches, and we're done. In the next step, we'll go over exactly where those lines are.

Step 2: Understand the PIggyback Connector Pinout

The piggyback connector on the UPCB has 20 pins. Most of them are easy to understand, like the directions and the regular buttons like Jab, Strong, etc. This step focuses on explaining the purpose of each pin and how to identify which wire in the ribbon cable is responsible for each pin. When it comes time to solder the ribbon cable to the board, you'll want to confidently know which wire goes where.

The first image is the diagram of the piggyback connector straight from the UPCB schematic. If you're looking at the UPCB with the piggyback connectors in the lower left corner, then the pins will match the diagram perfectly. The key notch in the physical connector will be on the left, around where pings 7, 9, and 11 are on the diagram.

The second picture shows what the female IDC connector looks like before the ribbon cable is inserted. You can see the metal teeth that pierce the ribbon insulation and make contact with the ribbon cable. This is very important to understand! If the ribbon is inserted just like shown in the picture, then the very top most black wire will be connected to pin 19, the one labelled RB4: NOT pin 20. Pin 20 will be connected to the white wire underneath. The next grey wire will go to pin 17, the purple to pin 18, and so down the line. The last connection will be the brown wire at pin 2. By understanding how those teeth are laid out, you can confidently know which wire goes to what pin on the piggyback connector.

The Up, down, left, right, Jab, Strong, etc. are all pretty easy to understand; they are the one signal for that direction or button. Here's an explanation of the other lines.

XBOX_PB_SELECT: This line will be high if and only if the UPCB is using this piggybacked controller. If you're using your stick on other systems, like a Playstation, this line will be low. This line will NOT be used at all in this Instructable. You can freely trim it out of the way. If you're knowledgable at electronics, this can be used with a transistor to cut off all power to the pad when not in use.

RB4: 'Guide'. This line isn't controlled by any of the buttons on your stick, but is instead controller by the UPCB directly. If the UPCB is currently using this piggybacked controller, it will watch the Start and Select buttons, and automatically lower this line if they are both pressed.

RA0: The optional fourth punch button for those who like having eight play buttons.
RA1: The optional fourth kick button for those who like having eight play buttons.
RB0: The 'Start' button. (Not actually the start button. The UPCB has a tournament mode to prevent accidental pausing of the controller during tournament play. This line will activate start if you press the Start button, and tournament mode is not on.)

X360_2: The 'D+' communication line on the controller's USB connector. Almost always the green wire from the USB cable.
X360_1: The 'D-' communication line on the controller's USB connector. Almost always the white wire from the USB cable.
GND: Ground. We'll connect this to the black wire from the controller's USB cable.
VCC: Power. We'll connect this to the red wire from the controller's USB cable.

Step 3: Preparing the Controller

The controller to hack here MUST use a common ground setup! This cannot be stressed enough. In order for this setup to work, the signal lines on the controller must be high when not pressed, and low when pressed. As of yet, there are no official Microsoft manufactured wired controllers that use a common ground setup, however there are a number of controllers, especially MadCatz brand, that do.

Now we're going to take some time to examine the controller and plan out how we want to proceed. We've identified all of the wires in the piggyback connector, now we just gotta figure out where to connect them to the controller.

Disassemble your controller to remove all of the plastic around so we can get to the bare board. Any rumble motors should be removed and the red and black wires going to them trimmed close to the board. The trigger mechanisms can be removed, leaving just the small potentiometer attached to the back.

On our MadCatz board, this brings the controller down to a much more manageable size, but there is more we can do to make it smaller.

The DPad is a raised plus-sign shaped board. Two screws in the front and two screws in the back can be removed to separate it from the board, leaving only a small five pin ribbon cable connecting it. Take a peek at both sides of the plus-sign shaped board to identify which of the five wires are for the four directions we need. Write this down. Heat up your soldering iron, and remove the ribbon cable from the board by melting the solder and gently lifting up each wire. We'll be soldering our direction wires to those points on the board, so leave them clean with no solder bridging any points.

The 'bumper' microswitches on the top of the board can be removed the same way. Melt the solder from underneath, pull one leg up, and repeat for the other leg.

The USB cable has 5 wires soldered into the board. Identify each one of the wires and the hole it goes into, and write that down. Since the USB standard says what each color of wire should be, writing down the colors with suffice. The extra wire is the shielding from the cable, and is connected to ground. There is hot glue around those points on the board where the wires are soldered. Use pair of pliers or Xacto knife to lift up the hot glue from the board, taking care not to damage the board any. Once the glue is out of the way, use your soldering iron to melt the solder and pull each wire up individually. After the USB cable has been fully removed, use either copper braid or a desoldering pump to remove the solder from those through holes. We'll be putting wire of our own to those points from the ribbon cable, and it'll be much nicer to actually run the wire through the hole properly.

The trigger potentiometers on the back can be removed. The good news is that we don't have to worry about being too careful removing them; there is only one point per trigger we actually care about, and there is a test point on the front of the board for each one we'll actually be using. So remove the potentiometers, and don't sweat it if a pad comes off. Just make sure no point touches any of the other two.

The two analog sticks are a bit of a pain. The metal shaft can be cut down with a Dremel cutting wheel. If you're hard core, they can be removed, but its difficult.

Step 4: Optional: Removing the Analog Sticks.

The analog sticks are large, clunky, and difficult to remove. But, it can be done with a lot of time and care.

Using a lot of flux, desolder braid, and time, the majority of the solder holding the analog housing on can be removed. There isn't much that can be said for this step accept to take your time and work it out slowly. The tactile microswitch on the side registers the click when the thumbstick is pressed down. This can be removed as well.

Once the housing is removed, we MUST tie down the two directions with resistors. If we don't, the analog stick will register as either jammed into a far corner, or wobbling all over the place. By tying it down with resistors, we can for it to register and never moving from the center.

You'll see the two spots the two potentiometers were at; the three holes in a row on the bottom and the right. The middle spot of both of those is the important one. You need to take two resistors of about 5k-ish ohms resistance (I used 4.7k ohm here), and solder them in so the the middle pad is connected to BOTH of the two outside pads through one resistor. I was unable to fit two resistor leads through the center holes, so I soldered one resistor leg to the other resistor. Not my cleanest work, but it got the job done.



Step 5: Secure Ribbon. Plan Out Soldering Steps.

In case of any accidental tugs or falls, we want to connect the ribbon cable in a way that will prevent any strain on the ribbon from transferring to the wires and trying to pull the traces off of the board. There are some rather appetizing holes on the left and right sides where the triggers were that would be perfect for this job.

Split the ribbon cable into four strips of 5 wires each. Stack the four ribbons on top of each other, and secure tightly with zip ties. Done properly, those ribbon cables will not budge.

When doing all of this soldering, we don't want to have to fight with the work we've already done. So, we'll start at the left near the ribbon cable attachment, and work out way right, soldering each wire to its matching spot, starting with the Dpad.

Step 6: Soldering Leftmost Points

Because I'm left handed, it was easiest for me to start with the lowest of the points to solder and work my way up. Locate the wire for the Right direction, separate it from the other wires in the batch, and cut it so it is just long enough to go past the point it will be soldered to.

Preparing the wire:
Use an Xacto knife to trim about 1-2mm of insulation off of the end. Twist the exposed wires and add a very small dab of flux. Melt a very small amount of solder on the end of your iron, and touch to the wires. The solder will get sucked up into the wires, tinning it. You'll be doing this step for every wire, so get the hang of it. From here out, I'll just call this tinning the wire.

The spot the wire will go here on the Dpad already has a little solder on the pad, so soldering the wire is simply a matter of resting the tinned wire on the pad, and touching it with the iron. Make sure none of the wire is outside of the pad, and that no solder is outside of the pad. Repeat on up for the Left, Down, and Up directions.

After the Dpad, the leftmost spot is the left bumper, LB. We'll be connecting this to the Fierce button, so locate the wire for Fierce, separate it from the batch, and cut it to length. Tin the wire, put it through the hole the LB switch was in, and solder from the back side.

Next is the spot for the left trigger. Rather than trying to use the copper pads the now-removed potentiometer used, we'll be using a test point on the front that is connected to it. You'll find this point under where the plus-shaped Dpad board was. Find the wire for RA0/Extra0, our 'fourth punch' wire, trim it to length, and tin it. This is the first pad we've soldered to that didn't already have solder and isn't a through-hole, so we should prepare the pad by tinning it too.

Tinning copper pads:
Use your iron again the pad to heat it up good; the hotter the pad, the better the connection. After a couple of seconds of heating, add a little solder, and remove the iron. Now you have solder on the pad and on the wire, so you're ready to go.

Place the tinned wire on the tinned pad, and touch the iron.

Step 7: Soldering Middle Points

Moving from left to right, next up is the Back button. Find the wire for 'Select', trim to size, tin both pad and wire, and solder. Repeat for the Guide button using the RB4 wire, and the Start button using the RB0 wire.

Next is the holes the USB cable originally occupied. Remember that the bottom two holes are both ground, but just to be safe we should use the second one; the first was the shielding ground, and may not directly connect to true ground on our board. Start by locating the ground 'GND' wire, cut to length and tin the wire. Feed the wire through the second hole from the bottom, and apply solder from the bottom.

The next spot up was the white from the USB cable, called D-. For us, we need the X360_1 wire. Cut to length, tin, and solder in the through hole pad.

Next spot up was the green wire from the USB cable, called D+. For us , we need the X360_2 wire. Cut to length, tin, and solder in the through hole pad.

Last is the red wire from the USB cable, the power VCC line. Locate the VCC wire, and repeat and as above.

Only six wires to go.

Step 8: Soldering Rightmost Points

Go ahead and tin the next five points on the board for the four face buttons and the test point just to the lower right of the bottommost face button; this is the point we'll be using for the right trigger.

Locate the Jab wire, cut and tin, and solder to the leftmost button. Do the same for the Strong button to the top face button, Short to the bottom face button, and Forward to the rightmost face button.

Locate the Roundhouse wire. Tin the end, feed through the hole for the Right Bumper RB, and solder from the other side.

Locate the Extra1/RA1 wire, our 'fourth kick' wire. Cut and tin, and solder to the test point.

If you haven't already done so, the last wire, called the 'XBOX_PB_SELECT' wire, can be trimmer short; we won't be using it here.

Step 9: TEST FOR SHORT CIRCUITS!

This step will save your tail. Failure to do this can cause you to fry your Xbox360 board, the UPCB, the console or computer its connected to, catch fire, crap squirrels, and steal lunch money. Do it.

The #1 thing we need to pay attention to is short circuits; a direct connection between power, and ground. Grab you're multimeter, set it to check for resistance (ohms). Turn the board upside down, so you're facing the back, and fine the four spots you soldered to that the USB cable originally was. Place on probe on the topmost point, and the other probe on the bottommost pad, and check the multimeter.

IF THERE IS A VALUE THERE, ESPECIALLY ONE CLOSE TO ZERO, YOU HAVE A SHORT. You MUST find and fix this short before even thinking of plugged it into anything. The point of this work is to let you play on Xbox360s, not to destroy Xbox360s.

There may short some resistance, that quickly increases until it is infinite resistance. This is perfectly normal, and is caused by the capacitors on the board. The only time you should worry is if there is a constant value, especially zero.

DO NOT CONTINUE UNTIL YOUR SHORT HAS BEEN FIXED.

Step 10: Testing and Troubleshooting

IF YOU HAVE NOT TESTED FOR A SHORT, GO BACK A STEP!

I am assuming that you have an assembled and tested UPCB and button select USB cable for it. This also assumes that you've connected the Xbox360 controller to your computer and gotten it working, either with Microsoft drivers, or the XBCD drivers.

Connect the IDC ribbon cable connector the the Xbox piggyback connector, connect your USB cable to your stick, hold down Fierce and Roundhouse, and plug it into your computer. If all is good, it will show up as an Xbox360 controller, and everything will work right.

This is rare.

Accidents happen. So here is a list of symptoms and the recommended steps to resolve them.
1. Controller shows up, but a button or direction is showing as always pressed: Unplug, replug without holding down the buttons, and see if you see the same behavior from the normal USB operation of the UPCB. If you do, you made a mistake soldering that button/direction and soldered it to ground instead of the right signal wire.
2. Unknown or bad device: If your computer says something is plugged in, but it isn't working, there is probably a short or otherwise bad solder point with one of the four wires soldered where the original USB cable was. Triple check those, and fix any problems.
3. Incorrect buttons: If pressing down throws a punch while hitting Strong makes you duck, you got your wires swapped. Unsolder, swap, and resolder.

Step 11: Finishing Touches

You still have the USB cable from the controller. These make great USB button select cables for the UPCB, or you can make a dedicated USB cable just for the Xbox360.

For those that are truly into modding, the LEDs around the guide button can be desoldered, and replaced with wire running to your own custom LEDs.

The headset jack can easily be extended with a little wire. Radio Shack carries headset jacks that can be mounted on most stick cases, so it is not difficult to run wire from the headset jack on the controller board to a custom headset jack on the case.

You should take a little time to secure down wires as much as possible, to keep any of them from snagging. Another set of zipties were used in this picture to keep the wires as flat against the board as possible.

Good luck, and happy gaming.