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!
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.)
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
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.
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.)