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 == | ||
[[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]] | ||
=== Specifications === | === Specifications === | ||
Line 19: | Line 12: | ||
| '''Weight''' || approximately 183g | | '''Weight''' || approximately 183g | ||
|- | |- | ||
| '''[http://en.wikipedia.org/wiki/USB#Cabling Cable Length]''' || Cord length: 200cm approximately | | '''[http://en.wikipedia.org/wiki/USB#Cabling Cable Length]''' || Cord length: 200cm approximately | ||
|- | |- | ||
| '''[[Connectors|Connection Type]]''' || PS4 dedicated connector [[AUX]] ([[USB_3.0|USB 3.0]]-derived) | | '''[[Connectors|Connection Type]]''' || PS4 dedicated connector [[AUX]] ([[USB_3.0|USB 3.0]]-derived) | ||
Line 35: | Line 27: | ||
|- | |- | ||
| '''[http://en.wikipedia.org/wiki/Frame_rate Video Frame Rate]''' || | | '''[http://en.wikipedia.org/wiki/Frame_rate 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 | |||
|- | |- | ||
| '''[http://en.wikipedia.org/wiki/Color_depth Color depth] || 12-bit tonal gradation (=4096 tonal levels) | | '''[http://en.wikipedia.org/wiki/Color_depth Color depth] || 12-bit tonal gradation (=4096 tonal levels) | ||
Line 65: | Line 48: | ||
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 | 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 | * photo, video | ||
* 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. | ||
Back chip connected to [[Aux]] port is labeled OV00580-B21G-1C. The OmniVision 580 {{G|ASIC}} is not documented, so it seems it was made specially for Sony out of the [http://www.ovt.com/products/ip_table.php 500/600 serie] (none of them featuring [[USB 3.0]], see external reference). | |||
Front chip connected to microphone array is labeled 5703 324A. | |||
=== Gallery === | === Gallery === | ||
{{Anchored|Pre E3 Playstation 4 Camera pictures}} | |||
<gallery> | |||
File:PS4 Camera 01.jpg|PS4 Camera - pic1 | |||
File:PS4 Camera 02.jpg|PS4 Camera - pic2 | |||
File:PS4 Camera 03.jpg|PS4 Camera - pic3 | |||
File:PS4 Camera 04.jpg|PS4 Camera - pic4 | |||
File:PS4 Camera 05.jpg|PS4 Camera - pic5 | |||
File:PS4 Camera 06.jpg|PS4 Camera - pic6 | |||
File:PS4 Camera 07.jpg|PS4 Camera - pic7 | |||
File:PS4 Camera 08.jpg|PS4 Camera - pic8 | |||
</gallery> | |||
{{Anchored|Playstation 4 Camera teardown pictures}} | {{Anchored|Playstation 4 Camera teardown pictures}} | ||
Line 98: | Line 80: | ||
</gallery> | </gallery> | ||
{{ | === Videos === | ||
{{#ev:youtube|e9nsFAFedrY}} | |||
(The C-Note Files - Episode 12: Tutorial - PS4 Face Recognition) | |||
{{#ev:youtube|nSxXXZTD5rc}} | |||
(The C-Note Files - Episode 13: Tutorial - PS4 Voice Recognition) | |||
== Analysis == | |||
=== USB === | |||
==== Device Descriptor ==== | |||
<div style="height:600px; width:600px; overflow:auto"> | |||
{| class="wikitable" | {| 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" | {| 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 || | |||
|- | |||
|} | |||
== External references == | == External references == | ||
* http://ps4eye.tumblr.com/ | * http://ps4eye.tumblr.com/ | ||
* https:// | * https://github.com/ps4eye/ps4eye | ||
=== Generic === | === Generic === | ||
* http://en.wikipedia.org/wiki/Computer_stereo_vision | * http://en.wikipedia.org/wiki/Computer_stereo_vision | ||
* [http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spry199&fileType=pdf Gesture recognition: Enabling natural interactions with electronic] | * [http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=spry199&fileType=pdf Gesture recognition: Enabling natural interactions with electronic] | ||
* [http://www.softkinetic.com/AboutUs/NewsEvents/ArticleView/tabid/562/ArticleId/312/language/en-US/NEWS-SoftKinetic-To-Bring-Gesture-Recognition-Technology-To-Video-Games-On-PlayStation-4.aspx Softkinetic Patent:] [https://www.google.co.uk/patents/US8517834 Computer | * [http://www.softkinetic.com/AboutUs/NewsEvents/ArticleView/tabid/562/ArticleId/312/language/en-US/NEWS-SoftKinetic-To-Bring-Gesture-Recognition-Technology-To-Video-Games-On-PlayStation-4.aspx Softkinetic Patent:] | ||
[https://www.google.co.uk/patents/US8517834 Computer videogame system with body position detector] | |||
{{Peripherals}} | {{Peripherals}} | ||
<noinclude>[[Category:Main]]</noinclude> | <noinclude>[[Category:Main]]</noinclude> |