Xbox control by PC


xboxbypcintroductionIntroducing Xbox Control with a pc: An Xbox controller which is hooked up to a pc that is in turn connected to your Xbox 360. This enables you to change the signals before they arrive at the Xbox and therefore enables you to easily map all of you favourite button glitches to the buttons of your Xbox controller. It also enables you to easily find new glitches, and record your actions (which can than of course also be mapped to your buttons or saved and/or altered on your computer). But way more imporant, it allows handicaped people to use different custom input devices to control their xbox 360!

Most people with an xbox 360 know of the modded Xbox controllers, the simplest versions of these mods simply add a rapid fire function to your controller. The more advanced ones even let you program the microcontroller that you add to the controller so that you can use the newest button glitches. But nobody seemed to have made a piece of hardware that makes you control your Xbox with your pc, thereby giving you full control and easy configuration options. The reason for this probably is that Microsoft keeps secret the USB communication it uses in its controllers, but I found a (not that efficient but very well working) way around this problem.

The next part will explain the hardware and software, this might be too technical for some people, so if you just want to see the result scroll down to the last bit of the page and watch the video. But first the video.

The Video

This is just a simple video showing only the most basic things that can be done with this project. It shows how you can record your own actions, alter them and map them to one of the buttons of your controller. It also shows how to create your own recording from scratch by specifying which buttons should be pressed at a specific time.


The Hardware

The nicest option would have been to simulate the data coming from a wired Xbox controller to the Xbox. But I am by no means an expert on the USB protocol, and since Microsoft won’t tell how to do this I abandoned this idea. Instead I just used an old wireless controller (from which the casing was broken, but the electronics where fine). This controller was of the new type (you can tell which type your controller is by looking inside the battery compartment, if you can spot a (-) and a (+) sign you have the new type), which means that all of the buttons have two connections: signal and ground. This means that I only needed to solder one wire to the signal pads, since I could use the common ground for the other pads. I used NPN transistors to simulate the buttons being pressed:

As you can see the Transistors are controlled by a microcontroller, I used a 18F4550 microcontroller since this has USB support built in. I wrote the software in mikroC. The analogue signals (joysticks/thump pads and triggers) are created by the use of PWM. This PWM signal is of course first filtered to create an almost perfect (it still has a bit of ripple, but that’s fine for this use) analogue signal. This is done by the use of a resistor and capacitor:

The only problem is that the 18f4550 only has 2 pwm ports, so I used a couple of 12f683’s that I had lying around to create the other 4 pwm signals. The 12f683 get their pwm values from the 18f4550 through a uart connection (they are all hooked up to the same uart port of the 18f4550, the 18f4550 sends a number (250, 251, 252 of 253) to indicate for which chip the value is meant and than sends the PWM value (duty cycle)).

Circuit diagrams will be posted later on, but I did the design in my head, so I don’t have them made yet.

Update: I have made a protoype pcb, but some problems remain, I also want to reduce the size a lot, but if your interested in this (not completely functioning) circuit you can download it here. A picture of the pcb:

The Software

I created a C# program that communicates with the microcontroller over USB, the program basically reads the controller status of a wired controller (which controls are pressed etc) at a given interval (default 20ms). It than record these values if you’re recording, or modifies them if you want to, before it sends the values to the microcontroller which than sends the appropriate signals to the wireless controller.

You can also use the on screen controller to control the Xbox with just the use of the pc (for testing purposes). The program also has a calibration option, to set the voltages for the analogue signals just right.

Last but certainly not least: the program has a special recording tab. In this tab you can precisely create a recording, that can be mapped later to a button if you want to. In this tab you can set which controls should be simulated every time the controller status is updated. This allows you to create perfect button glitches, and to easily try out new ones.

Some pictures of the software:

I won’t post the software yet, since I want to refine it first. I also don’t know how legal this is, so that might be an issue to.

Options for disabled people

Since my project allows a pc to control your xbox 360, basically any device that can be connected to your computer (like a keyboard, mouse or custom input) can be used to control your xbox. The part of my software that you can use to create glitches by creating a sequence of inputs can also be used by disabled people to ease their gaming. The options really are endless!


Some pictures of the project (click for enlargements)

3 Thoughts on “Xbox control by PC

  1. That’s interesting.
    I was searching for some thing like that, but not exactly.

    I wanted to find something (more like a software) that enable us to use any controller connected to a PC (even Keyboard and Mouse) on a Xbox 360 through USB port.

    But has you said, it’s not that simple cause Microsoft keep the USB protocol for the 360 really secret.

    If we could know those protocol, the process should be to connect the Xbox with a USB cable to a PC and with a software, emulate a 360 controller, so the Xbox think it’s really a 360 controller, but on the PC you can use any kind of control you want.

    Has I see you bypass USB “problem” with a moded hardware and you already make a software who do pretty much what I wanted.
    But not sure I want to destroy the only wired 360 Controller I have to try this.

    And I don’t know if it can help, but I saw something similar who is call CronusMax.
    It pretty do what I need (Xbox One controller to 360), but I don’t have that much money to spend on something like that.

  2. Nathan on August 3, 2016 at 9:06 pm said:

    I doubt you even look at this anymore but if you do I would love some help. I am trying to do the exact same thing with a raspberry pi and an xbox one controller but there are some things confusing me.

    – Should I power the controller from the pi
    – Should the pi ground, controller ground be connected?
    – Will the GPIO signal of 3.3v be too strong and damage the controller?

    If you know or have made a tutorial using a raspberry pi I would love to see it!

    • Sorry for the late response. You don’t need to power the controller from the pi, you do need to share a ground connection between the pi and the controller. As for the 3.3V, I don’t know about the xbox one controller but the xbox 360 controller had buttons that acted as a pull down connection when pressed. So I would first of all test if this isn’t also the case for the xbox one controllers.

      Good luck!

Leave a Reply

Your email address will not be published. Required fields are marked *

Post Navigation