<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://xboxdevwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DiscoStarslayer</id>
		<title>xboxdevwiki - User contributions [en]</title>
		<link rel="self" type="application/atom+xml" href="https://xboxdevwiki.net/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=DiscoStarslayer"/>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/Special:Contributions/DiscoStarslayer"/>
		<updated>2026-05-23T22:46:18Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6909</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6909"/>
				<updated>2021-03-15T21:35:44Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Add microphone descriptors&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox's Input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter; decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon] [https://www.aliexpress.com/item/32948906701.html Aliexpress]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon] [https://www.aliexpress.com/item/4000452932782.html Aliexpress]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
** 0x20 = Arcade Stick&lt;br /&gt;
&lt;br /&gt;
====== bType = 3: Xbox DVD Movie Playback IR Dongle======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x00&lt;br /&gt;
&lt;br /&gt;
====== bType = 128: Steel Battalion ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01&lt;br /&gt;
&lt;br /&gt;
====== Example XID reports ======&lt;br /&gt;
&lt;br /&gt;
This is an example XID descriptor taken from a Controller-S (VID 0x045E / PID 0x0289).&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bLength              0x10 (16 bytes)&lt;br /&gt;
bDescriptorType      0x42&lt;br /&gt;
bcdXid               0x0100 (USB 1.0)&lt;br /&gt;
bType                0x01&lt;br /&gt;
bSubType             0x02&lt;br /&gt;
bMaxInputReportSize  0x14 (20 bytes)&lt;br /&gt;
bMaxOutputReportSize 0x06 (6 bytes)&lt;br /&gt;
wAlternateProductIds 4 x 0xFFFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example XID descriptor taken from a Steel Battalion controller.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bLength              0x10 (16 bytes)&lt;br /&gt;
bDescriptorType      0x42&lt;br /&gt;
bcdXid               0x0100 (USB 1.0)&lt;br /&gt;
bType                0x80&lt;br /&gt;
bSubType             0x01&lt;br /&gt;
bMaxInputReportSize  0x1A (26 bytes)&lt;br /&gt;
bMaxOutputReportSize 0x16 (22 bytes)&lt;br /&gt;
wAlternateProductIds 4 x 0xFFFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This is an example XID descriptor taken from an official Microsoft DVD Movie Playback IR dongle.&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
bLength              0x08 (8 bytes)&lt;br /&gt;
bDescriptorType      0x42&lt;br /&gt;
bcdXid               0x0100 (USB 1.0)&lt;br /&gt;
bType                0x03&lt;br /&gt;
bSubType             0x00&lt;br /&gt;
bMaxInputReportSize  0x06 (6 bytes)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X09-64240-01&lt;br /&gt;
|Transparent Green Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Arcade Sticks ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox TECMO Dead or Alive 3 ARCADE Stick Joystick Controller Japan ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Street Fighter 15th Anniversary Edition Arcade Stick ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Gamester Xbox Arcade Stick ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Nuby Xbox Fighter Arcade Stick ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Nuby Xbox Arcade Super Stick ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
The source image of the box and on device has item&amp;lt;nowiki&amp;gt;#:&amp;lt;/nowiki&amp;gt;36020.&lt;br /&gt;
&lt;br /&gt;
=== Naki Ultimate Fighting Stick ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
[https://www.youtube.com/watch?v=4GphUsTzgds YouTube reviewer] report this joystick to have rumble support.&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Microphones ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox Communicator ===&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0283 Xbox Communicator&lt;br /&gt;
  bcdDevice            1.58&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength       0x002d&lt;br /&gt;
    bNumInterfaces          2&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass       120 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x04  EP 4 OUT&lt;br /&gt;
        bmAttributes            5&lt;br /&gt;
          Transfer Type            Isochronous&lt;br /&gt;
          Synch Type               Asynchronous&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0030  1x 48 bytes&lt;br /&gt;
        bInterval               1&lt;br /&gt;
        bRefresh                0&lt;br /&gt;
        bSynchAddress           0&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        1&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass       120 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x85  EP 5 IN&lt;br /&gt;
        bmAttributes            5&lt;br /&gt;
          Transfer Type            Isochronous&lt;br /&gt;
          Synch Type               Asynchronous&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0030  1x 48 bytes&lt;br /&gt;
        bInterval               1&lt;br /&gt;
        bRefresh                0&lt;br /&gt;
        bSynchAddress           0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Xbox Karaoke ===&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0501 &lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           1 Licensed 3PP Vendor&lt;br /&gt;
  iProduct                2 Karaoke Microphone Module&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength       0x001b&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass       121 &lt;br /&gt;
      bInterfaceSubClass      1 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 9&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            5&lt;br /&gt;
          Transfer Type            Isochronous&lt;br /&gt;
          Synch Type               Asynchronous&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0060  1x 96 bytes&lt;br /&gt;
        bInterval               1&lt;br /&gt;
        bRefresh                0&lt;br /&gt;
        bSynchAddress           0&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
22 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|0&lt;br /&gt;
|0x00&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|bLen (22 bytes)&lt;br /&gt;
|1&lt;br /&gt;
|0x16&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Unused?&lt;br /&gt;
|21&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1-c1tXfOMvaWuno3ixQyI_rPCQVAZA24N4v9OPZUSrCk/edit?usp=sharing Compilation of Xbox Controller Hardware Research]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6842</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6842"/>
				<updated>2020-02-09T22:20:43Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Add transparent green revision details&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X09-64240-01&lt;br /&gt;
|Transparent Green Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1-c1tXfOMvaWuno3ixQyI_rPCQVAZA24N4v9OPZUSrCk/edit?usp=sharing Compilation of Xbox Controller Hardware Research]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6841</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6841"/>
				<updated>2020-02-09T22:06:11Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Title consistency&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1-c1tXfOMvaWuno3ixQyI_rPCQVAZA24N4v9OPZUSrCk/edit?usp=sharing Compilation of Xbox Controller Hardware Research]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6840</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6840"/>
				<updated>2020-02-09T22:05:48Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Add link to hardware research spreadsheet&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;br /&gt;
&lt;br /&gt;
[https://docs.google.com/spreadsheets/d/1-c1tXfOMvaWuno3ixQyI_rPCQVAZA24N4v9OPZUSrCk/edit?usp=sharing Compilation of Xbox Controller Hardware Research]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6839</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6839"/>
				<updated>2020-02-09T21:58:10Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Found new source for 23-0923B stickers&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6838</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6838"/>
				<updated>2020-02-09T21:42:26Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Document USB Descriptor changes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== K023B121 ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0819C ====&lt;br /&gt;
&lt;br /&gt;
Identical to 23-0819B {{FIXME|Reason=Confirm with xid-dumper tool}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6837</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6837"/>
				<updated>2020-02-09T21:39:04Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Add new duke discoveries&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest known model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|K023B121&lt;br /&gt;
|Same as 23-0819B, but manufactured in China. Only Board Model that does not follow naming conventions. Hardware identical. Easily identified by a serial number that starts with &amp;quot;KD&amp;quot;.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819C&lt;br /&gt;
|Last known Duke model.{{FIXME|Reason=Small sample size (5), can't confirm}}. Identical to 23-0819B in hardware, new silkscreen markings show this model is [https://en.wikipedia.org/wiki/UL_94 UL-94 V-0 compliant]. All boards after this are V-0 compliant.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6836</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6836"/>
				<updated>2020-02-09T20:35:33Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Captured 23-0923A lsusb dump&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest Known Model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  idProduct: 0x0285&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6835</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6835"/>
				<updated>2020-02-09T17:49:46Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Added new controller discovery, 23-0923A&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest Known Model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (Looks like an S, with green Xbox jewel)&lt;br /&gt;
|X08-19383&lt;br /&gt;
|23-0923A&lt;br /&gt;
|Japan and Australia exclusive model{{FIXME|Reason=Speculation, no hard source for this}}.Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|X800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923A ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6834</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6834"/>
				<updated>2020-02-09T17:27:40Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Fixed some typos&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest Known Model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|x800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 8&lt;br /&gt;
  idProduct: 0x0289&lt;br /&gt;
  bcdDevice: 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6833</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6833"/>
				<updated>2020-02-09T06:00:25Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Add Microsoft Gamepad Hardware revision findings to Wiki&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== Microsoft Hardware Variants ===&lt;br /&gt;
&lt;br /&gt;
There are a few hardware re-designs of the Microsoft Gamepad.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Name&lt;br /&gt;
!Part Number&lt;br /&gt;
!Board Model&lt;br /&gt;
!Notes&lt;br /&gt;
!Datasheets&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Game Controller (AKA &amp;quot;Duke&amp;quot;)&lt;br /&gt;
|X08-17160&lt;br /&gt;
|23-0819B&lt;br /&gt;
|Earliest Known Model{{FIXME|Reason=Small sample size (5), can't confirm}}. 3 IC's: Dedicated ST 92163/JFL Micro Controller, dedicated AT43USB401 USB Controller, 4 Channel Analog Mux LW052A.&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S {{FIXME|Reason=Missing Sticker on sample, name extrapolated from other models}}&lt;br /&gt;
|Unknown{{FIXME|Reason=Missing Sticker}}&lt;br /&gt;
|23-0923B&lt;br /&gt;
|Minification of &amp;quot;Duke&amp;quot; PCB Design. Has exact same IC's as the Duke, only in an S controller design&lt;br /&gt;
|[https://archive.org/details/ST92163 ST 92163/JFL], AT43USB401{{FIXME|Reason=Can't find datasheet}}, [https://web.archive.org/web/20191230174412/https://www.rockbox.org/wiki/pub/Main/DataSheets/TexasInstrumentsLW052ADataSheet.pdf LW052A]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923H&lt;br /&gt;
|Entirely new PCB design. Single IC on the board, AT43USB355M-AC&lt;br /&gt;
|[https://archive.org/details/AT43USB355 AT43USB355M-AC]&lt;br /&gt;
|-&lt;br /&gt;
|Xbox Controller S&lt;br /&gt;
|X08-69873&lt;br /&gt;
|23-0923I&lt;br /&gt;
|PCB Design almost exactly the same as H revision. Only difference is the IC is smaller: AT43USB353M-AC &lt;br /&gt;
|[https://archive.org/details/AT43USB353M-AC AT43USB353M-AC]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There are also dedicated Part Numbers for color variants:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Controller Part Number&lt;br /&gt;
!Controller Description&lt;br /&gt;
!Board Model&lt;br /&gt;
|-&lt;br /&gt;
|X02332-001&lt;br /&gt;
|Crystal S Controller&lt;br /&gt;
|23-0923I&lt;br /&gt;
|-&lt;br /&gt;
|x800679-100&lt;br /&gt;
|Black S With Halo Jewel&lt;br /&gt;
|23-0923I&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
==== 23-0819B Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0202 Xbox Controller&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923B ====&lt;br /&gt;
&lt;br /&gt;
{{FIXME|Reason=No Descriptor Dump}}&lt;br /&gt;
&lt;br /&gt;
==== 23-0923H ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0819B&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bMaxPacketSize0: 64 | 8&lt;br /&gt;
  idProduct: 0x0202 | 0x0289&lt;br /&gt;
  bcdDevice: 1.00 | 1.20&lt;br /&gt;
  Configuration Descriptor&lt;br /&gt;
    Interface Descriptor&lt;br /&gt;
      Endpoint Descriptor&lt;br /&gt;
        bEndpointAddress: 0x81&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== 23-0923I ====&lt;br /&gt;
&lt;br /&gt;
Changes from 23-0923H&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor&lt;br /&gt;
  bcdDevice: 1.20 | 1.21&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 (Defined at Interface level)&lt;br /&gt;
  bDeviceSubClass         0&lt;br /&gt;
  bDeviceProtocol         0&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x0a7b&lt;br /&gt;
  idProduct          0xd000&lt;br /&gt;
  bcdDevice            1.00&lt;br /&gt;
  iManufacturer           0&lt;br /&gt;
  iProduct                0&lt;br /&gt;
  iSerial                 0&lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              500mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0&lt;br /&gt;
      iInterface              0&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x01  EP 1 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6711</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6711"/>
				<updated>2019-04-05T20:03:54Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Consistent casing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 and 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || PowON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2, 1.3, 1.4, and 1.5 ===&lt;br /&gt;
The power supply connector for the 1.2, 1.3, 1.4, and 1.5 xboxes is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK || Pin 1 || PowON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +3.3V || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || None || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V || Pin 8 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V || Pin 9 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V || Pin 10 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6 ===&lt;br /&gt;
The connector for the 1.6 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2, 1.3, 1.4, and 1.5 xboxes, with a different pinout.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK (3.3V Standby) || Pin 1 || PowON (3.3V)&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || None || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +5V (0.12V Standby)&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V Standby || Pin 8 || +5V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V Standby || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V Standby || Pin 10 || +12V (0.532V Standby)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6710</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6710"/>
				<updated>2019-04-05T19:49:19Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Update 1.6 xbox voltages as confirmed by xbox7887&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 and 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || POWOK&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2, 1.3, 1.4, and 1.5 ===&lt;br /&gt;
The power supply connector for the 1.2, 1.3, 1.4, and 1.5 xboxes is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK || Pin 1 || PowON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +3.3V || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || None || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V || Pin 8 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V || Pin 9 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V || Pin 10 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6 ===&lt;br /&gt;
The connector for the 1.6 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2, 1.3, 1.4, and 1.5 xboxes, with a different pinout.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK (3.3V Standby) || Pin 1 || PowON (3.3V)&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || None || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +5V (0.12V Standby)&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V Standby || Pin 8 || +5V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V Standby || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V Standby || Pin 10 || +12V (0.532V Standby)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6709</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6709"/>
				<updated>2019-04-05T19:38:51Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Had the pinout up-side down. Fixed the pin layout&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 and 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || POWOK&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2, 1.3, 1.4, and 1.5 ===&lt;br /&gt;
The power supply connector for the 1.2, 1.3, 1.4, and 1.5 xboxes is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK || Pin 1 || PowON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +3.3V || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || None || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V || Pin 8 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V || Pin 9 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V || Pin 10 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6 ===&lt;br /&gt;
The connector for the 1.6 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2, 1.3, 1.4, and 1.5 xboxes, with a different pinout. {{citation needed|reason=Need to validate this pinout on an actual machine, I don't have one to test.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || PowOK || Pin 1 || PowON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || None || Pin 3 || None {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || None {{citation needed}} || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || GND || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 6 || +5V Standby {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND || Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +5V || Pin 8 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || +5V || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || +5V || Pin 10 || +12V&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6708</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6708"/>
				<updated>2019-04-05T17:15:19Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: /* Xbox 1.2, 1.3, 1.4, and 1.5 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 and 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || POWOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2, 1.3, 1.4, and 1.5 ===&lt;br /&gt;
The power supply connector for the 1.2, 1.3, 1.4, and 1.5 xboxes is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || None || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V Standby || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6 ===&lt;br /&gt;
The connector for the 1.6 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2, 1.3, 1.4, and 1.5 xboxes, with a different pinout. {{citation needed|reason=Need to validate this pinout on an actual machine, I don't have one to test.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +5V Standby {{citation needed}} || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || None {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || None {{citation needed}} || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6707</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6707"/>
				<updated>2019-04-05T17:14:05Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 and 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || POWOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2, 1.3, 1.4, and 1.5 ===&lt;br /&gt;
The power supply connector for the 1.2, 1.3, 1.4, and 1.5 xboxes is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 1 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || None || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V Standby || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6 ===&lt;br /&gt;
The connector for the 1.6 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2, 1.3, 1.4, and 1.5 xboxes, with a different pinout. {{citation needed|reason=Need to validate this pinout on an actual machine, I don't have one to test.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +5V Standby {{citation needed}} || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || None {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || None {{citation needed}} || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6706</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6706"/>
				<updated>2019-04-05T17:10:12Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Remove -&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 &amp;amp; 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || POWOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2 to 1.5 ===&lt;br /&gt;
The connector for the 1.2 to 1.5 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 1 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || None || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V Standby || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6+ ===&lt;br /&gt;
The connector for the 1.6+ Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2 to 1.5 xbox, with a different pinout. {{citation needed|reason=Need to validate this pinout on an actual machine, I don't have one to test.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +5V Standby {{citation needed}} || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || None {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || None {{citation needed}} || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6705</id>
		<title>Power Supply</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Power_Supply&amp;diff=6705"/>
				<updated>2019-04-05T16:55:39Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Put power + current rating for PSU into tables for easier reading. Confirmed pinout on 1.1 + 1.3 xbox, cleaned up pinout layout to more closely match the actual connector. Added speculative pinout for 1.6&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;It's either a Foxlink{{citation needed}} or Delta Electronics power supply for most xboxes.&lt;br /&gt;
Some are rumored to be shipped with a Minebea brand and 1.6 xboxes are found with a &amp;quot;tuscany&amp;quot; made probably by Samsung.&lt;br /&gt;
&lt;br /&gt;
On a 1.0 xbox supply, there seems to be 2{{citation needed|reason=2 per region, or 2 overall? and, what about foxlink?}} types for the US 120V and EU 240V market.&lt;br /&gt;
&lt;br /&gt;
The standby voltage powers the [[SMC]] which handles turning on and off the system.&lt;br /&gt;
The Xbox supply needs a voltage (3V3?) on it's power-on line to leave the standby mode.&lt;br /&gt;
This results in the other voltages being supplied.&lt;br /&gt;
&lt;br /&gt;
=== Delta Electronics ===&lt;br /&gt;
The marks are on the PCB with a check next to them:&lt;br /&gt;
* Delta Electronics DPSN-96-AP-1 should be the EU 240V one{{citation needed}}&lt;br /&gt;
* Delta Electronics DPSN-96-AP is the US 120V one&lt;br /&gt;
&lt;br /&gt;
There is a link J11 under CR1 (right side of the coil under it) that might make the difference between 120V and 240V.&lt;br /&gt;
It also seems that the Bridge rectifier is bigger on the US models.&lt;br /&gt;
This could make sense as it has to handle double the current. So, before experimenting with this it might be worth to check if the installed type can handle 2.3 amps.&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the PCB&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.075A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Foxlink Technology LTD ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=I don't own any US xboxes to compare US foxlinks with}}On the lower heatsink, there is a sticker with the following markings and versions:&lt;br /&gt;
* MODEL: FTPS-0001 REV:B {{citation needed}} (120V)&lt;br /&gt;
* MODEL: FTPS-0002 REV:B (from a 2002 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:H (from a 2003 PAL (240V))&lt;br /&gt;
* MODEL: FTPS-0002 REV:G {{citation needed}} (240V)&lt;br /&gt;
* MODEL: FTPS-0007 REV:B {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
* MODEL: FTPS-0007 REV:D {{citation needed}} (120V) (are these after the powercord recall?)&lt;br /&gt;
&lt;br /&gt;
The rated output currents are also noted on the sticker&lt;br /&gt;
&lt;br /&gt;
96W Max output power&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Power Rail&lt;br /&gt;
| Rated Current&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V Standby&lt;br /&gt;
| 0.045A&lt;br /&gt;
|-&lt;br /&gt;
| 3.3V&lt;br /&gt;
| 4.8A&lt;br /&gt;
|-&lt;br /&gt;
| 5V&lt;br /&gt;
| 13.2A&lt;br /&gt;
|-&lt;br /&gt;
| 12V&lt;br /&gt;
| 1.2A&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Powercord recall ====&lt;br /&gt;
&lt;br /&gt;
Microsoft started an powercord recall, or more like a replacement program [https://web.archive.org/web/20050301093947/http://www.xbox.com:80/en-US/news/0502/powercordannouncement.htm xbox.com]for what appeared to be Foxlink powersupplies having a bad powerplug connector on the back of the console and where installed in 1.0 and 1.1 Xboxes.{{citation needed}}.&lt;br /&gt;
Microsoft tried to resolve this by offering free replacement powercords and advising to trow out the old ones. [https://web.archive.org/web/20120722175134/http://www.xbox-scene.com/xbox1data/sep/EEpAEAylAluZlwSlOJ.php More to the power cord replacement than meets the eye?]{{FIXME|reason=why is this link here and where could / should it be instead? I think it's misplaced here}}.&lt;br /&gt;
&lt;br /&gt;
From the Microsoft powercord replacement FAQ:&lt;br /&gt;
&lt;br /&gt;
: '''Does my console require a replacement cord?'''&lt;br /&gt;
: If it was manufactured before October 23, 2003, your console requires a replacement cord (except for consoles purchased in Continental Europe, where consoles manufactured prior to January 13, 2004 require a replacement cord). Consoles manufactured after October 23, 2003 (after January 13, 2004 for consoles purchased in Continental Europe) do not require replacement cords because design improvements to the cord and console already protect against the problems that are addressed by the replacement cords.[https://web.archive.org/web/20050223041403/http://replacements.webprogram.com:80/en-us/faqs.asp#Q-7]&lt;br /&gt;
&lt;br /&gt;
The old page describing how to order has been archived here: [https://web.archive.org/web/20050223060900/http://replacements.webprogram.com:80/en-us/programoverview.asp] &lt;br /&gt;
One would either receive a thicker but very similar powercord or an actual [https://simple.wikipedia.org/wiki/GFCI GFI] (Ground Fault Circuit Interrupter). a online form would then be used to determine which type of cable you receive by means of serial number. {{FIXME|reason=I cant seem to find a source for these details yet, but I personally requested 2, 1 for my own Xbox (a 1.4, with a confirmed Delta. never replaced it.) and received a normal cable (EU). A friends xbox was older, 1.1/1.2?) and we got a european fusebox brick for his. looks like the UK one, but with the Benelux plug. It was all for free in Europe I remember the part number on my normal cable to be different (higher) for the newer one... ill check if I have it in the original box still}}&lt;br /&gt;
&lt;br /&gt;
===== AFCI =====&lt;br /&gt;
&lt;br /&gt;
A video of whats inside an european (UK) &amp;quot;AFCI&amp;quot; [https://www.youtube.com/watch?v=C0wQikAO-yA]&lt;br /&gt;
&lt;br /&gt;
An european AFCI ordered from MS for free had the following on the bottom label.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
| Part number&lt;br /&gt;
| X800925-100&lt;br /&gt;
|- &lt;br /&gt;
|&lt;br /&gt;
| 200-240V~,50/60HZ, 610mA&lt;br /&gt;
|-&lt;br /&gt;
| MFG Code&lt;br /&gt;
| DN0855&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The cable that is wired to the AFCI has the following markings:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
| JHT-031&lt;br /&gt;
|}&lt;br /&gt;
===== Old and New cords =====&lt;br /&gt;
&lt;br /&gt;
The replacement cable has the following markings:{{citation needed}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| JHT-031&lt;br /&gt;
| {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The older cable that needed replacement was:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! top&lt;br /&gt;
! bottom&lt;br /&gt;
|-&lt;br /&gt;
| NITTO SS&lt;br /&gt;
| W41-27854&lt;br /&gt;
|-&lt;br /&gt;
| JHT-013&lt;br /&gt;
| N15905&lt;br /&gt;
|-&lt;br /&gt;
| JI-HAW&lt;br /&gt;
|&lt;br /&gt;
|- &lt;br /&gt;
| E147422&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
Presumably this one doesn't come with tighter tolerances.&lt;br /&gt;
&lt;br /&gt;
=== Samsung &amp;quot;TUSCANY&amp;quot;===&lt;br /&gt;
Found in 1.6 xboxes and seems to be made by Samsung (or atleast the main transformer is, which also has the detail label on it)&lt;br /&gt;
{{FIXME|reason=There are TUSCANY powersuplies in some 1.6 xboxes?}}&lt;br /&gt;
* PSCD101301A&lt;br /&gt;
&lt;br /&gt;
=== Minebea ===&lt;br /&gt;
{{FIXME|reason=There are in the UK, Minebea powersuplies in some xboxes?}}&lt;br /&gt;
&lt;br /&gt;
* MS001A096EMJ&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
!Minebea Electronics UK LTD &lt;br /&gt;
!(circuit board)&lt;br /&gt;
|-&lt;br /&gt;
|DWG No.&lt;br /&gt;
|1 R26PA-SE300393 REV: E&lt;br /&gt;
|-&lt;br /&gt;
|PART No.&lt;br /&gt;
|1 1612100002&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|0234-3&lt;br /&gt;
|-&lt;br /&gt;
!Sticker: &lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NMB Technologies Corp&lt;br /&gt;
|Power Supply Division&lt;br /&gt;
|-&lt;br /&gt;
|Made in &lt;br /&gt;
|Thailand&lt;br /&gt;
|-&lt;br /&gt;
|Model:&lt;br /&gt;
|MS001A096EMJ&lt;br /&gt;
|-&lt;br /&gt;
|REV:&lt;br /&gt;
|08&lt;br /&gt;
|-&lt;br /&gt;
|AC INPUT:100-120V&lt;br /&gt;
|2A 47-63Hz&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Connector pinout ==&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.0 and 1.1 ===&lt;br /&gt;
&lt;br /&gt;
The power supply connector for 1.0 &amp;amp; 1.1 is a single column of pins described by the following chart. Pin 1 is the connector pin closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || +3.3V Standby&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 11 || POWON&lt;br /&gt;
|-&lt;br /&gt;
| Pin 12 || POWOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.2 to 1.5 ===&lt;br /&gt;
The connector for the 1.2 -&amp;gt; 1.5 Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 1 being the top right pin. The top being the side closest to the back of the Xbox.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || None || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +3.3V Standby || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || +3.3V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || +3.3V || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox 1.6+ ===&lt;br /&gt;
The connector for the 1.6+ Xbox is two columns. Pin 1, Column 1 being the top left pin. Pin 1, Column 2 being the top right pin. The top being the side closest to the back of the Xbox. This is the same connector as a 1.2 -&amp;gt; 1.5 xbox, with a different pinout. {{citation needed|reason=Need to validate this pinout on an actual machine, I don't have one to test.}}&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Pin Column 1 || Usage || Pin Column 2 || Usage&lt;br /&gt;
|-&lt;br /&gt;
| Pin 1 || +12V || Pin 1 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 2 || GND || Pin 2 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 3 || +5V || Pin 3 || +5V&lt;br /&gt;
|-&lt;br /&gt;
| Pin 4 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 5 || +5V Standby {{citation needed}} || Pin 5 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 6 || GND || Pin 4 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 7 || None || Pin 7 || None {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Pin 8 || None {{citation needed}} || Pin 8 || None&lt;br /&gt;
|-&lt;br /&gt;
| Pin 9 || GND || Pin 9 || GND&lt;br /&gt;
|-&lt;br /&gt;
| Pin 10 || PowON || Pin 11 || PowOK&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
&lt;br /&gt;
* [http://brandonw.net/consoles/xbox/ Describes how to turn an ATX Power-Supply to Xbox PSU]&lt;br /&gt;
* [https://web.archive.org/web/20060421203325/https://msmvps.com/blogs/matthewsoft/archive/2005/02/17/36238.aspx Powercord recall blog with exacter cable numbers]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6694</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6694"/>
				<updated>2019-02-11T06:35:18Z</updated>
		
		<summary type="html">&lt;p&gt;DiscoStarslayer: Testing on halo: ce I sampled force feedback events from the shotgun with values of 0xFFFF&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== XID Overview ==&lt;br /&gt;
&lt;br /&gt;
XIDs are USB devices.&lt;br /&gt;
&lt;br /&gt;
The hardware side is USB with a different plug while the software side is USB without HID-descriptors.&lt;br /&gt;
Technicly a XID is a USB-hub for the Memory-Units and the XBL Communicator.&lt;br /&gt;
The logical XID gamepad USB device is internally connected to that hub.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== USB Adapters ===&lt;br /&gt;
The Xbox input devices are USB devices. As such, you can connect a keyboard to the Xbox, or a gamepad to your PC. In fact, Linux already has drivers for the gamepad. In order to preserve Xbox hardware, please do not cut OEM Xbox cables to make an adapter. Decent adapters can be acquired cheaply (~$10 USD ea. on 2017.04.30).                              &lt;br /&gt;
&lt;br /&gt;
[[File:Xboxmaletousbfemale.png|thumb|right|Wiring diagram to show how male Xbox controller plug maps to standard female USB connector. White cable color is depicted as gray for better visibility. The yellow cable is not connected to the USB side, as it's exclusive to Xbox.]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;                                                          &lt;br /&gt;
|- &lt;br /&gt;
! Port (From)&lt;br /&gt;
! Plug (To)&lt;br /&gt;
! Link&lt;br /&gt;
|-&lt;br /&gt;
| Xbox&lt;br /&gt;
| USB-A &lt;br /&gt;
| [https://www.amazon.com/gp/product/B000RT2868 Amazon]&lt;br /&gt;
|-&lt;br /&gt;
| USB-A&lt;br /&gt;
| Xbox&lt;br /&gt;
| [https://www.amazon.com/gp/product/B00F52LQHO Amazon]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Wiring ===&lt;br /&gt;
&lt;br /&gt;
Untested / unverified! Take this with a grain of salt.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Pin&lt;br /&gt;
!Typical cable color&lt;br /&gt;
!Description&lt;br /&gt;
|-                                                            &lt;br /&gt;
|1&lt;br /&gt;
|Red&lt;br /&gt;
|VCC&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|White&lt;br /&gt;
|USB D+&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|Green&lt;br /&gt;
|USB D-&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|Yellow&lt;br /&gt;
|VBlank signal from video output (for Lightguns)&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|Black&lt;br /&gt;
|GND&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Protocol ===&lt;br /&gt;
&lt;br /&gt;
XID are similar to HID but have custom Vendor requests&lt;br /&gt;
&lt;br /&gt;
==== Control Transfers ====&lt;br /&gt;
&lt;br /&gt;
===== GET_DESCRIPTOR =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 6&lt;br /&gt;
* wValue: 0x4200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report; typically 16&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of descriptor or wLength. Whichever is smaller. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct XIDDescriptor {&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    uint8_t bDescriptorType;&lt;br /&gt;
    uint16_t bcdXid;&lt;br /&gt;
    uint8_t bType;&lt;br /&gt;
    uint8_t bSubType;&lt;br /&gt;
    uint8_t bMaxInputReportSize;&lt;br /&gt;
    uint8_t bMaxOutputReportSize;&lt;br /&gt;
    uint16_t wAlternateProductIds[4];&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
bDescriptorType is probably always 0x42.&lt;br /&gt;
&lt;br /&gt;
====== bType = 1: Xbox Gamecontroller ======&lt;br /&gt;
&lt;br /&gt;
* bSubType:&lt;br /&gt;
** 0x01 = Gamepad (Duke)&lt;br /&gt;
** 0x02 = Gamepad (Controller-S)&lt;br /&gt;
** 0x10 = Steering wheel&lt;br /&gt;
&lt;br /&gt;
===== GET_CAPABILITIES =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xC1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue:&lt;br /&gt;
** 0x0100 for input&lt;br /&gt;
** 0x0200 for output&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of respective report&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
Actual length is truncated to size of report or wLength. Whichever is smaller.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadCapabilities {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The data will be similar to the GET_REPORT, but instead of storing actual values, it will have bits set (1) where the bit is valid in the respective report.&lt;br /&gt;
If the bit is auto-generated, it will be cleared (0).&lt;br /&gt;
&lt;br /&gt;
===== SET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0x21&lt;br /&gt;
* bRequest: 9&lt;br /&gt;
* wValue: 0x0200&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 6&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadReport {&lt;br /&gt;
    uint8_t bReportId;&lt;br /&gt;
    uint8_t bLength;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===== GET_REPORT =====&lt;br /&gt;
&lt;br /&gt;
* bmRequestType: 0xA1&lt;br /&gt;
* bRequest: 1&lt;br /&gt;
* wValue: 0x0100&lt;br /&gt;
* wIndex: Interface number&lt;br /&gt;
* wLength: &amp;lt;length of report; typically 20&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
* STALL if wValue not supported or if wLength is greater than report size.&lt;br /&gt;
* ACK if supported.&lt;br /&gt;
&lt;br /&gt;
====== Typical report ======&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;typedef struct XIDGamepadOutputReport {&lt;br /&gt;
    uint8_t report_id; //FIXME: is this correct?&lt;br /&gt;
    uint8_t length;&lt;br /&gt;
    &amp;lt;Data&amp;gt;&lt;br /&gt;
}&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Interrupt transfers ====&lt;br /&gt;
&lt;br /&gt;
Alternatively interrupt-in and interrupt-out transfers can be used for GET_REPORT and SET_REPORT respectively.&lt;br /&gt;
&lt;br /&gt;
In case of the interrupt-in, there is another status which can occur now:&lt;br /&gt;
&lt;br /&gt;
* NAK if supported but no changes since last ACK.&lt;br /&gt;
&lt;br /&gt;
== Standard Gamepads ==&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
Most standard gamepads share the same USB descriptor.&lt;br /&gt;
Usually the only difference will be the VID / PID.&lt;br /&gt;
See https://github.com/xboxdrv/xboxdrv/blob/stable/src/xpad_device.cpp for a list of devices.&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
20 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dy-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx-}}&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-dx+}}&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-start}}&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-back}}&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ls}}&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rs}}&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{input-a}}&lt;br /&gt;
|4&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-b}}&lt;br /&gt;
|5&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-x}}&lt;br /&gt;
|6&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-y}}&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-black}}&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-white}}&lt;br /&gt;
|9&lt;br /&gt;
|0xFF&lt;br /&gt;
|Button is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lt}}&lt;br /&gt;
|10&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rt}}&lt;br /&gt;
|11&lt;br /&gt;
|0xFF&lt;br /&gt;
|Trigger is analog&lt;br /&gt;
|-&lt;br /&gt;
|{{input-lx}}&lt;br /&gt;
|12&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ly}}&lt;br /&gt;
|14&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|-&lt;br /&gt;
|{{input-rx}}&lt;br /&gt;
|16&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Left; Positive = Right&lt;br /&gt;
|-&lt;br /&gt;
|{{input-ry}}&lt;br /&gt;
|18&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|Negative = Down; Positive = Up&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
6 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|Left actuator strength&lt;br /&gt;
|2&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Right actuator strength&lt;br /&gt;
|4&lt;br /&gt;
|0xFFFF&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Xbox games use the full range from 0x0000 to 0xFFFF for both the left and right actuators.&lt;br /&gt;
&lt;br /&gt;
The Microsoft Controller S will not react to packets which don't have a value of 6 in the &amp;lt;code&amp;gt;length&amp;lt;/code&amp;gt; field of the header.&lt;br /&gt;
The Fanatec Speedster 3 ForceShock will still react to those. Further testing is necessary with other gamepads.&lt;br /&gt;
&lt;br /&gt;
== Steering wheels ==&lt;br /&gt;
&lt;br /&gt;
=== MadCatz Wheel ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME}}&lt;br /&gt;
&lt;br /&gt;
=== Fanatec Speedster 3 ForceShock ===&lt;br /&gt;
&lt;br /&gt;
==== Pedals ====&lt;br /&gt;
&lt;br /&gt;
The Pedals are ''not'' a USB device.&lt;br /&gt;
&lt;br /&gt;
Note that the cable going to the pedals is also ''not'' a USB port despite using the Xbox controller breakaway plug.&lt;br /&gt;
Likewise, plugging the pedals to a PC / Xbox won't provide a USB / XID (it is detected as garbage):&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
new full-speed USB device number 14 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 15 using xhci_hcd&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
device descriptor read/64, error -71&lt;br /&gt;
new full-speed USB device number 16 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 16, error -71&lt;br /&gt;
new full-speed USB device number 17 using xhci_hcd&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
Device not responding to setup address.&lt;br /&gt;
device not accepting address 17, error -71&lt;br /&gt;
unable to enumerate USB device&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Internal HUB ====&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
Power not connected, pedals not connected, not in Tuning mode:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0102 &lt;br /&gt;
  bcdDevice            0.01&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                1 End&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       50 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0xff&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0000.0100 power&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0003&lt;br /&gt;
  Self Powered&lt;br /&gt;
  Remote Wakeup Enabled&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==== Steering wheel (and Pedals) ====&lt;br /&gt;
&lt;br /&gt;
Always connected to port 1 of the internal HUB&lt;br /&gt;
&lt;br /&gt;
===== USB Descriptors =====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x3767 &lt;br /&gt;
  idProduct          0x0101 &lt;br /&gt;
  bcdDevice            2.80&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x82  EP 2 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Light guns ==&lt;br /&gt;
&lt;br /&gt;
=== EMS TopGun II ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The website for this product can be found at http://www.hkems.com/product/xbox/EMSTopGun2.htm&lt;br /&gt;
&lt;br /&gt;
The gun presents itself as a standard Xbox gamepad. It uses a different USB descriptor for Xbox (X) and the other mode (P).&lt;br /&gt;
There is no internal hub in this device.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! EMS TopGun II !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;4&amp;quot; | Digital only, either 0 or 255&lt;br /&gt;
|-&lt;br /&gt;
| Grip || {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| A || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| B || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| SE/BA || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || rowspan=&amp;quot;2&amp;quot; | Absolute position using the full stick range&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons (All of those read constant zeros).&lt;br /&gt;
&lt;br /&gt;
===== Turbo Mode =====&lt;br /&gt;
&lt;br /&gt;
* Turbo mode 0 keeps {{input-a}} pressed  while trigger is held&lt;br /&gt;
* Turbo mode 1 toggles {{input-a}} rapidly while trigger is held&lt;br /&gt;
* Turbo mode 2 toggles {{input-a}} rapidly and once in a while {{input-b}} while trigger is held&lt;br /&gt;
&lt;br /&gt;
===== Force Feedback =====&lt;br /&gt;
&lt;br /&gt;
The upper part of the gun is moveable and should push back to simulate recoil (possibly hurting your thumb while you are using the stick).&lt;br /&gt;
I could not get the force feedback working, but I'm sure I've had it working in the past on PC.{{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
This is the descriptor in the Xbox mode (X).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Bus 003 Device 016: ID 0b9a:016b  &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x0b9a &lt;br /&gt;
  idProduct          0x016b &lt;br /&gt;
  bcdDevice            4.57&lt;br /&gt;
  iManufacturer           1 EMS̖E&lt;br /&gt;
  iProduct                2 EMS TopGun&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0040  1x 64 bytes&lt;br /&gt;
        bInterval               8&lt;br /&gt;
can't get debug descriptor: Resource temporarily unavailable&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Joytech Sharp Shooter ===&lt;br /&gt;
&lt;br /&gt;
''This is an unlicensed / unofficial Xbox accessory.''&lt;br /&gt;
&lt;br /&gt;
The third party light gun from Joytech reports itself as 2 devices and mentions pattent [http://www.google.com/patents/US6287198 US6287198]&lt;br /&gt;
it came with a detachable viewfinder scope without any magnification. a red dot apears in the viewfinder, its a reflection of a red led, powered by the gun over usb.&lt;br /&gt;
&lt;br /&gt;
model numer: JS-901D&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Joytech Sharp Shooter !! Xbox Gamepad !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| Stick || {{input-d}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Trigger || {{input-a}} || rowspan=&amp;quot;6&amp;quot; | Digital only, either 0 or 255 {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Left side) || rowspan=&amp;quot;3&amp;quot; | {{input-b}}&lt;br /&gt;
|-&lt;br /&gt;
| B (Right side)&lt;br /&gt;
|-&lt;br /&gt;
| B (Magazine button)&lt;br /&gt;
|-&lt;br /&gt;
| x || {{input-x}}&lt;br /&gt;
|-&lt;br /&gt;
| y || {{input-y}}&lt;br /&gt;
|-&lt;br /&gt;
| START || {{input-start}} ||&lt;br /&gt;
|-&lt;br /&gt;
| BACK || {{input-back}} ||&lt;br /&gt;
|-&lt;br /&gt;
| Aim Left / Right || {{input-lx}} || {{citation needed}}&lt;br /&gt;
|-&lt;br /&gt;
| Aim Up / Down || {{input-ly}} || {{citation needed}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
There is no right thumbstick, thumbstick presses, black/white button or trigger buttons {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
===== Fire/Reload Mode =====&lt;br /&gt;
&lt;br /&gt;
* Normal mode does nothing, normal operation&lt;br /&gt;
* Auto reload mode toggles {{input-b}} rapidly to rappidly reload {{citation needed}} &lt;br /&gt;
* Auto fire+reload mode toggles {{input-a}} + {{input-b}} rapidly  {{citation needed}}&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptors ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 025: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           0 &lt;br /&gt;
  iProduct                0 &lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           32&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          1 (error)&lt;br /&gt;
    bmAttributes         0x80&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower              100mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           2&lt;br /&gt;
      bInterfaceClass        88 Xbox&lt;br /&gt;
      bInterfaceSubClass     66 Controller&lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              2 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x02  EP 2 OUT&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0020  1x 32 bytes&lt;br /&gt;
        bInterval               4&lt;br /&gt;
&lt;br /&gt;
Bus 003 Device 024: ID 1292:3006 Innomedia &lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            9 Hub&lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 Full speed (or root) hub&lt;br /&gt;
  bMaxPacketSize0         8&lt;br /&gt;
  idVendor           0x1292 Innomedia&lt;br /&gt;
  idProduct          0x3006 &lt;br /&gt;
  bcdDevice            1.50&lt;br /&gt;
  iManufacturer           1 (c) 2004 R0R3 Inc.&lt;br /&gt;
  iProduct                2 US Patent 6,287,198&lt;br /&gt;
  iSerial                 0 &lt;br /&gt;
  bNumConfigurations      1&lt;br /&gt;
  Configuration Descriptor:&lt;br /&gt;
    bLength                 9&lt;br /&gt;
    bDescriptorType         2&lt;br /&gt;
    wTotalLength           25&lt;br /&gt;
    bNumInterfaces          1&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          4 (c) R0R3 Devices Inc. US Patent 6,287,19Ē&lt;br /&gt;
    bmAttributes         0xa0&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
      Remote Wakeup&lt;br /&gt;
    MaxPower               64mA&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        0&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           1&lt;br /&gt;
      bInterfaceClass         9 Hub&lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 Full speed (or root) hub&lt;br /&gt;
      iInterface              5 (error)&lt;br /&gt;
      Endpoint Descriptor:&lt;br /&gt;
        bLength                 7&lt;br /&gt;
        bDescriptorType         5&lt;br /&gt;
        bEndpointAddress     0x81  EP 1 IN&lt;br /&gt;
        bmAttributes            3&lt;br /&gt;
          Transfer Type            Interrupt&lt;br /&gt;
          Synch Type               None&lt;br /&gt;
          Usage Type               Data&lt;br /&gt;
        wMaxPacketSize     0x0001  1x 1 bytes&lt;br /&gt;
        bInterval             255&lt;br /&gt;
Hub Descriptor:&lt;br /&gt;
  bLength               9&lt;br /&gt;
  bDescriptorType      41&lt;br /&gt;
  nNbrPorts             3&lt;br /&gt;
  wHubCharacteristic 0x000d&lt;br /&gt;
    Per-port power switching&lt;br /&gt;
    Compound device&lt;br /&gt;
    Per-port overcurrent protection&lt;br /&gt;
  bPwrOn2PwrGood       32 * 2 milli seconds&lt;br /&gt;
  bHubContrCurrent     64 milli Ampere&lt;br /&gt;
  DeviceRemovable    0x02&lt;br /&gt;
  PortPwrCtrlMask    0x0e&lt;br /&gt;
 Hub Port Status:&lt;br /&gt;
   Port 1: 0000.0103 power enable connect&lt;br /&gt;
   Port 2: 0000.0100 power&lt;br /&gt;
   Port 3: 0100.0100 power&lt;br /&gt;
Device Status:     0x0000&lt;br /&gt;
  (Bus Powered)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Steel Battalion Controller ==&lt;br /&gt;
&lt;br /&gt;
[[File:SBC.jpg|thumb|200px|Steel Battalion Controller Layout]]&lt;br /&gt;
&lt;br /&gt;
=== USB Descriptors ===&lt;br /&gt;
&lt;br /&gt;
From http://www.yaronet.com/topics/154490-steel-battalion-controller-homemade#post-15&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;bcdUSB:             0x0110&lt;br /&gt;
bDeviceClass:         0x00&lt;br /&gt;
bDeviceSubClass:      0x00&lt;br /&gt;
bDeviceProtocol:      0x00&lt;br /&gt;
bMaxPacketSize0:      0x08 (8)&lt;br /&gt;
idVendor:           0x0A7B&lt;br /&gt;
idProduct:          0xD000&lt;br /&gt;
bcdDevice:          0x0100&lt;br /&gt;
iManufacturer:        0x00&lt;br /&gt;
iProduct:             0x00&lt;br /&gt;
iSerialNumber:        0x00&lt;br /&gt;
bNumConfigurations:   0x01&lt;br /&gt;
&lt;br /&gt;
ConnectionStatus: DeviceConnected&lt;br /&gt;
Current Config Value: 0x00&lt;br /&gt;
Device Bus Speed:     Full&lt;br /&gt;
Device Address:       0x03&lt;br /&gt;
Open Pipes:              0&lt;br /&gt;
&lt;br /&gt;
Configuration Descriptor:&lt;br /&gt;
wTotalLength:       0x0020&lt;br /&gt;
bNumInterfaces:       0x01&lt;br /&gt;
bConfigurationValue:  0x01&lt;br /&gt;
iConfiguration:       0x00&lt;br /&gt;
bmAttributes:         0x80 (Bus Powered )&lt;br /&gt;
MaxPower:             0xFA (500 Ma)&lt;br /&gt;
&lt;br /&gt;
Interface Descriptor:&lt;br /&gt;
bInterfaceNumber:     0x00&lt;br /&gt;
bAlternateSetting:    0x00&lt;br /&gt;
bNumEndpoints:        0x02&lt;br /&gt;
bInterfaceClass:      0x58&lt;br /&gt;
bInterfaceSubClass:   0x42&lt;br /&gt;
bInterfaceProtocol:   0x00&lt;br /&gt;
iInterface:           0x00&lt;br /&gt;
&lt;br /&gt;
Endpoint Descriptor:&lt;br /&gt;
bEndpointAddress:     0x82&lt;br /&gt;
Transfer Type:   Interrupt&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Controller to Xbox ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
26 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyMainWeapon&lt;br /&gt;
|2&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyFire&lt;br /&gt;
|2&lt;br /&gt;
|0x03{{FIXME|reason=WTF?! Might be bad?}}&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightJoyLockOn&lt;br /&gt;
|2&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Eject&lt;br /&gt;
|2&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|2&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|2&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonOpenClose&lt;br /&gt;
|2&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonMapZoomInOut&lt;br /&gt;
|3&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonModeSelect&lt;br /&gt;
|3&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MultiMonSubMonitor&lt;br /&gt;
|3&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomIn&lt;br /&gt;
|3&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonZoomOut&lt;br /&gt;
|3&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionFSS&lt;br /&gt;
|3&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionManipulator&lt;br /&gt;
|3&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionLineColorChange&lt;br /&gt;
|3&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|4&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|4&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|4&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionTankDetach&lt;br /&gt;
|4&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionOverride&lt;br /&gt;
|4&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionNightScope&lt;br /&gt;
|4&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF1&lt;br /&gt;
|4&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF2&lt;br /&gt;
|4&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|FunctionF3&lt;br /&gt;
|5&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMain&lt;br /&gt;
|5&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConSub&lt;br /&gt;
|5&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|WeaponConMagazine&lt;br /&gt;
|5&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|5&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|5&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|5&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|5&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|6&lt;br /&gt;
|0x01&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LeftJoySightChange&lt;br /&gt;
|6&lt;br /&gt;
|0x02&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFilterControl&lt;br /&gt;
|6&lt;br /&gt;
|0x04&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleOxygenSupply&lt;br /&gt;
|6&lt;br /&gt;
|0x08&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleFuelFlowRate&lt;br /&gt;
|6&lt;br /&gt;
|0x10&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleBuffreMaterial&lt;br /&gt;
|6&lt;br /&gt;
|0x20&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ToggleVTLocation&lt;br /&gt;
|6&lt;br /&gt;
|0x40&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|6&lt;br /&gt;
|0x80&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|7&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|8&lt;br /&gt;
|0xFF&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|AimingX&lt;br /&gt;
|9&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 8?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|AimingY&lt;br /&gt;
|11&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 10?&lt;br /&gt;
|&amp;quot;Aiming Lever&amp;quot; joystick on the right.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|RotationLever&lt;br /&gt;
|13&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 12?&lt;br /&gt;
|&amp;quot;Rotation Lever&amp;quot; joystick on the left.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeX&lt;br /&gt;
|15&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 14?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  X Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|SightChangeY&lt;br /&gt;
|17&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 16?&lt;br /&gt;
|&amp;quot;Sight Change&amp;quot; analog stick on the &amp;quot;Rotation Lever&amp;quot; joystick.  Y Axis value.&lt;br /&gt;
|-&lt;br /&gt;
|LeftPedal&lt;br /&gt;
|19&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 18?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MiddlePedal&lt;br /&gt;
|21&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 20?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|RightPedal&lt;br /&gt;
|23&lt;br /&gt;
|0xFF, maybe 0xFFFF at offset 22?&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TunerDial&lt;br /&gt;
|24&lt;br /&gt;
|0x0F&lt;br /&gt;
|The 9 o'clock postion is 0, and the 6 o'clock position is 12. The blank area between the 6 and 9 o'clock positions is 13, 14, and 15 clockwise.&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|24&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearLever&lt;br /&gt;
|25&lt;br /&gt;
|0xFF&lt;br /&gt;
|The gear lever on the left block.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Xbox to Controller ===&lt;br /&gt;
&lt;br /&gt;
From http://steelbattalionnet.codeplex.com/SourceControl/latest#SBC/SteelBattalionController.cs&lt;br /&gt;
&lt;br /&gt;
34 bytes&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Field&lt;br /&gt;
!Offset (Bytes)&lt;br /&gt;
!Mask&lt;br /&gt;
!Notes&lt;br /&gt;
|-&lt;br /&gt;
|EmergencyEject&lt;br /&gt;
|2&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|CockpitHatch&lt;br /&gt;
|2&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Ignition&lt;br /&gt;
|3&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Start&lt;br /&gt;
|3&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|OpenClose&lt;br /&gt;
|4&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MapZoomInOut&lt;br /&gt;
|4&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubMonitorModeSelect&lt;br /&gt;
|5&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomIn&lt;br /&gt;
|6&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainMonitorZoomOut&lt;br /&gt;
|6&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|ForecastShootingSystem&lt;br /&gt;
|7&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Manipulator&lt;br /&gt;
|7&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|LineColorChange&lt;br /&gt;
|8&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Washing&lt;br /&gt;
|8&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Extinguisher&lt;br /&gt;
|9&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Chaff&lt;br /&gt;
|9&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|TankDetach&lt;br /&gt;
|10&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Override&lt;br /&gt;
|10&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|NightScope&lt;br /&gt;
|11&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F1&lt;br /&gt;
|11&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F2&lt;br /&gt;
|12&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|F3&lt;br /&gt;
|12&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MainWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|SubWeaponControl&lt;br /&gt;
|13&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|MagazineChange&lt;br /&gt;
|14&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm1&lt;br /&gt;
|14&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm2&lt;br /&gt;
|15&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm3&lt;br /&gt;
|15&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm4&lt;br /&gt;
|16&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Comm5&lt;br /&gt;
|16&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
|17&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearR&lt;br /&gt;
|17&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|GearN&lt;br /&gt;
|18&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear1&lt;br /&gt;
|18&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear2&lt;br /&gt;
|19&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear3&lt;br /&gt;
|19&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear4&lt;br /&gt;
|20&lt;br /&gt;
|0x0F&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|Gear5&lt;br /&gt;
|20&lt;br /&gt;
|0xF0&lt;br /&gt;
|&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Related links ==&lt;br /&gt;
[https://github.com/xqemu/xqemu/blob/xbox/hw/xbox/xid.c XID emulation in XQEMU]&lt;/div&gt;</summary>
		<author><name>DiscoStarslayer</name></author>	</entry>

	</feed>