In this tutorial I show you step-by-step how I install a PIC microcontroller inside of an Xbox controller in order to provide custom functions. Now that you have the methods, all you have to do is go write some code and program a chip! Well, I know this is easier said than done, but check out my "5 transistor PIC programmer" if you are ready to go down that road.

Step 1: Tools

a small phillips screwdriver
soldering iron
solder (60/40 or 63/37... not the lead-free silver solder)

flux (this is more or less a must-have to get good connection to pcb traces)

glue gun
30 AWG wrapping wire
wire wrap tool (Optional, but makes things easier)

wire stripper (A razorblade works well on wrapping wire, but check out my instructional on "precision wire stripper" to see the one I use in this tutorial.

A DIP microcontroller
A small tactile switch
why this fucking is a fucking shit ? because I cannot seen the fucking pdfs <br>
this page is a fucking shit
just wondering what features can you add by doing this? auto fire?<br />
Hold a lighter for a few secs under your wire and burn away the Casing It will work but usally nit ery neat
Can you do this with a PlayStation2 Controller?
I really need some help. IF you could PM me with the answer, that would be great. I am going to be programming my own chips (taking the code from an ebay kit) and installing them into/ selling controllers to kids at my school. I don't want to go through the work of making the reader/writer myself, so which programmer would be best for me? I have serial ports on my computer, so that's not an issue. I also need to know which chip to use. The ones in all the kits are 8-pin pic microcontrollers like the one you've used here. If you can help me, that would be great. Thanks for your time, -Nick
a 555 timer is more reliable, and you don't have to program it!
dam thats long
Ah so that's why they hide the screws! The warranty
anyone ??
hey i did all of your steps and followed them to the tee, but i am a little confused on how to communicate to the microcontroller and have it do whatever it is that i want. Is there any advice you can give me? Btw I thought the tutorial was pretty awesome ive never seen clearer instruction and pics. Thanks
If you don't want to make your program open source i guess thats alright, but could you at least tell us the exact timing between buttons in the double shot sequence. That would be a great help. : )
Well, my timings are all in assembly. They don't go by micro or milliseconds, as do the commands in pbasic. They are all decfsz loops, so they don't translate very well.
yea my timings aren't exactly milliseconds either, could I just have the numbers you use just so I know the best ratio. my timings are good, they just could be a little better.
I think the best way to go would be to make a subroutine that do the same thing (e.g., RRX), with registers for the timing delays. Then make a code loop that increments the delays (ie, time pressed, time between presses, etc) every time an input is detected. The input can be a different one than ones for the buttons, one just used for testing and debugging. You could of course do this while the controller is still apart. That way, you would press a button/short teminals/etc to fire the test input, and would keep track of how many times you fired the input so you would know what timing delays would work.
Hah, yes I did that, I stored the time to the eeprom of the 12f683, and then when I got it right, I recover it back with the programmer. It took me a while but it worked, I am not sure if it is perfect, but I think it looks pretty good, you can take a look at: <a rel="nofollow" href="http://r00t-ed.homeip.net/projects/xbox_mod_v2/">http://r00t-ed.homeip.net/projects/xbox_mod_v2/</a><br/>And my code/project files are open source, you are welcome to take a look and modify it if you feel like it. I used mikro C, the free demo is enough for this project. <br/><br/>I am done with the version 3 of the thing, it does BRXX, if extra button is tap, and if it is held down it does just double shot. I may make it public, not sure yet, the thing is that halo 3 is almost out; probably it is just irrelevant at this point. <br/>
yeah that would help
Why dont you guys just practice the double shot and play legit, instead of spending all this time and money on cheating?
Personally, it was more fun for me to hack up a controller than it is to play halo. To each their own. :)
Ok before i buy anthing that i might need to make this how would i make it have two buttons instead of just one?
also can it be a PIC12F629
It can be any microcontroller that runs on 5V and and enough io pins, but you will have to program it first. If you need to ask how to make it use two buttons, then I am guessing you don't have programming experince. A blank microcontroller won't do anything useful. I sell preprogrammed chips for the reg xbox with all the parts for the mod, if you aren't up to coding your own.
How much do you sell all the parts and the programmed chip to mod the controller for?
ok i am having a small placing prob which may not even affect it but here take a look ur 2 r first and compare them to my 4
Your controller is an older and somewhat rare version. Actually, it is better! I have found this type to be more immune to noise, so the little capacitors are probably not necessary. Also, you don't have to scrape and solder to a via. The yellow dot is the Y trace. The blue dot is the X trace. The grey spot is where you can put your chip. Make sure to solder your wires to the X and Y traces before you glue your chip down, else you won't have room. Thanks for posting your pics!
Oh! Right click and save the pic, then open it up to zoom in. I painted some colored spots onto it, but they don't show up well, here.
um i just realized why r my rumble motors different?
Did you buy your controller off ebay from some guy in Hong Kong, by any chance?
er that probably didnt come out right, y r my two rumble motors different than eachother, or is that the same response
thats normal
wheres the a button and no <strong>i dun hav programming experience</strong> and by a second button i meant like do i need another pic microtroller or can i use the same one for the two buttons to do different things?<br/>
You're going to need programming experience because klee27x wont share his code. : (
ok im a fast learner and ok i dun care if he wont share his code besides y do u care
because i wouldn't have had to spend 40 minutes making my own code if he would have kindly supplied the timing to us.
Mind sharing your code, then? I've never programmed a microcontroller before, my programming experience is limited to basic C++ and Java I picked up during high school. If you don't want to share your code, think you could help me out with maybe some pseudocode or the timings you used? I'm still trying to look around the internet for some guides to PIC programming, but I'm not sure exactly what I'm looking for. If anyone has a good site they'd like to recommend, I'd really appreciate it. I'm more than willing to spend an afternoon learning how to do this just for the experience. Thanks.
Yea, no prob<br/>I can't actually help you with the PIC program because I used a Basic Stamp. Here's the program I used in PBASIC.<br/>note: the timing is in ms<br/><br/>' {$STAMP BS2}<br/>' {$PBASIC 2.5}<br/><br/>R PIN 15<br/>X PIN 14<br/>Y PIN 13<br/>G PIN 12<br/><br/>INPUT R<br/>INPUT X<br/>INPUT Y<br/>LOW G<br/><br/>DO<br/><br/>DO<br/>PAUSE 50<br/>LOOP UNTIL IN7=1<br/><br/>'First R<br/>LOW R<br/>PAUSE 136<br/>INPUT R<br/>PAUSE 30<br/><br/>'Second R<br/>LOW R<br/>PAUSE 38<br/>INPUT R<br/><br/>'X<br/>LOW X<br/>PAUSE 50<br/>INPUT X<br/>PAUSE 210<br/><br/>'Double Y<br/>LOW Y<br/>PAUSE 50<br/>INPUT Y<br/>PAUSE 50<br/>LOW Y<br/>PAUSE 50<br/>INPUT Y<br/>PAUSE 200<br/><br/>LOOP<br/><br/>I used Input instead of high because leaving the buttons high would make it unable for you to use the buttons while not doubleshoting. I find this code to work almost everytime with my regular Xbox. If you have any other question's I'll try my best to answer them.<br/>
Wait, aren't Basic stamps like $50 or so? I could've sworn the last time I saw a BS2 the asking price was like $50. I think I'm going to have to buy the 12f683 used in this guide and a programmer, just for cost reasons. But that doesn't mean your code isn't helpful. Although I have 0 experience with Basic, I understand the majority of it and the timings are all there. Thanks man.
Yea, I would have bought a chip from klee27x but he charges 30 bucks for a $2 chip. I just had a BASIC stamp so I just programed that. If you do ever program the PIC would you be nice enough to post your program? Thanks
Yeah, I'm going to put some effort into learning how to work with PIC chips this weekend. I've never worked with them before and it looks like they rely on assembly for the code, so it's going to be a challenge. But if I do figure it out, I'll be willing to share the code and how to program the chip.
You can actually program PICs with PBasic and C, assembly is a pain. MikroBasic for PICs is really simple to use, u can even add assembly code within the PBasic program. Just some thoughts if your learning to program PICs.
wow those r gunna be hard to solder
I think it is a little easier to solder X to the resistor left of where you solder Y. It works just as fine and you don't have to use all that flux.
The resistor to the left of Y is the B trace! At least on this pcb!
Dammit, i meant right, I got mine together and it double shots so i know one of them is x.
ahh kewl. I hope other people are reading this and can figure that part out. I had no idea that the X was accesible there. I guess I missed that one. Thx.
I'm having trouble programming the PIC. I can get the chip to shoot but since the pins are left high, the buttons cannot be pressed manually. Does anyone know how to get around this??
Well, you were on the right track by using input instead of high, but when a pin is input, it can also be held high by an internal pullup resistor. I don't know how you access (or if you can access) the internal pullups on a basic stamp. On a pic, using assembly, you can access this function by manipulating one of the special function registers.
Yea i got it working. I didn't know you had to set RP0 to access TRISIO, but I later figured that out. Thanks, double shotting is great.

About This Instructable


37 favorites


More by klee27x: Stow-Away Whiteboard and Magnetic Tool Holder Soldering to Desoldering Station Hack Minimalist Bench Sander
Add instructable to: