Change History

From ZoneMinder Wiki
Revision as of 18:16, 9 February 2016 by Jtech (talk | contribs) (Point to GitHub releases for those after v1.25)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Change History aka ChangeLog

Current Release notes for Zoneminder on GitHub

Release 1.25.0 - 2011/08/26

Major release focused primarily on total revamp of logging and debug.

  • FEATURE - Logging and debug have been completely refreshed and now (by default) log entries are stored in the database. Classic skin now features a 'log' view which uses the stored database entries and combines the output of all components in one place. This view can be filtered or exported and dynamically updates as new entries are created. The 'Debug' options tab is now renamed to 'Logging' and includes several new settings. All components have been tidied up and use consistent interface for all logging and error reporting. The system also monitors the frequency of warnings and errors to produce an overall indication of system health.
  • FEATURE - Events can now be uploaded using SFTP instead of regular FTP. This allows for more secure and flexible uploading. The FTP options tab is now renamed Upload and contains additional options.
  • FIX - Fixed Local File Inclusion (LFI) vulnerability. Please note a patch for this is also available for 1.24.4 which the 1.24.4 tarball also contains for recent downloads.
  • FIX - Fixed issue with video generation failing in background filters when using absolute event paths.
  • FIX - Fixed problem with 'in set' clauses in filters when run in the background.
  • FIX - Fixed issue with deleted events not always getting cleaned up from file system.
  • FIX - Fixed problem with some IP cameras using single images and not issuing a Content-length header.
  • LANGUAGE - Spanish translation has been updated.
  • MISC - Updated to use 1.3.x Mootools javascript libraries.
  • MISC - Removed support for very old versions of ffmpeg libraries.

Release 1.24.4 - 2011/05/30

Follow-up release. Contains mostly upgrade and convenience improvements as well as a small number of important config and system management fixes.

  • FEATURE - Changed all system components to use JSON syntax for serialization. This removes the dependency on the rarely supported PHP::Serialization perl module. Basic JSON encoding and decoding functionality is included where support packages are not installed. Please note that it is critical that you run in order to convert your saved filters.
  • FEATURE - The now automatically determines the version to upgrade from where possible. This removes the necessity to supply the -v parameter in most cases.
  • FEATURE - The classic view console and scripts now both detect and report when code and database versions do not match. The system will not start if this is the case and the version number in the console will be highlighted red.
  • FEATURE - Temporary directories are recreated on startup if necessary.
  • FIX - Fixed issue where someconfiguration was given blank values causing various bogus config messages and javascript errors in the web interface.
  • FIX - Protect system temporary and log directories from change of ownership on install and deletion attempts on uninstall.
  • FIX - Manage memory connection handles to avoid exhaustion. Thanks for forum user mastertheknife for tracking this one down.
  • TRIVIAL - Further information has been added to the WEB_x_SCALE_THUMBS config options to indicate that the appropriate PHP graphics package needs to be installed for this functionality to work.

Release 1.24.3 - 2011/05/16

Long delayed point release. Brought up-to-date to work with new versions of ffmpeg etc. A number of new features are included and several important bugfixes. A new contributed iPhone skin is also included.

  • FEATURE - Add config (Options -> Config -> V4L2_CAPTURE_FIELDS) to allow better control of interlacing (or not) of Video4Linux2 cameras. Currently only on a global basis.
  • FEATURE - Added ability to move to PTZ presets from mobile view.
  • FEATURE - Added contributed iPhone interface (thanks to user Jai Dhar). Use skin 'EyeZM' to try
  • FEATURE - Added more camera presets
  • FEATURE - Added new Panic debug call for entirely unexpected occurances. Changed some Fatal calls to Panic, only the latter generate stack traces or core dumps.
  • FEATURE - Allow specification of RUNDIR, TMPDIR and LOGDIR as environment variables to configure. This allows completely partitioned installs provided user permissions etc are correctly set up
  • FEATURE - Changed build procedure to make it easier to import values from config.
  • FEATURE - Ensure that paths specified as arguments to configure are correctly propagated to all elements of the system
  • FEATURE - Event path now no longer is required to be under web root, so can be placed outside of web root altogether to prevent image browsing by unauthenticated users.
  • FEATURE - Now works with current ffmpeg git snapshot
  • FEATURE - Improved event functions (thanks for user John Resig for contribution).
  • FEATURE - Mapped memory (versus shared) is now the default.
  • FEATURE - Modified to handle systems where only Video4Linux2 is installed, with no V4L1
  • FEATURE - Streaming detection and control is now on a bandwidth basis rather than global.
  • FEATURE - If a monitor group is selected and a new monitor added, it will automatically be added to that group.
  • FEATURE - Improved process control and tidying on monitor creation and deletion.
  • FEATURE - Audit functionality now checks for greater range of DB inconsistencies.
  • FEATURE - Database config changes are now automatically applied on system restart.
  • FEATURE - The script has now been restructured be more reliable.
  • FEATURE - Configuration is now regenerated automatically on running 'configure' script.
  • FEATURE - Video generation and download is more reliable with additional HTTP headers.
  • FEATURE - Updated to latest 1.2 branch of mootools
  • FEATURE - Included sample apache, logrotate and syslog configuration files in misc directory
  • FIX - Changed default signal loss detection colour
  • FIX - Changed name of memory map files to not be hidden files.
  • FIX - Changed names of jpeg memory function to not clash with new 'official' functions for the same kind of operation
  • FIX - Corrected some compiler warnings
  • FIX - Corrected some obscure failure scenarios in zmaudit
  • FIX - Corrected some request queueing issues in Ajax calls
  • FIX - Fixed detection issues with zmfilter when archiving to zip files
  • FIX - Fixed issue on USB cameras where failure to query crop settings was fatal.
  • FIX - Fixed issue where events could sometimes be created with unitialiased time, so would appear to be from 1970 (or 1969 if West of 0 degrees Lat).
  • FIX - Fixed issue with libgcrypt complaining about application not initialising library.
  • FIX - Fixed minor issues with trigger connections and channels
  • FIX - Fixed some DB column dimensions to better match real world values
  • FIX - Fixed various minor HTML errors
  • FIX - For HTTP 1.0 remote cameras, do not send 1.1 headers
  • FIX - For HTTP remote cameras, failure to fetch image is not necessarily fatal to process
  • FIX - Improved alarm handling in montage view
  • FIX - Improved detection of signal loss in cameras.
  • FIX - Improved functioning of web PTZ controls
  • FIX - Fixed issue with unarchiving events.
  • FIX - Improved layout and window size of options related web windows.
  • FIX - Modified some buffer lengths to not use BUFSIZ which is platform dependent
  • FIX - Corrected some instances in scripts where custom shell execution methods were called
  • FIX - Now checks for more external libraries during configure
  • FIX - Removed custom typedefs and use ones from stdint where applicable
  • FIX - Replaced some deprecated PHP function calls with more recent equivalents
  • FIX - Removed some redundant configuration
  • FIX - Updated some calls to ffmpeg deprecated functions
  • FIX - Updated to match ffmpeg updates
  • FIX - Removed support for PHP version 4.1.0 and older
  • FIX - Ffmpeg monitors now detects camera restart or disconnection more reliably.
  • LANGUAGE - Added Estonian translation, thanks to user Seston
  • LANGUAGE - Updates to Italian translation
  • TRIVIAL - Changed some die calls to error_log to capture reasons

Release 1.24.2 - 2009/06/29

Point release with usual mix of new features and fixes and tweaks.

  • FEATURE - Added facility to probe when adding new monitors. This will potentially detect attached local devices and network cameras (of major manufacturers) and suggest sensible defaults.
  • FEATURE - SDP parsing of MPEG streams etc is now done in ZoneMinder rather than ffmpeg. This means that more information can be deduced so the monitor sub path parameter is now longer necessary.
  • FEATURE - Added support for different Video4Linux versions to zmu
  • FEATURE - Added patch contributed to improve performance under IE and also better detection of stream termination in zms.
  • FEATURE - Added better support for localised installs by allowing scripts to reference local copies of the perl modules instead of the system ones if required.
  • FEATURE - Added incremental naming scheme for new monitors, plus more sensible defaults
  • FEATURE - Updated to use version 1.2.1 of Mootools.
  • FIX - Various RTSP/RTP fixes to improve reliability and crash resistance.
  • FIX - Fixed problem with run states not correctly starting when coming out of states with disabled cameras.
  • FIX - Removed some troublesome references to #defines from ffmpeg that were causing issues for people with different versions.
  • FIX - Corrected local camera presets to account for Video4Linux versions
  • FIX - Corrected various layout issues in montage and event stills views.
  • FIX - Addressed various issues with Ajax and communications with stream processes
  • FIX - Added contributed patch to reset camera settings to saved values on restart
  • FIX - Corrected various outstanding PHP warnings.
  • FIX - Various minor web issues and misformatting corrected.
  • LANGUAGE - Fixed issue with trailing white-space in language files causing issues with headers.
  • LANGUAGE - Added cn-zh Chinese language file.

Release 1.24.1 - 2009/02/23

Wrap-up release addressing a number of issues discovered in 1.24.0 plus a handful of new features.

  • FEATURE - Allows shortcut logins on any page of web interface via passing of 'auth' hash as currently passed to zms. This must be explicitly enabled via AUTH_HASH_LOGINS option, read the help text of that option for more details.
  • FEATURE - Changed exit message on forced aborts, issues addr2line command to execute when exiting abnormally to logs.
  • FEATURE - Added V4L_MULTI_BUFFER option to control amount of buffering used by capture cards with multiple inputs per chip. Please read the option help text for more information.
  • FEATURE - Improved debug on event creation and closing to make clearer why/when events are starting and stopping.
  • FEATURE - Improved buffer overrun handling to detect and output when this is caused by analysis daemon not processing images.
  • FIX - Multiple updates to Video 4 Linux 2 handling for analog cameras.
  • FIX - Fixed issue with greyscale analog cameras not functioning properly.
  • FIX - Fixed problem with EXTRA_DEBUG_TARGET not working properly for some targets.
  • FIX - Issue with RTSP basic authentication not picking up supplied username and password properly corrected.
  • FIX - Added missing guard ifdefs in zm-debug.h to prevent multiple inclusion.
  • FIX - Fixed problem with cleanup of mapped memory files.
  • FIX - Fixed problem with event exports.
  • FIX - Fixed various issues when defining new control presets.
  • FIX - Fixed options mismatch Video 4 Linux versions when defining new monitors.
  • FIX - Fixed problem with monitor reordering on console page.
  • FIX - Fixed problem with logins on 'mobile' skin.
  • TRIVIAL - Improved debug emitted on capture failures.
  • TRIVIAL - Options are now listed without the leading ZM_ as was a bit redundant.
  • TRIVIAL - Moved DUMP_CORES option to Debug section.

Release 1.24.0 - 2009/02/09

Major architectural changes and security fixes.

  • FEATURE : Completely rewritten web GUI. Although it looks pretty much the same the file organisation is completely different. Every page is now xHTML and much cleaner with all styling done via CSS. This will also allow support for other custom interfaces (skins) in future.
  • FEATURE : Supports MPEG4 input from cameras. Currently only tested with Axis and ACTi cameras but only because those are the only ones I have been able to access. May well work with other cameras. Supports UDP RTP unicast and mulicast, RTP over RTSP and RTP over RTSP over HTTP.
  • FEATURE : Includes new 'ffmpeg' camera type. This essentially passes the path you configure directly to ffmpeg and uses whatever it squirts out. This can be used as an alternate method for some MPEG cameras, MPJPEG cameras, video files or basically anything that ffmpeg will understand. ZM does not do any interpretation of the path but just passes it to ffmpeg so if it doesn't work for a particular source then there isn't much I can do about it. I recommend trying with ffplay to test that ffmpeg likes the stream before trying to use it with ZM.
  • FEATURE : Optional use of mapped memory instead of shared memory. This is a different, though related, method of sharing memory between processes. From the help for ZM_PATH_MEM ZoneMinder has historically used IPC shared memory for shared data between processes. This has its advantages and limitations. This version of ZoneMinder can use an alternate method, mapped memory, instead which can be enabled with the --enable--mmap directive to configure. This requires less system configuration and is generally more flexible. However it requires each shared data segment to map onto a filesystem file. This option indicates where those mapped files go. You should ensure that this location has sufficient space for these files and for the best performance it should be a tmpfs file system or ramdisk otherwise disk access may render this method slower than the regular shared memory one.
  • FEATURE : Uses Video for Linux version 2 if present on your system. Monitors can be configured to use version 1 if preferred though. Video for Linux 2 is an enhanced and improved video API allowing better control and functionality for video devices and will be used by default if present unless disabled.
  • FEATURE The Notes fields in events is kept up-to-date with triggered zones as events progress. So all zones that contributed at any time etc will be listed allowing searches for activity in zones. Previously only the initial zone (or other trigger) was included in the event.
  • FEATURE : Added change to better detect if the zms stream is closed at the client end.
  • FEATURE : Improved the reporting in of the correct status when a ZM process exists or crashes.
  • FEATURE : Improved header and library detection in configure.
  • FEATURE : Made javascript in watch view more robust if communications interrupted with server.
  • FEATURE : An additional option is now available to 'configure'. You can pass the MySQL engine type via the MYSQL_ENGINE=<engine> variable on the command line. If absent this defaults to MyISAM which has always been used previously. Other engines may offer better performance in some scenarios but ZM has not been extensively tested with any other than MyISAM, though I am trialling InnoDB now. Using engines that offer row locking (e.g. InnoDB) may help when you have a large number of events in a system and the auditing or other regular activities may otherwise lock the tables resulting in delays to the storage of frames for new events etc if the queries take a significant amount of time to execute.
  • SECURITY : Fixed all known security vulnerabilities from earlier versions.
  • TRIVIAL : Made some config descriptions less wordy.

Release 1.23.3 - 2008/04/27

Import security fixes and other minor changes.

  • SECURITY : Fixed a number of potential vulnerabilities in remote script execution that could allow an authenticated ZoneMinder user to create and run arbitrary code on your system as the web user.
  • FEATURE : Revamped the DVR events view to allow better navigation between events. Also reinstated the ability to delete events directly from the DVR live feed view.
  • FEATURE : After a number of requests, added pagination navigation to the bottom of the event lists as well as the top.
  • FIX : Now compiles with -Wall to show more warnings. As a result many compiler warnings and other misc issues addressed.
  • FIX : Fixed an issue where filter queries were sometimes urlencoded twice meaning that clicking onto subsequent pages from a filtered view lost the filter and displayed all events instead of ust the filtered set.
  • FIX : Fixed an issue where scrolling between the monitors in the xHTML mobile interface was broken when scrolling past the first one.
  • FIX : Fixed an issue in the trigger and X.10 scripts where transitions from tape mode to alarm were not detected and triggered. This occured if you were running cameras in modect mode.
  • FIX : Fixed a problem with incorrect specification in the installed Purge When Full filter for new installations.
  • FIX : Fixed a problem in which was still using the old style PTZ control commands.
  • FIX : Fixed an issue in the xHTML mobile interface where the default screen size was not being correctly interpreted meaning images overflowed the screen.

Release 1.23.2 - 2008/02/24

Further updates and fixes to issues in 1.23.1 and 1.23.0.

  • FEATURE : Having been dropped for 1.23.0 the openssl library is now available as a build option for system that do not support gnutls, which remains the preferred, and default, option. To use openssl instead of gnutls, include the following 'ZM_SSL_LIB=openssl' on your configure line.
  • FEATURE : Made Ajax request timeout configurable for DVR interfaces (Options->* B/W->ZM_WEB_*_AJAX_TIMEOUT).
  • FEATURE : Added simple monitor presets for Veo Observer and BlueNet Video Server.
  • FIX : Fixed an issue when using deep file storage where event files were being sometimes erroneously deleted by the audit process.
  • FIX : Interactive filters were sometimes not being run correctly due to some old filter code having not been migrated properly.
  • FIX : Various xHTML view issues and errors were fixed.
  • FIX : Fixed an error when reloading linked monitor. The number of zones instead of the number of monitors was being used.
  • FIX : The diagonal arrows in the PTZ views contained an issue which mean that they did not always work. This has been fixed.
  • FIX : Version 1.23.1 shipped with a misnamed PurgeWhenFull filter (xPurgeWhenFull), this version renames it to avoid confusion.
  • FIX : Recent versions included a PurgeWhenFull filter in the old filter format meaning it was a bit useless. If found this is now corrected to the new format.
  • FIX : Fixed a mislabelling of a function parameter in a header file that caused the latest g++ to complain.
  • LANGUAGE : Updated Hungarian language translation
  • LANGUAGE : Updated German language translation

Release 1.23.1 - 2008/01/13

Minor updates and fixes to issues in 1.23.0.

  • FEATURE : Added checkbox in monitor specification view allowing height to be calculated automatically from width (or vice versa) according to preset aspect ratio if desired. This is preset to 4:3 but can be amended globally via the Options->Config->ZM_DEFAULT_ASPECT_RATIO setting. Aside from 4:3 which is the usual for network and analog cameras another common setting is 11:9 for CIF (352x288) based sources.
  • FIX : Fixed several related issues with PTZ protocol fields in the database and associated control and scripts.
  • FIX : Fixed an issue whereby incorrect #defines were used to check for gnutls settings. This meant that hash based authentication stopped working.
  • FIX : Fixed issue where video generation failed if the deeep storage format was selected.
  • FIX : Fixed problem with streaming historical events when the relevant monitor was no longer active.
  • LANGUAGE : Changed 'Archive' when used as a noun to 'Archived' to avoid ambiguity with 'Archive' the verb.
  • LANGUAGE : Removed duplicate language tokens in some language files that were overiding translated versions with untranslated ones.
  • LANGUAGE : Update Hungarian language translation.

Release 1.23.0 - 2007/12/23

Major new features and other improvements.

  • FEATURE : Added optional DVR functionality (Web->ZM_WEB_DVR_STREAMING) in new CSS and Ajax based views. This allows you to pause, rewind, digitally zoom and pan on live streams and replayed events. Due to lag issues this really only works well on mpjpeg streaming and not so good with mpeg streams. This feature should be considered beta only and the streams and control may not always be reliable. For this feature, and for more features in future releases, you will need to install the Mootools javascript library in your ZM webdir. Mootools can be downloaded from and you should select all components for now, with any compression type. You should ensure this file is named or soft linked to mootools.js.
  • FEATURE : ZM can now optionally use a deep file storage tree to avoid the 32k limit on files per directory (Paths->ZM_USE_DEEP_STORAGE) This should only be set on initial install, changing it to a different setting will almost certainly lose all your events. There is currently no migration of events backs and forth between formats though I plan to create a script at a later date if time allows.
  • FEATURE : Added specific alarm file quality setting (Images->ZM_JPEG_ALARM_FILE_QUALITY) that if set to a higher quality than the regular one (Images->ZM_JPEG_FILE_QUALITY) then it is used when saving images when in alarmed state.
  • FEATURE : Image timestamp tokens have changed. They are now %N for monitor name (previously first %%s) and %Q for show text (previously second %%s). There is also a new %f token which is the fractional part of the seconds in the timestamp.
  • FEATURE : Monitors can now be configured to suspend motion detection for a set number of frames if maximum alarmed pixels/filter pixels/blob counts are exceeded. This helps limit alarms caused by sudden large scale lighting changes for example.
  • FEATURE : PTZ control functionality is now in the form of a perl library for each protocol used by a single script rather than lots of scripts. This is easier to maintain and use and will allow support for protocols that require some state persistence between commands. Performance and responsiveness is also much improved by direct socket connections to the script.
  • FEATURE : Filters have been enhanced and largely rewritten behind the scenes. Little functional effect yet but makes it easier to add future improvements and manage filters generally.
  • FEATURE : If you include the jscalendar javascript calendar ( in your ZM web dir in a 'calendar' subdirectory then filter date/time dialogs will use a popup calendar for easier date selection.
  • FEATURE : The monitor alarm colour (indicating loss of signal) is now defined on a per monitor basis. The previous setting is not migrated so you should check all your local monitors if you have changed this.
  • FEATURE : Users can optionally be set to be able to change their own language and passwords (Config->ZM_USER_SELF_EDIT)
  • FEATURE : Filters can now check for system load
  • FEATURE : Image/event details are now written to the JPEG file header of saved images. I'm not sure this is done in the same way as other packages however so feedback would be welcome.
  • FEATURE : The mysql database connection port can now be specified along with the host in the format host:port
  • FEATURE : WML support has now been removed as superseded by xHTML mobile profile.
  • FEATURE : Due to licensing issues openssl support has now been replaced by gnutls.
  • FEATURE : Updated to support latest ffmpeg. This update is not compatible with previous svn versions so you should update your ffmpeg to the latest version prior to building ZM. Other 'released' versions of ffmpeg should be fine though these are very out of date nowadays. Also added libswscale support to avoid using deprecated img_convert function. The ffmpeg configure line should be ./configure --enable-gpl --enable-swscaler to enable this support.
  • FEATURE : The Konqueror browser native streaming is now supported.
  • FIX : Unprivileged users can no longer edit the zone settings, even though changes were not saved before anyway.
  • FIX : Fixed ffmpeg support for latest CVS builds, also added libswscale support to avoid using deprecated img_convert function.
  • FIX : Fixed monitor preset bug
  • FIX : Fixed issue with immediate action filters not working properly.
  • FIX : Fixed issue with incorrect line ending causing problems with some web cameras.
  • FIX : Removed unneccessary duplicate indexes from some tables in the database.
  • FIX : Removed 'bashisms' in a couple of the scripts.
  • FIX : Turned off debugging X10 perl module to reduce log pollution.
  • LANGUAGE : Added Hungarian language support
  • LANGUAGE : Added Romanian language support
  • LANGUAGE : Added Hebrew language support

Release 1.22.3 - 2006/11/23

Mostly bug fixes with a couple of minor feature additions.

  • FEATURE : Filters can now be used to execute actions such as emailing or deleting events directly without being saved as a background automatic filter.
  • FEATURE : New X.10 device control screens have been added to the HTML and xHTML pages. These screen allow manual on/off control of X.10 devices.
  • FEATURE : The xHTML screen have been overhauled and simplified in terms of styling.
  • FEATURE : The selection of markup, between HTML and xHTML was previously automatic only. This has been amended to all an url parameter to be passed on the initial screen to select the format for that session. So zm.php?format=xHTML will force the xHTML markup to be used even if selected from a traditional browser.
  • FEATURE : You can now specify an http proxy to use for ZM update checking.
  • FEATURE : You can now specify more than one monitor to use the same video input without frame rate penalty.
  • FEATURE : You can now add labels to PTZ camera presets to aid in remembering what they are. These presets are displayed as a tool tip when mousing over the preset numbers.
  • FEATURE : The timestamp displayed on images can now contain newlines. Use the \n (a ‘slash’ followed by an ‘n’) to represent that.
  • FEATURE : The perl scripts will not respond to HUP signals by closing and reopening their logs. This can be used by logrotate to ensure that the ZoneMinder do not keep growing forever. You can use logrot to send a HUP signal to all scripts.
  • FIX : The stills event view now shows all frames, not just those stored in the database. Scrolling between frames is also now fixed.
  • FIX : Fixed long outstanding but in causing the most recent event to sometimes get deleted erroneously.
  • FIX : Fixed a bug in the scaling routines that sometimes resulted in garbled or slanted images.
  • FIX : Fixed the format used in HTTP communications with network cameras to ensure that line endings use both CR and LF where appropriate.
  • FIX : Added some additional SQL finish calls to free up memory from long select statements.
  • FIX : When ZM reloaded monitors live, the Linked Monitors field was omitted. This has been fixed.
  • FIX : Fixed an issue causing devide by zero errors in
  • FIX : Fixed an issue with quotes in saved filters.
  • FIX : Fixed an issue in where filters on Weekdays were not executed correctly.
  • FIX : Fixed an issue with saved filters using the Cause or Notes events fields.
  • FIX : Fixed a problem with where the flag indicating that an event had had a video created was not set.
  • FIX : Fixed issue with user specific language selections not being effective.
  • FIX : Fixed issue with compiling with latest ffmpeg distribution.
  • FIX : All open file descriptors are now close when the perl scripts daemonise themselves. This means that ZM should not lock up open socket addresses or stop apache from restarting as occasionally happened before.
  • FIX : Hyphens are now allow in remote host names.
  • FIX : The timeline view can now display events with newlines in the Notes field.
  • FIX : Some perl errors were not being reported to logs. These have been changed to use the debug library.
  • FIX : Fixed an issue where some jpeg format errors were not caught by the debug library and so not reported in the appropriate logs.

Release 1.22.2 - 2006/05/26

Mostly bug fixes with a couple of minor feature additions.

  • FEATURE : Long events generated by Record or MoCord modes previously were not able to be reviewed until they had finished. This has changed and the event record is now updated whenever a bulk frame is generated. In most cases this will mean that the event will become replayable soon after commencing, and the record will be updated one or twice a minute.
  • FEATURE : The event replay view now has some basic details about the event included as a header to the window.
  • FEATURE : Weekday selection in filters is now implemented via drop down selections and not day indices.
  • FEATURE : Focus is now automatically set to the username field of the login screen when the page is opened.
  • FEATURE : The Fatal debug call now calls ‘abort’ to generate a back trace (if enabled).
  • FEATURE : Added system status view, primarily for use by other utilities.
  • FIX : Fixed an issue with an sql error concerning AlarmMaxFPS showing up when selecting monitor presets.
  • FIX : Fixed the missing ‘images’ token in non-English language files.
  • FIX : Added missing zone sensitivity preset.
  • FIX : Fixed a problem with a missing field in the sigcontext structure on some distributions. This caused a build error when stack tracing was on.
  • FIX : Fixed a problem in where one of the ‘su’ tests was missing a quote.
  • FIX : Removed inclusion of Device::SerialPort perl module from zmcontrol script for IP cameras.
  • FX : Added /usr/local/bin to PATH in
  • FIX : Errors in shared memory access via the perl modules now invalidate the id, causing subsequent accesses to revalidate the id. Previously access would continue to invalid segments on error even if a new valid segment existed.
  • FIX : All outstanding ‘assert’ calls have been replaced by more useful and informative error messages.
  • FIX : Fixed a problem in some browsers where zone co-ordinates could be defined to have extents outside of the legal range for the size of image.
  • FIX : Settings (e.g. paths) in zm.conf may now contain spaces.
  • FIX : Fixed an issue with weekday handling in filters not being handled correctly.
  • FIX : Fixed the event stills image view to correct a problem with some broken images.
  • FIX : Zones were not being correctly resized when a monitor had its dimensions amended. In some circumstances this could result in a zone outside of the legal range and thereafter crashes.
  • FIX : Fixed a problem with the montage and cycle views forgetting the current selected group if stills views were selected and then streams reselected.
  • FIX : Corrected some typos in to do with the showtext functions.
  • FIX : Added more sanity checking in various places to ensure that zones are valid before processing.
  • FIX : Increased the valid card channel range to 0-15 from -3.
  • FIX : Corrected a problem with causing sql errors when running saved filters that used the monitor name.
  • LANGUAGE : Added initial Chinese Big5 language translation.

Release 1.22.1 - 2006/04/27

A few important features plus some minor enhancements, usability updates and bug fixes.

  • FEATURE : Monitors can now be linked so activity on one, triggers events on another. This allows area wide surveillance by enabling one key monitor to control several others, though they can still be configured to detect motion themselves.
  • FEATURE : Events can now have more than one cause. Previously if an event was triggered by motion, other stimuli would be ignored. Now if an event is caused by both motion and a linked monitor (perhaps covering the same field of view), this is indicated in the ‘cause’ field of the event. Note that the cause of event is established on the first alarmed frame, so if motion is detected and then one frame later an trigger is detected, only the motion will be recorded as the cause as the monitor will be in an alarmed state by the time the second cause arrives.
  • FEATURE : The event Notes/Description field is now more useful. If an event is triggered by motion, this field contains a record or which zone detected the motion. If an event was triggered by a linked monitor then the monitor in question is recorded and so on. This allows filtering on more specific indicators.
  • FEATURE : All temporary files such as thumbnail images, now go in the ‘images’ directory rather than in the specific event directory. They are then periodically removed by zmaudit when over a certain age. This means that if you are archiving off event directories you will not end up copying a load of thumbnails and smaller images of various sizes. The treatment of thumbnails etc has also been rationalised in general.
  • FEATURE : The groups view has been further modified to make group modification use the same paradigm as the rest of the web interface. This has also simplified it somewhat.
  • FEATURE : All views where you need to select a list of monitor ids now give you the choice of using a selector that lists the monitor names and not just their ids.
  • FEATURE : The script that controls the ZoneMinder daemons has been modified to make it clearer in the logs when a process has crashed, exited abnormally (i.e. with a non-zero status) or normally. An abnormal exit is not necessarily a bad thing, whereas a crash always is.
  • FEATURE : The average difference of all alarmed pixels is now available in event statistics. Note that this is the mean of the differences between a pixel and it’s counterpart in the reference image, but only for pixels where this difference is inside the pixel difference thresholds specified in the zone configuration. In other words it is not the mean difference of all pixels, just those that initially contributed to an alarm. This allows you to determine the effects of modifying the thresholds by seeing what effect that has on the mean difference.
  • FEATURE : The zmfix utility now corrects permission on any active PTZ control devices, .e.g. serial port devices, as well as video devices.
  • FEATURE : The control script now has the ability to use ‘sudo’ to execute commands as the web user and will only fall back to ‘su’ if this fails. This should allow it to be more compatible across distributions.
  • FEATURE : Deleting events will now ask for a confirmation before proceeding.
  • FEATURE : Black and White settings for Axis cameras have been added to the monitor presets.
  • FEATURE : Settings for Gadspot cameras have been added to the monitor presets.
  • FEATURE : Most dates now use strftime to make them locale aware. This should help avoid some of the problems associated with dates for languages other than English. Ultimately these formats will probably be moved to be configurable but for now they can be found defined in zm_config.php for general formats or zm_html_view_timeline.php for timeline specific ones.
  • FEATURE : The global ‘ZM_NO_MAX_FPS_ON_ALARM’ option has been replaced by a ‘Maximum Alarm FPS’ settings for each monitor. This means that you can now choose whether to limit the frame rate when an alarm occurs on a per monitor basis and can configure monitors to have a higher frame rate but not unlimited whereas previously it was the normal frame or unlimited with no facility for more precise configuration.
  • FEATURE : Added facility for executing binaries to dump a backtrace to the logs on receipt of a fatal signal. This should help debugging should any crashes occur. However it does depend on those facilities being available on the host system. If they are not then this feature will be disabled. It can also be disabled via the --enable-crashtrace=no option to configure.
  • FEATURE : Configuration of local monitors now includes more drop down selectors to guide users towards sensible values.
  • FEATURE : Some scripts have been modified or added to make creation of rpms or other packages easier.
  • FIX : The monitor creation/modification dialog previously had virtually no validation, allowing creation of monitors with bogus, meaningless or dangerous properties. This has been corrected to impose meaningful and valid settings.
  • FIX : The Zone presets included in 1.22.0 were set to be a little too sensitive. They have been amended to make them have more of a range of sensitivity.
  • FIX : Scripts are able to use a local zm.conf file in the current directory in preference to the installed system one. This is most useful for but can apply to all scripts for testing. Previously this local file was used silently which may cause some confusion. A warning is now emitted if the installed zm.conf file is being overridden by a local one.
  • FIX : The zmu tool crashed when querying zones. This has been fixed and more useful output emitted, including the dimensions of the zones.
  • FIX : The ‘message’ email address was sometimes ignored and the ‘email’ address used instead. This has been corrected.
  • FIX : The zm_action.php file was a bit broken 1.22.0 particular when creating and deleting monitors. This has been fixed and the file has been tidied up to make it easier to maintain and understand.
  • FIX : Some references were maintained to free’ mysql query data. This has been fixed to use copies.
  • FIX : Problems with incorrect JPEG quality settings had crept back in so the wrong setting, or even default settings were being used and the appropriate setting was being ignored.
  • FIX : The capture daemon for remote cameras will not exit in a more graceful and controlled manner when it is unable to fetch remote images.
  • FIX : Editing the camera control capabilities was broken in 1.22.0 meaning changes were not being saved. This is now fixed.
  • FIX : There was a missing terminating character in the configuration for the default email and message formats. This resulted in these fields being blank. These configuration options have now been split into subject and body formats for both to make them easier to maintain..
  • FIX : Saving run states omitted the ‘enabled’ flag meaning that the saved value was not correct. This has been fixed.
  • FIX : Some configuration was moved to a category which had no tab in the Options window and so became inaccessible except directly via the database. This has been resolved, and the categories restructured slightly to be more appropriate.
  • FIX : Some web forms have been modified to use ‘post’ rather than ‘get’ allowing more data to be passed without error for large operations.
  • FIX : A number of minor video generation issues have been fixed.
  • FIX : The zone polygon editing view should now work on all browsers including Internet Explorer.
  • FIX : A number of xHTML syntactical errors have been found and fixed in the xHTML view files.
  • FIX : A problem with the incorrect specification of the preset to return to if auto-tracking motion has been found and fixed.
  • FIX : A crash in zmu when using the ‘-l’ options has been corrected.
  • FIX : When viewing events from the timeline view, the filter used to select them is now passed meaning that scrolling between events now behaves as expected.
  • FIX : Where necessary %f formats in sprintf have been changed to %F to ensure ffmpeg compatible, and non-locate aware, floating point formats are used. This fix is only effective for php versions 4.3.10 and later.
  • FIX : Fixed an issue where deleting the last page of events generated an empty page.
  • FIX : Fixed a problem where the stills view for Record’ed or Mocord’ed events did not display correctly.
  • FIX : Fixed a problem with loaded filters being unable to be edited to have more or fewer terms.
  • FIX : Fixed the script debugging library to not try and interpret % characters in debug as formatting.
  • FIX : Fixed (hopefully) an issue where md5.h was incorrectly identified by configure as being missing.
  • LANGUAGE : The two existing Italian language files have been merged into one and updated.
  • LANGUAGE : A new Swedish translation has been added.

Release 1.22.0 - 2006/01/18

Major architectural changes as well as a whole raft of other enhancements and fixes.

  • FEATURE : Zones can now be (virtually) any shape of polygon. This means that triangular, octagonal, duo decahedrons etc are now supported. The only exceptions to this are self-intersecting shapes which will be flagged. This adds a lot more flexibility to the definition of zones. Zones can be drawn semi-interactively.
  • FEATURE : Certain preset zones settings are now supplied to allow quicker configuration of zones. These are intended to be a guide only, and not definitive settings but form a useful starting point.
  • FEATURE : The scripts now attempts to determine the supported syntax of the ‘su’ command so it should work even with distributions like Slackware that don’t support the --shell option. Previously this required a hand edit.
  • FEATURE : Some common perl functionality has been moved to perl modules which have been included. This also allows other scripts to use the ZoneMinder modules to create additional functionality particularly in the area of triggering. All scripts have been converted to use these modules.
  • FEATURE : A (small currently) number of monitor presets have been added to the monitor configuration view. This allows quicker initial configuration of certain (mostly network) cameras without having to know all the paths. Contributions detailing other cameras will be gratefully accepted.
  • FEATURE : Signal loss on locally attached video sources is now detected. This will create a short Signal Lost event on signal loss, followed by a Signal Reacquired event when it comes back. While the signal is lost no recording will take place in any mode.
  • FEATURE : The script has been completed revamped to support both incoming and outgoing triggers. Certain example triggers and connections have been included in the trigger modules but this is intended to be an example only and to provide a basis for users to customise and add their own functionality. Users will also be able to contribute modules tailored to specific external systems.
  • FEATURE : More configuration has been moved to the zm.conf file. All components now use this file for initial configuration. Scripts may also use a local copy, in the same directory, to allow overrides etc.
  • FEATURE : The script is no more! Building now only requires the ‘configure’ step and then make etc. Database parameters can be supplied to the configure script.
  • FEATURE : The configure script now includes more system compatibility checking including checks for required and optional perl modules.
  • FEATURE : Generation and management of thumbnail images is now improved. Thumbnail images (and any that are not directly created for the event) are now stored in the images directory under the web root, where zmaudit will periodically remove them.
  • FEATURE : All libjpeg output is now trapped and handled as regular format debug.
  • FEATURE : Some jpeg data is cached on first use instead of being regenerated each time. This should speed up jpeg handling to some degree.
  • FEATURE : Event data can be optionally saved to COM fields in the jpeg file header.
  • FEATURE : A system summary command has been added to zmu.
  • FEATURE : Filtering can now be done on the event id field.
  • FEATURE : Filtering can now be done on the event description field.
  • FEATURE : The ‘check all’ on event lists etc is now a toggle checkbox.
  • FEATURE : In Mocord mode, events can now be forced to close when the event has reached the section length even if an alarm is in progress. Previously this would have resulted in an extended event.
  • FEATURE : The ‘groups’ view has been overhauled and rationalised.
  • FEATURE : A default event replay rate has been added.
  • FEATURE : Videos can now be created from filters.
  • FEATURE : Added tokens for event cause (%EC%) and description (%ED%) for filter generated emails. The %ED% token was previously used for event length, this has now changed to %EL%. You will need to update any filters that use this token to use the new value.
  • FEATURE : There is now a separate auto-execute checkbox from filters to allow definition of a script but not execution if this is not desired.
  • FEATURE : When filters are loaded, a hint appears to indicate what automatic function options they have been saved with.
  • FEATURE : Improved the behaviour of the automatic PTZ stop feature when using Pelco type PTZ cameras.
  • FEATURE : The configure script now allows an option to compile all debug out from the binaries.
  • FEATURE : The configure script now takes a generic ‘extra libs’ option to allow specification of any extra libraries that may be required for compilation due to additional ffmpeg options etc. The mp3lame option has been removed.
  • FEATURE : Mime support for streaming has been enhanced to allow easy configuration of additional formats of data streaming. The streaming daemons themselves have also been improved to support the generation of other stream formats.
  • FEATURE : The handling of video viewing via the ‘video’ view has been improved to allow embedded viewing of videos as well as easy saving locally.
  • FEATURE : The alarm sound that can be configured to play when viewing a monitor with a current alarm has now been improved to not depend on the refreshing of the status which resulted in clipped audio.
  • FEATURE : Script debug now follows the same format as all debug and uses the syslog facility. This means that all important messages go into the /var/log/messages file (or equivalent). This can be modified by redirecting the local1 facility in syslog.conf to go elsewhere, or be ignored, if so desired.
  • FEATURE : A new raw streaming format has been added for live monitor streams. This produces a low cpu impact raw rgb feed.
  • FEATURE : A file is now placed in /var/run/zm when ZoneMinder is running, and removed when stopped. This can be used by other elements to check the status of ZoneMinder. The pid in the file is that of the master server instance.
  • FEATURE : The continuous/triggered settings for monitors have now been removed. They have been replaced by an Enabled flag that indicates whether a monitor is actually doing the task assigned to it. This can be used by scripts to disable or enable monitors depending on external triggers without having to change the Function or start and stop daemons. The state of this flag is now saved in ‘run states’ to allow ZoneMinder to be started with some monitors initially disabled.
  • FEATURE : Restructured to better handle filters and ensure that auto functions are performed in a logical sequence (e.g. not deleted before being archived).
  • FEATURE : Added link to Zones configuration to the live watch view.
  • FEATURE : The event link in the xHTML interface now goes somewhere useful.
  • FEATURE : Reformatted a number of xHTML views to use tables for better layout.
  • FEATURE : The default reference image blend percentage has been changed to 7% to persist events slightly longer.
  • FEATURE : The monitor configuration view has been re-organised slightly and some fields have moved between tabs.
  • FEATURE : When motion is detected the centre of the region of motion is written to shared memory, where is can be used for tracking. This can now optionally be a simple median of the motion extents or (in blob mode) a weighted centre for better location of irregularly shaped events.
  • FEATURE : Added event progress and navigation bar to event view (currently not on IE). This allows partial replay of events and an indication of how far through the event it is. This is off by default for low bandwidth settings as the image replay tends not to be able to keep up.
  • FEATURE : Added --with-libarch to configure for 64 bit builds. This allows an alternative library path to be specified for 64 bit versions of system libraries.
  • FEATURE : Made zmaudit optional and with a configurable delay. Systems with large numbers of events may wish to turn zmaudit off and run manually at off peak hours or increase the execution interval.
  • FEATURE : All logging now done via This helps bring script logging more into line with that in the binaries. The process is not yet complete however.
  • FEATURE : Language selection now a dropdown showing available languages.
  • FEATURE : The script has been renamed to the more generic script as it should work with all Panasonic IP cameras.
  • FEATURE : Added PTZ control script for Neu-Fusion NCS370 IP cameras.
  • FEATURE : The rather awkward emailed and message format which included both the subject and body has gone and been replaced by individual options for the subject and body. Your previous setting should be preserved during the upgrade.
  • FIX : The zms script has been corrected to accept any authentication method regardless of what has been configured to be used.
  • FIX : The zmc processes now exit if any 4xx error is reported from remote network image sources.
  • FIX : The experimental script was broken and didn’t work. This has now been corrected.
  • FIX : Versions 0.4.8, 0.4.9-pre1 and CVS ffmpeg are now supported correctly.
  • FIX : A problem with event statistics not always being output was fixed.
  • FIX : A problem with the JPEG file quality setting being ignored was fixed.
  • FIX : A problem with brackets in filters has been fixed.
  • FIX : The console view previously could spawn instances of when ZM wasn’t running. This has now been corrected.
  • FIX : The console view has been optimised to speed up display by up to a factor of ten.
  • FIX : Scaling of stills event views has now been rationalised to not ever be smaller than 100% as the image is always sent at at least this resolution.
  • FIX : A problem with mishandling recovered events has been fixed.
  • FIX : Fixed number of minor memory access issues.
  • FIX : Fixed ‘undefined pid’ error in
  • FIX : Changed a bunch of Info calls to Debug to reduce log clutter.
  • FIX : Fixed a couple of problems with the authentication relay methods in zms.
  • FIX : Fixed issue with control permissions whereby a user also needed monitor edit permissions to be able to control a monitor.
  • FIX : Logs created by root are chowned to web user to help prevent permission issues.
  • FIX : Problems with different type sizes when accessing shared memory on 64 bit systems have been fixed.
  • FIX : The zmvideo script now quotes filenames correctly and so won't die if they have unusual characters in them.
  • FIX : Fixed issue with streaming events with out of sequence frames causing immense timeouts.
  • FIX : Most mysql queries in the web interface did not have their result resources freed. This was untidy but generally did not have any deleterious consequences. However all queries are now properly freed.
  • FIX : Password handling in the user configuration form was a bit ugly. This has been tidied up.
  • FIX : Some configuration has had default values changed.
  • LANGUAGE : A Czech translation has been included. Thanks for user ‘’ for this file.

Release 1.21.4 - 2005/11/11

A whole bunch of improvements and fixes.

  • FEATURE : The video generation interface has been redesigned and expanded. This allows you to see what videos have been generated previously and manage, view or download them. You can also specify more precisely what input and output options to pass to ffmpeg and what video formats you want to support. These options are available from the Options->Tools view.
  • FEATURE : Historical video is now supported from the XHTML mobile device interface allowing you to replay previous events etc.
  • FEATURE : A new timeline view has been added. This is an enhanced graphic activity view that represents events as colour coded bars on a time based chart. Passing your mouse over the activity will display images and details from the events in the chart. You are able to choose whether you see this view or the traditional events view as a default. Since this view can be a large file and dynamic loading of event images can be bandwidth intensive this preference can be specific on a bandwidth specific basis. The option to switch between the traditional list and the timeline view is available at all times however. IMPORTANT NOTE: This view is a beta version only and due to extensive use of CSS currently only renders correctly on FireFox type browsers. Even then as it can use huge numbers of elements it is possible it may degrade or crash your browser. Specifically Internet Explorer seems to get totally confused and renders some elements twice and others in the wrong place etc. I hope to remedy this situation for the next release but for now using this view with IE is not recommended.
  • FIX : References to the video device files are now expressed as full file paths rather than just numbers. This allows files other than /dev/videoX to be used easily.
  • FIX : Integration with all versions of ffmpeg, including CVS, is now supported. At least until the next ffmpeg interface change anyway!
  • FEATURE : Monitors can now use a file path as a video source. This allows you to use scripts such as wget or other webcam type applications to generate your images which can then be fed into ZoneMinder as a monitor and analysed and archived etc.
  • FEATURE : Users can now be defined with a maximum bandwidth setting. This prevents low privilege users from swamping the system with lots of high bandwidth streaming.
  • FEATURE : Debug levels for the binaries can now be controlled in a limited fashion from the Options screen. For more details see the help on the Options->Tools->ZM_EXTRA_DEBUG* options.
  • FEATURE : The user authentication methods have been revised to separate authentication at the web front end from authentication at back end streaming. Thus there are now several more authentication options to allow more fine control. The most significant of these ZM_AUTH_TYPE now offers a choice of ‘remote’ authentication which allows you to use a third party authentication scheme such as http basic authentication and have that users name passed via the REMOTE_USER environment variable. Providing there is a user of that name known to ZoneMinder they will be automatically logged in. Be warned however that there is no facility for this user to log out so ensure that you do not lock yourself into a low privilege account. Also you may need to remove user cookies when you change authentication methods.
  • FEATURE : Users now have a ‘control’ permission which determines whether they are able to control PTZ style cameras. As with the other permissions there are three levels, None, View and Edit. Unlike some of the other options it may not be obvious what levels do what. The ‘None’ level bars access to any control functionality, the ‘View’ level permits users to actually control the positioning and settings of a camera (rather than just look at them which is what might be expected) and the ‘Edit’ level allows users to modify the various control capabilities.
  • FIX : A bug was fixed where the streamed images were using the quality settings for saved files.
  • FIX : Jpeg errors are now reported via the generic ZoneMinder error and debug mechanism rather than just to standard output as is the default in libjpeg.
  • FIX : The time taken to load and refresh the console view has been reduced. This is especially significant where you may have lots of monitors.
  • FIX : Paths to the control scripts were hard coded with a full path. This broke the packaged ZoneMinder distributions so the paths are now relative to the ZM_PATH_BIN config unless they start with a ‘/’.
  • FIX : The masks used for shared memory have now been refined to prevent invalid values from causing duplicates.
  • FEATURE : Monitors can now be re-ordered from the console view to allow you to choose how you would like them arranged.
  • FEATURE : Motion detection can now be temporarily disabled from the watch view. This is most useful with PTZ type cameras where you can switch off motion detection whilst repositioning the camera. Just don’t forget to switch it back on again afterwards!
  • FEATURE : A default scale per bandwidth setting can now be defined. This allows you to reduce the size of streams etc on slow connections.
  • FEATURE : Monitors can now be defined with a default scale. This allows you to reduce the viewing size of a monitor that might be capturing at a large image size. This works in conjunction with the bandwidth specific scaling so if you bandwidth setting is 50% and your monitor is also 50% then at that bandwidth you will be viewing at 25%. This is to ensure that all monitors maintain relative scaling at all bandwidths.
  • FEATURE : The choice of streaming versus stills views as default can now be specified per bandwidth setting.
  • FEATURE : In the past there has been some confusion about what the ‘prev’ and ‘next’ options do when scrolling through events. They actually move to the previous or next event in the list from which the event was selected rather than in chronological order. Previously this order was descending date/time in most cases meaning that the previous event would be one that occurred after the current event. In order to prevent this confusion and allow users to define a default order which they prefer there are now two more options in Options->System called ZM_EVENT_SORT_FIELD and ZM_EVENT_SORT_ORDER which allow you to choose your own sort type and order. The default for these is now date/time ascending meaning oldest first which is opposite to the previous default and you will need to update these options to retain the previous behaviour. Note also that this ordering applies only to event lists and not the ‘last x events’ in the watch window which are still newest first.
  • FIX : A curious problem with logging in on PHP 4.4 has now been fixed.
  • FEATURE : Following requests and some confusion about how often filters are executed versus reloaded from the database, this is now a configurable options (Options->System-> ZM_FILTER_EXECUTE_INTERVAL). Please read the help on this option for guidance on what values to use.
  • FEATURE : A ‘Filters’ button has been added to the main console view allowing easier access to the filters view.
  • FEATURE : Support for the HTTPS protocol has been added allowing streaming etc to function over secure links.
  • FEATURE : The layout and functionality of the XHTML screens has been enhanced to make them more useful overall.
  • FEATURE : Following virtual extinction of donations I have added a small one time nag screen which invites you to donate to ZoneMinder after a month of use. That’s all it does and once dismissed you will never see it again!
  • LANGUAGE : A lot of new tokens have been added. These have been included in all the language files in English. It would be appreciated if anyone who is able to edit their zm_lang_xx_yy.php language files and translate these tokens could email them back to me so I can include them in future releases.

Release 1.21.3 - 2005/07/14

Additional bug fix release.

  • FIX : Images from rotated monitors had been broken in a previous release. This has been corrected.
  • FIX : The bogus deletion of events by zmaudit has finally been completely fixed.
  • FIX : Fixed a problem where Axis PTZ controls sometimes caused the camera to move in an incorrect direction.
  • FIX : Fixed an issue where the ‘goto preset’ command did not pass the appropriate preset number (and so defaulted to 1) for the Axis, Panasonic and VISCA protocols.
  • FIX : A problem existed where renaming monitors did not rename the symbolic link to the events directory. Thanks to forum user ‘tommy’ for suggesting the fix to this issue.
  • FIX : The README document has been restructured slightly to make it easier to find the information you require. This includes the addition of an Upgrading section to clarify the process of upgrading from a previous version.

Release 1.21.2 - 2005/06/23

Minor-ish bug fixes to the 1.21.1 release.

  • FIX : If the defined image timestamp format for a monitor contained only time directives and no %%s directives then the timestamp was not included in the image at all.
  • FIX : An ugly divide by zero error was present on new installations where no monitors had yet been defined.
  • FIX : The Pelco-D protocol control script did not properly support Iris control.
  • FIX : Fixed a nasty problem in zmaudit which meant that older events sometimes didn’t get tidied up and deleted properly.
  • FIX : Fixed an issue with the multi-part jpeg streams having frame boundaries output at the end of each image and not the beginning. Apart from this not being ideal semantically it also meant that ZM had trouble parsing it’s own output!
  • FEATURE : Some of the scripts have a new debug format that is more similar to the one used in the binaries.

Release 1.21.1 - 2005/06/23

Menage of various new features and bug fixes.

  • FIX : The HTTP refresh method of updating the Cycle view was broken. This is now fixed.
  • FIX : There was an arbitrary limit on the size of a blob due to the dimensioning of the field in the database. This has been increased to allow all possible blob sizes to be accounted for.
  • FIX : On some platforms there is no definition of the ‘round’ function. Previous versions of ZM have detected this and included one if no other is present. However changes in 1.21.0 meant that this did not always happen and the function went undefined. This has been corrected.
  • FEATURE : Support has been added to allow monitors to be defined as mirrored. Thus images can now be flipped horizontally or vertically before processing as well as rotated as in previous versions.
  • FIX : Made the ‘Options’ link only appear if the user has sufficient permissions.
  • FIX : Fixed issue where the PTZ control function to set camera presets never passed the preset number so preset 1 was always used.
  • FEATURE : A custom title can now be added via the normal Options dialog (ZM_WEB_TITLE_PREFIX). This title will be used in all browser windows and allows you to distinguish between multiple ZM installations for example.
  • FEATURE : Ordinarily ZoneMinder will resize the console window to fit the number of monitors displayed. If you are using a tabbed browser this can be a little irritating. A new option (ZM_WEB_RESIZE_CONSOLE) has been added to control this behaviour.
  • FEATURE : Version 1.21.0 added support for events to be labelled with Cause and Notes fields. However these could not be modified directly from the web interface. This has been amended so that an ‘Edit’ link is now present in the events listing. Clicking on this allows you to modify these fields for one or more events so they can be identified as belonging to a particular incident.
  • FEATURE : There has long been a dichotomy between the functions that can be applied via interactive filters versus background saved filters. This release addresses this to some extent allowing you, for instance, to archive or unarchive matching events, or edit them as described above. This is not a complete solution and it is expected that the functionality will converge further in the future.
  • FEATURE : Previously in the c/c++ code accessor functions had to be called to access the value of configuration options. This was expensive when done repeatedly so some classes used cached local variables to avoid this. The configuration has been rewritten to provide all configuration options as members of the configuration class which are initialised once on startup and then can be accessed directly with no further overhead.
  • LANGUAGE : Support for the Danish language has now been included. Thanks for forum user ‘voronwe’ for his work on this. Select dk_dk in the languages preferences to use this language.
  • FEATURE : Events viewed in the events listing view can now be saved locally by clicking on the ‘Export’ button. This creates a tar or zip file of the selected file groups, such as images, videos etc, as well as, optional, HTML pages describing the basic details about the event and frame details. This allows a basic navigation and viewing of the events outside of the regular ZoneMinder interface. This format is different, and improved, over that that created in the background filter function and it is expected that these functions will converge at some point.
  • FIX : Clearing the ‘Track Motion’ checkbox in the Control section of the Monitor configuration would not be saved resulting in this setting being stuck in an ‘on’ state. This has been corrected.
  • FIX : The ‘Play All’ link in the event view allows a sequence of events to be streamed consecutively. This is fine in a streamed view but meaningless in the stills view so has been removed.
  • FEATURE : The ‘show’ trigger command in has been added to allow miscellaneous externally sourced text to be displayed in the image timestamps.
  • FEATURE : Add the ‘Auto Stop Timeout’ monitor control option to allow finer control of Pan/Tilt/Zoom cameras with support for only basic continuous modes of motion.
  • LANGUAGE : The German language files have been updated.
  • FEATURE : Support for control of Axis network cameras has been added. This uses the script and should work with all Axis PTZ network cameras that use version 2 of the Axis API.
  • FEATURE : The script has been modified to be faster and access disk a lot less. Previously it was possible for this script to frequently thrash disks while determining timestamps on directories.
  • FEATURE : A contributed patch by Ross Melin has been included. This gives you the option of using an alternative mailing method in the script if the default method does not work correctly. To use the new method go to Options->Email and set ZM_NEW_MAIL_MODULES to on.
  • FIX : Previously the ZM_EMAIL_HOST config was not passed to the script so hosts other than localhost were not used. This has been fixed.
  • LANGUAGE : A translation for the Romanian language has been added. To use it select ro_ro as the language.
  • FIX : In previous versions the path to the zms daemon from web pages was in the form of a local web path without hostname. This has been reported as not working with certain media players where the hostname is not implied, as with browsers. The paths to the streaming server now always have the hostname prepended so that they are always a full valid url.
  • FIX : Monitors that are inactive no longer have an active link for streaming as this has no real purpose.
  • FEATURE : An experimental Pelco-P control script has been added to support PTZ cameras that support this protocol. This script has not really been tested but is included as a basis for further development or customisation.
  • FIX : The script now respects the ZM_FAST_DELETE option and will fully delete any events rather than assuming that will clear up if it just removes the primary database record.
  • FIX : The montage view layout now correctly utilises the ZM_MAX_MONTAGE_COLS option when determining the dimensions and layout of the montage window.
  • FEATURE : A contributed patch by forum user ‘lazyleopard’ has been included. This allows a specified number of frames to be discarded to alleviate problems with broken interlaced frames where multiple cameras share one bttv chip and produce a ‘comb edge’ like image. To invoke this option go to Options->Config and set ZM_CAPTURES_PER_FRAME to greater than 1, a value of 3 is recommended in the first instance.
  • FEATURE : Several users have reported problems using the Perl Compatible Regular Expression (PCRE) library, mostly to do with it not being found or an incorrect version being used. This version allows an alternative method of parsing the output from network cameras that does not depend on libpcre at all. Which method is used is controlled by the option Options->Network->ZM_NETCAM_REGEXPS. If this option is on then the traditional regular expression based parsing is implemented, provided you have built with libpcre. If the option is off or libpcre is missing then a more basic parsing is used instead. This new method should be slightly faster as it does not have the overhead of regular expression parsing, however this also makes it slightly more inflexible. If you experience problems using the new method with your netcam then you should try switching to the regular expression based method, and report the issue via the forums, preferably with a snapshot of the output of your camera.

Release 1.21.0 - 2005/03/22

Addition of camera control, plus several bugfixes.

  • FEATURE : Added support for Pan/Tilt/Zoom and general camera control.
  • FIX : The montage view layout has been modified to allow better dynamic layout of windows. Views should now be laid out in a more logical arrangement. This is a relatively temporary change and the montage view will shortly be rewritten to use flowing ‘div’ tags which should add more flexibility and be less complex.
  • FIX : All stream views now have an ‘alt’ tag to highlight which monitor they should be displaying.
  • FIX : Detection of which markup language to use, HTML or XHTML-MP has now been optimised to ensure that the test only happens once per session.
  • FIX : Some constants were defined unquoted, this has now been corrected.
  • FIX : The script had an old, and incorrect, initial section using constants that were no longer valid. This has now been fixed.
  • FIX : The regular expression patterns used to parse the zm.conf file have been modified to ensure that they should always work.
  • FIX : In previous versions it was possible for a process to die and not be reaped by This could have resulted in processes remaining as zombies resulting in them not being restarted after crashing. This has now been fixed so all dying processes will be caught and handled.
  • FIX : The frame view has been restructured to ensure that it has a consistent look and does not display unwanted wrapping.
  • FIX : A couple of remnant hard coded text elements have been replaced with tokens as they should have been originally.
  • FIX : Previously separate ‘object’ and ‘embed’ tags were used for Internet Explorer and non-IE browsers. These have been merged so that browsers will use whichever tag is appropriate. Any player controls that were present should now be hidden as well.
  • FIX : A problem was present whereby the Maximum FPS set in the bandwidth settings was not being respected in the live streams. This is now fixed.
  • FIX : If users were created with restricted monitor ids, it was sometimes possible that permission errors would still be issued if they tried to view streams or other elements associated with monitors in their list. This has now been corrected such that any restrictions are applied correctly.
  • FIX : Users created with only ‘view streams’ permissions were presented with a ‘permission denied’ error in the area of the Watch window normally containing the recent events list. Whilst this was technically correct it was unnecessary and untidy, and has now been changed just to be blank.

Release 1.20.1 - 2005/02/04

Mostly bug fixes, large and small with a couple of minor features included.

  • FIX : A dependency on the regular expression library was introduced in 1.20.0 which caused some people to have build problems. This library has traditionally been is necessary to support network cameras but not otherwise. This situation has now been restored.
  • FEATURE : Added ZM_RAND_STREAM option. This option adds a time code onto the url of each stream to prevent it from being cached which had caused some broken image problems with some browsers, notably Mozilla.
  • FIX : Made zms check ZM_OPT_AUTH before loading user details. This should have been in there in 1.20.0 but was omitted and should fix the issue where streams did not work with authentication off.
  • FIX : There was some debug code left behind in zm_xhtml.php. This was unnecessary and has been removed.
  • FIX : Fixed user sql, added debug and wrapped in check for libcrypto in zm_user.cpp. This should correct bogus loading of user data which may have affected some people. You can also now just bump up the debug level to see what the auth strings being used are.
  • FIX : The xHTML console page now uses the mobile group as it should have in 1.20.0
  • FIX : Modified database username to be binary. You need to run the zmalter-1.20.0 sql script as usual to change your Users table to disallow case-insensitive checking which may have been breaking some people’s streams.
  • FIX : Fixed incorrect constant definitions in This script had not been updated along with the other scripts.
  • FIX : Fixed bogus double .jpg suffix on diagnostic images, also included them (if they exist) in frame view.
  • FIX : Corrected broken check for libcrypto (the check happened before any definition) causing build problems for some people who do not have MD5 library installed.
  • FIX : Added permissions mode to mkdir in zm_actions.php to remove php warning.
  • FIX : Added space before -m in zmu command in zm_actions.php
  • FIX : Added quotes around brightness etc SQL in zm_actions.php to avoid errors when values are empty.
  • FIX : Added line length to fgets in zm_config.php.z to prevent php warning
  • FIX : Slightly enlarged a couple of window sizes in zm_config.php.z to work better with different browsers.
  • FIX : Defined empty array in html_view_states to prevent php warnings.
  • FEATURE : Console window now sizes itself according to how many monitors in list, though there is a minimum size.
  • FIX : Corrected bug in which meant that images were not always correctly uploaded.

Release 1.20.0 - 2005/01/20

Improved and added features, several minor bug fixes.

  • FEATURE : Certain configuration (Mostly database settings) is now stored in a new file zm.conf. This means that database access settings can be changed without recompilation. It also allows the creation of ZoneMinder rpms. Watch for details. Thanks for forum user ‘oskin’ for his work on this.
  • FEATURE : The WML interface is now deprecated and the XHTML-MP interface is the new supported interface for mobile devices.
  • FEATURE : Monitor groups have now been added allowing subsets of monitors to be viewed independently.
  • FEATURE : A generic external triggering interface has been included via the script. A new monitor function ‘Nodect’ has been added to support this.
  • FEATURE : Interaction between the web pages and the streaming daemons and other utilities has previously been not as secure as it could have been and open to possible abuse. This has now been addressed and zms and zmu both now use (optional) authentication strings to validate access. You need to have openssl installed so that the MD5 libraries can be linked. See the ZM_AUTH_METHOD and ZM_AUTH_SECRET configuration items for further details.
  • FEATURE : The maximum daemon restart delay in was previously fixed at 15 minutes. This may have been too long for some users, for example if power has failed to a camera then a 15 minute delay on restoration is not desirable. This maximum is now configurable via the ZM_MAX_RESTART_DELAY configuration item.
  • FEATURE : The web files have been changed to use the newer style autoglobals, e.g. $_SERVER rather than $HTTP_SERVER_VARS. This should enable use on PHP5 without any modification.
  • FIX : The use of two database users has been somewhat redundant for a number of versions now. In 1.20.0 there is only one database user. The script unfortunately cannot handle the migration as it needs to access the database so you should make a note of the username and password of the privileged user and then re-enter that using when rebuilding ZM.
  • FIX : The script previously held a database connection open for days at a time but only used to use it periodically. This has now been changed to be only open while in use.
  • FIX : Debug output and it’s relationship with environment variables etc was previously broken. This has been tidied up and made much easier to use and understand.
  • FIX : A number of SQL queries have been analysed and optimised to run much faster.
  • FIX : The monitor status was not always being reported correctly in the monitor watch window. This has been corrected.
  • FIX : Image numbering in the zmf daemon was sometimes wrong if more or less than three significant digits were used. This has been corrected.
  • FIX : Image capture timeouts used by to restart apparently frozen zmc processes were being calculated incorrectly on occasion. This was causing some unnecessary processes to be restarted. This calculation has been fixed.
  • FIX : Complete DOCTYPE headers were added to HTML output and some HTML was tidied up to be more compliant.
  • FIX : There was a problem with the interaction between monitor statuses and the status web window. This meant that sometimes the window did not pop to the front, or play the alarm sound, properly. This has been corrected.
  • FIX : Some network cameras send data in a format which was previously not recognised by the regular expression engine. This has been modified to allow these cameras (NC1000 etc) to function with ZoneMinder.
  • FIX : A bug in event streaming when events are of very short duration has been fixed. Thanks to forum user ‘reza’ for spotting this one.
  • FIX : A possible exploit in the login page was identified and has now been fixed. Thanks again to forum user ‘reza’ highlighting this problem also.

Release 1.19.5 - 2004/09/26

Various miscellaneous fixes and features.

  • FIX : Sorting event lists by duration was broken and has now been corrected.
  • FEATURE : The zmfix utility previous corrected file permissions on video device files only. This has been modified to do likewise to the X10 device serial port if enabled.
  • FIX : The modification suggested by forum user ‘oskin’ has been incorporated into the code to try and reduce or remove video for linux errors.
  • FIX : The remote network camera parsing code has been patched to try
  • FIX : The error reported when a ‘shmget’ call fails has been changed to include further information about the cause.
  • LANGUAGE : Fixed missing semicolon in German language file.
  • FEATURE : Added ‘<<’ and ‘>>’ links to the page selector in the events list as suggested by forum user ‘unclerichy’.
  • FEATURE : Brightness, colour, hue and contrast are now saved persistently for a monitor rather than being reset each time the system is restarted. This feature is based on a patch submitted by forum user ‘oskin’.
  • FEATURE : In previous versions the events folder has been keyed by the monitor name. This has caused problems in the past with various characters appearing which are legal in names but not in filesystems. From this version all files related to monitors are keyed on the monitor id rather than the name. To help you navigate through these files the monitor name still exists but as a link only. Please ensure you run to update your events directory.
  • FEATURE : You may now optionally have thumbnail images in your event lists. To enable this functionality set ZM_WEB_LIST_THUMBS on in Options->Web. You can also control the width or height of these thumbnails but should only set one dimension only and leave the other blank or zero.
  • FEATURE : You can now specify how many image thumbnails appear across and down the page in the event stills listing. In Options->Web set the ZM_WEB_FRAMES_PER_LINE and/or ZM_WEB_FRAME_LINES options.
  • FEATURE : ZoneMinder uses ffmpeg ( for video generation and processing. Recently a new version (0.4.9-pre1) was released which changed the interface that ZoneMinder uses and so broke compilation. This version will detect which version of ffmpeg you have and compile accordingly.
  • FEATURE : You can now specify a prefix for events generated by particular monitors. This will replace the default ‘Event-‘ one.
  • FEATURE : If you use filters to send event notification emails you can now have them sent in HTML format. This is done automatically if your mail body includes a ‘<html>’ token,
  • FEATURE : An experimental feature has been added which lets you view several events in sequence. In event listing you can check the events you want to view and then click the ‘View’ button. This will allow you to navigate through only those events in the normal manner (via Prev and Next links) but also to view them in sequence by clicking on the ‘Play All’ link. This will replay each event and then automatically move onto the next one. You can stop this progression at any time by pressing ‘Stop’ (which only stops the sequence and not the currently playing event). The timing of the replay is done depending on the calculated length of the event (plus one second) and so may not exactly correspond to the real event length. In particular this is unlikely to work if replaying events using MPEG video and buffering players as the timing will likely be incorrect. If you are viewing an event but haven’t checked any in the list the ‘Play All’ button will just work down the current event list.
  • FIX : A default php error level excluding notice warnings is now explicitly set.
  • FEATURE : Previously events have been created even if only one frame has generated an alarm. This has not always been desirable as sometimes glitches and flickers create large numbers of events, however no mechanism existed for limiting this. In this version you can now specify the minimum number of consecutive alarmed frames that are necessary to create an event. This is the ‘Alarm Frame Count’ described above. Note that if an alarm is in progress single isolated alarmed frames will still prolong it and the count only applies to the initial frames that would cause the event.

Release 1.19.4 - 2004/05/20

Language fixes and updates.

  • FIX : The US English language file was recursively including itself rather than the UK English file as the base language.
  • LANGUAGE : The Brazilian Portuguese language file detailed in the previous release has actually been included in this one.
  • LANGUAGE : The Argentinian Spanish, Polish and Italian translations have all been updated with tokens introduced in version 1.19.3.

Release 1.19.3 - 2004/05/06

Minor tweaks, fixes and language updates.

  • FEATURE : All stills views now use the single image mode of zms rather than spawning off a zmu process to write an image which is then read. This reduces complexity of double buffering significantly and also reduces the chance of errors caused by multiple simultaneous image generation.
  • FEATURE : The generated MIME types when creating streamed video were previously assigned by zms depending on which of a limited number of output formats was specified. This has now been changed so that the ffmpeg libavformat library itself now generates these identifiers. The consequence of this is that many more video formats supported by your version of ffmpeg should now be available via zms.
  • FEATURE : When viewing a single frame of an event you can select a ‘stats’ link to view the statistics that apply to that frame, if you have the RECORD_EVENT_STATS option switched on. This can be used to help configure your zones for optimal motion detection. Previously only pixel count values were displayed here which made it difficult to configure zones configured in percentage terms. These values are now displayed in both pixel and percentage terms to assist in zone configuration. Note that the percentage values are based on the current size of the zone so if this is changed then the value displayed will not be applicable at the time of event generation.
  • FIX : When doing motion detection an extra blob, that could never be removed, was sometimes included. This could have caused false triggering and has not been corrected.
  • FIX : A problem was reported whereby when using bulk frame records to reduce database load the last frame record was not written. Replaying the event via the web interface resulting in the event being truncated. A correction has been made so prevent this and ensure that the last frame of an event is always recorded.
  • FIX : If an analysis daemon terminates abnormally or the host computer crashes then events can be left in a state whereby they effectively have zero length and are useless. A change to was made such that any ‘open’ events such as this which have not been updated for at least five minutes are closed and updated to reflect their actual content so that they may be viewed or saved. Events recovered in this way are named with a ‘(r)’ mark to help identify them.
  • FIX : In more recent versions of MySQL the password hash generated is 50 characters long, which overflows the previous password field in the database which was only 32 characters long. This field has been extended to 64 characters to accommodate this.
  • FIX : The montage view had an error whereby the refresh timeout for stills was mislabelled causing continuous refresh attempts which rendered the view mostly unusable. The constants in question are now correctly referenced.
  • FIX : The default, bandwidth specific, rate and scales were not always used as the records in the database were misnamed. This is now corrected though you may need to reset the values that were used previously as these will be lost if they had been changed.
  • FIX : It was previously the case that old images could be left in the ‘images’ directory for a long period, sometimes resulting in incorrectly assuming correct operation. A fix was made to which modified the previous clean up of old WAP images so that any old images left in this directory are removed after a short period. Please ensure that if you have customised the web interface and have images you wish to keep that they are not left in the temporary images folder as they will now be deleted.
  • FIX : A JavaScript error in the Zone configuration screen was identified and fixed.
  • LANGUAGE : A Brazilian Portuguese translation has been supplied by Victor Diago and is available by selecting ‘pt_br’ as the language type.
  • LANGUAGE : Updated versions of the Dutch and Argentinian Spanish translations have been included.

Release 1.19.2 - 2004/04/22

Minor features, fixes and language updates.

  • FEATURE : The default replay rate and live and event scale settings are now configurable on a per bandwidth basis rather than globally. This allows you to view at full scale when you have high bandwidth and at smaller scales when you do not have so much resource. You will need to re-configure your previous defaults as they will be lost.
  • FEATURE : Filters can now include a specification of the preferred sort order of the results.
  • FEATURE : Filters can now include a specification to limit the results to a predefined maximum
  • FEATURE : Two new filter elements have been added. These are disk blocks and disk percentage. These are event independent and return the amount of disk space used on the event partition in terms of disk blocks or percentage as returned by df(1). Thus filters using these criteria will either match all events or none at all depending on the disk usage at the time of filter execution. The addition of these terms along with the ability to sort and limit filter results now means it is possible to create a filter that will automatically clear out old events once disk usage exceeds a certain value. Included in the database schemas for both new installations and upgrades is a sample filter called PurgeWhenFull which can be used to do this. It is initially not set to do anything automatically so if you want to use it, you should load it into the filter selection window, modify it to your taste and then save it, selecting ‘auto delete’. Please note that filters created using disk related terms to delete events should always contain a limit term also otherwise it is possible for all events to match and thus be deleted. Using a limit ensures that only a small number are affected at any one time.
  • FEATURE : Filters can now be defined to automatically execute an external script or program of your choosing. This can be specified when the filter is saved. Note that for security reasons this cannot be just any arbitrary command but must be readable and executable by your web server effective user. The script or program you specify here will be executed in the events root directory once for each event and will be passed one parameter containing the relative path to the event directory. This will normally be of the form <MonitorName>/<EventId> so it it possible to determine both the monitor and event in question from the path. Note also that a flag is set per event as with other auto actions indicating that an executable script has been run on that event and so to exclude it from subsequent matches. However if you have several filters all with executable scripts you will find that only the first gets executed as the flag will be set following successful completion and so no further scripts will be run on that event. Successful completion is indicated by the script returning a zero exit status, any other status indicates an error and the executed flag will not be set.
  • FIX : In some circumstances temporary diagnostic images were being saved instead of highlighted analysis images. This is now corrected.
  • FIX : When viewing a list of frames in an event, the link to the diagnostic image was incorrect. This is now fixed.
  • FIX : The Archive link from the monitor watch window has been fixed. Previously this generated a bogus window.
  • FIX : The zone definition have been updated so that selecting the various types of zones etc only disables those options you no longer have access to rather than wiping them out entirely. This is also true of the zone when saved. Thus you can now more easily change a zone to be temporarily inactive for example and have your previous active settings restored in the future.
  • FIX : Selecting an event from the list generated by a filter that included a Monitor Name term did not previously work properly. This is now fixed.
  • FIX : A number of the constants used internally have been renamed to be more consistent. Hopefully nothing is broken!
  • FIX : Following notification of a potential vulnerability in zms by Mark Cox, all non-trivial string and buffer copies are now limited by the maximum size of the destination. Mark has also askedme to include the following notice relating to this, which I am very happy to do.

"This issue was discovered by Mark J Cox <>. The Common Vulnerabilities and Exposures project ( has assigned the name CAN-2004-0227 to this issue."

  • LANGUAGE : An additional Italian language translation has been added. One, by Davide Morelli, was included in 1.19.1 but not announced. However like buses another one has come along, from Tolmino Muccitelli, and so they are both now present. The original translation is accessible by selecting it_it as the language whereas the new one is it_it2. I would prefer if they were merged as two versions of one language is not easy to maintain when I don’t know what the differences mean!
  • LANGUAGE : A version of Argentinian Spanish by Fernando Diaz has also been included and is accessible by setting your language to es_ar. As with all the language translations I cannot vouch for the completeness or accuracy of the language files so feel free to feedback any updates you think should be made.
  • NOTE : None of the non-English language files in this release do not contain any translations of the new, or modified, tokens which have been introduced in this release. All new or modified tokens are included in the language files in English. There will shortly be a point release which includes these language updates assuming I can get translations of them in a reasonable timescale.

Release 1.19.1 - 2004/03/24

Minor bugfixes and enhancements.

  • Ffmpeg Configure Changes. The configure script has been modified to look for the ffmpeg libraries in their installed location rather than in a build directory. This is to avoid having to build the library when it might already be installed.
  • Pcre Configure Changes. The configure script has been modified to look for the pcre.h header file in both /usr/include and /usr/include/pcre rather than just the latter as previously.
  • Remote Image Parsing. Further improvements have been made to handle additional patterns of images with differing styles of terminations or none at all.
  • Event Image Numbering. An additional configuration option (ZM_EVENT_IMAGE_DIGITS) has been added to allow the user to define how many significant figures should be used to number individual event images.
  • Frame Listing Timestamp Bug. Fixed a bug where in the event frame listing view the timestamps were not correctly displayed.
  • Event Filters Bug. Fixed (again) a bug where several fields used in event filters did not generate valid database queries.
  • Zmu Device Authentication. Removed the previous requirement to pass in a username and password to zmu when just querying a device as this was slightly broken and was unnecessary anyway.

Release 1.19.0 - 2004/03/18

Some major enhancements and bugfixes.

  • MPEG video streaming. ZoneMinder now supports true video streaming if configured with the --with-ffmpeg option. This allows one or both of live or event streaming to be in this format rather than motion JPEG style as before. Note however that is still somewhat experimental and may not work on your system. The reason for this is due to the variation in plugins and video movie formats. Currently I have got it working well with browsers on Windows platforms using the Windows Media Player plugin and the 'asf' video format. I have also managed to get event streaming working on Mozilla using mplayer (I think) though it jumps in and out of it's place in the window a bit. I would appreciate any feedback or advice on formats and plugins that work on your system. Also note that video streaming tends to get buffered before being displayed. This can result in the 'live' view being several seconds delayed.
  • Motion JPEG Capture. Previously image capture from network devices has been limited to single stills capture only. This has now changed and if you entered a remote camera path that returns the multipart/x-mixed-replace MIME type then this will be parsed and images extracted from the stream. This is much faster than before and frame rates can be as fast now with network cameras as with capture cards and video. This feature also has the side-effect that one ZoneMinder installation can use another as a remote video source.
  • NPH Streaming. After months of frustration I have finally figured out why streams were corrupted using Cambozola versions after 0.22. It turned out that apache was injecting characters into the streams which was screwing up the headers. I believe this to be because the initial header had no content-length header, as the length is indeterminate. So I have added a zero content length header which I believe fixes the problem though perhaps not in the best way. I have also made the installation link the existing zms binary to nph-zms so that you can now use zms in non-parsed-header mode. If it detects it is in this mode then the content-length header is not output, though several other additional ones are. In nph mode the false character injection seems to disappear so I suspect this is a better way to use zms.
  • Bulk Frame Records. With the recent advent of the 'Record' and 'Mocord' modes a lot of people have started using ZoneMinder as a pseudo-DVR. This meant that a lot of database activity was taking place as each captured frame required its own entry in the database. The frames table has now been reorganised so that 'bulk' frames may be written at defined intervals to reduce this database activity. The records act as markers and individual frame timings are interpolated in between. Bulk frames are only used when no alarm or motion detection activity is taking place and normal frame records are kept otherwise.
  • Event List Ordering and Scrolling. It was previously the case that the ‘Next’ and ‘Prev’ buttons on the event view did not always go to the event that was expected and sometimes disappeared altogether. This behaviour has now been modified and these buttons will now take you to the next and previous events in the list which the event was selected from. Thus if the list was sorted on ascending scores then the ‘next’ event is the one below which has a higher score etc. A possibly counterintuitive side effect of this is that as the default list is sorted by descending time the ‘next’ event is the one below in the list which will actually be earlier and the ‘previous’ event is later. So long as you remember that next and prev refer to the order of the list you should be ok.
  • Zone Percentage Sizes. Zone motion detection parameters can be defined either in terms of total pixels or as a percentage. This percentage was defined relative to the size of the image as a whole. However this was difficult to calculate or estimate especially with several zones of varying sizes. In version 1.19.0 this has been changed so that the percentage relates to the size of the zone itself instead. This should make calculations somewhat easier. To convert your existing zones you can run with the -z option, though this should be done only once and you should backup your database beforehand in case of error.
  • Console View System Display. The console display was slight revamped to indicate disk space usage (via the ‘df’ command) on the events partition,
  • Zone Form Validation. Changes applied in version 1.18.0 to prevent invalidate entries in the zone definition form actually had the opposite effect due to JavaScript treating everything as a string and not a number (e.g. 5 is greater than 123). This is now corrected.
  • Default Rate and Scales. You can now specify (in the options dialog) the default scale you would like to view live and event feeds at. You can also give a default rate for viewing event replays.
  • More Rates. Additional faster rates have been included, up to 100 times.
  • Frame Buffer Size. Previously it was possible for frames being sent from the analysis daemon to the frame server to exceed the defined maximum buffer size in which case the write would fail. It is now possible to define a larger size if necessary to prevent this. Note that you may have to adjust your system configuration to accommodate this. For further details check the help for the ZM_FRAME_SOCKET_SIZE option.
  • Filter Name Duplication. Following recent changes to the filters table, several people reported that when saving filters they actually got a duplicate. This resulted in several copies of filters all with the same name as the constraint on unique filter names was not present. Well it is now so when upgrading your database all the filters will be renamed from ‘myfilter’ to ‘myfilter_<id>’ where ‘<id>’ is the id number in the database (which is then removed). In general the higher the id number the more recent the filter. So you should go through your filter list deleting old copies and then rename the last one back to it’s original name.
  • Filter Form. Problem were reported with the filtering form where several selections generated SQL errors. This is now fixed.
  • Filter Image Attachments. A fix was made to to prevent it trying to attaché alarm images to non-alarm events.
  • Video Rate Specification. A fix was made to that corrected a problem with no default frame being used if none was passed in.
  • RBG->BGR Black Screen. Fixed an issue with black screens being reported in RGB24 mode if RGB->BGR invert was not selected.
  • Monitor Deletion. Fixed a problem with event files not being deleted when monitor was.
  • A translation for the Dutch (nl_nl) language has been included.

Release 1.18.1 - 2004/02/21

Minor bugfixes.

  • Filter Monitor Name Bug. A bug was present in the previous release where monitor names where not correctly handled in filters. This is now fixed.
  • Database Upgrade Change. Users upgrading from releases prior to 1.18.0 please note that now as part of the upgrade process all your filters will have any automatic actions unset. This is because the previous affinity to a particular monitor has now been removed and you may be left with several filters all doing the same thing to all of the events or have filters which for instance delete events on only one monitor but which now would delete them for all of them. It is recommended that you review your list of saved filters and delete duplicates before adding any monitor specific terms and resetting the actions for any that remain.

Release 1.18.0 - 2004/02/20

Major optimisations, important new features and some bugfixes.

  • Optimisations and Performance Improvements. This release contains several major performance improvements in various areas. The first of these is that image processing for YUV style input formats are now pretty much handled at almost the same speed as native RGB formats. As this is what the capture daemons spend most of their time doing, the improvement helps reduce the amount of CPU time by a significant degree. Application of these changes also highlighted a bug that had existed previously in YUV conversion which caused incorrect conversions for certain values. The other two main areas of optimisation are in the Blend and Delta image functions. Normally when doing motion detection the analysis daemons spend about 99% of their time comparing a captured image with the reference image and then blending the two ready for the next capture. Both of these functions have been significantly improved. In previous versions there were two options for calculating image deltas (or differences), a simple RGB average and a Y channel calculation. Historically the RGB one was faster however with the optimisations the Y channel calculation (which is more accurate) is now 15-20% faster and so has become the default though you can select either method by the ZM_Y_IMAGE_DELTAS configuration option. A new method of image blending has also been added which is up to 6 times faster than the old one which is retained for compatibility and because in some unusual circumstances it may still be more accurate (see the ZM_FAST_IMAGE_BLENDS option for details). Altogether these optimisations (along with other common sense ones such as not maintaining a reference image in ‘Record’ mode where it is not used) significantly reduce the CPU load for most systems, especially when alarms are not in progress. If an alarm is detected then a lot of file system and database activity takes place which is limited by the speed of these resources so the gain will not be as much.
  • Remote Authentication. This document has previously indicated that basic authentication for network cameras could be used by entering a hostname of the form of <user>:<pass>@<hostname>. This was not actually the case as the relevant authentication header was never sent. This is now fixed and addresses of this form can now be used.
  • Filter Date Parsing. The date parsing now correctly reports when dates or times which it cannot parse are used.
  • Monitor Independent Filters. Previously filters were closely tied to a monitor and a new filter had to be created for each monitor. This has now changed and filters can now specify an associated monitor in the same was as other parameters. Links have now been added to the main console view to allow you to view lists of events from all monitors in one and saved filters can now affected as many or as few monitors as you wish. IMPORTANT: Please note that as part of the upgrade process all your filters will have any automatic actions unset. This is because the previous affinity to a particular monitor has now been removed and you may be left with several filters all doing the same thing to all of the events or have filters which for instance delete events on only one monitor but which now would delete them for all of them. It is recommended that you review your list of saved filters and delete duplicates before adding any monitor specific terms and resetting the actions for any that remain.
  • New Filter Operators. Two new filter operators and their inverse have been added. You can now indicate whether a value is in a set of other values, for example ‘cat’ is in the set of ‘cat, dog, cow, horse’. You can also use regular expressions so ‘cat’ matches ‘^c.*’. The ‘not in set’ and ‘not matches’ operators are also available.
  • Additional Scales. Enhancements to the scaling algorithm mean that non binary scales are now just as easy to apply, thus new scales such as 0.75x have been added. Others can be easily included if necessary.
  • Montage Sizing. The montage view allows you to view all of your active cameras in one window. However if your cameras are different sizes then this becomes very untidy. You can now constrain the image size of each monitor in this view to a fixed size with the ZM_WEB_MONTAGE_WIDTH and ZM_WEB_MONTAGE_HEIGHT configuration options. Monitor images will be enlarged or reduced as necessary.
  • Compact Montage. The traditional montage view includes individual small menus for each monitor and a status display. This results in a somewhat cluttered display and the refreshing of the status displays may generate more accesses than desirable. Using the ZM_WEB_COMPACT_MONTAGE configuration option allows this montage view to only include the monitor streams and one overall menu bar with no status displays.
  • Monitor Name Constraint. The name given to a monitor is used in file paths and several other areas. Thus it is important that it follows certain conventions but up until this release these names were unrestricted. The monitor form now limits monitor names to alphanumeric characters plus hyphen and underscore.
  • Timestamp Change. Traditionally ZoneMinder has time-stamped each image as it is captured. This ensures that all images have their capture time recorded immediately. However there are several side-effects which may be undesirable. Firstly the time and resource is spent time-stamping images that are not recorded and which are discarded, secondly the timestamp is included in any motion detection and may potentially trigger an alarm if detection parameters are very sensitive. The third effect is that as the timestamp is added to the image at it’s native resolution, if the image is scaled then the timestamp is scaled also. This may not be a problem for enlargement but if the image size is reduced then it may become illegible. This version now allows you, via the ZM_TIMESTAMP_ON_CAPTURE configuration option, to indicate whether the timestamps should be added on capture, as before, or only added when the image is viewed or recorded. Setting it to this later value allows timestamps to be added to scaled images. This is little performance impact either way.
  • Scaleable Stills View. The stills view of a monitor (when streaming is not available or desired) is now scaleable in the same way as the streamed view.
  • Double Buffered Stills View. The stills view has now been restructured to allow a double buffering approach. Thus a new image is loaded in the background and only written to screen when complete. This removes the refresh flicker that means that the screen blanks periodically however uses more JavaScript so may not be suitable for all platforms. Whether ZoneMinder uses double buffering or not is controlled by the ZM_WEB_DOUBLE_BUFFER configuration option.
  • Fixed Length Event Bug. A bug was reported whereby the fixed length events that could be specified for use in Record or Mocord mode could sometimes result in events a multiple of that length. So events that were meant to be 15 minutes long could sometimes be 30 or even 45 minutes. This was especially the case with monitors that had low frame rates. This is now fixed.

Release 1.17.2 - 2004/02/06

Minor features, bug fixes and additional languages.

  • Pending Process Bug. A bug was found whereby a process that was scheduled to be started in the future (due to repeated failures) would drop out of the pending queue if a further explicit restart was attempted. This is now fixed.
  • Strsignal Function. The strsignal function was included from version 1.17.1 however this is not ubiquitous on all distributions. The existence of this function is now tested for by the configure script and it is not used if not present.
  • Add Max Alarm Threshold. Previously the alarm threshold (which is the amount a pixel has to differ from it’s counterpart in the reference image) existed only in a ‘minimum’ form meaning pixels that were more different matched. A maximum has now been added to assist in screening out large changes in brightness. In addition to this a number of new consistency checks have been added to the zone definition form to try and prevent bogus or invalid settings.
  • Diagnostic Zone Images. A regularly requested feature is that of adding extra information to allow diagnostics of the process of image detection. This has previously been somewhat hit and miss but in this version a new configuration option ZM_RECORD_DIAG_IMAGES has been included to allow this. This option will generate several images for each captured frame in an alarm including each reference image and a series of images containing the image differences at various stages in the process. It is not possible to record these for the image prior to an alarm but those following it are included and should assist in tuning the zones to provide optimal motion detection.
  • Event Images Renamed. The capture and analysis images recorded during an event have been renamed from capture-???.jpg to ???-capture, and from analyse-???.jpg to ???-analyse.jpg. This is to allow all images (including diagnostic ones) to be associated with the frame sequence number more easily. This means that old events will no longer be able to be viewed as the wrong image will be being searched for. To avoid this you can use the new ‘’ utility to rename all your old images by doing ‘perl -r’ as an appropriately privileged or root user.
  • Version checking. ZoneMinder will now optionally check for new versions of itself at This is done with a simple http get and no personal information otherwise than your current version of ZoneMinder is transmitted or recorded. If new versions are found you may be alerted of them via the web interface. This is an initial step towards enhancing and automating the upgrade process.
  • Force Java. Previously ZoneMinder could be forced to override it’s detection of browser capabilities to prevent the Cambozola Java applet being used. However sometimes the opposite effect was desired and using the applet was preferred to native image handling. This has now been made possible by making the ZM_CAN_STREAM option tri-state allowing ‘auto’, ‘yes’ or ‘no’ to be used to provide all alternatives.
  • Alarms Cleared on Exit. In previous versions if an alarm was present when the analysis daemon (zma) exited the alarm would remain flagged. This had little effect except if the monitor was being watched however it was a bit annoying so any alarm flag is now cleared when this daemon exits.
  • New Languages. Translations for Japanese (ja_jp), French (fr_fr) and Russian (ru_ru) are now included.

Release 1.17.1 - 2004/01/21

Bugfixes and additional languages.

  • Login Bug. A bug was identified whereby an unauthorised user could gain access to the console view of ZoneMinder. This was the only view available and no access to any camera views or configuration was possible. This bug is now fixed.
  • New Languages. Two new language files were added. These allow ZoneMinder to use the German (de_de) and Polish (pl_pl) languages.
  • Language File Format. The format of the language file was changed to allow the specification of character set and locale as well as have more flexibility in the calculation of plural forms.
  • Option Language. The prompts and help text for the options is now also available for translation. A guide is included in the language file to allow this if necessary. Currently language translations exclude the options settings as this is a rarely accessed area and contains a great deal of text. The new format allows individual options to be translated piecemeal as the opportunity arises.

Release 1.17.0 - 2004/01/15

Language changes and other enhancements.

  • Version Numbering. ZoneMinder version numbers have now changed. This is to allow more frequent ‘point’ releases which are expected to happen for instance whenever new language files are included. Previously all releases had the same version increment so it was difficult to tell the significance of any particular release. Now the version number is in the x.y.z format where a change in x signifies a major fundamental or architectural rework, a change in y will indicate a new release containing incremental feature changes or fixes recommend to all users and a change in z will generally mean minor non-functional or critical modifications which would not be recommended as important to all users. As ZoneMinder has been referred to by the point release up until now, e.g. .15, .16 etc the next number in that sequence has been retained for continuity and to avoid having any ambiguity in version numbers.
  • Language Support. ZoneMinder now allows specification of system and user specific languages other than UK English. These languages are given in language files named zm_lang_nn_mm.php which can be created from the default zm_lang_en_gb.php file. If your language is not included then please consider doing a translation by checking this file and submitting your changes back for inclusion in future releases.
  • Syntactic Improvements. Previously setting ‘NOTICE’ errors on in PHP would flag tens or hundreds of violations in the ZoneMinder web files. Whilst not strictly errors this represented sloppy coding and sometimes covered up genuine bugs. All the files have been revisited and revised to ensure that a many of these problems as possible have been eliminated and only the very few where the fix would be significantly less optimal than the problem remain.
  • Stream Scaling Resizing. Previously when watching a stream and modifying the scale of the streamed feed only the actual feed would change size and the containing frames and windows would remain the same. This was fine for changes to smaller scales but problematic for larger scales. This has been changed for that the window and frames will now resize appropriately.
  • Mmap Return Value. A problem identified by users in the forum relating to checking of return values from the mmap function call has been corrected.
  • Minor Bugs. A number of minor bugs and inconsistencies were corrected.

Release 0.9.16 - 2003/12/16

Major usability enhancement and fixes.

  • Run States. Instead of the old ‘start/stop’ links the current system state is now a link which takes you to a dialog which allows you to start, restart or stop the system. You can also save the current run state which basically takes a snapshot of the current monitor functions and saves that. You can then reselect that state later which basically involves resetting the monitors to have these saved functions and then doing a system restart.
  • New Monitor Functions. Instead of Passive, Active, and X10, the modes are now Monitor (= old Passive) which just allows you to watch the feed, Modect (= old Active) which is MOtion DetECT and which will capture events as previously, Record which continuously records with no analysis and MoCord which is a hybrid of Modect and Record and which will continuously record but also do motion detection and highlight where this has occurred. The Record and Mocord functions both records events whose length in seconds is defined by the 'Section Length' monitor attribute. You can additionally specify a 'Frame Skip' value to tell it to not record 'n' frames at a time, when not alarmed.
  • X10 Function removed. The X10 mode has been removed and replaced by an indication of whether the monitor is 'continuous' or 'triggered'. This basically just indicates whether it may be controlled outside of zmdc and zmpkg. Additionally the X10 triggers may now be specified in an X10 section. This has changed to allow for other types of triggers to be added more easily.
  • Paginated Event listings. The event listings are paginated by default. You can list all of the events if you like by choosing the appropriate option. There are shortcuts to pages of events at the top of the listing. If these produce strange looking sequences like 1,2, 3, 5, 9, 17, 37 etc this is deliberate and uses an exponential algorithm intended to allow you to quickly navigate through the list to a particular page in the minimum number of clicks.
  • Scaleable Streams. Event and monitor streams can now be scaled to a certain extent allowing you to view at a different resolution than that captured. This area may be somewhat incomplete especially in terms of monitoring at a higher screen size where the frame is not adjusted properly.
  • Variable Frame Rates. Event streams can now be viewed at various rates allowing faster review (if your bandwidth allows) to long events, or slower for more precision.
  • Scaleable/Variable MPEG generation. Generation of MPEG videos now also allows you to specify the scale relative to the original image and also the frame rate. Again, for long events captured in the perpetual recording modes this will allow a faster review of the period the event covers.
  • Tabbed Monitor options. Specification and modification of monitors is now in a tabbed form for easier navigation.
  • Additional stream headers. The stream headers have been changed to hopefully ensure that they are less likely to be cached.
  • Maximum process restart delay. now has an upper limit (15 minutes) to the time it waits before restarting continuously crashing processes.
  • Intelligent Module inclusion. now includes Archive::Zip and other modules on an as needed basis so won't complain about them being missing unless they have been explicitly configured to be used.
  • Adaptive Watchdog. zmwatch now more adaptive to actual frame rates.
  • Fixed zmfilter CPU sucking bug. will now restart on failure to read shared memory. Previously this could go into a nasty CPU sucking loop!
  • New zmconfig options. has a new option to run with no database if necessary
  • File reorganisation. Various administrative file changes and reorganisations.
  • Compiler warnings. Various tweaks and modifications to reduce compiler and memory warnings.
  • SQL Buffer size. Increased SQL buffer size to cope with large pre-event buffers, plus a couple of other buffers have been enlarged.
  • Incorrect Frame time offsets. The time offsets in alarmed frames were incorrect and based on the time of storage rather than capture. This gave the impression that there was a delay after the first alarmed frame and messed up some streaming timings. This has been fixed.
  • Event Frame listing. You can now view details of the frames captured such as their time and score etc by clicking on the scores in the events views.
  • Refined shared memory handling. Fixed zmfilter, zmwatch and zmx10 to allow zero as a valid shared memory id to allow them to keep on working if the segment has been marked for deletion
  • Frame daemon stability. Changed image buffer in zmf to be static rather than dynamic. This has made zmf much more stable.
  • MPEG overwrite option. Fixed the 'Overwrite' checkbox in video generation to actually overwrite the video. Modded the page slightly also.
  • Daemon control improved. Changing between monitor functions, e.g. Modect, Mocord etc now restarts the correct daemons.
  • Improved time based filters. Filters that include time based clauses now get executed regardless of whether new events are being generated.
  • Audit daemon started unconditionally. zmaudit is now started regardless of the setting of FAST_DELETES as zmfilter depends on it being there.
  • Filtering more active. zmfilter is now started in 'Monitor' mode. It does not run in when monitors are completely off however.
  • Stills paged. The stills view of events is now paginated for easier navigation.
  • Archive images optional. Normally when an alarm is detected a set of raw images is saved along with a mirror set of images containing motion highlighting. This second set can now optionally be disabled.
  • Settings in auth mode. Control of camera brightness, contrast etc did not previously work when running in authorised mode. This is now fixed.
  • zms parameter bug fixed. The streaming server incorrectly parsed and assigned one of it’s arguments. This is now fixed.
  • zmu brighness bug. Previously camera brightness was not correctly parsed from command line options passed to zmu.
  • Event window width variable. Event windows now scale to fit the event image size.

Release 0.9.15 - 2003/07/10

Various bug fixes from the last release and before.

  • Bandwidth. A bug was introduced in .14 which caused a corrupted console display and manic refreshes on new installations. This was due to a missing bandwidth setting when no existing cookie was detected. This is now fixed.
  • Again in .14 a problem occurred for a new release whereby zmconfig wanted to know the database details and but also previously wanted to access the database before it had asked the questions. This has now been addressed though it does require that zmconfig is run twice initially, once to created the scripts and once to import the configuration into the database.
  • In association with the previous error, the zm_config_defines.h file was not created in the absence of the database as this was what was used to assign configuration ids. This now takes place regardless of the database.
  • The SQL to create the Users table was mistakenly omitted from the .12 database upgrade script this has now been corrected.
  • A bug in zmfilter was pointed out whereby the dynamic loading of the Zip or Tar archive modules depending on a preference actually wasn’t. It was looking for both and loading both at compile time. This has now been modified to be fully runtime.
  • The database user definitions in the zmvideo script indicated one database user while the database connection used a different one. This prevented any videos being generated.
  • A problem was found if using the zmf frame server and greyscale images. The option to colourise JPEG images is intended to be used to ensure that all JPEG files are written with a 24 bit colourspace as certain tools such as ffmpeg require this. However in the circumstances described above images written by zma directly were colourised whereas those written by zmf weren’t. A change has been made whereby if set all greyscale JPEG images are colourised in all circumstances.

Release 0.9.14 - 2003/07/08

Major new feature and important bug-fixes.

  • Web configuration. Following many requests and to make ZoneMinder easier to administer the configuration system has been changed slightly. You should now still run to specify an initial configuration but you now only need to answer the first few questions to give a core set of options including the database options. The remainder of configuration options can then be ignored to start with and all but the core options will be written to the database. You can then view and modify these options from the web interface and apply then without recompilation, which is now only necessary if you change the core configuration.
  • Following a number of requests the .sock file directory is now configurable in zmconfig.
  • Y channel bug. When using colour cameras a motion detection problem was present if fast RGB images deltas (ZM_FAST_RGB_DIFFS) was off. This was an overflow error in the calculation of the Y channel and caused excessive image differences to be calculated. This has now been fixed.
  • The use of the Term::Readkey perl module in has been removed. This module had been removed from previously but had lingered in this script.
  • A bug was found in causing a crash if time delayed X10 events were used. This has now been fixed.
  • Removed use of ‘zmu’ binary from and Previously these scripts had used zmu to determine last image time and alarm state information. The use of this script was a bit overkill and the introduction of user permissions complicated matter slightly so these scripts now access the shared memory directly.
  • Shared memory permissions. Following introduction of a user permissions system the previous 777 mode for shared memory was deemed insecure. Consequently from now on shared memory is only accessible from the owner. This means that zmu will only work when run as root or the web user unless you set it setuid where it should still be secure as it will require authentication.
  • All SQL buffers in the C++ code have been enlarged. There was previously an issue with a buffer overflow on certain occasions.

Release 0.9.13

Beta version of several features and fixes, never generally released.

  • Following a number of requests the .sock file directory is now configurable in zmconfig.
  • Changed some of the core video calls to be V4L2 compatible. This primarily involved opening the video devices and memory maps as read/write and not just read-only.
  • Shared memory has now been rationalised to prevent some common problems. Remember to shutdown the whole ZM package before installing, from this version on it will remove all old shared memory segments.
  • Fixed not numeric comparison in zmwatch which was causing, or appeared to be causing, some errors.
  • Fixed zone image map bug for percentage zones. When you had defined a zone in percentage terms, the image map used to select it for editing was broken. This is now fixed.
  • New contrast/brightness etc adjustments feature. This accessible from the Settings link on the monitor window. It's fairly basic at present but should work for most types of cameras. If you have any device or driver specific auto-brightness, auto-contrast etc enabled the changes you make may appear to work but may be overridden by the auto feature immediately so check for that if your changes do not appear to be having an effect. Also if you have a number of cameras being multiplexed onto one device then any changes here will probably affect all your cameras.
  • Some redundant window scrollbars removed.
  • Added user and access control. If enabled in config (ZM_OPT_USE_AUTH) then you will need to define and login as ZM users. There will be one users already defined, with username 'admin' and password 'admin'. This user is defined will full permissions and clicking on the 'Options' link from the main console window will allow you to modify and create users with various permission sets which hopefully will satisfy most requirements. These users (except any defined with 'system' edit capability) can be restricted to certain cameras by adding the monitor ids as a comma-separated list (no spaces) to the appropriate field. Users limited to specific monitors may not create or delete monitors even if defined with monitor edit permissions.
  • Some windows now (optionally) use a JavaScript timeout to refresh themselves rather than a refresh header. Since refresh headers were interrupted if a link of the page was linked there were previously various forced refreshes from child windows to restart the refresh process. By using JS refresh timers which are not interrupted these extraneous refreshes have been mostly eliminated.

Release 0.9.12 - 2003/06/08

Mostly bug-fixes with a couple of minor features.

  • Double first images. Fixed a problem where the first image of an event was being recorded twice. I don’t think this was at the cost of any of the other images but one copy was an extra.
  • Made zmdc connect more intelligent. On the suggestion of a couple of people I have made the server spawning and waiting a bit more intelligent. Rather than waiting a fixed (short) amount of time, it now polls every second for a while, stopping if the connection is made. Thanks to Todd McAnally for the initial suggestion.
  • Added image view to events lists. Again a partial implementation of a suggested feature. If you click on the score column you will now get a snapshot of the event frame with the highest score. This is to enable you to quickly see what the event was about without having to watch the stream or view all the static images.
  • Make delta times variable precision. A couple of problems had been reported where long events got negative durations. This was due to an overflow in a time difference routine. This had been operating on fixed precision allowing high precision for short deltas. This routine has been changed to allow variable precision and events will now have to be several days long to wrap in this way.
  • Fixed round detection problem. Although the existence or otherwise of the ‘round’ function is correctly detected, the appropriate header file with the results of this test was not included which was not helpful. This has been corrected.
  • Fixed monitor rename bug. Renaming a monitor did not correctly modify the events directory to reflect this. This has now been fixed.
  • OPT_MPEG bug. A bug was reported (by Fernando Diaz) where the results of the ZM_OPT_MPEG configuration variable was not correctly imported into the scripts. This now happens as intended.
  • Fixed event length bug. The script which is used to generate video MPEG files tries to calculate the correct frame rate based on the length of the event and the number of frames it contains. Previously it did not take account of the pre and post event frames and so passed a much shorter value to the mpeg encoder than it should. This will only have affected short events encoded with ffmpeg but will have resulted in much faster frame rates than necessary. This has now been corrected to take the whole event length into account.
  • Fixed remote camera memory leak. A memory leak was reported when capturing with remote cameras, this is now fixed.
  • Orientation. Added option to rotate or invert captured images for cameras mounted at unusual angles.
  • Fixed filter bug. A bug in the script was detected and reported by Ernst Lehmann. This bug basically meant that events were not checked as often as they should have been and many may have been left out for filters that had no time component. The script has now been updated to reflect Ernst’s suggested changes.
  • Stylesheet change. Previously the stylesheet didn’t really work very well on Mozilla, Netscape and browsers other than IE. This turned out to be because I was using HTML style comments in there instead of C style ones. This has now been corrected so you should see the correct styles.
  • ReadKey. Thanks to a ridiculously sensible suggestion from Carlton Thomas this module has been removed from Originally Term::ReadKey was in there for funky single character unbuffered input but that has long since disappeared so just regular perl input methods are used now. This removes one of the most irritating features about ZoneMinder installs.
  • Delete monitor confirm. Due to some unfortunate accidents by users, attempts to delete monitors will now require confirmation.
  • Detect linmysqlclient.a. Added better detection script into ‘configure’ top spot when libmysqlclient.a is missing.

Release 0.9.11 - 2003/04/25

Various new features and fixes.

  • Added stats view : If you have the RECORD_EVENT_STATS directive set and are viewing a still image from an event you can now view the statistics recorded for that frame. This tells you why that frame triggered or participated in an alarm. This can be useful in tuning the various motion detection parameters and seeing why events occurred.
  • Tabulated events : The main events view is now tabulated to look a bit nicer.
  • New video palette support : As well as the existing greyscale and 24 bit RGB palettes, you can now choose YUV420P and RGB565. Rewrote the palette/colours area a bit to enable support for other palettes in the future if requested. Bear in mind though that YUV palettes are converted into RGB internally so if you have the choice RGB24 may be faster as it's the 'native' format used within.
  • Added preclusive zones : Added a new zone type, the preclusive zone. For full details see the relevant section above but in brief this is a zone type that if alarmed will actually prevent an alarm. This completes the pantheon of zone types I think.
  • Fixed Mozilla JavaScript : Various JavaScript functionality did not function on Mozilla, Netscape and other browsers. This is now (hopefully) fixed.
  • Allow image and mpegs to be attached to emails : Added new tokens (%EI1%, %EIM% and %EV%) to the filter emails. This allows the first alarm image, most highly scored alarm image and an alarm MPEG to be attached to alarm notification emails. Use %EV% especially with care!
  • Fixed possible motion detection bug : I found a few double declared local variables left over from the rewrite. This may have affected the motion detection algorithm. Fixed now anyway.
  • Modified scoring : Alarm scoring has been modified to give more granularity for smaller events. This will have the effect of raising the scores for small events while large ones will still be about the same.
  • Fixed /cgi-bin path problem : Previously you could specify the real path to you cgi-bin directory if you have one but not the web path. You can now do both.
  • Improved video handling in browser : The MPEG/video area of the web GUI had been a bit neglected and looked somewhat ugly. This has now been improved to a degree and looks a bit nicer.
  • Added ffmpeg support : Historically ZoneMinder has only supported the Berkeley mpeg encoder which was slow and rather limited. ZoneMinder now supports the ffmpeg encoder as well which is much much faster and makes generation of MPEG videos at realistic frame rates more of a reality. As ffmpeg has so many options and everyone will probably want a different emphasis you can now also specify additional ffmpeg options via
  • Colourise greyscale image files : In past versions, captured greyscale images were stored as JPEG files with a corresponding greyscale colourspace. This saved a small amount of space but meant that mpeg_encode had to do a conversion to encode them, and ffmpeg just fell in a heap. Now you can optionally opt to have greyscale images saved as full 24 bit colourspace images (they still look the same) at the price of a small penalty in CPU and disk but allowing you to easily and quickly create MPEG files. This option is one by default but can be switched off if you do not require any MPEG encoding.
  • Fast RGB diffs : Previously ZoneMinder used quite a loose method for calculating the differences between two colour images. This was basically averaging the differences between each of the RGB components to get an overall difference. This is still the default but by setting ZM_FAST_RGB_DIFFS to 'no' you can now make it calculate the Y (or brightness value) of the pixels and use the difference between those instead. This will be more accurate and responsive to changes but is may be slower especially on old machines. There is a slight double whammy here if you have a YUV palette for capture and set this option off as the image will be converted to RGB and then partially converted back to get the Y value. This is currently very inefficient and needs to be optimised.
  • Fixed STRICT_VIDEO_CONFIG : Previously this actually behaved the opposite of what it was supposed to, ie. if you wanted it strict it wasn't and vice versa. Thanks to Dan Merillat for pointing this one out.
  • Web colour change : I thought the old red, green and amber text colours were just a bit too gaudy so I've toned them down a bit. Hope you like them!

Release 0.9.10 - 2003/04/11

Many bug-fixes and major feature enhancements.

  • Configure ‘round’ bug - Fixed a problem with the configure script that didn't detect if the 'round' function was already declared before try to do it itself.
  • Low event id bug - Fixed bug where events with an id of < 1000 were being cleaned up by by mistake.
  • Source file restructuring - The source files have been broken up and renamed extensively to support the first stage of the code being straightened out. Likewise the class structure has been rationalised somewhat. The php file names have also changed in some cases so it might be best to delete all your php and css files from the zone minder install directory first as the old ones won't be overwritten and will be left behind.
  • Streamed cycle view - The monitor cycle view (the one where each monitor is displayed sequentially) now supports streams as well as stills.
  • New ‘montage’ view - Added a montage view showing all your cameras simultaneously either streaming or stills. The width of this window (in terms of number of monitors) is a configuration option.
  • Network camera support - A major change in this version is support for remote or network cameras. This is currently implemented as series of http grabs of stills rather than being able to break up motion jpeg streams. However frame rates of from 2-10 should be achievable depending on your network proximity to the cameras.
  • Option BGR->RGB swap - Added the option to switch on or off the inversion of RGB to BGR for local cameras. It is on by default to maintain compatibility with previous releases.
  • zmu suspend alarm option - Added new -n option to zmu to effectively suspend alarm detection for a monitor. This is intended for short term use and to support PTZ cameras where alarm detection is desired to be suspended while the camera changes orientation or zoom level.
  • FPS limiting - Added a new option to monitors to add a maximum capture rate. This allows you to limit the amount of hits a network camera gets or to reduce the system load with many cameras. It also works with multi-port cards and limiting the capture rate on one camera allows the spare FPS to be allocated to other devices. For instance with two cameras and no throttle, I get about 4FPS each. Throttling one to 2FPS allows the other to operate at 6FPS so you can allocate your capture resources accordingly. This limiting can be disabled while alarms are occurring as a global option in
  • Alarm reference update - Added option to not blend alarmed images into the reference image. See the help in for caveats.
  • Disappearing monitors - Fixed the disappearing monitor problem in the console view where monitors with no events were randomly not being shown.
  • Clean and tidy - Cleaned up a load of compiler warnings and miscellanea to ensure a cleaner happier build.
  • Streamed image headers - Made all headers in streamed images have full CRLF termination which will hopefully now prevent the problems with broken streams that had existed mostly with Mozilla (and hopefully won't break anything else).
  • Expire streams - Added expiry headers to streamed images so they will always display fully.
  • Event navigation - Added next, prev, delete & next, delete & prev navigation to events to allow you to quickly review events in sequence as had been requested by a number of people.
  • USR blocking : The debug USR signals were not being blocked properly leading to nasty effects in zmc mostly.
  • zmfilter execution : Previously zmfilter execution was not synchronised with the monitor state or the analysis daemon leading to it sometimes being run unnecessarily. From now on the zmfilter process will only run when a monitor is active and so actually potentially generating alarms.
  • zmdc short statuses : Removed the logging of the short status values that returns to it’s clients which had been clogging up the log file.
  • Bugs and pieces - Fixed various bug(ettes) that I came across that that I don't think had been reported or noticed so I don’t think we need to talk about them here do we.

Release 0.9.9 - 2003/03/11

Mainly bug-fixes and minor feature enhancements.

  • Added zmu -q/--query option - There is now a new query option for zmu. When combined with -d it gives the config of the device and when used with -m it dumps the current settings for the monitor and zones. Mostly useful for bug reporting. The previous version of zmu used with just -d gave this information for a video device by default. This now requires the -q option also to bring into line with it's -m equivalent.
  • Added creation of events directory - Previously the 'events' directory was not created on install, this has been fixed.
  • Can now retag PHP files if necessary - Version 0.9.8 was the first version to use short_open_tags in the PHP files. This caused grief to some people so this script will put them back to the long verion.
  • Frame and event lengths fractional - A new field has been added to the Frames table. This is 'Delta' and is a fractional number of seconds relative to the event start time. This is intended to support the real-time playback of events rather than just 'as fast as possible' or with a configured delay as at present. The event length is now also fractional.
  • Corrected extraneous Width to be Height - The last version of zmu included a Width comment which should have been height.
  • Changed colour depth to bits - Having colour depths expressed in bytes has caused no end of problems. This is now changed to be bits and can be changed via a dropdown to limit what can be entered. Don't forget to run the zmalter script to update your DB.
  • Renamed terminate to zm_terminate - The use of 'terminate' in zmc.cpp caused a conflict on some systems so renamed it to something more specific.
  • Zone deletion problem - A problem was found such that when deleting zones the appropriate daemons were not being asked to restart daemons correctly.
  • Console changes - The current version number is now displayed in the console. A refresh button has also been added along with a minor reorg.
  • Added delete button enable to checkAll - Using the 'Check All' button in the main monitor window previously did not enable the delete button. This is now fixed.
  • Reload on click - In previous versions the console window would reload if a monitor window for example was clicked. Thsi was removed in the last version which meant that sometimes the console never go refreshed as it's timing loop was broken. This functionality has now been reinstated.

Release 0.9.8 - 2003/01/26

Several new features and bug-fixes

  • Upgrade note - If you have installed 0.9.7 and wish to save your configuration then copy your existing zmconfig.txt file over to your 0.9.8 directory and before running
  • Added multiple options to zmu - You can now give multiple options to zmu and get all the responses at once. However this is currently in a deterministic order and not related to the order you give them.
  • Added -v/--verbose option to zmu - Zmu has been made more human friendly though it still remains primarily for daemon use. Giving the -v or --verbose option prints out a bit more as a response to each command.
  • Add -d/--device to zmu - This option is designed to allow you to get your video device working with another application such as xawtv and then use zmu -d to print out the settings it’s using
  • (especially with the -v option). These options can then be used as a starting point for your ZoneMinder configuration.
  • Added FPS in status field - The status field in the web monitor views now contains an FPS setting as well as the status.
  • Zmconfig changes - zmconfig handles missing options better and rewrites config file even in non-interactive mode.
  • Fixed config problems in zmcfg.h - Some config was not being set up correctly in zmcfg.h.
  • Zmwatch now works on image delay and not fps - Previously the zmwatch daemon detected capture daemon failure by trying to use the FPS setting. This was imprecise and prone to false readings. It now uses the time delay since the last captured image.
  • Added and zm scripts - There are now two new scripts. is in charge of starting and stopping ZoneMinder as a whole package and zm is designed to be (optionally) installed into your init.d directory to use ZoneMinder as a service.
  • Fixed bug in Scan mode - The monitor cycle or scan mode had stopped working properly due to images not being generated. This is now fixed.
  • Revamped the console window slightly - The console window has now been reformatted slightly to give more and better information including server load.
  • Added email and messaging to filters - Filters now allow you to send emails or messages (basically just short emails intended for mobile devices) on alarms. The format and possible content for these emails is in zmconfig_eml.txt and zmconfig_msg.txt.
  • Made zmdc more aggresive in killing old processes - The daeamon will now kill any ZoneMinder processes it finds on startup or shutdown to prevent orphans from being left around.
  • Configuration changes - Previously there were a lot of files generated by configure. Now only is generated this way and all the other configuration files are created by (from .z files) to centralise configuration more.
  • Fixed cambolzola opt bug - There was a bug in the Cambozola options, I can't remember what it was but it's fixed!
  • Retaint arguments in - In some installations zmdc was complaining about tainted arguments from the socket. These are now detainted prior to sending and after receiving.
  • Forced alarms - You can now force alarms when looking at the monitor window should anything catch your attention. You have to remember to switch them off as well though.
  • Looser video configuration - Some video configuration errors can now be ignored via the STRICT_VIDEO_CONFIG option.
  • Monitor window refresh on alarm - When the monitor window is active and an alarm has occurred the most recent alarms list is immediately refreshed to show it.

Release 0.9.7 - 2003/01/12

Yes, a big jump in release number but a lot of changes too. Now somewhat more mature, not really an alpha any more, and a lot of bugs fixed too.

  • Added script to help with configuration.
  • Revamped to work better with configure scripts
  • Monitors now have more configuration options, including some that were statically defined before such as location and format of the image timestamps.
  • Removed Alarms table from schema as not required, never was actually...
  • Added a number of new scripts, see the scripts directory
  • Added Fast delete to PHP files. This allows the web interface to only delete the event entries themselves for speed and then have the zmaudit script periodically tidy up the rest.
  • Added event filter to enable bulk viewing, upload or deletion of events according to various attributes. Filter can be saved and edited.
  • Added last event id to shared memory for auto-filtering etc.
  • Changed zmu -i option to write to monitor named image file.
  • Made shared memory management somewhat more sensible.
  • Now stores DB times as localtime rather than UTC avoiding daylight saving related bugs.
  • Fixed bug with inactive zones and added more debug.
  • Changed main functions to return int.
  • Added help and usage to zmu.
  • Fixed browser acceptance problem, more easily defaults to HTML.
  • Split out the PHP files into a bunch with specific functions rather than one monolithic one.
  • Fixed NetPBM paths and changed _SERVER to HTTP_SERVER_VARS.
  • Added HUP signal on zone deletion.
  • Added NETPBM_DIR and conditional netpbm stuff.
  • Removed hard coded window sizes, all popup window dimensions can be specified in zmconfig.php
  • Changed form methods to 'get' from 'post' to avoid resubmit warnings all the time.
  • Added conditional sound to alarm on web interface.
  • Fixed syntax error when adding default monitor.
  • Some of the web views have changed slightly to accommodate the separate events view.
  • And much much more, probably...

Release 0.0.1 - 2002/09/25

Initial release, therefore nothing new.