Raspberry Pi & PS2 EyeToy

Last week I finally got around and bought my first Raspberry Pi. Getting it up and running with Raspbian via Noobs was a breeze and after playing around with the OS and Python for a while I decided to get some real use out of this little machine. My first experiment aimed at a home security camera. As I did not want to invest in additional hardware, I used what I could find in the household’s scrap heap – in this case a no-longer-in-active-use PS2 EyeToy camera.
My first intention was to use SimpleCV and Python to take regular snapshots and let a rudimentary WebAPI expose the latest image to the outside world. The code for this would be very simple and easy to extend with additional features. But, this experiment failed as I could not get a proper driver for the EyeToy working with SimpleCV.

My next test was to use an open-source tool for talking to the EyeToy. I tested Motion and it connected right away with the camera. Motion is a very powerful motion detection tool with tons of configuration options. The features that I was interested in were available:

  • Take a photo at a regular interval
  • Expose the photo via a web interface
  • Security options for the web interface

Basically, to get it up and running for my purposes, these where the steps I used:

  1. Install motion
    sudo apt-get install motion
  2. Change the default settings to suite my needs:
    in /etc/motion/motion.config:
    * Turn off storing of movies and photo sequences created after a motion is detected (it would eat up the small SD card on my Raspberry otherwise)
    * Expose the live streaming web interface to a dedicated port
    * Add a login for the web interface
  3. Get the motion service working (see section below)
  4. In my router, add a port-forwarding to my Raspberry Pi and the port used by motion

Motion service

Motion can be started manually from the command line, but the installer adds an init.d-service so that motion is started as daemon process when the Raspberry Pi boots. I had to add r+w permissions on three files to make the service work though:

chmod u=rw,g=rw,o=rw /tmp/motion.log
chmod u=rw,g=rw,o=rw /var/run/motion/motion.pid
chmod u=rw,g=rw,o=rw /etc/motion/motion.conf

I also had to set start_motion_daemon=yes in this file

/etc/default/motion

If you still have problems you can switch to the motion user (created by the motion installer) and start motion manually to view any errors.

sudo su -s /bin/bash motion
motion

My motion configuration

motion.config has so many options that it can be hard to get started. Here are the settings that I use (the settings that are different from the default configuration), if anyone reading this wants to use the same setup that I have:

logfile /tmp/motion.log   # log to this file
output_pictures off       # don't store images
ffmpeg_output_movies off  # don't store videos
stream_localhost off      # allow access outside localhost
stream_auth_method 1      # use basic authentication for access
stream_authentication USER:PWD

Where USER and PWD is the authentication that you want to use for accessing the image stream from a browser.

Conclusions

The EyeToy does not produce high-quality images and has a hard time in badly lit surroundings, but as a first IoT-experiment it is sufficient and now I can keep an “eye” (though not in HQ) on parts of our home from a web browser while being away. With the correct setup, motion provides streaming from USB cams in a simple way.

 

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s