Mod Xbox 360 Controller Using Arduino (MW3)




About: Second year engineering student studying at the Beautiful Okanagan campus of The University of British Columbia. I like to tinker with electronics and meddeling with 3D printing. I also have a penchant for r...
I didn't want to buy a modded controller chip for two reasons one they only do the one thing and two they become out off date quickly making them useless for new games. So the arduino I just picked up seemed perfect, it's programmable meaning that if there is an update and it stopped working I could just modify the code and it would work again and the arduino is useful in a near infinate amount of projects. Also because I only wanted this mod for splitscreen and private matches absolute perfection wasn't needed. So if you're looking for the best rapid fire out there, go buy a chip. 

But if your not a perfectionist and you want to turn that Dragunov into the AK that it really is or shoot the Barrett like a p90 then this is for you. First off you should know that like all other Xbox controller mods there are some risks. First opening the controller voids the warranty (I void warranties), If you do the soldering wrong you could damage you're controller permanently,  and if you use it on live I think there is a potability you could be banned (I've played a few games on live so it's not instant). I take no responsibility  for the affects of this project. There you go you've been warned.   
Update: Two extra peices are required for better performance, a resistor (Gold,black,red,gold) and a diode (I think any will do).
Attach the diode to the wire from the button that goes to Vin making sure that the black end goes into the Vin pin and the silver(-) end goes on the buttons wire. Attach the resistor onto the other wire from the button that goes into pin 4 (it doesn't matter which way resistors have no polarity). Fell free to experiment with other resistor diode combos, if you have one that works well please leave a comment. 

I've also included a crumby video for your viewing pleasure (or lack thereof) 

Step 1: Materials

 Materials :
1 x arduino 
1 x Xbox 360 controller 
1 x computer (with arduino software installed)
1 x usb to arduino cable
1 x 9v to arduino connector (link to make your own)
1 x 9v battery
1 x special TORKS 8 H screwdriver or use this method (worked for me)
1 x momentary switch (two pins)
50 cm of solid core wire or a few more jumpers
1 x wire strippers 
some jumpers (about 4) 
Hot Glue gun
hot glue gun sticks (only one probably)
Solder (lead free)
soldering iron 
third hand (semi-optional) 
heat shrink tubing (option)
electrical tape (optional)
Small saw (or knife)
allot of patience 

Step 2: Opening the Controller

First this is much easier said than done. There are many methods of doing this the first and most simple is to order a T8H screwdriver, however I didn't. Search the site and you'll find many ways to open an xbox controller. I used this Instructable. Once it's open be careful all the buttons like to fall out. When the controller is   opened up we need to locate the pins that the right trigger is connected to. Flip the PCB around and find the three pins in the middle part of the board (see pictures). 

Step 3: Soldering Wires

the next step is to solder solid core or long jumper wires to two of the pins on the PCB. I think that the two top pins are the correct ones (look at the first pic). In some of the pictures there are three wires soldered that is because in the beginning I didn't know the correct ones. This would be a good time to apply the heatshrink tubing or wrap with electrical tape. Be vary careful while soldering because any stray solder or joined pins may short out and wreck controller. In my case I got a small amount of solder onto the little resistor (or diode) next to the  trigger pins.     

Step 4: A Little Surgery

In order to get the wires to come out of the controller and get everything to fit in again I needed to cut a small groove into the shell of the controller. You should probably find a better place to make the incision as mine was sort of uncomfortable to hold afterwards. I also applied some hot glue to my connections to ensure they didn't break after a little bit of rough handling. Depending on your soldering skills this may not be necessary. 
After the cut is made everything should fit back together with the wires coming out of the controller. Now if you bought the T8H screwdriver you can put all the screws back in place, but if you didn't i recommend putting some more user friendly screws back instead. 
I also recommend trying out the controller here to ensure there are no soldering mistakes and that everything works, otherwise take it apart and double check everything. This is were allot of patience is needed. 

Step 5: The Button

The momentary push button is easy to install. First solder solid core wires or jumpers onto both pins of the button. Next find a comfortable place for the button on the controller.  After hot glue on.  just make sure the button is still pressable after the hot glue is applied. 

Step 6: Wiring

the wiring is also quite simple.
middle wire of trigger to pin 2 on the arduino.
top wire (black) of trigger to gnd on arduino 
one side of button to 3.3v on arduino
one side of button to pin 4 on arduino. 

Step 7: Programming

Now this step was problematic because the Xbox runs allot faster than the Arduino, meaning that I couldn't use a normal debounce for the button. I posted this question and steveastrouk was vary helpful. I have two sketches one that is vary rapid fire but doesn't stop vary well, the other is slightly less rapid but stops quickly after letting go of the button. I'm not sure how well these sketches will work for different games and have tailored them to MW3. Any help is appreciated (please comment it or pm me) as this is an ongoing process. I will update if I make a break through. Thanks for reading, and if you make this please don't use it for All or Nothing as shooting ruins the game mode. 
First sketch rapid but glitchy:
int val = 0; // stores values of the digitalread of the button
int button = 4; // positive leg of buttton connected fromm 3.3v to pin 4
int shoot = 2; // positive wire comming form the trigger/button on xbox controller

void setup() { // setting pinmode and starting serial connection
Serial.begin (9600);
pinMode ( button, INPUT);
pinMode (shoot,OUTPUT);
void loop() {
val = digitalRead (button); // reading button storing value
Serial.println (val); // just checking make sure button works
if (val == HIGH) { // if button is pressed
digitalWrite (shoot,HIGH); // needs to go high then low inorder
digitalWrite (shoot,LOW);// to fool conntroller
val = LOW; // resting val

second sketch is in a file bellow please ignore all the gray stuff. It took allot of work I left it there to show others who want to improve it what didn't work for me. 



    • Colors of the Rainbow Contest

      Colors of the Rainbow Contest
    • Frozen Treats Challenge

      Frozen Treats Challenge
    • Pets Challenge

      Pets Challenge

    20 Discussions


    5 years ago

    What's the point if you have the cheat??? Get a life!!!

    2 replies

    Reply 3 years ago

    stop being a jerk and shut up your whiny I think it is awesome what he made it is cool so suck it

    Zaphod Beetlebrox53TH

    Reply 5 years ago

    The whole point was to see if I could, and try and win a contest. Stop you're complaining. Doesn't work properly anyway. needed help that's why I put it up.

    Can't add a delay. Sorry I can't remember why anymore (I made this a few years ago). But the major issue is that I can't add a delay otherwise a standard denounce program would be able to work. I believe that once there is a delay the controller is unable to sync to the Xbox, because Microsoft can detect that there is another microcontroller because the pins on the remote are not receiving any signal, or something along those lines.


    5 years ago on Introduction

    I'm looking to make some rapid fire mod chips. I have this same Ardunio.
    Can some one tell me where i can get the hex code and maby a instructable
    to watch. If there are any responces to this post please take the time to send me
    a link to your reply in a email as I dont use this fourm much.
    Stephen T

    1 reply

    Nice. Consider replacing your digitwrites with direct pin access commands. See

    It would be cool to wire up the whole board and have the Arduino completely play a game without help. I am thinking something like Minecraft in creative mode where you could script character to build a house or something. :)


    5 years ago

    Then why are u looking at it does that mean ur bad as well, cause u had to be looking for something related to come across this .... N well yea does that mean ur bad at games? Should u stop playing? .... Do u see my point

    1 reply
    ep1c r1ot

    5 years ago

    Hey dude you get in some serious trouble for this you know

    1 reply

    No matter how you look at it it is cheating. I mean why would you need to do this unless you aren't very good at the game, and if that is the case then you shouldn't be playing the game in the first place.

    1 reply

    As I said above please DON'T use it online. Play against your friends or the cpu. Besides if you learned from the experience (as in diy) than you have at least learned something from playing a video game. Rather than mindlessly sitting. Besides when using a semi automatic weapon in the game it matters more about connection speed than trigger finger fire rate. If you don't like it than don't build it.


    6 years ago on Step 4

    i would put a female connector just above the battery that way you could choose weather you want the wire there or not

    1 reply
    Zaphod Beetlebroxalindsey3

    Reply 6 years ago on Step 4

    If I do it again and I can find some female connectors I will defiantly do that, as it is i just wrap the wires behind the controller.


    7 years ago on Introduction

    Excellent idea!
    This might have been better with a Teensy, then you could have included the microcontroller inside the xbox controller's case, and left a micro usb port exposed for re-programming.

    1 reply

    Yeah probably could have done better but I don't have a teeny. If I win the contest I will :) Also there is not allot of room inside the controller I guess it depends on how teeny the teeny is.