Motion - Motion Guide Installation

Motion Guide - Installation

This topic consists of the following subtopics: MotionOverview, KnownProblems, InstallOverview, PrepareInstall, ConfigureScript, MakeInstall, UpgradingFromOlderVersion, ErrorLogging.

Motion Overview

What is Motion?

Motion is a program that monitors the video signal from one or more cameras and is able to detect if a significant part of the picture has changed. Or in other words, it can detect motion.

The program is written in C and is made for the Linux operating system.

Motion is a command line based tool. It has absolutely no graphical user interface. Everything is setup either via the command line or via a set of configuration files (simple ASCII files that can be edited by any ASCII editor).

The output from motion can be:

  • jpg files
  • ppm format files
  • mpeg video sequences

How do I get Motion and what does it cost?

Motion is an open source type of project. It does not cost anything. Motion is published under the GNU GENERAL PUBLIC LICENSE (GPL) version 2 or later. It may be a bit difficult to understand all the details of the license text (especially if your first language is not English). It means that you can get the program, install it and use it freely. You do not have to pay anything and you do not have to register anywhere or ask the author or publisher for permission. The GPL gives you both rights and some very reasonable duties when it comes to copying, distribution and modification of the program. So in very general terms you do not have to worry about licensing as a normal hobby user. If you want to use Motion in a commercial product, if you want to distribute either modified or original versions of Motion - for free or for a fee, you should read the license carefully. For more information about free software and the GPL, I encourage you to study the very interesting documents about the subject available the of the Free Software Foundation pages about the Philosophy of the GNU Project.

Maintenance and Support

Both Motion and the Motion Guide are written by people that do all this as a hobby and without asking for any payments or donations. We have a life other than developing Motion and its documentation. This means that bugfixes and updates to this guide are done as our time and families allow it. You are however encouraged to participate and contribute in a very active mailing list. It is a list with a very "positive attitude" and with many contributors that propose features, post patches, discuss problems and patiently answer newbie questions with a very positive spirit. Expect 1-10 emails per day.

To get motion direct your browser to the Motion Homepage.

On the Download Files page you will find a links to the latest stable version both as sources and binaries for some of the most popular Linux distributions. You will also find links to development versions. Snapshot releases are special test releases that are normally very stable. Every day a Motion Daily Source Snap is created from the Motion Subversion

Motion was originally written by Jeroen Vreeken who still actively participates in the development of Motion and later Folkert van Heusden continued as a lead programmer with Kenneth Lavrsen responsible for Motion Guide, website and releases on Sourceforge.

From version 3.1.12 Motion is now project managed entirely by Kenneth Lavrsen, and the project now shift towards being developed by many contributers.

For support we encourage you to join the mailing list instead of writing to Jeroen, Folkert or Kenneth directly. We are all very active on the mailing list and by using the mailing list much more users will have benefit of the answers. Newbies and stupid questions are welcome on the list. Contributions in the form of patches are also very welcome on the mailing list.

Which version to download and use?

Versions 3.2.X are the current version. There is at the moment no development branch. The versions 3.1.X ended at 3.1.20 and there will be no more 3.1.X releases. If you use use a version older than 3.2.X you are encouraged to update.

Since 3.1.13 quite many options have been renamed to make setting up Motion easier. From 3.1.17-18 some unfinished features have been removed. The Berkeley mpeg feature is now removed because the ffmpeg feature is now mature and much better working. At version 3.1.18 a new network camera feature was introduced replacing the old cURL based netcam code and introducing support of mjpeg streaming cameras. However this new code was quite difficult to get stable. During the development of 3.2.2 the network camera code was totally rewritten again learning from our experience and now finally it seems to be stable.

Motion is included in Debian, while Ubuntu and RPM users can find binary packages on the Motion Sourceforge file download page.

What features does Motion have?

See more description at the Motion Homepage.
  • Taking snapshots of movement
  • Watch multiple video devices at the same time
  • Watch multiple inputs on one capture card at the same time
  • Live streaming webcam (using multipart/x-mixed-replace)
  • Real time creation of mpeg movies using libraries from ffmpeg
  • Take automated snapshots on regular intervals
  • Take automated snapshots at irregular intervals using cron
  • Executing external program when detecting movement
  • Execute external program at the beginning of an event of several motion detections.
  • Execute external program at the end of an event of several motion detections.
  • Execute external program when a picture is saved.
  • Execute external program when a movie mpeg is created (opened)
  • Execite external program when a movie mpeg ends (closed)
  • Motion tracking
  • Feed events to an MySQL or PostgreSQL database.
  • Feed video back to a video4linux loopback for real time viewing
  • Web interface using Motion Related Projects such as motion.cgi, Kenneths Webcam Package, Kevins Webpage, X-Motion and many more.
  • User configurable and user defined on screen display.
  • Control via simple web interface.
  • Automatic noise and threshold control
  • Ability to control the pan/tilt of a Logitech Sphere (or Orbit) camera
  • Highly configurable display of text on images.
  • High configurable definition of path and file names of the stored images and films.

You can find more information and links at the Motion Homepage.


Motion is originally developed for Linux and it is still mainly developed and supported for this platform. From version 3.1.15 an experimental port has been made by Angel Carpintero. Not all features of Motion are supported at this time and it still needs a lot of test time on different hardware. Angel is very interested in feedback. Join the Motion Mailing List and give your feedback there. Patches for bugfixes and for enabling the missing features are very welcome. The rest of this guide is still mainly targeted for Linux users. Follow this topic to Install FreeBSD.


From Motion version 3.2.4 it is now also possible to build and install Motion under MacOSX. Feature set it the same as for FreeBSD. See the MacOSX topic for specific help how to install Motion and its dependencies on MacOSX. Again this port has been contributed by Angel Carpintero.


You have the following sources of information:

Supported Hardware

Input devices: Here we are thinking about the cameras.

Motion supports video input from two kinds of sources.

Standard video4linux devices (e.g. /dev/video0). Motion has no drivers for cameras. Installing the camera itself is outside the scope of this document. But here are some nice links.

Known Problems

See also the Frequently Asked Questions and Bug Reports for known open bugs.

Kernel 2.6 and pwc. Note that for kernel 2.6 there is a new release of the Philips WebCam (pwc) drivers 10.0.X. It is recommended to install this. At the time of this being written the 2.6.12+ kernels have a version of pwc built-in but it is a crippled version which can only support very small picture size. You can however download the latest source code of the pwc driver (at this time 10.0.11) and build it without having to rebuild your kernel. But you will need to have either the kernel sources or a special kernel-header package installed to compile it. See Installation of PWC page which is also hosted in this wiki.

If you use use a Logitech Quickcam Orbit or Sphere using the driver pwc/pwcx and kernel 2.6.X you should replace the file in the Motion sources called pwc-ioctl.h with the one that comes with the your pwc version. Motion is shipped with 3 versions of pwc-ioctl.h-VERSION. Rename the one that fits your major pwc version number best to pwc-ioctl.h (after renaming the current to something else). There has been some small adjustments in the API that requires that you have the right header file.

Camera picture dimensions must be multiple of 16 Dimensions of camera image must have both height and width that are a multiple of 16. This is normally not a problem. All standard sizes like 640, 480, 352, 320, 288, 240, ...etc are multiples of 16. But if you intend to monitor a network camera which is saving jpeg images you may have to pay attention to the dimensions of the picture.

ffmpeg_filename has changed name to movie_filename The 3.2.5 release contains a motion_guide and man page in which it was forgotten to change ffmpeg_filename to movie_filename. Please note that the option that defines the filenames for mpeg movies is now called movie_filename. This change is made because we may soon implement alternatives to ffmpeg and then ffmpeg_filename will be a bad name. This is fixed in release

error: `time_current_frame' undeclared (first use in this function) A bug in 3.2.5 and where a bugfix related to snapshot feature has created a new bug when you compile Motion without ffmpeg libs installed. This is fixed in 3.2.6.

How do I install Motion?

Motion is mainly distributed as source files that you must compile yourself. There is also an RPM made on Fedora Core 3. And Debian packages are available for selected versions.

The short overview of the steps to install Motion from sources.
  • Preparation: Motion uses a number of shared libraries that must be installed on your computer before you can build Motion. The needed shared libraries depends on the features you wish to use. Features network camera, ffmpeg, MySQL and PostgreSQL needs specific shared libraries installed. See preparation section for more information.

  • Download the motion source files (distributed as tar'ed and compressed files). Place the file in a place of your own choice.

  • Untar and uncompress the file to the place you want the program installed. Editor recommends placing the motion source file directory in /usr/local. If you do not have write access to the /usr/local directory (you are under the mercy of an ignorant system administrator with a severe case of paranoia) - you can install the program in a directory in your home directory. You will then need to read the next section about how to configure before you compile the program. Below is shown the exact commands using version 3.2.X installed in /usr/local as an example (replace /path/to with the actual placement of the tar.gz file).
    cd /usr/local
    tar -xvzf /path/to/motion-3.2.X.tar.gz
  • You will now have created a directory called motion-3.2.X. You can rename it to motion (mv motion-3.1.X motion). I recommend creating a symbolic link to the current version. This way you can more easily experiment with different version simply by changing the link.
    ln -s motion-3.2.X motion
  • Now change to the new directory
    cd motion
  • Run configure. You can start with the defaults. If you need to modify the installation parameters you can read the next section.
  • Build the code
  • Install the code, manual page, etc
    make install
  • In /etc/motion/etc you will find a file called motion-dist.conf. If it is the first time you install Motion - rename this file to motion.conf and edit as a minimum the settings: videodevice, input, norm, frequency, width, height and target_dir. That should get you going.

  • Run the program. To enable more features you must modify the config file.

Installation on Ubuntu

Motion is part of the Ubuntu repository. You can click either click here to install it via the Ubuntu Software-Center.

Or open up a terminal window and type:

sudo apt-get install motion

Before we start configuring Motion, we need to copy the config file to our Home folder so that the master copy won’t be affected. Open a terminal and copy the configuration file to your Home folder with following commands:

mkdir .motion

(Note: This will create a hidden folder “.motion” in your Home directory.)

sudo cp /etc/motion/motion.conf ~/.motion/motion.conf

(Note: This command will copy the original motion configuration file to its location.)

Now can open the configuration file for editing:

sudo nano ~/.motion/motion.conf

After you you have done so, start motion in the terminal simply by typing:

sudo motion

Preparation For Install

Note: If you're using SuSE 9.2, you might want to ADDITIONALLY have a look at Compiling on SuSE 9.2. As mentioned on that page as well, you will still need to read the instructions here as well.

Before you start you may need to install a number of shared libraries that Motion uses. If they are missing the feature will simply normally not be included. Most of these libraries can be found on the CDs of your distribution. A few will have to be downloaded from the Internet. Note that when you install software using pre-compiled binaries (Redhat type RPMs, Debian debs etc) you normally only get what is needed to run the programs themselves. In order to compile other programs from source that uses these pre-compiled libraries you also need to installed the development packages. These are normally called the same name as the package suffixed by -devel or -dev. These development packages contains the header files (xxx.h) that Motion needs to build with the shared libraries. If you build a library from sources you already have these header files. It is recommended to simply install the pre-compiled binary packages and their development brothers.

This is a list of shared libraries used by Motion and the RPM packages that provides them.

Motion will always need these libraries to be built and work
Library RPM Packages Debian Packages
libm, libresolv, libdl, libpthread, libc, ld-linux, libcrypt, and libnsl glibc and glibc-devel libc6 , libc6-dev ,libglib1.2
libjpeg libjpeg and libjpeg-devel libjpeg62 and libjpeg62-dev ( optional libjpeg-mmx-dev )
libz zlib and zlib-devel zlib1g and zlib1g-dev
For generating mpeg films with ffmpeg you need this library:
(See also the section Generating MPEG films with ffmpeg for how to install ffmpeg and libavformat/libavcodec)
Motion must be installed with revision 0.4.8 or 0.4.9pre1 of ffmpeg. Motion will also work with later CVS snapshots of ffmpeg but the API of the ffmpeg libraries changes all the time and without warning. If you have problems compiling Motion or with running an RPM of Motion you may try with an older CVS snapshot of ffmpeg. The Motion developers will like to know when ffmpeg changes and breaks Motion so we can fix it. Please file a bug report then with the exact date of the ffmpeg CVS version you have trouble with.

Library RPM Packages Debian Packages
libavcodec, libavformat ffmpeg and ffmpeg-devel or install from source libavcodec-dev libavcodec0d libavformat-dev libavformat0d (*)
Debian has not provided deb packages for ffmpeg due patent issues. However this is about to change so checkout for availability of newer versions of debian ffmpeg debs. You can build yourself from source or from Christian Marillat website or apt repository.
deb stable main # ( etch )
deb testing main # ( lenny )
deb unstable main # ( sid )

Add the suitable line to your /etc/apt/sources.list and run this:
apt-get update ; apt-get -y install libavcodec-dev libavcodec0d libavformat-dev libavformat0d

For logging in MySQL you need this library:
Library RPM Packages Debian Packages
libmysqlclient mysql and mysql-devel libmysqlclient15-off and libmysqlclient15-dev
For logging in PostgreSQL you need this library:

Library RPM Packages Debian Packages
libpq postgresql-libs and postgresql-devel libpq-dev and libpq4

Configure Script

Configure is script that you run to setup the build environment for the C-compiler. It generates the "Makefile" which the program "make" uses to compile and install the software.

To run configure your current directory must be the motion directory. You type


You can add the parameter ./configure --help to get help on the different switches.

This is walk through of the options.

Option Description
Defaults for the options
are specified in brackets [ ]
Editors comment
-h, --help display this help and exit  
--help=short display options specific to this package This command shows the options special to motion. Recommended
--help=recursive display the short help of all the included packages  
-V, --version display version information and exit Gives no useful information
-q, --quiet, --silent do not print `checking...' messages Not very useful. Output to screen is only a few lines anyway.
--cache-file=FILE cache test results in FILE. [disabled] No function
-C, --config-cach alias for `--cache-file=config.cache' No function
-n, --no-create do not create output files Used for testing if other switches produce error - without writing anything to the disk
--srcdir=DIR find the sources in DIR. [configure dir or `..'] DIR is a directory path. Editor recommends having the current directory being the motion installation directory and not using this switch. Then it defaults to the same directory as where the configure script is which is the current directory.
Installation directories:    
--prefix=PREFIX install architecture-independent files in PREFIX
The default /usr/local means that the executable binary "motion" is installed in /usr/local/bin, the manual page in /usr/local/man/man1, the document files in /usr/local/docs/motion-version, configuration file in /usr/local/etc, and some examples config files in /usr/local/examples/motion-versionEditor recommends keeping this default setting.
If you are experimenting with many parallel versions it may be interesting to set the PREFIX to e.g. /usr/local/motion and then add /usr/local/motion/bin to your search path (or simply cd /usr/local/motion/bin before execution).
This way you can change version just by changing the symbolic link in /usr/local/motion as suggested earlier in this guide.
If you are installing the software on a machine where you have no access to the /usr/local but have write access to a home directory, then you should change this to point to a directory within your home tree.
Example: --prefix=$HOME
--exec-prefix=EPREFIX install architecture-dependent files in EPREFIX
If you set this it only defines an alternative installation directory for the executable binary.
Note: The executable binary will be placed in a directory "bin" below the directory specified by this option
Editor recommends leaving this as default (i.e. not setting it).
--bindir=DIR user executables [EPREFIX/bin] With this option you can control exactly in which directory the executable binary is installed. The previous option automatically adds the bin directory. Here you are in fill control.
--sbindir=DIR System admin executables [EPREFIX/sbin] Not used by motion. Ignore it.
--libexecdir=DIR program executables [EPREFIX/libexec] Not used by motion. Ignore it.
--datadir=DIR read-only architecture-independent data [PREFIX/share] Not used by motion. Ignore it.
--sysconfdir=DIR read-only single-machine data [PREFIX/etc] This is where motion both installs the default configuration file and also where it later searches for it.
Motion searches for the configuration file "motion.conf" in the following order:

    1. Current directory from where motion was invoked
    2. $HOME/.motion
    3. The sysconfig directory set by this switch. If not defined the default is /usr/local/etc/

Editor recommends leaving this at default. Be careful if you run "make install" again. This will overwrite the motion.conf file that you have edited and experimented with for hours. Make sure to keep a copy in a safe place. Alternatively, copy the working file to the motion base install directory. Then make install will simply copy the same file back again.
--sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] Not used by motion. Ignore it.
--localstatedir=DIR modifiable single-machine data [PREFIX/var] Not used by motion. Ignore it.
--libdir=DIR object code libraries [EPREFIX/lib] Not used by motion. Ignore it.
--includedir=DIR C header files [PREFIX/include] Not used by motion. Ignore it.
--oldincludedir=DIR C header files for non-gcc [/usr/include] Not used by motion. Ignore it.
--infodir=DIR info documentation [PREFIX/info] Not used by motion. Ignore it.
--mandir=DIR man documentation [PREFIX/man] Editor recommends the default.
Optional Packages:    
--with-linuxthreads Use linuxthreads in BSD instead of native phtreads Only relevant for BSD. In Linux we always use this per default.
--with-pwcbsd Use pwcbsd based webcams ( only BSD ) This option allow to build motion to support V4L/V4L2 in BSD.
--without-bktr Exclude to use bktr subsystem , that usually useful for devices as network cameras ONLY used in *BSD
--without-v4l Exclude using v4l (video4linux) subsystem. Makes Motion so it only supports network cameras. Can be used if you do not need V4L support and maybe lack some of the libraries for it.
--with-jpeg-mmx=DIR Specify the prefix for the install path for jpeg-mmx for optimized jpeg handling (optional). If this is not specified motion will try to find the library /usr/lib/libjpeg-mmx.a /usr/local/lib/libjpeg-mmx.a. Considered experimental
--with-ffmpeg=DIR Specify the path for the directory prefix in which the library and headers are installed.
If not specified configure will search in /usr/ and /usr/local/
DIR is the directory PREFIX in which the ffmpeg shared libraries and their headers are installed.
If you install ffmpeg from sources and use the default directories or if ffmpeg is installed as a binary package (RPM or deb) you do not need to specify the directory prefix. Configure will find the libraries automatically. If you installed ffmpeg from sources and specified a different --prefix when building ffmpeg you must use the same value for the DIR ( --with-ffmpeg=DIR).
For more information on FFmpeg see the FFmpeg project home page.
FFmpeg is a package that enables streamed video mpeg signal from your web camera to a browser.
Editor recommends installing ffmpeg from source and in the directory /usr/local/ffmpeg and build ffmpeg with ./configure --enable-shared.
This places libraries in /usr/local/lib and headers in /usr/local/include.
--without-ffmpeg Do not compile with ffmpeg Use this if you do not want to compile with ffmpeg. If ffmpeg is not installed you do not need to specify that Motion must build without ffmpeg.
--with-mysql-lib=DIR Lib directory of MySQL Normally, configure will scan all possible default installation paths for MySQL libs. When its fail, use this command to tell configure where MySQL libs installation root directory is.
--with-mysql-include=DIR Include directory with headers for MySQL Normally, configure will scan all possible default installation paths for MySQL include. When its fail, use this command to tell configure where MySQL include installation directory is. This is the directory with the MySQL header files.
--without-mysql Do not compile with MySQL support Use this if you do not want to include MySQL support in the package.
This can also be useful if you get compilation errors related to MySQL and you actually do not need the feature anyway.
--without-pgsql Do not compile with PostgreSQL support Use this if you do not want to include PostgreSQL support in the package.
This can also be useful if you get compilation errors related to PostgreSQL and you actually do not need the feature anyway.
--with-pgsql-include=DIR Normally, configure will scan all possible default installation paths for pgsql include. When it fails, use this command to tell configure where pgsql include installation root directory is.  
--with-pgsql-lib=DIR Normally, configure will scan all possible default installation paths for pgsql libs. When it fails, use
this command to tell configure where pgsql libs installation root directory is.
--without-optimizecpu Exclude autodetecting platform and cpu type. This will disable the compilation of gcc optimizing code by platform and cpu. Use this if the optimization causes problems. Typically if you build on some non X386 compatible CPU.
Developers options    
--with-developer-flags Add additional warning flags for the compiler. This option is for developers only. It produces a flood of warnings that helps the developer to write more robust code. These warnings are normally harmless but can sometimes be a latent defect.
For more information about these flags, see CompileWithDeveloperFlags


When you run make, all the C-source files are automatically compiled and linked. Just look out for error messages.

Make uses a file called "Makefile" which is generated by the "configure" script you just ran. If you have special needs you can manually edit this file. Next time you run configure a new Makefile will be generated and your changes are lost.

ALERT! Attention!

If you have run make before, you should run a make clean before running make again. This cleans out all the object files that were generated the previous time you ran make. If you do not run make clean first before you rebuild Motion you may not get the additional feature included. For example: If you built Motion without ffmpeg support and then add it later - and rebuild Motion without running make clean first - the ffmpeg feature does not get compiled into the Motion binary.

First time you build motion run ./configure, make, make install. If you need to build it again (to run with different configure options) run ./configure, make clean, make, make install.

Make Install

make install simply copies all the nice files that were generated during the compilation/linking that make did.

Makes the directories (if they do not already exist)(path shown are the defaults): /usr/local/bin, usr/local/man/man1, /usr/local/etc, /usr/local/share/doc/motion-3.2.X, and /usr/local/share/doc/examples/motion-3.2.X.

Copies the following files from the base motion directory (assuming the default PREFIX /usr/local was used when running configure - otherwise adjust to the actuals you chose)
  • Executable binary "motion" to /usr/local/bin
  • Manual page "motion.1" to /usr/local/man/man1
  • Document files "CHANGELOG, COPYING, CREDITS, INSTALL, and README to /usr/local/share/doc/motion-3.2.X
  • Example configuration files "*.conf" to /usr/local/share/doc/examples/motion-3.2.X
  • Configuration file "motion-dist.conf" to /usr/local/etc
Note that the any existing files are overwritten. The default config file motion-dist.conf is named like this so that you do not get your working motion.conf file overwritten when you upgrade Motion.


From the motion base installation directory you simply run make uninstall

And delete the base installation directory in /usr/local and any link pointing to it. If you have forgotten where you installed it or someone else did it for you, simply search for the files and directories starting with motion. If the filenames and the directories match the names described in the "Make Install" section of this document, you can safely delete them.

Additional Make Options

The make command can be run with several options. make, make install and make uninstall has already been described above.

make clean
deletes all the binary files (object files) and the motion binary generated by make. It also deletes temporary files and any jpg files that motion has saved in the motion source directory. It is very important to always run make clean before you run make if you change the configuration (like adding features such as ffmpeg) and rebuild motion.

make distclean
deletes the files: config.status, config.log, config.cache, Makefile, and motion.spec.

make updateguide
fetches a fresh new copy of this guide and place it in your motion source directory. Note that the pictures are not downloaded.

make dist
performs make clean, make distclean and make updateguide in one single operation.

Upgrading From Older Version

If you are upgrading from motion 3.0.X or from an older version of 3.1.X you should note that many options have been removed from version 3.1.13 and forward and many new have arrived. You still have most of the old features. The options have been changed for two reasons. New more flexible features and to simplify getting started with Motion. With 3.2.1 the changes are significant. You should also note these major differences.
  • The use of thread files has completely changed. Read the section "The Config Files" carefully.
  • The mask file format has changed. Read the section about "Mask File"
  • Pre_capture feature introduced in 3.1.12
  • Advanced filename feature enables very flexible filename definitions (3.1.13)
  • onffmpegclose options enables running external scripts when mpeg file is closed (3.1.13)
  • despeckle feature improves motion detection and noise immunity (3.1.13)
  • Minimum_motion_frames feature prevents short noise events from being saved (3.1.14)
  • If you use the database features you need to note that from version 3.1.15 and forward the fields have been redefined. Removed are second, minute, hour, day, month and year. Instead these six have been replaced by a real timestamp field called time_stamp. The relatively new field 'type' has been renamed to 'file_type' to avoid reserved SQL words. A new field 'text_left' has been added which stores the text given by the config option text_left. And last a field called 'camera' has been added which stores the thread number.
  • From 3.1.15 the ffmpeg feature now also supports mpeg4 and msmpeg4. The build process of Motion now use ffmpeg libraries as shared libraries. The --with-libavcodec has been replaced by a --with-ffmpeg which only needed to specify if you are installing ffmpeg from sources in a non-standard location. If you have installed ffmpeg from sources already you will need to rebuild by running (from within the ffmpeg source file root) ./configure --enable-shared followed by make and make install. If you had installed ffmpeg from a binary RPM or deb you probably don't have to do anything.
  • Rotate feature was introduced in 3.1.15
  • Berkeley mpeg feature has been removed in 3.1.18 (use ffmpeg - it is much better)
  • Incomplete prediction feature was removed in 3.1.18. (lack of interest in finishing it)
  • Smart Mask feature introduced in 3.1.18
  • output_normal can now also have the value "first" which means only save first jpg from each event (3.1.18)
  • ffmpeg-0.4.9 is now supported. Motion detection mpegs can no longer be saved as mpeg1 (ffmpeg does not support non-standard framerates in 0.4.9) (3.1.18)
  • Motion now supports most (not all) mjpeg streaming cameras (3.1.18).
  • output_normal can now have values "first" or "best". It is used when you need to present a link to an mpeg movie shown as a single jpeg image. "First" saves the first picture frame in the new event. "Best" saves the picture frame with most motion content (most changed pixels) when the event is over. "on" still saves all motion detection picture frames plus pre and post captured images. With "best" you can set jpeg_filename = "preview" and it gets the same filename as the mpeg file but with extension .jpg. Option "locate" can also take the value "preview" which makes it only draw a rectangel on the jpeg but not on the mpeg movie. (3.2.1)
  • The xmlrpc remote control interface is replaced by a much nicer http remote control interface. (3.2.1)
  • All the options that calls external programs have been made much more generic. New onxxxx options have been added. Execute, sms and mail have been replaced by the generic on_event_start. (3.2.1)
  • New setup mode makes setting all the detection options much easier.
  • netcam now also supports proxies (3.2.2) and ftp (3.2.4)
  • text on the pictures can be set to double size (3.2.2)
  • Tracking with Logitech Sphere/Orbit improved (3.2.4)
  • SQL database feature is now fully configurable so you can control which fields you have in the database.
  • Many new conversion specifiers have been added which can be used both in filenames, commands, text, and SQL database features (3.2.2-3.2.4)
  • Stepper motor tracking feature extended to also include a Y axis (3.2.5)
  • ffmpeg_filename has been renamed to movie_filename to prepare for alternative implementation to mpeg files made with ffmpeg (3.2.5)
  • New feature: ffmpeg_deinterlace which can de-interlace using the ffmpeg libs (3.2.5)
  • New feature: minimum_frame_time which enables Motion to run at frame rates below 2. minimum_gap feature was removed since this was useless and the new minimum_frame_time feature replaces it with much better function. (3.2.7)
  • New feature: process_id_file which writes a PID file when started and removes it when stopped (3.2.7)
  • V4L2 support with many new supported palettes : V4L2_PIX_FMT_SBGGR8, V4L2_PIX_FMT_SN9C10X, V4L2_PIX_FMT_JPEG, V4L2_PIX_FMT_UYVY (3.2.8)
  • ffmpeg_video_codec allow swf (3.2.8)
  • V4L2 fix support for : V4L2_PIX_FMT_MJPEG (3.2.9)
  • ffmpeg_video_codec allow flv and ffv1(3.2.9)
  • v4l2_palette: allow to choose preferable palette to be use by motion to capture from those supported by your videodevice.
  • netcam_http: setup keep_alive , 1.1 or 1.0 http method to be used by netcam.
  • on_camera_lost: Command to be executed when a camera can't be opened or if it is lost.
  • AreaDetect, on_area_detected: Command to be executed by area_detect trigger.
  • ConfigOptionNetcamTolerantCheck , netcam_tolerant_check less strict jpeg checks for network cameras with a poor/buggy firmware ( 3.2.11 ).

The table below shows the new options in the left column, and obsolete options in the right column. If the there are options on both sides in a row it means that the options in the left column replaced the options in the right column.

New Options Obsolete Options
text_left (3.1.13)
text_right (3.1.13)
text_changes (3.1.13)
drawtext_user (3.1.13)
drawtext_shots (3.1.13)
drawtext_changes (3.1.13)
jpeg_filename (3.1.13)
ffmpeg_filename (3.1.13)
snapshot_filename (3.1.13)
timelapse_filename (3.1.13)
predict_filename (3.1.13)
(predict_filename removed in 3.1.18)
oldlayout (3.1.13)
snapshots_overwrite (3.1.13)
snapshot_interval (3.1.13) snapshots (3.1.13)
  realmotion (3.1.13)
despeckle (3.1.13)  
pre_capture (3.1.12)  
ffmpeg_timelapse (v. 3.1.14) ffmpeg_timelaps (renamed v 3.1.14)
ffmpeg_timelapse_mode (3.1.14)  
sql_log_image (3.1.14)
sql_log_snapshot (3.1.14)
sql_log_mpeg (3.1.14)
sql_log_timelapse (3.1.14)
sql_log_prediction (3.1.14)
minimum_motion_frames (3.1.14)  
rotate (3.1.15)  
ffmpeg_variable_bitrate (3.1.15)
ffmpeg_video_codec (3.1.15)
  berkeley_single_directory (3.1.18)
mpeg_encode (3.1.18)
mpeg_encode_bin (3.1.18)
adjust_rate off (3.1.18)
jpg_cleanup (3.1.18)
  predict_filename (3.1.18)
predict_enable (3.1.18)
predict_threshold (3.1.18)
predict_description (3.1.18)
sql_log_prediction (3.1.18)
brightness (3.1.18)
contrast (3.1.18)
saturation (3.1.18)
hue (3.1.18)
smart_mask_speed (3.1.18)  
valid values are now "on", "off", "first" (3.1.18) and "best" (3.2.1)
setup_mode (3.2.1) always_changes (3.2.1)
valid values are now "on", "off", "preview" (3.2.1)
Besides normal path names the value "preview" has speciel meaning together with output_normal = "best" (3.2.1)
control_html_output (3.2.1)  
on_event_start (3.2.1) execute (3.2.1)
sms (3.2.1)
mail (3.2.1)
on_event_end (3.2.1)  
on_motion_detected (3.2.1)  
on_picture_save (3.2.1) onsave (3.2.1)
on_movie_start (3.2.1)
on_movie_end (3.2.1)
onmpeg (3.2.1)
onffmpegclose (introduced 3.1.13)(renamed to on_movie_end 3.2.1)
netcam_proxy (3.2.2)  
text_double (3.2.2)  
Feature has been heavily improved so it is actually usefull now (3.2.2).
Now also supports fetching single frame jpeg pictures via ftp using ftp:// syntax (3.2.4)
track_step_angle_x (3.2.4)
track_step_angle_y (3.2.4)
Add better configuration of auto tracking with a Logitech Sphere/Orbit camera.
track_move_wait (3.2.4)
track_auto (3.2.4)
Adds better configuration of auto tracking feature
sql_query (3.2.4)
Adds full flexibility of defining fields when using the SQL database features.
track_maxy (3.2.5)
track_motory (3.2.5)
movie_filename (3.2.5) ffmpeg_filename (3.2.5)
ffmpeg_deinterlace (3.2.5)  
minimum_frame_time (3.2.7) minimum_gap (3.2.7)
process_id_file (3.2.7)  
ffmpeg_video_codec allow swf (3.2.8)  
ffmpeg_video_codec allow flv and ffv1 (3.2.9)  
v4l2_palette (3.2.10)
netcam_http (3.2.10)
on_camera_lost (3.2.10)
area_detect, on_area_detected(3.2.10)
ffmpeg_video_codec mov(3.2.10)
output_normal center(3.2.10)
  night_compensate (3.2.10)
low_cpu (3.2.10)
netcam_tolerant_check (3.2.11)  

Error Logging

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).

-- KennethLavrsen - 13 Aug 2005
Topic revision: r3 - 13 Aug 2005, KennethLavrsen
Copyright © 1999-2016 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Please do not email Kenneth for support questions (read why). Use the Support Requests page or join the Mailing List.
This website only use harmless session cookies. See Cookie Policy for details. By using this website you accept the use of these cookies.