Difference between revisions of "USB"

From xboxdevwiki
Jump to: navigation, search
m (Videochat - Xbox Cam)
(Port Numbering: reword and fix error)
 
(15 intermediate revisions by the same user not shown)
Line 1: Line 1:
== Videochat - Xbox Cam ==
+
== USB Host Controllers ==
Videochat was released June 2004 in Japan and is a Xbox live enabled/required video chat program with a camera called "Xbox cam" that allowed users to voice and video chat with fellow Xbox videochat users. an active live subscription apear to be required. up to 5 users can videochat with eachother.  
+
Xbox hardware contains two OHCI USB Host controllers within the MCPX southbridge. The two controllers are designated USB0 and USB1.
 +
On retail consoles USB0 is connected to the 4 front panel game controller ports. Although USB1 is available, it is not enabled in retail titles and it is not mapped out of the MCPX, so it is difficult to use in homebrew.
  
"The package includes a camera, a 12-month subscription to Xbox Live, an Xbox Live Voice Communicator, Video Chat Disk with software needed to make it all work, and an Xbox Live Starter Kit Disk. The Xbox Video Chat provides for voice alteration and comes with 40 preinstalled background music tracks. It includes a function to turn the TV screen into a mirror temporarily, so players can groom themselves before joining a conversation."
+
The USB controllers are configured and accessed over MMIO. See https://xboxdevwiki.net/Memory. The memory structure follows the standard OHCI specification (OHCI Spec Table 7-1).
[http://theinspirationroom.com/daily/2005/xbox-video-chat/ The Inspiration Room - Xbox Live Video Chat in Japan]
 
  
* Dvd mediaset number: X10-98754
+
* USB0 is on PCI Bus 0, device 2, function 0 and is connected to IRQ1.
* Xbox cam: X10-71835
+
* USB1 is on PCI Bus 0, device 3, function 0 and is connected to IRQ9.
  
=== Sources ===
+
OHCI supports USB devices up to USB1.1 12Mbit/s. OHCI also supports Low Speed USB (1.5MBit/s) however it appears that the retail XDK host stack does support Low Speed devices.
  
*[https://imgur.com/a/zbCzl Borman ptoponline.com photos, he forgot he took the pictures]
+
Xbox hardware has the following specific OHCI register values set by the system firmware that may differ from the standard (Obtained from a Retail v1.6 PAL Xbox):
*[http://www.eurogamer.net/articles/ss_videochat_x eurogamer photos]
 
*[https://www.youtube.com/watch?v=__6hxTzc8YY Videochat trailer on Xbox-Ism Disk2 TGS 2004]
 
  
== Notes ==
+
<pre>
 +
USB0:
 +
HcRevision:                    0x10
 +
HcRhDescriptorA:              0x01001204
 +
    NumberDownstreamPorts:    4 (Four downstream ports)
 +
    PowerSwitchingMode:        0 (All ports are powered at the same time)
 +
    NoPowerSwitching:          1 (Ports are always powered on when the HC is powered on)   
 +
    DeviceType:                0 (Not a compound device - always 0 for Roothubs)
 +
    OverCurrentProtectionMode: 0 (Over-current status is reported collectively for all downstream ports)
 +
    NoOverCurrentProtection:  1 (No overcurrent protection supported)
 +
    PowerOnToPowerGoodTime:    1 (2ms Power on to good time)
 +
HcRhDescriptorB:
 +
    DeviceRemovable:          0 (Device not removable)
 +
    PortPowerControlMask:      0 (Power Control Mask not set)
 +
</pre>
 +
<pre>
 +
USB1:
 +
HcRevision:                    0x10
 +
HcRhDescriptorA:              0x01000202
 +
    NumberDownstreamPorts:    2 (Two downstream ports)
 +
    PowerSwitchingMode:        0 (All ports are powered at the same time)
 +
    NoPowerSwitching:          1 (Ports are always powered on when the HC is powered on) 
 +
    DeviceType:                0 (Not a compound device - always 0 for Roothubs)
 +
    OverCurrentProtectionMode: 0 (Over-current status is reported collectively for all downstream ports)
 +
    NoOverCurrentProtection:  0 (Over-current status is reported collectively for all downstream ports)
 +
    PowerOnToPowerGoodTime:    1 (2ms Power on to good time)
 +
HcRhDescriptorB:
 +
    DeviceRemovable:          0 (Device not removable)
 +
    PortPowerControlMask:      0 (Power Control Mask not set)
 +
</pre>
  
* http://euc.jp/periphs/xbox-controller.en.html
+
== V1.0 Xboxes ==
 +
V1.0 Xbox consoles differ in that they contain an internal 4 Port USB Daughterboard (https://xboxdevwiki.net/Motherboard#USB_Daughterboard). The daughterboard is connected to Port 1 of the OHCI Root Hub. The 4 downstream ports of the daughterboard are then fed to the 4 front panel game controller ports. In this instance Ports 2,3 and 4 on the OHCI Root Hub are not connected.
 +
 
 +
Xbox software uses a kernel export to determine which ports to use when looking for gamecontrollers. Bit 0 of export variable XboxHardwareInfo determines whether the daughterboard is present. If set, the daughterboard is present.
 +
 
 +
== Port Numbering ==
 +
The front gamecontroller ports are not connected sequentially to the OHCI Root Hub ports or the Daughterboard. The following port mapping applies to all Xbox revisions:
 +
<pre>
 +
Game controller Port 1,2,3,4 are connected to USB hardware port 3,4,1,2 respectively.
 +
</pre>

Latest revision as of 21:14, 11 November 2022

USB Host Controllers

Xbox hardware contains two OHCI USB Host controllers within the MCPX southbridge. The two controllers are designated USB0 and USB1. On retail consoles USB0 is connected to the 4 front panel game controller ports. Although USB1 is available, it is not enabled in retail titles and it is not mapped out of the MCPX, so it is difficult to use in homebrew.

The USB controllers are configured and accessed over MMIO. See https://xboxdevwiki.net/Memory. The memory structure follows the standard OHCI specification (OHCI Spec Table 7-1).

  • USB0 is on PCI Bus 0, device 2, function 0 and is connected to IRQ1.
  • USB1 is on PCI Bus 0, device 3, function 0 and is connected to IRQ9.

OHCI supports USB devices up to USB1.1 12Mbit/s. OHCI also supports Low Speed USB (1.5MBit/s) however it appears that the retail XDK host stack does support Low Speed devices.

Xbox hardware has the following specific OHCI register values set by the system firmware that may differ from the standard (Obtained from a Retail v1.6 PAL Xbox):

USB0:
HcRevision:                    0x10
HcRhDescriptorA:               0x01001204
    NumberDownstreamPorts:     4 (Four downstream ports)
    PowerSwitchingMode:        0 (All ports are powered at the same time)
    NoPowerSwitching:          1 (Ports are always powered on when the HC is powered on)    
    DeviceType:                0 (Not a compound device - always 0 for Roothubs) 
    OverCurrentProtectionMode: 0 (Over-current status is reported collectively for all downstream ports)
    NoOverCurrentProtection:   1 (No overcurrent protection supported)
    PowerOnToPowerGoodTime:    1 (2ms Power on to good time)
HcRhDescriptorB:
    DeviceRemovable:           0 (Device not removable)
    PortPowerControlMask:      0 (Power Control Mask not set) 
USB1:
HcRevision:                    0x10
HcRhDescriptorA:               0x01000202
    NumberDownstreamPorts:     2 (Two downstream ports)
    PowerSwitchingMode:        0 (All ports are powered at the same time)
    NoPowerSwitching:          1 (Ports are always powered on when the HC is powered on)  
    DeviceType:                0 (Not a compound device - always 0 for Roothubs) 
    OverCurrentProtectionMode: 0 (Over-current status is reported collectively for all downstream ports)
    NoOverCurrentProtection:   0 (Over-current status is reported collectively for all downstream ports)
    PowerOnToPowerGoodTime:    1 (2ms Power on to good time)
HcRhDescriptorB:
    DeviceRemovable:           0 (Device not removable)
    PortPowerControlMask:      0 (Power Control Mask not set) 

V1.0 Xboxes

V1.0 Xbox consoles differ in that they contain an internal 4 Port USB Daughterboard (https://xboxdevwiki.net/Motherboard#USB_Daughterboard). The daughterboard is connected to Port 1 of the OHCI Root Hub. The 4 downstream ports of the daughterboard are then fed to the 4 front panel game controller ports. In this instance Ports 2,3 and 4 on the OHCI Root Hub are not connected.

Xbox software uses a kernel export to determine which ports to use when looking for gamecontrollers. Bit 0 of export variable XboxHardwareInfo determines whether the daughterboard is present. If set, the daughterboard is present.

Port Numbering

The front gamecontroller ports are not connected sequentially to the OHCI Root Hub ports or the Daughterboard. The following port mapping applies to all Xbox revisions:

Game controller Port 1,2,3,4 are connected to USB hardware port 3,4,1,2 respectively.