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

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=7423</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Main_Page&amp;diff=7423"/>
				<updated>2025-12-20T11:07:35Z</updated>
		
		<summary type="html">&lt;p&gt;Florin9doi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{:Main Page/Header}}&lt;br /&gt;
__NOTOC__&lt;br /&gt;
&lt;br /&gt;
== Models ==&lt;br /&gt;
* Retail&lt;br /&gt;
** [[Xbox]]&lt;br /&gt;
* Arcade&lt;br /&gt;
** [[Chihiro]]&lt;br /&gt;
* Developer&lt;br /&gt;
** [[Development Kits]]&lt;br /&gt;
** [[Super I/O]]&lt;br /&gt;
** [[DVD Emulator]]&lt;br /&gt;
* Prototype&lt;br /&gt;
** Xbox Prototype&lt;br /&gt;
&lt;br /&gt;
== Console Components ==&lt;br /&gt;
* [[Motherboard]]&lt;br /&gt;
** [[Hardware Revisions]]&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;
* [[Power Supply]]&lt;br /&gt;
&lt;br /&gt;
== Accessories ==&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;
* [[Xbox Cam (for Video Chat)]]&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 Live/Connection Test|Connection Test]]&lt;br /&gt;
*** [[Xbox Live/Machine Account|Machine Account]]&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;
** [[Xemu|xemu]]&lt;br /&gt;
** [[Cxbx-Reloaded]]&lt;br /&gt;
** [[XQEMU]]&lt;br /&gt;
** [[Fusion]]&lt;br /&gt;
** [[XEO3]]&lt;br /&gt;
&lt;br /&gt;
== Operating Systems ==&lt;br /&gt;
* [[Linux]]&lt;br /&gt;
* [[ReactOS]]&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;
* [[Manufacturing Process]]&lt;br /&gt;
* [[Patents]]&lt;br /&gt;
* [[Resources]]&lt;/div&gt;</summary>
		<author><name>Florin9doi</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=7384</id>
		<title>Xbox DVD Movie Playback Kit</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=7384"/>
				<updated>2025-02-09T09:19:37Z</updated>
		
		<summary type="html">&lt;p&gt;Florin9doi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Remote-and-Receiver.jpg|thumb|200px|Remote and Receiver]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The DVD Movie Playback Kit contains 2 parts: A remote and a dongle for the Xbox{{FIXME|reason=One of these parts, or both, seem to have a model number PG8012?}}.&lt;br /&gt;
&lt;br /&gt;
== Remote Control ==&lt;br /&gt;
&lt;br /&gt;
=== Infrared interface ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Missing info about light frequency, timing, possible preamble and more}}&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=The following information has been derived from http://lirc.sourceforge.net/remotes/microsoft/Xbox and all logic was extrapolated; it's entirely unconfirmed}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  uint8_t check_high; // 8 bit check&lt;br /&gt;
  uint8_t check_low__data_high; // 4 bit check, 4 bit data&lt;br /&gt;
  uint8_t data_low; // 8 bit data&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first part of the transfer consists of the negated data signal (&amp;lt;code&amp;gt;check&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The data integrity can be confirmed by XOR-ing both parts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
check = (check_high &amp;lt;&amp;lt; 4) | check_low&lt;br /&gt;
data = (data_high &amp;lt;&amp;lt; 8) | data_low&lt;br /&gt;
check ^ data = 0xFFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;check&amp;lt;/code&amp;gt;, which marks the start of the transfer{{FIXME|reason=There might be a preamble}}, always starts with 0b0101, therefore the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; always starts with 0b1010.&lt;br /&gt;
&lt;br /&gt;
== Dongle ==&lt;br /&gt;
&lt;br /&gt;
The dongle contains a ROM with an XBE which provides some functions for the DVD playback application. However, the XBE is not standalone.&lt;br /&gt;
&lt;br /&gt;
Why would they not just put this little &amp;lt; 512kiB library on the harddisk? Why another ROM which contains the program?&lt;br /&gt;
One could think it is to allow them to upgrade the application easily, but the real reason seems to be different: licensing. As the label on the back notes: &amp;quot;Made under license from Dolby Laboratories&amp;quot;. By including the software in the DVD Remote kit, they didn't have to pay the [[wikipedia:DVD Forum|DVD Forum]] (and apparently also Dolby) for every Xbox sold, but just for every DVD Remote kit sold[https://www.youtube.com/watch?v=gquAV8f7OAY&amp;amp;t=2059]. This allowed them to keep the cost of the Xbox down.&lt;br /&gt;
&lt;br /&gt;
Additionally the dongle contains an IR receiver to receive commands from the Remote control.&lt;br /&gt;
&lt;br /&gt;
=== Known versions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;!-- Version is: &amp;quot;%X.%X&amp;quot; % (version &amp;gt;&amp;gt; 8, version &amp;amp; 0xFF) --&amp;gt;&lt;br /&gt;
! Part No.      !! Manufactured in !! Version !! DVD Region !! ROM Size     !! ROM SHA1                                              !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| X08-25402     || Indonesia       || 1.1     || 2          || 229790 Bytes || &amp;lt;code&amp;gt;70d4b5f8e073b05610fba9e9617d7356196b61ff&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| X08-25402-002 || Indonesia       || 1.1     ||2           || 229790 Bytes || &amp;lt;code&amp;gt;70d4b5f8e073b05610fba9e9617d7356196b61ff&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| X08-25387     || Indonesia       ||         ||            ||              ||                                                       ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-25387-002 || Indonesia       || 1.1     || 1          || 229790 Bytes || &amp;lt;code&amp;gt;73814aa736d83d636380f5c6b1c291441b35354d&amp;lt;/code&amp;gt; || Sticker: &amp;quot;2341P&amp;quot; on PCB&lt;br /&gt;
|-&lt;br /&gt;
| X08-25597     || Indonesia       || 1.1     || 4          || 229790 Bytes || &amp;lt;code&amp;gt;1E6D7F4F526B56527447AA09EDA41FFF05665A16&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-96288-002 || Indonesia       || 1.1     || 3          || 229790 Bytes || &amp;lt;code&amp;gt;0447373BF9326DFF95808CD028ED19FACD54C759&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Protocol ===&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 001 Device 002: ID 045e:0284 Microsoft Corp. Xbox DVD Playback Kit&lt;br /&gt;
Couldn't open device, some information will be missing&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0284 Xbox DVD Playback Kit&lt;br /&gt;
  bcdDevice            0.0a&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       0x0022&lt;br /&gt;
    bNumInterfaces          2&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x00&lt;br /&gt;
      (Missing must-be-set bit!)&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower                0mA&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        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     0x0008  1x 8 bytes&lt;br /&gt;
        bInterval              16&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        1&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           0&lt;br /&gt;
      bInterfaceClass        89 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====  Infrared signals ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following information has been derived from http://lirc.sourceforge.net/remotes/microsoft/lircd.conf.xbox + own research --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When infrared signals are received from the Remote Control, they can be read using an interrupt transfer {{FIXME|reason=What interface etc?}}. Each USB payload is 6 bytes long:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  uint8_t bReportId; // always 0x00&lt;br /&gt;
  uint8_t bLength; // always 0x06&lt;br /&gt;
  uint8_t data_low;&lt;br /&gt;
  uint8_t data_high; // only lower 4 bit are used (Always 0x0A with offical Microsoft remote)&lt;br /&gt;
  // Milliseconds since last press (will clamp to 0xFFFF when no button was pressed in a long time).&lt;br /&gt;
  // A value close to 0x0040 is returned for continously holding a button.&lt;br /&gt;
  // When holding, the value often goes back and forth between 0x0040 / 0x0041.&lt;br /&gt;
  // It is unknown if the receiver / remote intentionally does this.&lt;br /&gt;
  uint8_t timer_low;&lt;br /&gt;
  uint8_t timer_high;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When holding two or more buttons at once on the remote the IR receiver stops sending interrupt transfers. The last transfer will be the first button pressed.&lt;br /&gt;
&lt;br /&gt;
The keycodes read from an official Microsoft IR remote are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align: center;&amp;quot;&lt;br /&gt;
! DVD Remote&lt;br /&gt;
! MCE Remote&lt;br /&gt;
! data_low&lt;br /&gt;
! data_high&lt;br /&gt;
|-&lt;br /&gt;
| INFO&lt;br /&gt;
| MORE&lt;br /&gt;
| 0xC3&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 9&lt;br /&gt;
| 0xC6&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 8&lt;br /&gt;
| 0xC7&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 7&lt;br /&gt;
| 0xC8&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 6&lt;br /&gt;
| 0xC9&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 5&lt;br /&gt;
| 0xCA&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 4&lt;br /&gt;
| 0xCB&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 3&lt;br /&gt;
| 0xCC&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 2&lt;br /&gt;
| 0xCD&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 1&lt;br /&gt;
| 0xCE&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | 0&lt;br /&gt;
| 0xCF&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| SELECT&lt;br /&gt;
| OK / ENTER&lt;br /&gt;
| 0x0B&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | UP&lt;br /&gt;
| 0xA6&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | DOWN&lt;br /&gt;
| 0xA7&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | RIGHT&lt;br /&gt;
| 0xA8&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | LEFT&lt;br /&gt;
| 0xA9&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | STOP&lt;br /&gt;
| 0xE0&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| REVERSE&lt;br /&gt;
| REW&lt;br /&gt;
| 0xE2&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| FORWARD&lt;br /&gt;
| FWD&lt;br /&gt;
| 0xE3&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| TITLE&lt;br /&gt;
| GUIDE&lt;br /&gt;
| 0xE5&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | PAUSE&lt;br /&gt;
| 0xE6&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | PLAY&lt;br /&gt;
| 0xEA&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| DISPLAY&lt;br /&gt;
| XBOX&lt;br /&gt;
| 0xD5&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| colspan=2 | BACK&lt;br /&gt;
| 0xD8&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| SKIP-&lt;br /&gt;
| REPLAY&lt;br /&gt;
| 0xDD&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| SKIP+&lt;br /&gt;
| SKIP&lt;br /&gt;
| 0xDF&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
| MENU&lt;br /&gt;
| DVD MENU&lt;br /&gt;
| 0xF7&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| POWER&lt;br /&gt;
| 0xC4&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| My TV&lt;br /&gt;
| 0x31&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| My Music&lt;br /&gt;
| 0x09&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| My Pictures&lt;br /&gt;
| 0x06&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| My Videos&lt;br /&gt;
| 0x07&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| RECORD&lt;br /&gt;
| 0xE8&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| START&lt;br /&gt;
| 0x25&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| VOL UP&lt;br /&gt;
| 0xD0&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| VOL DOWN&lt;br /&gt;
| 0xD1&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| MUTE&lt;br /&gt;
| 0xC0&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| CH UP&lt;br /&gt;
| 0xD2&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| CH DOWN&lt;br /&gt;
| 0xD3&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| RECORDED TV&lt;br /&gt;
| 0x65&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| LIVE TV&lt;br /&gt;
| 0x18&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| STAR&lt;br /&gt;
| 0x28&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| POUND&lt;br /&gt;
| 0x29&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|&lt;br /&gt;
| CLEAR&lt;br /&gt;
| 0xF9&lt;br /&gt;
| 0x0A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====  Firmware download ====&lt;br /&gt;
&lt;br /&gt;
See https://github.com/XboxDev/dump-dvd-kit (PC Python based) or https://github.com/Ryzee119/Dongle_Dumper (Xbox homebrew).&lt;br /&gt;
&lt;br /&gt;
The firmware locatedn on the DVD dongle is accessed over USB by a vendor specific control request. &lt;br /&gt;
&lt;br /&gt;
The setup packet for the control transfer should have the below format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;!-- Version is: &amp;quot;%X.%X&amp;quot; % (version &amp;gt;&amp;gt; 8, version &amp;amp; 0xFF) --&amp;gt;&lt;br /&gt;
! Field         !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| bmRequestType || 0xC1                 || Device-to-host / Vendor / Interface.&lt;br /&gt;
|-&lt;br /&gt;
| bRequest      || 1 or 2               || 1 = Request ROM info, 2 = Request ROM data.&lt;br /&gt;
|-&lt;br /&gt;
| wValue        || What 1024 byte chunk || 0 = the first 1024 bytes, 1 = Second 1024 bytes etc.&lt;br /&gt;
|-&lt;br /&gt;
| wIndex        || 1 (Normally)         || Should point to the bInterfaceNumber that has a bInterfaceClass of 0x59. That happens to be 1 on most DVD Playback dongles.&lt;br /&gt;
|-&lt;br /&gt;
| wLength       || Up to 1024           || Number of bytes to read from chunk set by wValue. Note the max value here is 1024. To read the next chunk, issue another setup packet with a new wValue.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
bRequest = 1 can be used to obtain the header of the ROM. This is a 6 byte header in the form:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct &lt;br /&gt;
{&lt;br /&gt;
    uint16_t version;  //The version of the embedded ROM&lt;br /&gt;
    uint32_t rom_size; //In bytes&lt;br /&gt;
} xremote_info_t;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rom size can then be used with bRequest = 2 to obtain the entire ROM contents. It should be noted that the ROM header obtained with bRequest = 2 is also present at the first 6 bytes of the full ROM image. So it is possible to obtain the ROM header info with bRequest = 2 requesting the first 6 bytes.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
&lt;br /&gt;
Different versions of the dongle seem to use different hardware internally.&lt;br /&gt;
&lt;br /&gt;
==== X08-25387-002 (PCB: &amp;quot;X01469-100&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
* U1 ATMEL AT43USB352M-AC{{FIXME|reason=Can't find datasheet.. only for AT43USB351M-AC and AT43USB353M-AC; both of which have various differences}}&lt;br /&gt;
* U2 TSOP-1556&lt;br /&gt;
* U3 X393121C{{FIXME|reason=What is this? a ROM? how large?}}&lt;br /&gt;
&lt;br /&gt;
==== X08-25387 (PCB: &amp;quot;IR DONGLE REV B&amp;quot;) ====&lt;br /&gt;
[[File:X08-25387-Sticker.jpeg|thumb|200px|X08-25387 Rev B Sticker]]&lt;br /&gt;
[[File:IR_DONGLEREVB-FRNT.jpeg|thumb|200px|Front PCB of X08-25387]]&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Didn't get rear components photographed yet}}73814aa736d83d636380f5c6b1c291441b35354d&lt;br /&gt;
&lt;br /&gt;
==== Unknown version (PCB: &amp;quot;REV C.&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-front.jpg|thumb|200px|Frontside]]&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-back.jpg|thumb|200px|Backside]]&lt;br /&gt;
&lt;br /&gt;
* U1 92163 [https://web.archive.org/web/20100617020513/http://www.st.com/ STMicroelectronics] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.st.com/stonline/books/pdf/docs/5521.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This big square IC on the backside is the microcontroller. STMicroelectronics describes it as &amp;quot;8/16-BIT FULL SPEED USB MCU FOR COMPOSITE DEVICES WITH 16 ENDPOINTS, 20K ROM, 2K RAM, I 2 C, SCI, &amp;amp;amp; MFT&amp;quot;. Since the program resides inside in its ROM, it is almost impossible to extract the program from inside.&lt;br /&gt;
&lt;br /&gt;
* U2 TSOP-1556 [https://web.archive.org/web/20100617020513/http://www.vishay.com/ Vishay Telefunken] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.vishay.com/docs/82029/82029.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This black box on the middle of the frontside is an integrated IR receiver. It filters the received infrared pulses and demodulates them. Its filter frequency is 56kHz, while 38kHz is standard for most remote controls. Therefore, chances are few other remotes will work with the Xbox receiver.&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10 [https://web.archive.org/web/20100617020513/http://www.macronix.com/ Macronix] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.macronix.com/QuickPlace/hq/PageLibrary48256D9D002BA613.nsf/h_6057FA6682A90C3948256DCE0052D2D3/67DCB124F1BE4E7D48256DC50039AC31/$File/MX23C4000-4.2.pdf/?OpenElement Datasheet]&amp;amp;gt;&lt;br /&gt;
: This wide TSOP IC on the frontside could be the most interesting of all. It is a 4MBit mask ROM.&lt;br /&gt;
&lt;br /&gt;
* U4 HC574 [https://web.archive.org/web/20100617020513/http://www.ti.com/ Texas Instruments] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://focus.ti.com/lit/ds/symlink/sn74hc574.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This 20-pin standard logic IC is an octal D-flipflop, which splits the databus from the 92163 to 8 adress bits. This technique is very well known from the 8051 and other microcontrollers.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://ibb.co/album/cmr5rF Pictures of X08-25387-002 including internals]&lt;br /&gt;
* [https://web.archive.org/web/20100617020513/http://www.xbox-linux.org/wiki/DVD-IR_Internals DVD-IR Internals]&lt;br /&gt;
* [https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/817041 Microsoft KB817041 document &amp;quot;Xbox: Description of the DVD Movie Playback Kit&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Florin9doi</name></author>	</entry>

	<entry>
		<id>https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=7383</id>
		<title>Xbox DVD Movie Playback Kit</title>
		<link rel="alternate" type="text/html" href="https://xboxdevwiki.net/index.php?title=Xbox_DVD_Movie_Playback_Kit&amp;diff=7383"/>
				<updated>2025-02-09T08:59:23Z</updated>
		
		<summary type="html">&lt;p&gt;Florin9doi: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:Xbox-Remote-and-Receiver.jpg|thumb|200px|Remote and Receiver]]&lt;br /&gt;
==Introduction==&lt;br /&gt;
&lt;br /&gt;
The DVD Movie Playback Kit contains 2 parts: A remote and a dongle for the Xbox{{FIXME|reason=One of these parts, or both, seem to have a model number PG8012?}}.&lt;br /&gt;
&lt;br /&gt;
== Remote Control ==&lt;br /&gt;
&lt;br /&gt;
=== Infrared interface ===&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Missing info about light frequency, timing, possible preamble and more}}&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=The following information has been derived from http://lirc.sourceforge.net/remotes/microsoft/Xbox and all logic was extrapolated; it's entirely unconfirmed}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  uint8_t check_high; // 8 bit check&lt;br /&gt;
  uint8_t check_low__data_high; // 4 bit check, 4 bit data&lt;br /&gt;
  uint8_t data_low; // 8 bit data&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The first part of the transfer consists of the negated data signal (&amp;lt;code&amp;gt;check&amp;lt;/code&amp;gt;).&lt;br /&gt;
&lt;br /&gt;
The data integrity can be confirmed by XOR-ing both parts:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
check = (check_high &amp;lt;&amp;lt; 4) | check_low&lt;br /&gt;
data = (data_high &amp;lt;&amp;lt; 8) | data_low&lt;br /&gt;
check ^ data = 0xFFF&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;lt;code&amp;gt;check&amp;lt;/code&amp;gt;, which marks the start of the transfer{{FIXME|reason=There might be a preamble}}, always starts with 0b0101, therefore the &amp;lt;code&amp;gt;data&amp;lt;/code&amp;gt; always starts with 0b1010.&lt;br /&gt;
&lt;br /&gt;
== Dongle ==&lt;br /&gt;
&lt;br /&gt;
The dongle contains a ROM with an XBE which provides some functions for the DVD playback application. However, the XBE is not standalone.&lt;br /&gt;
&lt;br /&gt;
Why would they not just put this little &amp;lt; 512kiB library on the harddisk? Why another ROM which contains the program?&lt;br /&gt;
One could think it is to allow them to upgrade the application easily, but the real reason seems to be different: licensing. As the label on the back notes: &amp;quot;Made under license from Dolby Laboratories&amp;quot;. By including the software in the DVD Remote kit, they didn't have to pay the [[wikipedia:DVD Forum|DVD Forum]] (and apparently also Dolby) for every Xbox sold, but just for every DVD Remote kit sold[https://www.youtube.com/watch?v=gquAV8f7OAY&amp;amp;t=2059]. This allowed them to keep the cost of the Xbox down.&lt;br /&gt;
&lt;br /&gt;
Additionally the dongle contains an IR receiver to receive commands from the Remote control.&lt;br /&gt;
&lt;br /&gt;
=== Known versions ===&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;!-- Version is: &amp;quot;%X.%X&amp;quot; % (version &amp;gt;&amp;gt; 8, version &amp;amp; 0xFF) --&amp;gt;&lt;br /&gt;
! Part No.      !! Manufactured in !! Version !! DVD Region !! ROM Size     !! ROM SHA1                                              !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| X08-25402     || Indonesia       || 1.1     || 2          || 229790 Bytes || &amp;lt;code&amp;gt;70d4b5f8e073b05610fba9e9617d7356196b61ff&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| X08-25402-002 || Indonesia       || 1.1     ||2           || 229790 Bytes || &amp;lt;code&amp;gt;70d4b5f8e073b05610fba9e9617d7356196b61ff&amp;lt;/code&amp;gt; || &lt;br /&gt;
|-&lt;br /&gt;
| X08-25387     || Indonesia       ||         ||            ||              ||                                                       ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-25387-002 || Indonesia       || 1.1     || 1          || 229790 Bytes || &amp;lt;code&amp;gt;73814aa736d83d636380f5c6b1c291441b35354d&amp;lt;/code&amp;gt; || Sticker: &amp;quot;2341P&amp;quot; on PCB&lt;br /&gt;
|-&lt;br /&gt;
| X08-25597     || Indonesia       || 1.1     || 4          || 229790 Bytes || &amp;lt;code&amp;gt;1E6D7F4F526B56527447AA09EDA41FFF05665A16&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|-&lt;br /&gt;
| X08-96288-002 || Indonesia       || 1.1     || 3          || 229790 Bytes || &amp;lt;code&amp;gt;0447373BF9326DFF95808CD028ED19FACD54C759&amp;lt;/code&amp;gt; ||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== USB Protocol ===&lt;br /&gt;
&lt;br /&gt;
==== USB Descriptor ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Bus 001 Device 002: ID 045e:0284 Microsoft Corp. Xbox DVD Playback Kit&lt;br /&gt;
Couldn't open device, some information will be missing&lt;br /&gt;
Device Descriptor:&lt;br /&gt;
  bLength                18&lt;br /&gt;
  bDescriptorType         1&lt;br /&gt;
  bcdUSB               1.10&lt;br /&gt;
  bDeviceClass            0 &lt;br /&gt;
  bDeviceSubClass         0 &lt;br /&gt;
  bDeviceProtocol         0 &lt;br /&gt;
  bMaxPacketSize0        64&lt;br /&gt;
  idVendor           0x045e Microsoft Corp.&lt;br /&gt;
  idProduct          0x0284 Xbox DVD Playback Kit&lt;br /&gt;
  bcdDevice            0.0a&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       0x0022&lt;br /&gt;
    bNumInterfaces          2&lt;br /&gt;
    bConfigurationValue     1&lt;br /&gt;
    iConfiguration          0 &lt;br /&gt;
    bmAttributes         0x00&lt;br /&gt;
      (Missing must-be-set bit!)&lt;br /&gt;
      (Bus Powered)&lt;br /&gt;
    MaxPower                0mA&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        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     0x0008  1x 8 bytes&lt;br /&gt;
        bInterval              16&lt;br /&gt;
    Interface Descriptor:&lt;br /&gt;
      bLength                 9&lt;br /&gt;
      bDescriptorType         4&lt;br /&gt;
      bInterfaceNumber        1&lt;br /&gt;
      bAlternateSetting       0&lt;br /&gt;
      bNumEndpoints           0&lt;br /&gt;
      bInterfaceClass        89 &lt;br /&gt;
      bInterfaceSubClass      0 &lt;br /&gt;
      bInterfaceProtocol      0 &lt;br /&gt;
      iInterface              0 &lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====  Infrared signals ====&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!-- The following information has been derived from http://lirc.sourceforge.net/remotes/microsoft/lircd.conf.xbox + own research --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When infrared signals are received from the Remote Control, they can be read using an interrupt transfer {{FIXME|reason=What interface etc?}}. Each USB payload is 6 bytes long:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
struct {&lt;br /&gt;
  uint8_t bReportId; // always 0x00&lt;br /&gt;
  uint8_t bLength; // always 0x06&lt;br /&gt;
  uint8_t data_low;&lt;br /&gt;
  uint8_t data_high; // only lower 4 bit are used (Always 0x0A with offical Microsoft remote)&lt;br /&gt;
  // Milliseconds since last press (will clamp to 0xFFFF when no button was pressed in a long time).&lt;br /&gt;
  // A value close to 0x0040 is returned for continously holding a button.&lt;br /&gt;
  // When holding, the value often goes back and forth between 0x0040 / 0x0041.&lt;br /&gt;
  // It is unknown if the receiver / remote intentionally does this.&lt;br /&gt;
  uint8_t timer_low;&lt;br /&gt;
  uint8_t timer_high;&lt;br /&gt;
};&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
When holding two or more buttons at once on the remote the IR receiver stops sending interrupt transfers. The last transfer will be the first button pressed.&lt;br /&gt;
&lt;br /&gt;
The keycodes read from an official Microsoft IR remote are as follows:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Button&lt;br /&gt;
!data_low&lt;br /&gt;
!data_high&lt;br /&gt;
|-&lt;br /&gt;
|INFO&lt;br /&gt;
|0xC3&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|9&lt;br /&gt;
|0xC6&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|8&lt;br /&gt;
|0xC7&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|7&lt;br /&gt;
|0xC8&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|6&lt;br /&gt;
|0xC9&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|5&lt;br /&gt;
|0xCA&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|4&lt;br /&gt;
|0xCB&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|3&lt;br /&gt;
|0xCC&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|2&lt;br /&gt;
|0xCD&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|1&lt;br /&gt;
|0xCE&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|0&lt;br /&gt;
|0xCF&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|SELECT&lt;br /&gt;
|0x0B&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|UP&lt;br /&gt;
|0xA6&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|DOWN&lt;br /&gt;
|0xA7&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|RIGHT&lt;br /&gt;
|0xA8&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|LEFT&lt;br /&gt;
|0xA9&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|STOP&lt;br /&gt;
|0xE0&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|REVERSE&lt;br /&gt;
|0xE2&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|FORWARD&lt;br /&gt;
|0xE3&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|TITLE&lt;br /&gt;
|0xE5&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|PAUSE&lt;br /&gt;
|0xE6&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|PLAY&lt;br /&gt;
|0xEA&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|POWER&lt;br /&gt;
|0xD5&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|BACK&lt;br /&gt;
|0xD8&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|SKIP-&lt;br /&gt;
|0xDD&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|SKIP+&lt;br /&gt;
|0xDF&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|MENU&lt;br /&gt;
|0xF7&lt;br /&gt;
|0x0A&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====  Firmware download ====&lt;br /&gt;
&lt;br /&gt;
See https://github.com/XboxDev/dump-dvd-kit (PC Python based) or https://github.com/Ryzee119/Dongle_Dumper (Xbox homebrew).&lt;br /&gt;
&lt;br /&gt;
The firmware locatedn on the DVD dongle is accessed over USB by a vendor specific control request. &lt;br /&gt;
&lt;br /&gt;
The setup packet for the control transfer should have the below format:&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &amp;lt;!-- Version is: &amp;quot;%X.%X&amp;quot; % (version &amp;gt;&amp;gt; 8, version &amp;amp; 0xFF) --&amp;gt;&lt;br /&gt;
! Field         !! Value !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| bmRequestType || 0xC1                 || Device-to-host / Vendor / Interface.&lt;br /&gt;
|-&lt;br /&gt;
| bRequest      || 1 or 2               || 1 = Request ROM info, 2 = Request ROM data.&lt;br /&gt;
|-&lt;br /&gt;
| wValue        || What 1024 byte chunk || 0 = the first 1024 bytes, 1 = Second 1024 bytes etc.&lt;br /&gt;
|-&lt;br /&gt;
| wIndex        || 1 (Normally)         || Should point to the bInterfaceNumber that has a bInterfaceClass of 0x59. That happens to be 1 on most DVD Playback dongles.&lt;br /&gt;
|-&lt;br /&gt;
| wLength       || Up to 1024           || Number of bytes to read from chunk set by wValue. Note the max value here is 1024. To read the next chunk, issue another setup packet with a new wValue.&lt;br /&gt;
|-&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
bRequest = 1 can be used to obtain the header of the ROM. This is a 6 byte header in the form:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
typedef struct &lt;br /&gt;
{&lt;br /&gt;
    uint16_t version;  //The version of the embedded ROM&lt;br /&gt;
    uint32_t rom_size; //In bytes&lt;br /&gt;
} xremote_info_t;&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The rom size can then be used with bRequest = 2 to obtain the entire ROM contents. It should be noted that the ROM header obtained with bRequest = 2 is also present at the first 6 bytes of the full ROM image. So it is possible to obtain the ROM header info with bRequest = 2 requesting the first 6 bytes.&lt;br /&gt;
&lt;br /&gt;
=== Components ===&lt;br /&gt;
&lt;br /&gt;
Different versions of the dongle seem to use different hardware internally.&lt;br /&gt;
&lt;br /&gt;
==== X08-25387-002 (PCB: &amp;quot;X01469-100&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
* U1 ATMEL AT43USB352M-AC{{FIXME|reason=Can't find datasheet.. only for AT43USB351M-AC and AT43USB353M-AC; both of which have various differences}}&lt;br /&gt;
* U2 TSOP-1556&lt;br /&gt;
* U3 X393121C{{FIXME|reason=What is this? a ROM? how large?}}&lt;br /&gt;
&lt;br /&gt;
==== X08-25387 (PCB: &amp;quot;IR DONGLE REV B&amp;quot;) ====&lt;br /&gt;
[[File:X08-25387-Sticker.jpeg|thumb|200px|X08-25387 Rev B Sticker]]&lt;br /&gt;
[[File:IR_DONGLEREVB-FRNT.jpeg|thumb|200px|Front PCB of X08-25387]]&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10&lt;br /&gt;
&lt;br /&gt;
{{FIXME|reason=Didn't get rear components photographed yet}}73814aa736d83d636380f5c6b1c291441b35354d&lt;br /&gt;
&lt;br /&gt;
==== Unknown version (PCB: &amp;quot;REV C.&amp;quot;) ====&lt;br /&gt;
&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-front.jpg|thumb|200px|Frontside]]&lt;br /&gt;
[[File:Xbox-linux-dvd-dongle-back.jpg|thumb|200px|Backside]]&lt;br /&gt;
&lt;br /&gt;
* U1 92163 [https://web.archive.org/web/20100617020513/http://www.st.com/ STMicroelectronics] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.st.com/stonline/books/pdf/docs/5521.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This big square IC on the backside is the microcontroller. STMicroelectronics describes it as &amp;quot;8/16-BIT FULL SPEED USB MCU FOR COMPOSITE DEVICES WITH 16 ENDPOINTS, 20K ROM, 2K RAM, I 2 C, SCI, &amp;amp;amp; MFT&amp;quot;. Since the program resides inside in its ROM, it is almost impossible to extract the program from inside.&lt;br /&gt;
&lt;br /&gt;
* U2 TSOP-1556 [https://web.archive.org/web/20100617020513/http://www.vishay.com/ Vishay Telefunken] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.vishay.com/docs/82029/82029.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This black box on the middle of the frontside is an integrated IR receiver. It filters the received infrared pulses and demodulates them. Its filter frequency is 56kHz, while 38kHz is standard for most remote controls. Therefore, chances are few other remotes will work with the Xbox receiver.&lt;br /&gt;
&lt;br /&gt;
* U3 MX23C4000TC-10 [https://web.archive.org/web/20100617020513/http://www.macronix.com/ Macronix] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://www.macronix.com/QuickPlace/hq/PageLibrary48256D9D002BA613.nsf/h_6057FA6682A90C3948256DCE0052D2D3/67DCB124F1BE4E7D48256DC50039AC31/$File/MX23C4000-4.2.pdf/?OpenElement Datasheet]&amp;amp;gt;&lt;br /&gt;
: This wide TSOP IC on the frontside could be the most interesting of all. It is a 4MBit mask ROM.&lt;br /&gt;
&lt;br /&gt;
* U4 HC574 [https://web.archive.org/web/20100617020513/http://www.ti.com/ Texas Instruments] &amp;amp;lt;[https://web.archive.org/web/20100617020513/http://focus.ti.com/lit/ds/symlink/sn74hc574.pdf Datasheet]&amp;amp;gt;&lt;br /&gt;
: This 20-pin standard logic IC is an octal D-flipflop, which splits the databus from the 92163 to 8 adress bits. This technique is very well known from the 8051 and other microcontrollers.&lt;br /&gt;
&lt;br /&gt;
== References ==&lt;br /&gt;
&lt;br /&gt;
* [https://ibb.co/album/cmr5rF Pictures of X08-25387-002 including internals]&lt;br /&gt;
* [https://web.archive.org/web/20100617020513/http://www.xbox-linux.org/wiki/DVD-IR_Internals DVD-IR Internals]&lt;br /&gt;
* [https://www.betaarchive.com/wiki/index.php/Microsoft_KB_Archive/817041 Microsoft KB817041 document &amp;quot;Xbox: Description of the DVD Movie Playback Kit&amp;quot;]&lt;/div&gt;</summary>
		<author><name>Florin9doi</name></author>	</entry>

	</feed>