XBOX controller USB protocol

Discussion in 'Xbox (Original console)' started by Piratero, Jul 22, 2012.

  1. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    Hello everyone,

    I just finished hacking up an old NES controller to work on the XBOX using a microcontroller. I've gotten to the point where it is fully recognized as a Microsoft XBOX controller by the XBCD Windows drivers.

    I mapped A to A, B to X, Select to Back, etc.

    But here's the problem: It doesn't work on an XBOX. I'm guessing that vendor-specific data is being sent to authenticate the device.

    Does anyone have ANY information on this? Anyone have the ability to sniff the data coming from the XBOX itself to the controller?


    I could connect an XBOX controller to my PC, but I would assume that it would have to ask for a vendor-specific request first.



    If anyone with a debugging XBOX could somehow output a lot of USB data/information, that would be great!



    Any information would be greatly appreciated!
     
    Last edited: Jul 22, 2012
  2. CodeAsm

    CodeAsm ohci_write: Bad offset 30

    Joined:
    Dec 22, 2010
    Messages:
    1,504
    Likes Received:
    178
    Did you try reading USB info with USB-view? you can get it from FTDI but its original source is M$
    http://www.ftdichip.com/Support/Utilities.htm


    It helped me reading some bug in my Motherboard and fix it. also discovered 2 unpopulated usbports this way (there are quicker or better ways for everything.)
     
  3. blueshogun96

    blueshogun96 Robust Member

    Joined:
    Jul 29, 2010
    Messages:
    296
    Likes Received:
    11
    Unless you write your own software that is capable of recognizing an NES controller, it's not going to work.

    You see, Xbox software libraries before interacting with hardware (like on a PC) will check the device_id and vendor_id of any given device. If it is compatible with Xbox, then the XAPI library will enumerate it and enable it for usage. Microsoft did not intend anyone to use controllers for any other consoles but theirs. Therefore, you can't just plug in any USB compatible device and expect it to work. Xbox1 is very specific about it's hardware.

    In order for this to make more sense, you should read up on how Xbox interacts with game pads on a hardware and software level. This article is a great start: http://www.xbdev.net/non_xdk/gamepad/index.php
     
  4. Piratero

    Piratero Peppy Member

    Joined:
    Feb 28, 2009
    Messages:
    367
    Likes Received:
    8
    Thanks for the link.


    I think you've misread my first post. I stated that I used a microcontroller to decode the NES input. The microcontroller itself acts as a USB device.

    As I said in the OP, the controller is identified by the XBCD just fine meaning that it thinks it's an official XBOX controller. But the problem comes with the actual XBOX detecting it hence my question (update below). The only real difference from XBOX's controller from your regular PC gamepad is the lack of a HID report descriptor. It doesn't ask for one AFAIK.


    But in the past few days, I've realized one thing and that is that an XBOX controller isn't just a controller but a 3-port hub. One of the ports happens to be the controller itself while the other ports are for the memory card slots.


    Thanks again for the link.
     
  5. jairisongs

    jairisongs Member

    Joined:
    Oct 3, 2012
    Messages:
    11
    Likes Received:
    0
    Interesting tópic.
     
  6. CodeAsm

    CodeAsm ohci_write: Bad offset 30

    Joined:
    Dec 22, 2010
    Messages:
    1,504
    Likes Received:
    178
    If your stuck, they made a device for the ps3 to hack it, and a pic18f4550 or something tells the ps3 its a usb hub and some other devices. source is availeble (maybe just the USB hub part aswell.)
     

Share This Page