Editing PlayStation 4 Camera
Jump to navigation
Jump to search
The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.
Latest revision | Your text | ||
Line 1: | Line 1: | ||
== Playstation 4 Camera == | == Playstation 4 Camera == | ||
See also {{talk}} page | See also {{talk}} page | ||
[[File:Ps4-new-playstation-4-console-camera-07.jpg|300px|thumb|right|Camera at or above knee level]] | [[File:Ps4-new-playstation-4-console-camera-07.jpg|300px|thumb|right|Camera at or above knee level]] | ||
Line 70: | Line 65: | ||
* depth calculation/imaging | * depth calculation/imaging | ||
* pad, move, face, head and hand recognition/tracking | * pad, move, face, head and hand recognition/tracking | ||
* one of the cameras can be used for generating the video image, | * one of the cameras can be used for generating the video image, with the other used for motion tracking. | ||
==== Hardware review ==== | ==== Hardware review ==== | ||
*Back chip connected to [[Aux]] port is labeled OV00580-B21G-1C. The OmniVision 580 {{G|ASIC}} is not documented, so it seems to have been made specially for Sony out of the [http://www.ovt.com/products/ip_table.php 500/600 serie] of processors. | |||
* | *The 1-megapixel Image Sensors is speculated to be an CMOS OV9713. | ||
*Front chip connected to microphone array, labeled [http://www.akm.com/page.jsp?id=230677 5703 324A], is speculated to be a 4-channel 24-bit '''A'''nalog-to-'''d'''igital (A/D) converter packaged in a space-saving 28-pin {{G|QFN}} package. | |||
* | *{{G|EEPROM}} is speculated to be labeled as ag51a. | ||
=== Gallery === | === Gallery === | ||
{{Anchored|Pre E3 Playstation 4 Camera pictures}} | {{Anchored|Pre E3 Playstation 4 Camera pictures}} | ||
Line 136: | Line 115: | ||
PS4 Camera - pic8}} | PS4 Camera - pic8}} | ||
|} | |} | ||
{{Anchored|Playstation 4 Camera teardown pictures}} | |||
<gallery> | |||
ps4-camera-0.jpg|PS4 Camera - picture 0 | |||
ps4-camera-1.png|PS4 Camera - picture 1 | |||
ps4-camera-2.png|PS4 Camera - picture 2 | |||
ps4-camera-3.png|PS4 Camera - picture 3 | |||
ps4-camera-4.png|PS4 Camera - picture 4 | |||
</gallery> | |||
=== Videos === | === Videos === | ||
Line 145: | Line 133: | ||
== Analysis == | == Analysis == | ||
*[[ | === USB === | ||
==== Device Descriptor ==== | |||
<div style="height:600px; width:600px; overflow:auto"> | |||
{| class="wikitable" | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |[http://linuxcommand.org/man_pages/lsusb8.html Device Descriptor] | |||
|- | |||
! Offset | |||
! Field | |||
! Size | |||
! Value | |||
! Description | |||
|- | |||
| 0 || bLength || 1 || 0x12 || Size of this descriptor in bytes (18) | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x01 || DEVICE descriptor type (Constant = 1) | |||
|- | |||
| 2 || bcdUSB || 2 || 0x0300 || USB Spec release number ([http://en.wikipedia.org/wiki/USB#USB_3.0 3.00]): | |||
<small>with which the device and is descriptors are compliant (e.g.: 0x0200 (USB2.0), 0x0300, | |||
([[USB_3.0|USB3.0]]))</small> | |||
|- | |||
| 4 || bDeviceClass || 1 || 0x00 || [http://www.usb.org/developers/defined_class Class code] assigned by [http://en.wikipedia.org/wiki/USB_Implementers_Forum USB-IF] | |||
<small>(used by the operating system to find a class driver for your device)</small> | |||
<small> | |||
*00h means each interface defines its own class (identify itself at the interface level: bInterfaceClass ) | |||
*FFh means vendor-defined class | |||
*Any other value must be a class code | |||
</small> | |||
|- | |||
| 5 || bDeviceSubClass || 1 || 0x00 || SubClass Code assigned by USB-IF | |||
<small>(used by the operating system to find a class driver for your device)</small> | |||
|- | |||
| 6 || bDeviceProtocol || 1 || 0x00 || Protocol Code assigned by USB-IF | |||
<small>(used by the operating system to find a class driver for your device)</small> | |||
|- | |||
| 7 || bMaxPacketSize0 || 1 || 0x09 || Max packet size for endpoint 0. | |||
<small> | |||
*Must be 8, 16, 32 or 64 | |||
*Must be 9 according to [http://www.usb.org/developers/tools/USB30CVSpec_1_4.pdf Compliance Test Specification for the USB 3.0 Architecture p29 9.1] | |||
</small> | |||
|- | |||
| 8 || idVendor || 2 || 0x05a9 || [http://www.linux-usb.org/usb.ids Vendor ID (VID)] (OmniVision Technologies, Inc.) - must be obtained from USB-IF | |||
<small>(used by the operating system to find a driver for your device)</small> | |||
|- | |||
| 10 || idProduct || 2 || 0x0580 || Product ID (PID) - assigned by the manufacturer | |||
<small>(used by the operating system to find a driver for your device)</small> | |||
|- | |||
| 12 || bcdDevice || 2 || 0x0100 || Device release number (Version: 1.00) | |||
<small>in binary coded decimal</small> | |||
|- | |||
| 14 || iManufacturer || 1 || 0x01 || Index of string descriptor describing manufacturer | |||
<small>set to 0 if no string</small> | |||
|- | |||
| 15 || iProduct || 1 || 0x02 || Index of string descriptor describing product | |||
<small>set to 0 if no string</small> | |||
|- | |||
| 16 || iSerialNumber || 1 || 0x00 || Index of string descriptor describing device serial number<BR /> <small>set to 0 if no string</small> | |||
|- | |||
| 17 || bNumConfigurations || 1 || 0x01 || Number of possible configurations | |||
|- | |||
|} | |||
</div><br /> | |||
==== 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 || (= 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 || (= 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 || (= 5) | |||
|- | |||
| 2 || bEndpointAddress || 1 || 0x01 || OUT<--(00 00 0001)-->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) [http://www.inno-logic.com/resources/21.php#4 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 || 0x0F || MaxBurst (15) | |||
<small> | |||
The number of packets the endpoint can send or receive as part of a burst (range 1 - 16). See transfer Type. | |||
</small> | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Endpoint (IN) Descriptor | |||
|- | |||
| 0 || bLength || 1 || 0x0- || Size | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x05 || ( =5) | |||
|- | |||
| 2 || bEndpointAddress || 1 || 0x82 || IN<--(10 00 0010)-->2 | |||
|- | |||
| 3 || bmAttributes || 1 || 0x02 || Bulk | |||
|- | |||
| 4 || wMaxPacketSize || 2 || 0x0400 || (1024) | |||
|- | |||
| 6 || bInterval || 1 || 0x00 || 0 | |||
|- | |||
| - || bMaxBurst || 1 || 0x0F || MaxBurst (15) | |||
|- | |||
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Binary Object Store Descriptor | |||
|- | |||
| 0 || bLength || 1 || 0x05 || Size (05) | |||
|- | |||
| 1 || bDescriptorType || 1 || 0x0F || (= 15) | |||
|- | |||
| 2 || wTotalLength || 1 || 0x16 || (22) (5+7+10) | |||
|- | |||
| 3 || bNumDeviceCaps || 1 || 0x02 || (2) | |||
<small> | |||
must be at least 2 for SuperSpeed devices and equal to 3 for USB 3.0 hubs. | |||
</small> | |||
|- | |||
| - || colspan="4" style="background-color:#F0B0BF; color:#000000; text-align:center;"|USB 2.0 Extension Device Capability: | |||
|- | |||
| || bLength || 1 || 0x07 || (7) Size | |||
|- | |||
| || bDescriptorType || 1 || 0x10 || ( =16) | |||
|- | |||
| || bDevCapabilityType || 1 || 0x02 || (2) | |||
<small> | |||
*02 (USB 2.0 EXTENSION) or 03 (SUPERSPEED_USB) or 04 (CONTAINER_ID) | |||
</small> | |||
|- | |||
| || bmAttributes || 4 || 0x00000002 || (00000000 00000000 00000000 00000010) Link Power Management supported | |||
<small> | |||
See [http://www.usb.org/developers/docs/usb20_docs/usb_20_070113.zip USB2-LPM-Errata-final.pdf p3] | |||
*D0 Reserved. Must be set to zero | |||
*D1 A value of one in this bit location indicates that this device supports the Link Power Management (LPM) protocol | |||
*D2 BESL & Alternate HIRD definitions supported. The LPM bit must be set to a one when this bit is a one | |||
*D3 Recommended Baseline BESL valid | |||
*D4 Recommended Deep BESL valid | |||
*D11:8 Recommended Baseline BESL value. Field shall be ignored by system software if bit [3] is a zero. | |||
*D15:12 Recommended Deep BESL value. Field shall be ignored by system software if bit is a zero. | |||
*D31:16 Reserved. Must be set to zero. | |||
</small> | |||
|- | |||
| - || colspan="4" style="background-color:#F0B0BF; color:#000000; text-align:center;"|SuperSpeed USB Device Capability: | |||
|- | |||
| || bLength || 1 || 0x0A || (10) Size | |||
|- | |||
| || bDescriptorType || 1 || 0x10 || (= 16) | |||
|- | |||
| || bDevCapabilityType || 1 || 0x03 || (3) | |||
|- | |||
| || bmAttributes || 1 || 0x00 || (00000000) | |||
<small> | |||
*D1 is 1 if it is a LTM capable device | |||
</small> | |||
|- | |||
| || wSpeedsSupported || || 0x000e || | |||
<small> | |||
*Device can operate at Full Speed (12Mbps) | |||
*Device can operate at High Speed (480Mbps) | |||
*Device can operate at SuperSpeed (5Gbps) | |||
</small> | |||
|- | |||
| || bFunctionalitySupport || || || | |||
<small> | |||
Lowest fully-functional device speed is Full Speed 12Mbps) | |||
</small> | |||
|- | |||
| || bU1DevExitLat || || || 10{{micro}} | |||
|- | |||
| || bU2DevExitLat || || || 32{{micro}}s | |||
|- | |||
| || Device Status || || 0x0000 || | |||
|- | |||
|} | |||
== Project == | == Project == | ||
* PS4 Camera on linux/OSX: https://github.com/ps4eye/ps4eye | * PS4 Camera on linux/OSX: https://github.com/ps4eye/ps4eye | ||
<small>(The PS4 camera is USB 3.0 only and is not compatible with USB 2.0 systems. See also [[Aux|AUX page]])</small> | <small>(The PS4 camera is USB 3.0 only and is not compatible with USB 2.0 systems. See also [[Aux|AUX page]])</small> | ||