Build a Raspberry Pi Webcam Server using Motion

This tutorial is for a Raspberry Pi running the out of the box Raspbian OS.

Download and install the Motion package using the following command:

sudo apt-get install motion

Optional, but recommended if you are just starting out.  Make a backup of the out of the box configuration file.  Change to the motion directory with:

cd /etc/motion

and copy the default motion.conf file:

sudo cp motion.conf motion.conf.bak

Next we need to make some changes to the configuration file motion.conf.  The nano file editor comes pre-installed so we’ll use it:

sudo nano /etc/motion/motion.conf

Find the following lines and make the following changes.  (Ctrl+W is search in nano)

  • daemon off -> daemon on (this will run allow the program to run as a service)
  • stream_localhost on -> stream_localhost off (this will allow you to view the stream webpage from other computers)

Other optional/tweakable parameters:

  • framerate 15 (changes the number of frames per second (fps) that are captured)
  • width 640 (This changes the width of the images)
  • height 480 (This changes the height of the images)
  • target_dir /var/lib/motion (This is where Motion stores images and videos when it detects motion, this directory needs to be writable)

Save your changes

Now we need to enable the motion daemon by editing the motion file:

sudo nano /etc/default/motion

Make the following change:

  • start_motion_daemon=no -> start_motion_daemon=yes

Next we need to make sure the motion capture directory is writable

sudo chmod 777 /var/lib/motion

Now make sure the camera is connected and start the service with the command:

sudo service motion start

To stop the service, the command is:

sudo service motion stop

Now you can view the camera from a browser on the Pi (or other computer if stream_localhost was set to off) by connecting to your Pi’s IP address and Motion’s default port 8081

http://192.168.1.70:8081

To find your Pi’s IP address you can type the following in the terminal (also 5 Ways to Check the IP Address in Linux):

ip addr show

and look for the line that starts with inet


Common errors

  1. Webpage is not available or error connection refused.
    • Check to make sure you turned the localhost restriction off (stream_localhost off) in the motion.conf file.
  2. The webpage crashes every time motion is detected.
    • Check to make sure the motion directory is writable, any external drives are plugged in and mounted.

Troubleshooting

If you made a backup of the original motion.conf file and want to restore it, you may do so by changing to the motion directory:

cd /etc/motion

and copying the backup file over your modified version:

sudo cp motion.conf.bak motion.conf

If you get any “Permission denied” messages add sudo to the beginning of your command

The webpage with the webcam stream does not work in Microsoft’s Internet Explorer.

Error logging (http://www.lavrsen.dk/foswiki/bin/view/Motion/ErrorLogging)

Motion reports errors to the console when it runs in non-daemon mode. And it outputs even more information when run in setup mode.

Error logging has been implemented so that errors during daemon (background) mode are logged in the syslog.

The syslog is in most Linux systems the file /var/log/messages (e.g. RedHat/Fedora) or /var/log/syslog and /var/log/user.log (e.g. Debian).

Based on the tutorial from pimylifeup: http://pimylifeup.com/raspberry-pi-webcam-server/

  • Thanks for the write up. Trying this one out now.

  • Aditya Rai

    How to password protect my stream