View Single Post
Old 26th October 2010, 08:44
letsharehowto letsharehowto is offline
Junior Member
Join Date: Dec 2009
Location: Sai gon - Viet Nam
Posts: 12
Thanks: 0
Thanked 12 Times in 8 Posts
Default High quality video security with Ubuntu server 10.10,Zoneminder 1.24.x,cheap DVR card

Today I will tell you how to build video security system with Ubuntu server 10.10, Zoneminder 1.24.x, cheap DVR card, high quality video output.

My box:
-Intel(R) Pentium(R) Dual CPU E2200 @ 2.20GHz, 2 cores
-Memory: 2G
-Dvr card:

We have 4 step:

-Install Ubuntu server.
-Install bttv driver.
-Install Zoneminder.
-Config Zoneminder.

1/-Install Ubuntu server:

Set up new box Ubuntu server 10.10. If you don't know, you can google.
-When box get dhcp IP address, press Cancel, then input IP manual. In my case, my IP is: Netmask: Gateway: Name server address:
-When box ask software to install, only choose OpenSSH.
Finish install, reboot box.

Logon and enable root account.

sudo passwd root
Exit then logon with root and latter do everything with root too.

Update box:

apt-get update && apt-get upgrade -y
2/-Install bttv driver:

I have one dvr card and my card look like this card:
Install bttv driver:

nano /etc/modprobe.d/bttv.conf
Cut and paste this quote into file then save and exit:

options i2c-algo-bit bit_test=1
options bttv gbuffers=16 card=102,102,102,102,102,102,102,102 radio=0,0,0,0,0,0,0,0 tuner=4,4,4,4,4,4,4,4 chroma_agc=1 combfilter=2 full_luma_range=1 coring=1 autoload=0
Reboot box:

Logon with root. Make sure dvr card work:

ls /dev/video*
If it works, the quote like this:

/dev/video0 /dev/video2 /dev/video4 /dev/video6
/dev/video1 /dev/video3 /dev/video5 /dev/video7
3/-Install zoneminder:

Make Pada scrip:

Cut and paste this quote into file then save and exit:

# ZoneMinder 1.24.2 installation script
# Copyright (C) 2010 Chris "Pada" Kistner
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.

echo "--- Checking for root privileges..."
if [ "`whoami`" != "root" ]; then
echo Error: This script requires root access
exit 1

echo "--- Installing extra codecs, which includes x264 support..."
apt-get -y install libavcodec-extra-52 libavformat-extra-52 libswscale-extra-0 libavfilter-extra-1

echo "--- Installing ZoneMinder..."
apt-get -y install zoneminder

echo "--- Adding ZoneMinder to Apache2..."
ln -s /etc/zm/apache.conf /etc/apache2/sites-enabled/zoneminder.conf
service apache2 restart

echo "--- Adding alias for zoneminder service and fixing ZoneMinder startup..."
ln -s /etc/init.d/zoneminder /etc/init.d/zm
update-rc.d -f zoneminder remove
update-rc.d -f zm remove
update-rc.d zm defaults 92
service zm restart

echo "--- Correcting SHM to 90% of memory..."
apt-get -y install coreutils bc
page_size=$(getconf PAGE_SIZE)
mem_bytes=$(awk '/MemTotal:/ { printf "%0.f",$2 * 1024}' /proc/meminfo)
mem_bytes_mb=$(expr $mem_bytes / $mb)
shmmax=$(echo "$mem_bytes * 0.90" | bc | cut -f 1 -d '.')
shmmax_mb=$(expr $shmmax / $mb)
shmall=$(expr $mem_bytes / $page_size)
shmmax_cur=$(sysctl -n kernel.shmmax)
shmmax_cur_mb=$(expr $shmmax_cur / $mb)
shmall_cur=$(sysctl -n kernel.shmall)
echo "-- Total memory = $mem_bytes B = $mem_bytes_mb MB"
echo "-- Page size = $page_size B"
echo "-- Current kernel.shmmax = $shmmax_cur B = $shmmax_cur_mb MB"
echo "-- Current kernel.shmall = $shmall_cur pages"
if [ "$shmmax" -eq "$shmmax_cur" ] && [ "$shmall" -eq "$shmall_cur" ]; then
echo "-- Recommended shm values already set"
echo "-- Recommended: kernel.shmmax = $shmmax B = $shmmax_mb MB"
echo "-- Recommended: kernel.shmmall = $shmall pages"
if [ "`grep "^kernel\.shmmax" $file -c`" != "0" ]; then
echo "-- Replacing: kernel.shmmax in $file"
sed "s/^kernel\.shmmax.*$/kernel.shmmax=$shmmax/g" -i $file
echo "-- Adding: kernel.shmmax to $file"
echo kernel.shmmax=$shmmax >> $file
if [ "`grep "^kernel\.shmall" /etc/sysctl.conf -c`" != "0" ]; then
echo "-- Replacing: kernel.shmall in $file"
sed "s/^kernel\.shmall.*$/kernel.shmall=$shmall/g" -i $file
echo "-- Adding: kernel.shmall to $file"
echo kernel.shmall=$shmall >> $file
echo "-- Using: new sysctl values"
sysctl -p

# Done
echo "--- Done."
Make can execute:

chmod 744
Install Zoneminder:

Add www-data user:

adduser www-data video
Reboot box:

4/-Config Zoneminder:

On client open Mozzilla web browser. At address type:

If Zoneminder works, the picture like this. (Make sure in the first line, at middle line like this: "ZoneMinder Console - Running - v1.24.2").

( )

Click Options.

Then click Paths tab.

Check USE_DEEP_STORAGE like this. Click Save button. You will see popup windows, don't worry, click OK button.

( )

Then click Images tab. Default JPEG_FILE_QUALITY is 70 , change to 100.

Delete everything at FFMPEG_OUTPUT_OPTIONS and replace with:

-f mp4 -vcodec libx264 -vpre default -an -threads 0
Delete everything at FFMPEG_FORMATS and replace with:

mp4 mpg mpeg wmv asf avi* mov swf 3gp**
When you done, click Save button. Then click Cancel.

( )

Restart Zoneminder: click Running -> choose Restart -> click Apply.

( )

Add new monitor: click Add New Monitor button then follow my pictures, when finish click save button.

( )

Download "HQ" movies: follow these pictures - look at mouse point.

( )

You can download from to make mysql work smooth.

Chris "Pada" Kistner
Attached Files
File Type: txt Install zoneminder.txt (51.7 KB, 462 views)
Reply With Quote
Sponsored Links