PlayStation 4 Camera: Difference between revisions

From PS4 Developer wiki
Jump to navigation Jump to search
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 17: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
  • 7.5, 15, 30 or 60fps at 1280x800 pixels
  • 7.5, 15, 30, 60 or 120fps at 640x400 pixels
  • 7.5, 15, 30, 60, 120 or 240fps at 320x200 pixels
  • 7.5, 15, 30, 60, 120 or 240fps at 160x100 pixels
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)

  • 00h means each interface defines its own class (identify itself at the interface level)
  • FFh means vendor-defined class
  • Any other value must be a class code

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-digit bit binary
7|6|5|4|3|2|1|0

  • 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.

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

  • 00h is a reserved value
  • FFh means vendor-defined class
  • Any other value must be a class code

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:

  • D3-D0: Endpoint number
  • D6-D4: Reserved. set to Zero
  • D7: Direction: 0 = OUT, 1 = IN (Ignored for Control Endpoints)

3 bmAttributes 1 0x02 Bulk (00000010)

(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

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
(ignored for Bulk & Control Endpoints. Isochronous must equal 1 and field may range from 1 to 255 for interrupt endpoints)

- 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

Computer videogame system with body position detector