<?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=Dracc</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=Dracc"/>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/Special:Contributions/Dracc"/>
		<updated>2026-04-13T18:42:50Z</updated>
		<subtitle>User contributions</subtitle>
		<generator>MediaWiki 1.28.0</generator>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xemu&amp;diff=6930</id>
		<title>Xemu</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xemu&amp;diff=6930"/>
				<updated>2021-05-03T06:52:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;xemu is a continuation of xqemu which is a low-level Xbox / Chihiro Emulator started in mid-late 2012 by espes[https://github.com/espes/xqemu/commit/d823f5802e7c4c84163aea8b4d924044951c705e].&lt;br /&gt;
&lt;br /&gt;
xemu was started in early 2020 by mborgerson[https://github.com/mborgerson]&lt;br /&gt;
&lt;br /&gt;
The official homepage is https://xemu.app&lt;br /&gt;
&lt;br /&gt;
== Compatibility list ==&lt;br /&gt;
&lt;br /&gt;
Compatibility list can be found at https://xemu.app/#compatibility.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Currently the features that are supported are Gamepad Support, System Link, Snapshots (Save States).&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xemu&amp;diff=6929</id>
		<title>Xemu</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xemu&amp;diff=6929"/>
				<updated>2021-05-03T06:52:08Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;xemu is a continuation of xqemu which is a low-level Xbox / Chihiro Emulator started in mid-late 2012 by espes[https://github.com/espes/xqemu/commit/d823f5802e7c4c84163aea8b4d924044951c705e].&lt;br /&gt;
&lt;br /&gt;
xemu was started in early 2020 by mborgerson[https://github.com/mborgerson]&lt;br /&gt;
&lt;br /&gt;
The official homepage can be found at [https://xemu.app xemu.app]&lt;br /&gt;
&lt;br /&gt;
== Compatibility list ==&lt;br /&gt;
&lt;br /&gt;
Compatibility list can be found at https://xemu.app/#compatibility.&lt;br /&gt;
&lt;br /&gt;
== Features ==&lt;br /&gt;
&lt;br /&gt;
Currently the features that are supported are Gamepad Support, System Link, Snapshots (Save States).&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=6896</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=6896"/>
				<updated>2021-01-28T13:02:06Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[Flash ROM]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
** [[LPC_Debug_Port|LPC]]&lt;br /&gt;
** [[APU]]&lt;br /&gt;
*** [[DSP]]&lt;br /&gt;
** [[ACI]]&lt;br /&gt;
** [[Network]]&lt;br /&gt;
* [[PCI]]&lt;br /&gt;
* [[SMBus]]&lt;br /&gt;
** [[EEPROM]]&lt;br /&gt;
** [[SMC]]&lt;br /&gt;
** [[Video Encoder]]&lt;br /&gt;
*** [[AV Cables]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
** [[Xbox Game Disc]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
** [[Config Sector]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
** [[Xbox Input Devices]]&lt;br /&gt;
** [[Xbox Memory Unit]]&lt;br /&gt;
** [[Xbox Live Communicator]] &amp;lt;!-- Maybe rename this to microphones later? --&amp;gt;&lt;br /&gt;
** [[Xbox DVD Movie Playback Kit]]&lt;br /&gt;
* [[Power Supply]]&lt;br /&gt;
* [[Development Kits]]&lt;br /&gt;
** [[Super I/O]]&lt;br /&gt;
** [[DVD Emulator]]&lt;br /&gt;
* [[Manufacturing Process]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
** [[Boot Process]]&lt;br /&gt;
** [[XBE]] (Executable file format)&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Xbox ADPCM]]&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
** [[Soundtracks]]&lt;br /&gt;
** [[Fatal Error]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk nxdk (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Title Libraries]]&lt;br /&gt;
** [[Direct3D]]&lt;br /&gt;
** [[DirectSound]]&lt;br /&gt;
** [[System Link]]&lt;br /&gt;
** [[Xbox Live]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
** [[Xbox Neighborhood]]&lt;br /&gt;
** [[Kernel_Debug|Xbox Kernel Debugging]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
** [[XQEMU]]&lt;br /&gt;
** [[Fusion]]&lt;br /&gt;
** [[Fission]]&lt;br /&gt;
&lt;br /&gt;
== Historical Pages ==&lt;br /&gt;
(archived from the xbox-linux wiki)&lt;br /&gt;
* [[Xbox Hard Drive Locking Mechanism]]&lt;br /&gt;
* [[Xbox Savegame System]]&lt;br /&gt;
* [[Xbox Hardware Overview]]&lt;br /&gt;
* [[Xbox Hard Disk Technical_Details]]&lt;br /&gt;
* [[Xbox Hard Disk Partitioning]]&lt;br /&gt;
* [[Xbox Manufacturing Process]]&lt;br /&gt;
* [[The Hidden Boot Code of the Xbox]]&lt;br /&gt;
* [[PIC]]&lt;br /&gt;
* [[SMBus]]&lt;br /&gt;
* [[NForce]]&lt;br /&gt;
* [[17 Mistakes Microsoft Made in the Xbox Security System]]&lt;br /&gt;
* [[Porting an Operating System to the Xbox HOWTO]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Patents]]&lt;br /&gt;
* [[Resources]]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6766</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6766"/>
				<updated>2019-08-09T11:28:12Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Fix Steel Battalion Controller RightJoyFire button Mask according to https://github.com/Ryzee119/ogx360/blob/master/Firmware/ogx360_32u4/ogx360_32u4/steelbattalion.h&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;
&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>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Config_Sector&amp;diff=6732</id>
		<title>Config Sector</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Config_Sector&amp;diff=6732"/>
				<updated>2019-06-12T18:32:13Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Updated reference link to a working one&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Size&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1020&lt;br /&gt;
|4&lt;br /&gt;
|Static IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1024&lt;br /&gt;
|4&lt;br /&gt;
|Static Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x1028&lt;br /&gt;
|4&lt;br /&gt;
|Static Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x102C&lt;br /&gt;
|4&lt;br /&gt;
|Static Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1030&lt;br /&gt;
|4&lt;br /&gt;
|Static Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1034&lt;br /&gt;
|32&lt;br /&gt;
!(Unknown padding)&lt;br /&gt;
|-&lt;br /&gt;
|0x1054&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1058&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x105C&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x1060&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1064&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1068&lt;br /&gt;
|40&lt;br /&gt;
|Xbox Live Hostname&lt;br /&gt;
|-&lt;br /&gt;
|0x1090&lt;br /&gt;
|64&lt;br /&gt;
|Xbox Live PPPOE Username&lt;br /&gt;
|-&lt;br /&gt;
|0x10D0&lt;br /&gt;
|64&lt;br /&gt;
|Xbox Live PPPOE Password&lt;br /&gt;
|-&lt;br /&gt;
|0x1110&lt;br /&gt;
|40&lt;br /&gt;
!(Unknown padding)&lt;br /&gt;
|-&lt;br /&gt;
|0x1138&lt;br /&gt;
|40&lt;br /&gt;
|Xbox Live PPPOE Service Name&lt;br /&gt;
|-&lt;br /&gt;
|0x1160&lt;br /&gt;
|12&lt;br /&gt;
!(Unknown)&lt;br /&gt;
|-&lt;br /&gt;
|0x116C&lt;br /&gt;
|4&lt;br /&gt;
|DHCP IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1170&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x1174&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x1178&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x117C&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1180&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE IP Address (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1184&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Subnet Mask (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1188&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Gateway Address (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x118C&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Primary DNS Server (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1190&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Secondary DNS Server (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [https://web.archive.org/web/20190604222002/https://assemblergames.com/threads/xbox-live-accounts-xqemu-and-mu.60352/ Xbox live (accounts, xqemu and MU) | ASSEMbler - Home of the obscure (archive.org)]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6731</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6731"/>
				<updated>2019-06-12T16:07:25Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: /* Contents */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
Parts of the EEPROM are encrypted using [[Kernel/XboxEEPROMKey]].&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code&lt;br /&gt;
* 0x00000001 = North America&lt;br /&gt;
* 0x00000002 = Japan&lt;br /&gt;
* 0x00000004 = Europe &amp;amp; Australia&lt;br /&gt;
* 0x80000000 = Manufacturing plant&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum2 - Checksum of next 44 (0x2C) bytes (0x34 - 0x5F)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number - (ASCII chars 0x30 - 0x39 to match each digit in SN)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address (Microsoft Xbox - 00:50:F2:xx:xx:xx)&lt;br /&gt;
This is the MAC address of the Ethernet hardware, which has been [https://web.archive.org/web/20100617020733/http://standards.ieee.org/regauth/oui/oui_public.txt issued by the IEEE].&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
| Video Standard&lt;br /&gt;
* 0x00000000 = not set (INVALID)&lt;br /&gt;
* 0x00400100 = NTSC-M&lt;br /&gt;
* 0x00400200 = NTSC-J&lt;br /&gt;
* 0x00800300 = PAL-I&lt;br /&gt;
* 0x00400400 = PAL-M&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| Checksum3 - Checksum of the next 92 (0x5C) bytes (0x64 - 0xBF)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias - Offset in # minutes to subtract from GMT time &lt;br /&gt;
(e.g., for GMT-06 Central; 6hr = 360min = 0x00000168)&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CST\0, ACST)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CDT\0, ACDT)&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| Standard Time Starts 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| Daylight Savings Time Starts 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Timezone Bias; if not DST, 0 (0x00000000)  minute time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Savings Time Bias; if DST, -60 (0xFFFFFFC4) minute  time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID (0 = not set)&lt;br /&gt;
* 0x00000001 = English&lt;br /&gt;
* 0x00000002 = Japanese&lt;br /&gt;
* 0x00000003 = German&lt;br /&gt;
* 0x00000004 = French&lt;br /&gt;
* 0x00000005 = Spanish&lt;br /&gt;
* 0x00000006 = Italian&lt;br /&gt;
* 0x00000007 = Korean&lt;br /&gt;
* 0x00000008 = Chinese&lt;br /&gt;
* 0x00000009 = Portuguese&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
* 0x00080000 = 480p&lt;br /&gt;
* 0x00020000 = 720p&lt;br /&gt;
* 0x00040000 = 1080i&lt;br /&gt;
&lt;br /&gt;
* 0x00010000 = Widescreen{{FIXME|reason=What happens if Widescreen and letterbox are enabled at the same time? Can this happen?}}&lt;br /&gt;
* 0x00100000 = Letterbox{{FIXME|reason=What happens if Widescreen and letterbox are enabled at the same time? Can this happen?}}&lt;br /&gt;
&lt;br /&gt;
* 0x00400000 = 60Hz{{FIXME|reason=Unconfirmed; Also, what happens if both refresh rates are disabled?}}&lt;br /&gt;
* 0x00800000 = 50Hz{{FIXME|reason=Unconfirmed; Also, what happens if both refresh rates are disabled?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
* 0x00000000 = Stereo&lt;br /&gt;
* 0x00000001 = Mono&lt;br /&gt;
* 0x00000002 = Surround&lt;br /&gt;
* 0x00010000 = Enable AC3&lt;br /&gt;
* 0x00020000 = Enable DTS&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| Games Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000000 = Rating Pending (RP)&lt;br /&gt;
* 0x00000001 = Adults Only (AO)&lt;br /&gt;
* 0x00000002 = Mature (M)&lt;br /&gt;
* 0x00000003 = Teen (T)&lt;br /&gt;
* 0x00000004 = Everyone (E)&lt;br /&gt;
* 0x00000005 = Kids to Adults (K-A)&lt;br /&gt;
* 0x00000006 = Early Childhood (EC)&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| Parental Control Passcode; 4 button sequence (each key stored in a nibble)&lt;br /&gt;
* 0x1 = {{input-dy+}} or {{input-ly+}}&lt;br /&gt;
* 0x2 = {{input-dy-}} or {{input-ly-}}&lt;br /&gt;
* 0x3 = {{input-dx-}} or {{input-lx-}}&lt;br /&gt;
* 0x4 = {{input-dx+}} or {{input-lx+}}&lt;br /&gt;
* 0x5 = {{input-a}}&lt;br /&gt;
* 0x6 = {{input-b}}&lt;br /&gt;
* 0x7 = {{input-x}}&lt;br /&gt;
* 0x8 = {{input-y}}&lt;br /&gt;
* 0xB = {{input-lt}}&lt;br /&gt;
* 0xC = {{input-rt}}&lt;br /&gt;
* 0x0 = Disabled{{FIXME|reason=Is this 0x00000000 only, or are shorter codes possible? can a middle section be 0x00 or would that end the sequence?}}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
* A passcode 0x00001423 is D-pad directions up (0x1), right (0x4), down (0x2), left (0x3).  &lt;br /&gt;
* Pass code only uses the lower 16 bits; each button is stored as a nibble in the word.  First button in the most significant nibble and last in the least significant nibble.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| Movies Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000001 = Adults Only (NC-17)&lt;br /&gt;
* 0x00000002 = Restricted (R)&lt;br /&gt;
* 0x00000004 = Parents Strongly Cautioned (PG-13)&lt;br /&gt;
* 0x00000005 = Parental Guidance Suggested (PG)&lt;br /&gt;
* 0x00000007 = General Audiences (G)&lt;br /&gt;
|- &lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
* 0x00000000 = None&lt;br /&gt;
* 0x00000001 = Region 1&lt;br /&gt;
* ...&lt;br /&gt;
* 0x00000006 = Region 6{{FIXME|reason=We should document which regions were actually sold in stores}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ? do not change any values in this range&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;Configmagic-FINAL-1.6 uses the wrong size when computing Checksum2 (40 instead of 44 bytes) and Checksum3 (96 instead of 92 bytes). Checksum2 value computed was correct only because the extra 4 bytes not used in the CRC computation were all 0's which does not change the CRC value.  However, a similiar problem with computation of Checksum3 is present. The CRC computed for v1.6 Xbox's is incorrect as the 4 extra bytes are not 0's as on earlier versions.&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an I2C host adapter (see [http://dangerousprototypes.com/blog/bus-pirate-manual/ here]&lt;br /&gt;
or [https://www.totalphase.com/products/aardvark-i2cspi/ here]), build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. Then use the corresponding software to read/write the EEPROM.&lt;br /&gt;
&lt;br /&gt;
== The HMAC HDD Key ==&lt;br /&gt;
&lt;br /&gt;
The HMAC HDD Key is generated{{FIXME|reason=Stored? Derived? At factory?}} out of the first 48 bytes{{FIXME|reason=..first 48 EEPROM bytes? Encrypted / Decrypted?}}. This section has been identified clearly{{FIXME|reason=What does this mean?}}.&lt;br /&gt;
&lt;br /&gt;
== Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
Checksum2 and Checksum3 values can be calculated by running the following code snippet over the area the checksum covers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; /* The EepromCRC algorithm was obtained from the XKUtils 0.2 source released by&lt;br /&gt;
  * TeamAssembly under the GNU GPL.&lt;br /&gt;
  * Specifically, from XKCRC.cpp&lt;br /&gt;
  *&lt;br /&gt;
  * Rewritten to ANSI C by David Pye (dmp@davidmpye.dyndns.org)&lt;br /&gt;
  *&lt;br /&gt;
  * Adapted for XboxDevWiki&lt;br /&gt;
  */&lt;br /&gt;
 uint32_t EepromCRC(unsigned char *data, long dataLen) {&lt;br /&gt;
&lt;br /&gt;
         // Initialize result to zero&lt;br /&gt;
         uint8_t crc[4] = { 0x00, 0x00, 0x00, 0x00 };&lt;br /&gt;
 &lt;br /&gt;
         //Circle shift input data one byte right&lt;br /&gt;
         unsigned char* CRC_Data = (unsigned char *)malloc(dataLen + 4);&lt;br /&gt;
         memset(CRC_Data, 0x00, dataLen + 4);&lt;br /&gt;
         memcpy(CRC_Data + 0x01 , data, dataLen - 1);&lt;br /&gt;
         memcpy(CRC_Data, data + dataLen - 1, 0x01);&lt;br /&gt;
 &lt;br /&gt;
         // Calculate checksum&lt;br /&gt;
         for (unsigned int i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
                 unsigned short CRCPosVal = 0xFFFF;&lt;br /&gt;
                 for (unsigned long l = i; l &amp;lt; dataLen; l += 4) {&lt;br /&gt;
                         CRCPosVal -= *(unsigned short*)(&amp;amp;amp;CRC_Data[l]);&lt;br /&gt;
                 }&lt;br /&gt;
                 CRCPosVal &amp;amp;= 0xFF00;&lt;br /&gt;
                 crc[i] = (unsigned char) (CRCPosVal &amp;lt;&amp;lt; 8);&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
         free(CRC_Data);&lt;br /&gt;
&lt;br /&gt;
         return *(uint32_t*)&amp;amp;checksum;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Read Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
When the Xbox reads from the FACTORY_SETTINGS or the USER_SETTINGS section of the EEPROM, this algorithm is ran over the entire section accessed (including the CRC checksum mentioned above) to ensure that the data is valid. If the result of the checksum algorithm does not equal 0xFFFFFFFF, STATUS_DEVICE_DATA_ERROR is returned from the Kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;static uint32_t eeprom_section_checksum(&lt;br /&gt;
    const uint32_t* section_data,&lt;br /&gt;
    uint32_t section_data_length&lt;br /&gt;
)&lt;br /&gt;
{&lt;br /&gt;
    const uint32_t bitmask = 0xFFFFFFFF;&lt;br /&gt;
    uint64_t checksum = 0;&lt;br /&gt;
    uint32_t carry_count = 0;&lt;br /&gt;
&lt;br /&gt;
    // Process the data in 32 bit steps&lt;br /&gt;
    for(unsigned int i = 0; i &amp;lt; section_data_length / 4; i++) {&lt;br /&gt;
        checksum += *section_data;&lt;br /&gt;
        if(checksum &amp;gt; bitmask) {&lt;br /&gt;
            carry_count++;&lt;br /&gt;
            checksum &amp;amp;= bitmask;&lt;br /&gt;
        }&lt;br /&gt;
        section_data++;&lt;br /&gt;
    }&lt;br /&gt;
    checksum += carry_count;&lt;br /&gt;
    if(checksum &amp;gt; bitmask) {&lt;br /&gt;
        checksum += 1;&lt;br /&gt;
    }&lt;br /&gt;
    return (uint32_t)(checksum &amp;amp; bitmask);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://web.archive.org/web/20040604013125/http://console-dev.com:80/eeprom.htm Information about EEPROM contents]&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6730</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6730"/>
				<updated>2019-06-12T16:06:33Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Add Audio settings as described by LukeUsher&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
Parts of the EEPROM are encrypted using [[Kernel/XboxEEPROMKey]].&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code&lt;br /&gt;
* 0x00000001 = North America&lt;br /&gt;
* 0x00000002 = Japan&lt;br /&gt;
* 0x00000004 = Europe &amp;amp; Australia&lt;br /&gt;
* 0x80000000 = Manufacturing plant&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum2 - Checksum of next 44 (0x2C) bytes (0x34 - 0x5F)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number - (ASCII chars 0x30 - 0x39 to match each digit in SN)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address (Microsoft Xbox - 00:50:F2:xx:xx:xx)&lt;br /&gt;
This is the MAC address of the Ethernet hardware, which has been [https://web.archive.org/web/20100617020733/http://standards.ieee.org/regauth/oui/oui_public.txt issued by the IEEE].&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
| Video Standard&lt;br /&gt;
* 0x00000000 = not set (INVALID)&lt;br /&gt;
* 0x00400100 = NTSC-M&lt;br /&gt;
* 0x00400200 = NTSC-J&lt;br /&gt;
* 0x00800300 = PAL-I&lt;br /&gt;
* 0x00400400 = PAL-M&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| Checksum3 - Checksum of the next 92 (0x5C) bytes (0x64 - 0xBF)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias - Offset in # minutes to subtract from GMT time &lt;br /&gt;
(e.g., for GMT-06 Central; 6hr = 360min = 0x00000168)&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CST\0, ACST)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CDT\0, ACDT)&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| Standard Time Starts 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| Daylight Savings Time Starts 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Timezone Bias; if not DST, 0 (0x00000000)  minute time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Savings Time Bias; if DST, -60 (0xFFFFFFC4) minute  time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID (0 = not set)&lt;br /&gt;
* 0x00000001 = English&lt;br /&gt;
* 0x00000002 = Japanese&lt;br /&gt;
* 0x00000003 = German&lt;br /&gt;
* 0x00000004 = French&lt;br /&gt;
* 0x00000005 = Spanish&lt;br /&gt;
* 0x00000006 = Italian&lt;br /&gt;
* 0x00000007 = Korean&lt;br /&gt;
* 0x00000008 = Chinese&lt;br /&gt;
* 0x00000009 = Portuguese&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
* 0x00080000 = 480p&lt;br /&gt;
* 0x00020000 = 720p&lt;br /&gt;
* 0x00040000 = 1080i&lt;br /&gt;
&lt;br /&gt;
* 0x00010000 = Widescreen{{FIXME|reason=What happens if Widescreen and letterbox are enabled at the same time? Can this happen?}}&lt;br /&gt;
* 0x00100000 = Letterbox{{FIXME|reason=What happens if Widescreen and letterbox are enabled at the same time? Can this happen?}}&lt;br /&gt;
&lt;br /&gt;
* 0x00400000 = 60Hz{{FIXME|reason=Unconfirmed; Also, what happens if both refresh rates are disabled?}}&lt;br /&gt;
* 0x00800000 = 50Hz{{FIXME|reason=Unconfirmed; Also, what happens if both refresh rates are disabled?}}&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
* Channels&lt;br /&gt;
* 0x00000000 = Stereo&lt;br /&gt;
* 0x00000001 = Mono&lt;br /&gt;
* 0x00000002 = Surround&lt;br /&gt;
* Flags&lt;br /&gt;
* 0x00010000 = Enable AC3&lt;br /&gt;
* 0x00020000 = Enable DTS&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| Games Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000000 = Rating Pending (RP)&lt;br /&gt;
* 0x00000001 = Adults Only (AO)&lt;br /&gt;
* 0x00000002 = Mature (M)&lt;br /&gt;
* 0x00000003 = Teen (T)&lt;br /&gt;
* 0x00000004 = Everyone (E)&lt;br /&gt;
* 0x00000005 = Kids to Adults (K-A)&lt;br /&gt;
* 0x00000006 = Early Childhood (EC)&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| Parental Control Passcode; 4 button sequence (each key stored in a nibble)&lt;br /&gt;
* 0x1 = {{input-dy+}} or {{input-ly+}}&lt;br /&gt;
* 0x2 = {{input-dy-}} or {{input-ly-}}&lt;br /&gt;
* 0x3 = {{input-dx-}} or {{input-lx-}}&lt;br /&gt;
* 0x4 = {{input-dx+}} or {{input-lx+}}&lt;br /&gt;
* 0x5 = {{input-a}}&lt;br /&gt;
* 0x6 = {{input-b}}&lt;br /&gt;
* 0x7 = {{input-x}}&lt;br /&gt;
* 0x8 = {{input-y}}&lt;br /&gt;
* 0xB = {{input-lt}}&lt;br /&gt;
* 0xC = {{input-rt}}&lt;br /&gt;
* 0x0 = Disabled{{FIXME|reason=Is this 0x00000000 only, or are shorter codes possible? can a middle section be 0x00 or would that end the sequence?}}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
* A passcode 0x00001423 is D-pad directions up (0x1), right (0x4), down (0x2), left (0x3).  &lt;br /&gt;
* Pass code only uses the lower 16 bits; each button is stored as a nibble in the word.  First button in the most significant nibble and last in the least significant nibble.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| Movies Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000001 = Adults Only (NC-17)&lt;br /&gt;
* 0x00000002 = Restricted (R)&lt;br /&gt;
* 0x00000004 = Parents Strongly Cautioned (PG-13)&lt;br /&gt;
* 0x00000005 = Parental Guidance Suggested (PG)&lt;br /&gt;
* 0x00000007 = General Audiences (G)&lt;br /&gt;
|- &lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
* 0x00000000 = None&lt;br /&gt;
* 0x00000001 = Region 1&lt;br /&gt;
* ...&lt;br /&gt;
* 0x00000006 = Region 6{{FIXME|reason=We should document which regions were actually sold in stores}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ? do not change any values in this range&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;Configmagic-FINAL-1.6 uses the wrong size when computing Checksum2 (40 instead of 44 bytes) and Checksum3 (96 instead of 92 bytes). Checksum2 value computed was correct only because the extra 4 bytes not used in the CRC computation were all 0's which does not change the CRC value.  However, a similiar problem with computation of Checksum3 is present. The CRC computed for v1.6 Xbox's is incorrect as the 4 extra bytes are not 0's as on earlier versions.&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an I2C host adapter (see [http://dangerousprototypes.com/blog/bus-pirate-manual/ here]&lt;br /&gt;
or [https://www.totalphase.com/products/aardvark-i2cspi/ here]), build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. Then use the corresponding software to read/write the EEPROM.&lt;br /&gt;
&lt;br /&gt;
== The HMAC HDD Key ==&lt;br /&gt;
&lt;br /&gt;
The HMAC HDD Key is generated{{FIXME|reason=Stored? Derived? At factory?}} out of the first 48 bytes{{FIXME|reason=..first 48 EEPROM bytes? Encrypted / Decrypted?}}. This section has been identified clearly{{FIXME|reason=What does this mean?}}.&lt;br /&gt;
&lt;br /&gt;
== Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
Checksum2 and Checksum3 values can be calculated by running the following code snippet over the area the checksum covers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; /* The EepromCRC algorithm was obtained from the XKUtils 0.2 source released by&lt;br /&gt;
  * TeamAssembly under the GNU GPL.&lt;br /&gt;
  * Specifically, from XKCRC.cpp&lt;br /&gt;
  *&lt;br /&gt;
  * Rewritten to ANSI C by David Pye (dmp@davidmpye.dyndns.org)&lt;br /&gt;
  *&lt;br /&gt;
  * Adapted for XboxDevWiki&lt;br /&gt;
  */&lt;br /&gt;
 uint32_t EepromCRC(unsigned char *data, long dataLen) {&lt;br /&gt;
&lt;br /&gt;
         // Initialize result to zero&lt;br /&gt;
         uint8_t crc[4] = { 0x00, 0x00, 0x00, 0x00 };&lt;br /&gt;
 &lt;br /&gt;
         //Circle shift input data one byte right&lt;br /&gt;
         unsigned char* CRC_Data = (unsigned char *)malloc(dataLen + 4);&lt;br /&gt;
         memset(CRC_Data, 0x00, dataLen + 4);&lt;br /&gt;
         memcpy(CRC_Data + 0x01 , data, dataLen - 1);&lt;br /&gt;
         memcpy(CRC_Data, data + dataLen - 1, 0x01);&lt;br /&gt;
 &lt;br /&gt;
         // Calculate checksum&lt;br /&gt;
         for (unsigned int i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
                 unsigned short CRCPosVal = 0xFFFF;&lt;br /&gt;
                 for (unsigned long l = i; l &amp;lt; dataLen; l += 4) {&lt;br /&gt;
                         CRCPosVal -= *(unsigned short*)(&amp;amp;amp;CRC_Data[l]);&lt;br /&gt;
                 }&lt;br /&gt;
                 CRCPosVal &amp;amp;= 0xFF00;&lt;br /&gt;
                 crc[i] = (unsigned char) (CRCPosVal &amp;lt;&amp;lt; 8);&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
         free(CRC_Data);&lt;br /&gt;
&lt;br /&gt;
         return *(uint32_t*)&amp;amp;checksum;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Read Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
When the Xbox reads from the FACTORY_SETTINGS or the USER_SETTINGS section of the EEPROM, this algorithm is ran over the entire section accessed (including the CRC checksum mentioned above) to ensure that the data is valid. If the result of the checksum algorithm does not equal 0xFFFFFFFF, STATUS_DEVICE_DATA_ERROR is returned from the Kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;static uint32_t eeprom_section_checksum(&lt;br /&gt;
    const uint32_t* section_data,&lt;br /&gt;
    uint32_t section_data_length&lt;br /&gt;
)&lt;br /&gt;
{&lt;br /&gt;
    const uint32_t bitmask = 0xFFFFFFFF;&lt;br /&gt;
    uint64_t checksum = 0;&lt;br /&gt;
    uint32_t carry_count = 0;&lt;br /&gt;
&lt;br /&gt;
    // Process the data in 32 bit steps&lt;br /&gt;
    for(unsigned int i = 0; i &amp;lt; section_data_length / 4; i++) {&lt;br /&gt;
        checksum += *section_data;&lt;br /&gt;
        if(checksum &amp;gt; bitmask) {&lt;br /&gt;
            carry_count++;&lt;br /&gt;
            checksum &amp;amp;= bitmask;&lt;br /&gt;
        }&lt;br /&gt;
        section_data++;&lt;br /&gt;
    }&lt;br /&gt;
    checksum += carry_count;&lt;br /&gt;
    if(checksum &amp;gt; bitmask) {&lt;br /&gt;
        checksum += 1;&lt;br /&gt;
    }&lt;br /&gt;
    return (uint32_t)(checksum &amp;amp; bitmask);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://web.archive.org/web/20040604013125/http://console-dev.com:80/eeprom.htm Information about EEPROM contents]&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6728</id>
		<title>EEPROM</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=EEPROM&amp;diff=6728"/>
				<updated>2019-06-12T07:00:09Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Video settings &amp;quot;Normal&amp;quot; confirmed&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The Xbox EEPROM is a 256 byte non-volatile storage device which contains device-specific information. It is connected via I²C and located on address 0x54.&lt;br /&gt;
Parts of the EEPROM are encrypted using [[Kernel/XboxEEPROMKey]].&lt;br /&gt;
&lt;br /&gt;
== Contents ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
! Start !! End !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| 0x00&lt;br /&gt;
| 0x13&lt;br /&gt;
| HMAC_SHA1 Hash&lt;br /&gt;
|-&lt;br /&gt;
| 0x14&lt;br /&gt;
| 0x1B&lt;br /&gt;
| RC4 Encrypted Confounder ??&lt;br /&gt;
|-&lt;br /&gt;
| 0x1C&lt;br /&gt;
| 0x2B&lt;br /&gt;
| RC4 Encrypted HDD key&lt;br /&gt;
|-&lt;br /&gt;
| 0x2C&lt;br /&gt;
| 0x2F&lt;br /&gt;
| RC4 Encrypted Region code&lt;br /&gt;
* 0x00000001 = North America&lt;br /&gt;
* 0x00000002 = Japan&lt;br /&gt;
* 0x00000004 = Europe &amp;amp; Australia&lt;br /&gt;
* 0x80000000 = Manufacturing plant&lt;br /&gt;
|-&lt;br /&gt;
| 0x30&lt;br /&gt;
| 0x33&lt;br /&gt;
| Checksum2 - Checksum of next 44 (0x2C) bytes (0x34 - 0x5F)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x34&lt;br /&gt;
| 0x3F&lt;br /&gt;
| Xbox serial number - (ASCII chars 0x30 - 0x39 to match each digit in SN)&lt;br /&gt;
|-&lt;br /&gt;
| 0x40&lt;br /&gt;
| 0x45&lt;br /&gt;
| Ethernet MAC address (Microsoft Xbox - 00:50:F2:xx:xx:xx)&lt;br /&gt;
This is the MAC address of the Ethernet hardware, which has been [https://web.archive.org/web/20100617020733/http://standards.ieee.org/regauth/oui/oui_public.txt issued by the IEEE].&lt;br /&gt;
|-&lt;br /&gt;
| 0x46&lt;br /&gt;
| 0x47&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x48&lt;br /&gt;
| 0x57&lt;br /&gt;
| Online Key ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x58&lt;br /&gt;
| 0x5B&lt;br /&gt;
| Video Standard&lt;br /&gt;
* 0x00000000 = not set (INVALID)&lt;br /&gt;
* 0x00400100 = NTSC-M&lt;br /&gt;
* 0x00400200 = NTSC-J&lt;br /&gt;
* 0x00800300 = PAL-I&lt;br /&gt;
* 0x00400400 = PAL-M&lt;br /&gt;
|-&lt;br /&gt;
| 0x5C&lt;br /&gt;
| 0x5F&lt;br /&gt;
|  Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x60&lt;br /&gt;
| 0x63&lt;br /&gt;
| Checksum3 - Checksum of the next 92 (0x5C) bytes (0x64 - 0xBF)&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
| 0x64&lt;br /&gt;
| 0x67&lt;br /&gt;
| Zone Bias - Offset in # minutes to subtract from GMT time &lt;br /&gt;
(e.g., for GMT-06 Central; 6hr = 360min = 0x00000168)&lt;br /&gt;
|-&lt;br /&gt;
| 0x68&lt;br /&gt;
| 0x6B&lt;br /&gt;
| Standard Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CST\0, ACST)&lt;br /&gt;
|-&lt;br /&gt;
| 0x6C&lt;br /&gt;
| 0x6F&lt;br /&gt;
| Daylight Timezone Name: 4 characters, NULL fill remainder if shorter (e.g., CDT\0, ACDT)&lt;br /&gt;
|-&lt;br /&gt;
| 0x70&lt;br /&gt;
| 0x77&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x78&lt;br /&gt;
| 0x7B&lt;br /&gt;
| Standard Time Starts 10-05-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x7C&lt;br /&gt;
| 0x7F&lt;br /&gt;
| Daylight Savings Time Starts 04-01-00-02 (Month-Day-DayOfWeek-Hour)&lt;br /&gt;
|-&lt;br /&gt;
| 0x80&lt;br /&gt;
| 0x87&lt;br /&gt;
| Unknown Padding ?&lt;br /&gt;
|-&lt;br /&gt;
| 0x88&lt;br /&gt;
| 0x8B&lt;br /&gt;
| Standard Timezone Bias; if not DST, 0 (0x00000000)  minute time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x8C&lt;br /&gt;
| 0x8F&lt;br /&gt;
| Daylight Savings Time Bias; if DST, -60 (0xFFFFFFC4) minute  time adjust&lt;br /&gt;
|-&lt;br /&gt;
| 0x90&lt;br /&gt;
| 0x93&lt;br /&gt;
| Language ID (0 = not set)&lt;br /&gt;
* 0x00000001 = English&lt;br /&gt;
* 0x00000002 = Japanese&lt;br /&gt;
* 0x00000003 = German&lt;br /&gt;
* 0x00000004 = French&lt;br /&gt;
* 0x00000005 = Spanish&lt;br /&gt;
* 0x00000006 = Italian&lt;br /&gt;
* 0x00000007 = Korean&lt;br /&gt;
* 0x00000008 = Chinese&lt;br /&gt;
* 0x00000009 = Portuguese&lt;br /&gt;
|-&lt;br /&gt;
| 0x94&lt;br /&gt;
| 0x97&lt;br /&gt;
| Video Settings&lt;br /&gt;
&lt;br /&gt;
Offset 0x96:&lt;br /&gt;
* 0x00=Normal&lt;br /&gt;
* 0xB0=Widescreen&lt;br /&gt;
* 0xB4=Letterbox&lt;br /&gt;
|-&lt;br /&gt;
| 0x98&lt;br /&gt;
| 0x9B&lt;br /&gt;
| Audio Settings&lt;br /&gt;
|-&lt;br /&gt;
| 0x9C&lt;br /&gt;
| 0x9F&lt;br /&gt;
| Games Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000000 = Rating Pending (RP)&lt;br /&gt;
* 0x00000001 = Adults Only (AO)&lt;br /&gt;
* 0x00000002 = Mature (M)&lt;br /&gt;
* 0x00000003 = Teen (T)&lt;br /&gt;
* 0x00000004 = Everyone (E)&lt;br /&gt;
* 0x00000005 = Kids to Adults (K-A)&lt;br /&gt;
* 0x00000006 = Early Childhood (EC)&lt;br /&gt;
|-&lt;br /&gt;
| 0xA0&lt;br /&gt;
| 0xA3&lt;br /&gt;
| Parental Control Passcode; 4 button sequence (each key stored in a nibble)&lt;br /&gt;
* 0x1 = {{input-dy+}} or {{input-ly+}}&lt;br /&gt;
* 0x2 = {{input-dy-}} or {{input-ly-}}&lt;br /&gt;
* 0x3 = {{input-dx-}} or {{input-lx-}}&lt;br /&gt;
* 0x4 = {{input-dx+}} or {{input-lx+}}&lt;br /&gt;
* 0x5 = {{input-a}}&lt;br /&gt;
* 0x6 = {{input-b}}&lt;br /&gt;
* 0x7 = {{input-x}}&lt;br /&gt;
* 0x8 = {{input-y}}&lt;br /&gt;
* 0xB = {{input-lt}}&lt;br /&gt;
* 0xC = {{input-rt}}&lt;br /&gt;
* 0x0 = Disabled{{FIXME|reason=Is this 0x00000000 only, or are shorter codes possible? can a middle section be 0x00 or would that end the sequence?}}&lt;br /&gt;
&lt;br /&gt;
''Note'':&lt;br /&gt;
* A passcode 0x00001423 is D-pad directions up (0x1), right (0x4), down (0x2), left (0x3).  &lt;br /&gt;
* Pass code only uses the lower 16 bits; each button is stored as a nibble in the word.  First button in the most significant nibble and last in the least significant nibble.&lt;br /&gt;
|-&lt;br /&gt;
| 0xA4&lt;br /&gt;
| 0xA7&lt;br /&gt;
| Movies Parental Control (0 = Max rating)&lt;br /&gt;
* 0x00000001 = Adults Only (NC-17)&lt;br /&gt;
* 0x00000002 = Restricted (R)&lt;br /&gt;
* 0x00000004 = Parents Strongly Cautioned (PG-13)&lt;br /&gt;
* 0x00000005 = Parental Guidance Suggested (PG)&lt;br /&gt;
* 0x00000007 = General Audiences (G)&lt;br /&gt;
|- &lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0xAB&lt;br /&gt;
| XBOX Live IP Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xAC&lt;br /&gt;
| 0xAF&lt;br /&gt;
| XBOX Live DNS Server..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB0&lt;br /&gt;
| 0xB3&lt;br /&gt;
| XBOX Live Gateway Address..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB4&lt;br /&gt;
| 0xB7&lt;br /&gt;
| XBOX Live Subnet Mask..&lt;br /&gt;
|-&lt;br /&gt;
| 0xB8&lt;br /&gt;
| 0xBB&lt;br /&gt;
| Other XBLive settings ?&lt;br /&gt;
|-&lt;br /&gt;
| 0xBC&lt;br /&gt;
| 0xBF&lt;br /&gt;
| DVD Playback Kit Zone&lt;br /&gt;
* 0x00000000 = None&lt;br /&gt;
* 0x00000001 = Region 1&lt;br /&gt;
* ...&lt;br /&gt;
* 0x00000006 = Region 6{{FIXME|reason=We should document which regions were actually sold in stores}}&lt;br /&gt;
|-&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0xFF&lt;br /&gt;
| Unknown Codes / History ? do not change any values in this range&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note: Info in above table comes from XKUtils [https://svn.exotica.org.uk:8443/xbmc4xbox/tags/3.5.3/xbmc/xbox/XKEEPROM.h XKEEPROM.h].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;sup&amp;gt;*&amp;lt;/sup&amp;gt;Configmagic-FINAL-1.6 uses the wrong size when computing Checksum2 (40 instead of 44 bytes) and Checksum3 (96 instead of 92 bytes). Checksum2 value computed was correct only because the extra 4 bytes not used in the CRC computation were all 0's which does not change the CRC value.  However, a similiar problem with computation of Checksum3 is present. The CRC computed for v1.6 Xbox's is incorrect as the 4 extra bytes are not 0's as on earlier versions.&lt;br /&gt;
&lt;br /&gt;
== Reading/Writing the EEPROM ==&lt;br /&gt;
&lt;br /&gt;
=== Software Method ===&lt;br /&gt;
This is the easiest way to dump an Xbox EEPROM. Use your alternative dashboard to dump the EEPROM to a file and download it over FTP.&lt;br /&gt;
&lt;br /&gt;
=== Hardware Method ===&lt;br /&gt;
If you cannot dump the EEPROM using software, you can dump it using hardware. You have several options: use an I2C host adapter (see [http://dangerousprototypes.com/blog/bus-pirate-manual/ here]&lt;br /&gt;
or [https://www.totalphase.com/products/aardvark-i2cspi/ here]), build an [https://www.youtube.com/watch?v=UcK6nKyKGVQ I2C-Serial cable], or use a device like a RaspberryPi which has an I2C interface. Connect SDA/SCL/ground to the LPC pinout on the board. See [https://github.com/grimdoomer/PiPROM here] for pinout information. Then use the corresponding software to read/write the EEPROM.&lt;br /&gt;
&lt;br /&gt;
== The HMAC HDD Key ==&lt;br /&gt;
&lt;br /&gt;
The HMAC HDD Key is generated{{FIXME|reason=Stored? Derived? At factory?}} out of the first 48 bytes{{FIXME|reason=..first 48 EEPROM bytes? Encrypted / Decrypted?}}. This section has been identified clearly{{FIXME|reason=What does this mean?}}.&lt;br /&gt;
&lt;br /&gt;
== Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
Checksum2 and Checksum3 values can be calculated by running the following code snippet over the area the checksum covers:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt; /* The EepromCRC algorithm was obtained from the XKUtils 0.2 source released by&lt;br /&gt;
  * TeamAssembly under the GNU GPL.&lt;br /&gt;
  * Specifically, from XKCRC.cpp&lt;br /&gt;
  *&lt;br /&gt;
  * Rewritten to ANSI C by David Pye (dmp@davidmpye.dyndns.org)&lt;br /&gt;
  *&lt;br /&gt;
  * Adapted for XboxDevWiki&lt;br /&gt;
  */&lt;br /&gt;
 uint32_t EepromCRC(unsigned char *data, long dataLen) {&lt;br /&gt;
&lt;br /&gt;
         // Initialize result to zero&lt;br /&gt;
         uint8_t crc[4] = { 0x00, 0x00, 0x00, 0x00 };&lt;br /&gt;
 &lt;br /&gt;
         //Circle shift input data one byte right&lt;br /&gt;
         unsigned char* CRC_Data = (unsigned char *)malloc(dataLen + 4);&lt;br /&gt;
         memset(CRC_Data, 0x00, dataLen + 4);&lt;br /&gt;
         memcpy(CRC_Data + 0x01 , data, dataLen - 1);&lt;br /&gt;
         memcpy(CRC_Data, data + dataLen - 1, 0x01);&lt;br /&gt;
 &lt;br /&gt;
         // Calculate checksum&lt;br /&gt;
         for (unsigned int i = 0; i &amp;lt; 4; i++) {&lt;br /&gt;
                 unsigned short CRCPosVal = 0xFFFF;&lt;br /&gt;
                 for (unsigned long l = i; l &amp;lt; dataLen; l += 4) {&lt;br /&gt;
                         CRCPosVal -= *(unsigned short*)(&amp;amp;amp;CRC_Data[l]);&lt;br /&gt;
                 }&lt;br /&gt;
                 CRCPosVal &amp;amp;= 0xFF00;&lt;br /&gt;
                 crc[i] = (unsigned char) (CRCPosVal &amp;lt;&amp;lt; 8);&lt;br /&gt;
         }&lt;br /&gt;
&lt;br /&gt;
         free(CRC_Data);&lt;br /&gt;
&lt;br /&gt;
         return *(uint32_t*)&amp;amp;checksum;&lt;br /&gt;
 }&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Read Checksum Algorithm ==&lt;br /&gt;
&lt;br /&gt;
When the Xbox reads from the FACTORY_SETTINGS or the USER_SETTINGS section of the EEPROM, this algorithm is ran over the entire section accessed (including the CRC checksum mentioned above) to ensure that the data is valid. If the result of the checksum algorithm does not equal 0xFFFFFFFF, STATUS_DEVICE_DATA_ERROR is returned from the Kernel.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;static uint32_t eeprom_section_checksum(&lt;br /&gt;
    const uint32_t* section_data,&lt;br /&gt;
    uint32_t section_data_length&lt;br /&gt;
)&lt;br /&gt;
{&lt;br /&gt;
    const uint32_t bitmask = 0xFFFFFFFF;&lt;br /&gt;
    uint64_t checksum = 0;&lt;br /&gt;
    uint32_t carry_count = 0;&lt;br /&gt;
&lt;br /&gt;
    // Process the data in 32 bit steps&lt;br /&gt;
    for(unsigned int i = 0; i &amp;lt; section_data_length / 4; i++) {&lt;br /&gt;
        checksum += *section_data;&lt;br /&gt;
        if(checksum &amp;gt; bitmask) {&lt;br /&gt;
            carry_count++;&lt;br /&gt;
            checksum &amp;amp;= bitmask;&lt;br /&gt;
        }&lt;br /&gt;
        section_data++;&lt;br /&gt;
    }&lt;br /&gt;
    checksum += carry_count;&lt;br /&gt;
    if(checksum &amp;gt; bitmask) {&lt;br /&gt;
        checksum += 1;&lt;br /&gt;
    }&lt;br /&gt;
    return (uint32_t)(checksum &amp;amp; bitmask);&lt;br /&gt;
}&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Further Reading ==&lt;br /&gt;
&lt;br /&gt;
* [https://web.archive.org/web/20040604013125/http://console-dev.com:80/eeprom.htm Information about EEPROM contents]&lt;br /&gt;
* [https://github.com/grimdoomer/PiPROM Read/Write an original Xbox EEPROM chip with a Raspberry Pi]&lt;br /&gt;
* [https://www.youtube.com/watch?v=UcK6nKyKGVQ How To Make Xbox EEPROM Reader / Write (Video)]&lt;br /&gt;
* [https://www.youtube.com/watch?v=uzrljlHDr9w How To Extract Xbox EEPROM Easy (Video)]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=6725</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=6725"/>
				<updated>2019-06-11T12:18:11Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Added Config Sector to the listing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Hardware ==&lt;br /&gt;
&lt;br /&gt;
* [[Chihiro]]&lt;br /&gt;
* [[Xbox]]&lt;br /&gt;
&lt;br /&gt;
* [[Hardware Revisions]]&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
* [[CPU]]&lt;br /&gt;
* [[NV2A]]&lt;br /&gt;
** [[NV2A/Vertex attributes]]&lt;br /&gt;
** [[NV2A/Fixed Function Pipeline]]&lt;br /&gt;
** [[NV2A/Vertex Shader]]&lt;br /&gt;
** [[NV2A/Pixel Combiner]]&lt;br /&gt;
** [[NV2A/Surface Formats]]&lt;br /&gt;
* [[Memory]]&lt;br /&gt;
* [[Flash ROM]]&lt;br /&gt;
* [[MCPX]]&lt;br /&gt;
** [[APU]]&lt;br /&gt;
*** [[DSP]]&lt;br /&gt;
** [[ACI]]&lt;br /&gt;
** [[Network]]&lt;br /&gt;
* [[PCI]]&lt;br /&gt;
* [[SMBus]]&lt;br /&gt;
** [[EEPROM]]&lt;br /&gt;
** [[SMC]]&lt;br /&gt;
** [[Video Encoder]]&lt;br /&gt;
*** [[AV Cables]]&lt;br /&gt;
* [[DVD Drive]]&lt;br /&gt;
** [[Xbox Game Disc]]&lt;br /&gt;
* [[Hard Drive]]&lt;br /&gt;
** [[Config Sector]]&lt;br /&gt;
* [[USB]]&lt;br /&gt;
** [[Xbox Input Devices]]&lt;br /&gt;
** [[Xbox Memory Unit]]&lt;br /&gt;
** [[Xbox Live Communicator]] &amp;lt;!-- Maybe rename this to microphones later? --&amp;gt;&lt;br /&gt;
** [[Xbox DVD Movie Playback Kit]]&lt;br /&gt;
* [[Power Supply]]&lt;br /&gt;
* [[Development Kits]]&lt;br /&gt;
** [[Super I/O]]&lt;br /&gt;
** [[DVD Emulator]]&lt;br /&gt;
* [[Manufacturing Process]]&lt;br /&gt;
&lt;br /&gt;
== System Software ==&lt;br /&gt;
* [[MCPX ROM]]&lt;br /&gt;
* [[BIOS]] / [[Kernel]]&lt;br /&gt;
** [[Boot Process]]&lt;br /&gt;
** [[XBE]] (Executable file format)&lt;br /&gt;
* [[FATX]] (Filesystem)&lt;br /&gt;
* [[Xbox ADPCM]]&lt;br /&gt;
* [[Dashboard]]&lt;br /&gt;
** [[Soundtracks]]&lt;br /&gt;
* [[Exploits]]&lt;br /&gt;
&lt;br /&gt;
== Development Kits and Tools ==&lt;br /&gt;
* [https://github.com/xqemu/nxdk nxdk (New Xbox Development Kit)]&lt;br /&gt;
* [[OpenXDK]]&lt;br /&gt;
* [[Microsoft XDK]]&lt;br /&gt;
** [[Xbox Title Libraries]]&lt;br /&gt;
** [[Direct3D]]&lt;br /&gt;
** [[DirectSound]]&lt;br /&gt;
** [[System Link]]&lt;br /&gt;
** [[Xbox Live]]&lt;br /&gt;
** [[Xbox Debug Monitor]]&lt;br /&gt;
** [[Xbox Neighborhood]]&lt;br /&gt;
** [[Kernel_Debug| Xbox Kernel Debugging]]&lt;br /&gt;
&lt;br /&gt;
== Games ==&lt;br /&gt;
* [[:Category:Games|Games]]&lt;br /&gt;
* [[Engine List]]&lt;br /&gt;
&lt;br /&gt;
== Emulation ==&lt;br /&gt;
* [[Emulators]]&lt;br /&gt;
** [[XQEMU]]&lt;br /&gt;
** [[Xbox 360 Backward Compatibility]]&lt;br /&gt;
&lt;br /&gt;
== Historical Pages ==&lt;br /&gt;
(archived from the xbox-linux wiki)&lt;br /&gt;
* [[Xbox Hard Drive Locking Mechanism]]&lt;br /&gt;
* [[Xbox Savegame System]]&lt;br /&gt;
* [[Xbox Hardware Overview]]&lt;br /&gt;
* [[Xbox Hard Disk Technical_Details]]&lt;br /&gt;
* [[Xbox Hard Disk Partitioning]]&lt;br /&gt;
* [[Xbox Manufacturing Process]]&lt;br /&gt;
* [[The Hidden Boot Code of the Xbox]]&lt;br /&gt;
* [[PIC]]&lt;br /&gt;
* [[SMBus]]&lt;br /&gt;
* [[NForce]]&lt;br /&gt;
* [[17 Mistakes Microsoft Made in the Xbox Security System]]&lt;br /&gt;
* [[Porting an Operating System to the Xbox HOWTO]]&lt;br /&gt;
&lt;br /&gt;
== Other ==&lt;br /&gt;
* [[Patents]]&lt;br /&gt;
* [[Resources]]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Config_Sector&amp;diff=6724</id>
		<title>Config Sector</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Config_Sector&amp;diff=6724"/>
				<updated>2019-06-11T12:16:55Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: Created page with &amp;quot;{| class=&amp;quot;wikitable&amp;quot; !Offset !Size !Description |- |0x1020 |4 |Static IP Address |- |0x1024 |4 |Static Subnet Mask |- |0x1028 |4 |Static Default Gateway |- |0x102C |4 |Static...&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Offset&lt;br /&gt;
!Size&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1020&lt;br /&gt;
|4&lt;br /&gt;
|Static IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1024&lt;br /&gt;
|4&lt;br /&gt;
|Static Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x1028&lt;br /&gt;
|4&lt;br /&gt;
|Static Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x102C&lt;br /&gt;
|4&lt;br /&gt;
|Static Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1030&lt;br /&gt;
|4&lt;br /&gt;
|Static Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1034&lt;br /&gt;
|32&lt;br /&gt;
!(Unknown padding)&lt;br /&gt;
|-&lt;br /&gt;
|0x1054&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1058&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x105C&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x1060&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1064&lt;br /&gt;
|4&lt;br /&gt;
|Xbox Live Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1068&lt;br /&gt;
|40&lt;br /&gt;
|Xbox Live Hostname&lt;br /&gt;
|-&lt;br /&gt;
|0x1090&lt;br /&gt;
|64&lt;br /&gt;
|Xbox Live PPPOE Username&lt;br /&gt;
|-&lt;br /&gt;
|0x10D0&lt;br /&gt;
|64&lt;br /&gt;
|Xbox Live PPPOE Password&lt;br /&gt;
|-&lt;br /&gt;
|0x1110&lt;br /&gt;
|40&lt;br /&gt;
!(Unknown padding)&lt;br /&gt;
|-&lt;br /&gt;
|0x1138&lt;br /&gt;
|40&lt;br /&gt;
|Xbox Live PPPOE Service Name&lt;br /&gt;
|-&lt;br /&gt;
|0x1160&lt;br /&gt;
|12&lt;br /&gt;
!(Unknown)&lt;br /&gt;
|-&lt;br /&gt;
|0x116C&lt;br /&gt;
|4&lt;br /&gt;
|DHCP IP Address&lt;br /&gt;
|-&lt;br /&gt;
|0x1170&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Subnet Mask&lt;br /&gt;
|-&lt;br /&gt;
|0x1174&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Default Gateway&lt;br /&gt;
|-&lt;br /&gt;
|0x1178&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Primary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x117C&lt;br /&gt;
|4&lt;br /&gt;
|DHCP Secondary DNS Server&lt;br /&gt;
|-&lt;br /&gt;
|0x1180&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE IP Address (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1184&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Subnet Mask (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1188&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Gateway Address (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x118C&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Primary DNS Server (?)&lt;br /&gt;
|-&lt;br /&gt;
|0x1190&lt;br /&gt;
|4&lt;br /&gt;
|PPPOE Secondary DNS Server (?)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
* [https://archive.fo/c9s3B Xbox live (accounts, xqemu and MU) | ASSEMbler - Home of the obscure (archive.org)]&lt;/div&gt;</summary>
		<author><name>Dracc</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6571</id>
		<title>Xbox Input Devices</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_Input_Devices&amp;diff=6571"/>
				<updated>2018-10-11T13:29:57Z</updated>
		
		<summary type="html">&lt;p&gt;Dracc: &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;
=== 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;
{| 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;
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>Dracc</name></author>	</entry>

	</feed>