Editing PlayStation 4 Camera

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

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:
{{Wikify}}
== Playstation 4 Camera ==
== Playstation 4 Camera ==
See also {{talk}} page
See also {{talk}} page
RRA filing: http://rra.go.kr/board/device/view.jsp?app_no=201317100000152603 {{date|2013-08-22}}


[[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 19: Line 14:
| '''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
See [http://ps4eye.tumblr.com/post/81377229916/extending-the-ps4-camera-cable extending the ps4 camera cable]
|-
|-
| '''[[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 29:
|-
|-
| '''[http://en.wikipedia.org/wiki/Frame_rate Video Frame Rate]''' ||  
| '''[http://en.wikipedia.org/wiki/Frame_rate Video Frame Rate]''' ||  
{| class="wikitable sortable"
*7.5, 15, 30 or 60fps at 1280x800 pixels
|-
*7.5, 15, 30, 60 or 120fps at 640x400 pixels
! resolution !! aspectratio !! framerate || remarks
*7.5, 15, 30, 60, 120 or 240fps at 320x200 pixels
|-
*7.5, 15, 30, 60, 120 or 240fps at 160x100 pixels
| 1280x800 || 16:10 || 7.5, 15, 30 or 60fps || [http://en.wikipedia.org/wiki/Graphics_display_resolution#1280x800 WXGA]
|-
| 640x400 || 16:10 || 7.5, 15, 30, 60 or 120fps || 1/4<sup>th</sup> WXGA
|-
| 320x200 || 16:10 || 7.5, 15, 30, 60, 120 or 240fps || 1/16<sup>th</sup> WXGA
|-
| 160x100 || 16:10 || 7.5, 15, 30, 60, 120 or 240fps || 1/64<sup>th</sup> WXGA
|-
|}
|-
|-
| '''[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 50:
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 ====
'''Available functions:'''
* photo, video
* photo, video
* [[Phoneme|voice commands]] (available as well with an [[Earset|earset]] with microphone)
* 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, while the other used for motion tracking.
* one of the cameras can be used for generating the video image, with the other used for motion tracking.
 
==== Hardware review ====
<imagemap>
File:PS4-Camera-diagram.jpg|350px|thumb|right|Ps4 Camera diagram
</imagemap>
 
*'''OV580''': Back chip connected to [[Aux]] port is labeled OV00580-B21G-1C. The OmniVision 580 {{G|ASIC}}  is not publicy documented (without signing a NDA with Omnivision), so it seems to have been made specially for Sony (other companies using it are Mantis Vision and LeapMotion) out of the [http://www.ovt.com/products/ip_table.php 500/600 serie] of processors.
 
others Omnivision USB bridge solutions: PlayStation EyeToy(OV519) and [http://www.psdevwiki.com/ps3/PlayStation_Eye PlayStation Eye] (OV534).
 
*'''OV9713''': The 1-megapixel [http://en.wikipedia.org/wiki/Image_sensor Image Sensors] are two CMOS OV9713.


*'''AK5703''': The Front chip connected to microphone array, labeled 5703 324A, is a 4-channel 24-bit '''A'''nalog-to-'''d'''igital  (A/D) converter packaged in a space-saving 28-pin {{G|QFN}} package. Datasheet is available [http://www.akm.com/akm/en/file/datasheet/AK5703EN.pdf here] and [http://www.akm.com/page.jsp?id=230677 here.]
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).


*'''4g51a''': {{G|EEPROM}} is labeled as 4g51a. It contains the initial configuration for PlayStation 4 Camera.
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 82:
</gallery>
</gallery>


{{Anchored|Pre E3 Playstation 4 Camera pictures}}
=== 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 ====


Mouseover for different pictures. 
<div style="height:600px; width:600px; overflow:auto">
{| class="wikitable"
{| class="wikitable"
! Front || Side
|-
|-
|{{HoverImage
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |[http://linuxcommand.org/man_pages/lsusb8.html Device Descriptor]
|PS4_Camera_01.jpg|PS4_Camera_02.jpg|
|-
|thumb|300px|
! Offset
|
! Field
PS4 Camera - pic1|
! Size
PS4 Camera - pic2}}
! Value
||
! Description
{{HoverImage
|-
|PS4_Camera_03.jpg|PS4_Camera_04.jpg|
| 0 || bLength || 1 || 0x12 || Size of this descriptor in bytes (18)
|thumb|300px|
|-
|
| 1 || bDescriptorType || 1 || 0x01 || DEVICE descriptor type (Constant = 1)
PS4 Camera - pic3|
|-
PS4 Camera - pic4}}
| 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"
! Front || Side
|-
|-
|{{HoverImage
! colspan="5" style="background-color:#C0C0C0; color:#000000;" |Configuration Descriptor
|PS4_Camera_05.jpg|PS4_Camera_06.jpg|
|-
|thumb|300px|
! Offset
|
! Field
PS4 Camera - pic5|
! Size
PS4 Camera - pic6}}
! Value
||
! Description
{{HoverImage
|-
|PS4_Camera_07.jpg|PS4_Camera_08.jpg|
| 0 || bLength || 1 || 0x09 || Size
|thumb|300px|
|-
|
| 1 || bDescriptorType || 1 || 0x02 || (= 2)
PS4 Camera - pic7|
|-
PS4 Camera - pic8}}
| 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


=== Videos ===
The following only apply to isochronous endpoints. Else set to 0.
{{#ev:youtube|e9nsFAFedrY}}
 
(The C-Note Files - Episode 12: Tutorial - PS4 Face Recognition)
(D3:2) Synchronisation Type (ISO mode):
*00 = No Synchronisation
*01 = Asynchronous
*10 = Adaptive
*11 = Synchronous


{{#ev:youtube|nSxXXZTD5rc}}
(D5:4) Usage Type (ISO mode):
(The C-Note Files - Episode 13: Tutorial - PS4 Voice Recognition)
*00 = Data endpoint
*01 = Feedback endpoint
*10 = Implicit feedback Data endpoint
*11 = Reserved


== Analysis ==
(D7:6) Reserved
*[[PS4cam-USB|Communication USB]]
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 / http://ps4eye.tumblr.com/
* PS4 Camera om linux: https://github.com/ps4eye/ps4eye
* https://github.com/bigboss-ps3dev/PS4EYECam/ / http://bigboss-eyetoy.blogspot.co.uk/2014/09/ps4eyecam-released.html
<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>


== External references ==
== External references ==
* http://ps4eye.tumblr.com/
* http://ps4eye.tumblr.com/
* https://twitter.com/psxdev


=== Generic ===
=== Generic ===
Please note that all contributions to PS4 Developer wiki are considered to be released under the GNU Free Documentation License 1.2 (see PS4 Developer wiki:Copyrights for details). If you do not want your writing to be edited mercilessly and redistributed at will, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource. Do not submit copyrighted work without permission!

To protect the wiki against automated edit spam, we kindly ask you to solve the following hCaptcha:

Cancel Editing help (opens in new window)