PlayStation 4 Camera: Difference between revisions
m (wikify) |
m (→USB: wikify) |
||
Line 144: | Line 144: | ||
| 17 || bNumConfigurations || 1 || Number: 0x01 || Number of possible configurations | | 17 || bNumConfigurations || 1 || Number: 0x01 || Number of possible configurations | ||
|- | |- | ||
|} | |||
===Configuration Descriptor=== | |||
{| class="wikitable" | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Configuration Descriptor | |||
|- | |||
! Offset | |||
! Field | |||
! Size | |||
! Value | |||
! Description | |||
|- | |||
| 0 || bLength || 1 || 0x09 || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x02 || CONFIGURATION descriptor type (= 2) | |||
|- | |||
| 2 || wTotalLength || 2 || 0x002C || Total number of bytes (44) in this descriptor and all the following descriptors (9+9+ + +) | |||
|- | |||
| 4 || bNumInterfaces || 1 || 0x01 || Number of interfaces supported by this configuration | |||
|- | |||
| 5 || bConfigurationValue || 1 || 0x01 || Value used by Set Configuration to select this configuration | |||
|- | |||
| 6 || iConfiguration || 1 || 0x00 || Index of string descriptor describing configuration - set to 0 if no string | |||
|- | |||
| 7 || bmAttributes || 1 || 0x80 || Powered by the bus (10000000) | |||
<small> | |||
specify power parameters for the configuration : | |||
<small> | |||
{| cellpadding="4" style="border-collapse: collapse; text-align: center;" | |||
|- | |||
| colspan="6" |<code>''8-digit bit binary''</code> | |||
|- | |||
|style="border: 1px solid; border-left: hidden;" | … | |||
|style="border: 1px solid;" | 7|6|5|4|3|2|1|0 | |||
|style="border: 1px solid; border-right: hidden;" | … | |||
|} | |||
</small> | |||
*D0 - D4: Reserved. | |||
*D5: The configuration supports remote wakeup. | |||
*D6: The configuration is self-powered and does not use power from the bus. | |||
*D7: The configuration is powered by the bus. | |||
</small> | |||
|- | |||
| 8 || bMaxPower || 1 || 0x32 || Maximum current: 100mA drawn by device in this configuration.<BR /><small>In units of 2mA. So 0x32 (50) means 100 mA</small> | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Interface Descriptor | |||
|- | |||
| 0 || bLength || 1 || 0x09 || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x04 || INTERFACE descriptor type (= 4) | |||
|- | |||
| 2 || bInterfaceNumber || 1 || 0x00 || Number identifying this interface. | |||
<small>Zero-based value</small> | |||
|- | |||
| 3 || bAlternateSetting || 1 || 0x00 || The first (and default) value used to select alternative setting is always 0 | |||
<small> | |||
(An interface can have more than one variant, and these variants can be switched between, while other interfaces are still in operation) | |||
</small> | |||
|- | |||
| 4 || bNumEndpoints || 1 || 0x02 || Number of Endpoints used for this interface | |||
|- | |||
| 5 || bInterfaceClass || 1 || 0xFF || Class code assigned by USB-IF | |||
<small> | |||
*00h is a reserved value | |||
*FFh means vendor-defined class | |||
*Any other value must be a class code | |||
</small> | |||
|- | |||
| 6 || bInterfaceSubClass || 1 || 0x00 || SubClass Code assigned by USB-IF | |||
|- | |||
| 7 || bInterfaceProtocol || 1 || 0x00 || Protocol Code assigned by USB-IF | |||
|- | |||
| 8 || iInterface || 1 || 0x00 || Index of string descriptor describing interface - set to 0 if no string | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Endpoint (OUT) Descriptor | |||
|- | |||
| 0 || bLength || 1 || 0x0- || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x05 || Endpoint descriptor type (= 5) | |||
|- | |||
| 2 || bEndpointAddress || 1 || 0x01 || OUT (00000001)-->1 | |||
<small> | |||
The address of this endpoint within the device: | |||
*D3-D0: Endpoint number | |||
*D6-D4: Reserved. set to Zero | |||
*D7: Direction: 0 = OUT, 1 = IN (Ignored for Control Endpoints) | |||
</small> | |||
|- | |||
| 3 || bmAttributes || 1 || 0x02 || Bulk (00000010) | |||
<small> | |||
(D1:0) Transfer Type: | |||
*00 = Control | |||
*01 = Isochronous | |||
*10 = Bulk | |||
*11 = Interrupt | |||
The following only apply to isochronous endpoints. Else set to 0. | |||
(D3:2) Synchronisation Type (ISO mode): | |||
*00 = No Synchronisation | |||
*01 = Asynchronous | |||
*10 = Adaptive | |||
*11 = Synchronous | |||
(D5:4) Usage Type (ISO mode): | |||
*00 = Data endpoint | |||
*01 = Feedback endpoint | |||
*10 = Implicit feedback Data endpoint | |||
*11 = Reserved | |||
(D7:6) Reserved | |||
Set to 0 | |||
</small> | |||
|- | |||
| 4 || wMaxPacketSize || 2 || 0x0400 || (1024) | |||
|- | |||
| 6 || bInterval || 1|| 0x00 || - (unit depends on device speed) | |||
<small> | |||
Interval for polling endpoint for data transfers. Expressed in frames (ms) for low/full speed or microframes (125{{micro}}s) for high speed<BR /> | |||
(ignored for Bulk & Control Endpoints. Isochronous must equal 1 and field may range from 1 to 255 for interrupt endpoints) | |||
|- | |||
| - || bMaxBurst || 1 || 0x || MaxBurst | |||
<small> | |||
The number of packets the endpoint can send or receive as part of a burst (range 1 - 16) | |||
</small> | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Endpoint (IN) Descriptor | |||
|- | |||
| 0 || bLength || 1 || 0x0- || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x05 || Endpoint descriptor type | |||
|- | |||
| 2 || bEndpointAddress || 1 || 0x82 || IN (10000010)-->2 | |||
|- | |||
| 3 || bmAttributes || 1 || 0x02 || Bluk | |||
|- | |||
| 4 || wMaxPacketSize || 2 || 0x0400 || (1024) | |||
|- | |||
| 6 || bInterval || 1 || 0x00 || 0 | |||
|- | |||
| - || bMaxBurst || 1 || 0x || MaxBurst | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Binary Object Store | |||
|- | |||
| 0 || bLength || 1 || 0x05 || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x || | |||
|- | |||
| 2 || wTotalLength || 1 || 0x16 || (22) | |||
|- | |||
| 3 || bNumDeviceCaps || 1 || 0x02 || | |||
|- | |||
| - || colspan="4" style="background-color:#F0B0BF; color:#000000; text-align:center;"|USB 2.0 Extension Device Capability: | |||
|- | |||
| || bLength || 1 || 0x07 || | |||
|- | |||
| || bDescriptorType || 1 || || | |||
|- | |||
| || bDevCapabilityType || 1 || || | |||
|- | |||
| || bmAttributes || 4 || 0x00000002 || | |||
|- | |||
| ... || || || || | |||
|} | |} | ||
Revision as of 16:20, 12 January 2014
Playstation 4 Camera
Specifications
Overview of Technical Specifications | |
---|---|
Product Code | CUH-ZEY1 |
External Dimension | approximately 186mm x 27mm x 27mm (height x width x depth) |
Weight | approximately 183g |
Cable Length | Cord length: 200cm approximately |
Connection Type | PS4 dedicated connector AUX (USB 3.0-derived) |
Capture Range | 30cm - ∞ |
Camera lens | Dual camera (move like) |
Aperture | f/2.0 /fixed focus |
Field of view (FOV) | 85° |
Video Format | RAW16/RAW8, YUV422/YUV8 (greyscale) |
Video Frame Rate |
|
Color depth | 12-bit tonal gradation (=4096 tonal levels) |
Microphone | 4 Channel Microphone Array |
Programmable settings |
|
The PlayStation 4 Camera runs without user login (kernel/system device?) and depends for many of its system functions on the APU, using a tripple buffering system
Available functions:
- photo, video
- depth calculation/imaging
- pad, move, face, head and hand recognition/tracking
- one of the cameras can be used for generating the video image, with the other used for motion tracking.
Back chip connected to Aux port is labeled OV00580-B21G-1C. The OmniVision 580 ASIC is not documented, so it seems it was made specially for Sony out of the 500/600 serie (none of them featuring USB 3.0, see external reference).
Front chip connected to microphone array is labeled 5703 324A.
Gallery
Pre E3 Playstation 4 Camera pictures
Playstation 4 Camera teardown pictures
Videos
(The C-Note Files - Episode 12: Tutorial - PS4 Face Recognition)
(The C-Note Files - Episode 13: Tutorial - PS4 Voice Recognition)
Analysis
USB
Device Descriptor
Device Descriptor | ||||
---|---|---|---|---|
Offset | Field | Size | Value | Description |
0 | bLength | 1 | Number: 0x12 | Size of this descriptor in bytes (18) |
1 | bDescriptorType | 1 | Constant: 0x01 | DEVICE descriptor type (= 1) |
2 | bcdUSB | 2 | BCD: 0x0300 | USB Spec release number (3.00):
valid version numbers are 0x0100 (USB1.0), 0x0110 (USB1.1), 0x0200 (USB2.0), 0x0300 (USB3.0) and 0x0310 (USB3.1). |
4 | bDeviceClass | 1 | Class: 0x00 | Class code assigned by USB-IF:
(used by the operating system to find a class driver for your device)
|
5 | bDeviceSubClass | 1 | SubClass: 0x00 | SubClass Code assigned by USB-IF
(used by the operating system to find a class driver for your device) |
6 | bDeviceProtocol | 1 | Protocol: 0x00 | Protocol Code assigned by USB-IF
(used by the operating system to find a class driver for your device) |
7 | bMaxPacketSize0 | 1 | Number: 0x09 | Max packet size for endpoint 0.
Must be 8, 16, 32 or 64 |
8 | idVendor | 2 | ID: 0x05a9 | Vendor ID (VID) (OmniVision Technologies, Inc.) - must be obtained from USB-IF
(used by the operating system to find a driver for your device) |
10 | idProduct | 2 | ID: 0x0580 | Product ID (PID) - assigned by the manufacturer
(used by the operating system to find a driver for your device) |
12 | bcdDevice | 2 | BCD: 0x0100 | Device release number (Version: 1.00)
in binary coded decimal |
14 | iManufacturer | 1 | Index: 0x01 | Index of string descriptor describing manufacturer
set to 0 if no string |
15 | iProduct | 1 | Index: 0x02 | Index of string descriptor describing product
set to 0 if no string |
16 | iSerialNumber | 1 | Index: 0x00 | Index of string descriptor describing device serial number set to 0 if no string |
17 | bNumConfigurations | 1 | Number: 0x01 | Number of possible configurations |
Configuration Descriptor
Configuration Descriptor | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
Offset | Field | Size | Value | Description | |||||||
0 | bLength | 1 | 0x09 | Size | |||||||
1 | bDescriptorType | 1 | 0x02 | CONFIGURATION descriptor type (= 2) | |||||||
2 | wTotalLength | 2 | 0x002C | Total number of bytes (44) in this descriptor and all the following descriptors (9+9+ + +) | |||||||
4 | bNumInterfaces | 1 | 0x01 | Number of interfaces supported by this configuration | |||||||
5 | bConfigurationValue | 1 | 0x01 | Value used by Set Configuration to select this configuration | |||||||
6 | iConfiguration | 1 | 0x00 | Index of string descriptor describing configuration - set to 0 if no string | |||||||
7 | bmAttributes | 1 | 0x80 | Powered by the bus (10000000)
specify power parameters for the configuration :
| |||||||
8 | bMaxPower | 1 | 0x32 | Maximum current: 100mA drawn by device in this configuration. In units of 2mA. So 0x32 (50) means 100 mA | |||||||
Interface Descriptor | |||||||||||
0 | bLength | 1 | 0x09 | Size | |||||||
1 | bDescriptorType | 1 | 0x04 | INTERFACE descriptor type (= 4) | |||||||
2 | bInterfaceNumber | 1 | 0x00 | Number identifying this interface.
Zero-based value | |||||||
3 | bAlternateSetting | 1 | 0x00 | The first (and default) value used to select alternative setting is always 0
(An interface can have more than one variant, and these variants can be switched between, while other interfaces are still in operation) | |||||||
4 | bNumEndpoints | 1 | 0x02 | Number of Endpoints used for this interface | |||||||
5 | bInterfaceClass | 1 | 0xFF | Class code assigned by USB-IF
| |||||||
6 | bInterfaceSubClass | 1 | 0x00 | SubClass Code assigned by USB-IF | |||||||
7 | bInterfaceProtocol | 1 | 0x00 | Protocol Code assigned by USB-IF | |||||||
8 | iInterface | 1 | 0x00 | Index of string descriptor describing interface - set to 0 if no string | |||||||
Endpoint (OUT) Descriptor | |||||||||||
0 | bLength | 1 | 0x0- | Size | |||||||
1 | bDescriptorType | 1 | 0x05 | Endpoint descriptor type (= 5) | |||||||
2 | bEndpointAddress | 1 | 0x01 | OUT (00000001)-->1
The address of this endpoint within the device:
| |||||||
3 | bmAttributes | 1 | 0x02 | Bulk (00000010)
(D1:0) Transfer Type:
The following only apply to isochronous endpoints. Else set to 0. (D3:2) Synchronisation Type (ISO mode):
(D5:4) Usage Type (ISO mode):
(D7:6) Reserved Set to 0 | |||||||
4 | wMaxPacketSize | 2 | 0x0400 | (1024) | |||||||
6 | bInterval | 1 | 0x00 | - (unit depends on device speed)
Interval for polling endpoint for data transfers. Expressed in frames (ms) for low/full speed or microframes (125µs) for high speed | |||||||
- | bMaxBurst | 1 | 0x | MaxBurst
The number of packets the endpoint can send or receive as part of a burst (range 1 - 16) | |||||||
Endpoint (IN) Descriptor | |||||||||||
0 | bLength | 1 | 0x0- | Size | |||||||
1 | bDescriptorType | 1 | 0x05 | Endpoint descriptor type | |||||||
2 | bEndpointAddress | 1 | 0x82 | IN (10000010)-->2 | |||||||
3 | bmAttributes | 1 | 0x02 | Bluk | |||||||
4 | wMaxPacketSize | 2 | 0x0400 | (1024) | |||||||
6 | bInterval | 1 | 0x00 | 0 | |||||||
- | bMaxBurst | 1 | 0x | MaxBurst | |||||||
Binary Object Store | |||||||||||
0 | bLength | 1 | 0x05 | Size | |||||||
1 | bDescriptorType | 1 | 0x | ||||||||
2 | wTotalLength | 1 | 0x16 | (22) | |||||||
3 | bNumDeviceCaps | 1 | 0x02 | ||||||||
- | USB 2.0 Extension Device Capability: | ||||||||||
bLength | 1 | 0x07 | |||||||||
bDescriptorType | 1 | ||||||||||
bDevCapabilityType | 1 | ||||||||||
bmAttributes | 4 | 0x00000002 | |||||||||
... |
External references
Generic
- http://en.wikipedia.org/wiki/Computer_stereo_vision
- Gesture recognition: Enabling natural interactions with electronic
- Softkinetic Patent:
Computer videogame system with body position detector