Webcam Synchronization II - PlayStation Eye

This page describes my experiments on PlayStation Eye webcam synchronization. They were inspired by Michał Wróblewski findings described here.

Accessing VSYNC and FSIN pins in PlayStation Eye

I'd call PlayStation Eye case ball-shaped if not for the big microphone array enclosure. The photo below shows the camera.

PlayStation Eye
PlayStation Eye

To open the camera first you need to unscrew four screws holding front and back part of the case together. The screws are hidden under little plastic caps glued to the case. I used a sharp knife to remove them.

Back of the camera
Back of the camera
Back with the caps removed
Back with the caps removed

After removing the screws there are still five latches to unlock. One is located in the middle of the top of the camera case, two on both sides of microphone array enclosure and two more near the USB cable. Unfortunately the case is made of ABS, because of its rigidness unlocking the latches without damaging them is non-trivial. I broke the side latches in both cameras despite knowing their exact location, so use extra care if you want your camera unharmed. The bottom latches are especially sturdy and need a lot of force to unlock. The photos below show separated case parts.

Back part of the case
Back part of the case
Front part of the case
Front part of the case

Great thing about PlayStation Eye is that there's no need to solder directly to the sensor chip. In fact it wouldn't be even possible because it's in CSP package. Both VSYNC output and FSIN input are easily accessible after opening the camera, the photo below shows their location on the camera PCB.

VSYNC and FSIN
VSYNC and FSIN

I scraped off solder mask from the trace connected to VSYNC in order to solder a wire to it. Connecting to FSIN was very easy, as it's a SMD resistor pad already covered with solder. The following photos show the wires soldered to the pins.

Wires soldered to camera 1
Wires soldered to camera 1
Wires soldered to camera 2
Wires soldered to camera 2

Testing the synchronization

In order to check the synchronization of the webcams I carried out two experiments.

Comparing frame capture time in unsynchronized cameras

The first experiment was to record video stream simultaneously from unsynchronized cameras pointed to the timer working with sub-second resolution and check if asynchronous operation of cameras can be confirmed by comparing the frames from both streams. I recorded 100 frames of video stream from webcams pointed to the computer monitor with the timer application running on the screen. To get the video stream frames I used video capture utility from Video4Linux 2 API website. Both webcams were running in 640x480 resolution with 15 fps.

This image shows consecutive recorded timer values from both cameras. The top sequence is from the first camera, the bottom is from the second. It's easy to see that they are running about 1-2 milliseconds out of sync. Consider for example the part below:

Unsynchronized frame sequence
Unsynchronized frame sequence

Comparing frame capture time in synchronized cameras

In the next experiment I connected VSYNC output of the first camera to FSIN of the second and recorded video stream simultaneously from both cameras. Again they were pointed to the same timer application window visible on the computer monitor and 100 video frames were captures from both cameras in order to compare the recorded time values. This image shows consecutive recorded timer values from both cameras. As you can see, recorded time values are pretty much identical. Take a look at the part of the sequence below:

Synchronized frame sequence
Synchronized frame sequence

As far as I can tell from the visual inspection of both sequences, cameras were running synchronously. Synchronous operation of cameras was additionally confirmed by comparing VSYNC output of both cameras on a two-channel oscilloscope.

Conclusions

From the conducted experiments it's safe to assume that connecting VSYNC output of the first camera sensor to FSIN input of the second camera sensor resulted in both webcams running synchronously.

PlayStation Eye has been identified as another cheap consumer-level webcam capable of receiving an external synchronization signal, suitable for amateur computer vision experiments.