This weekend, I finally had time to install a few network cameras from Ubiquiti in my house. The goal was to replace the previous system, which was composed of cheap USB webcams and the software motion , that has been running for years.

HP Proliant N40L

I had a spare N40L lying around that I used as a storage server for my VMware lab, so I repurposed it to be my future one and only home server running file sharing, monitoring, etc and AirVision of course.

The hardware is very low power with an Intel Atom 2core and 8GBytes of RAM. There are currently 2 1TBytes hard drives in RAID1 which will be replaced by 2 to 4 4TBytes hard drives soon.

The OS is Ubuntu Server 12.04.3 LTS 64bit. While the previous LTS releases (<=10.04) were not really stable IMHO, I consider the >=12.04 LTS to be rock stable (well, as much as Debian stable is). Plus, the support cycle is very long, end-of-life for 12.04.3 is scheduled for 2017, I won’t have to worry about upgrading for about 3 years, that’s nice :)

ToughSwitch PoE Pro

It really feels tough. It is pretty heavy for a 8port switch. It supports Ubnt PoE (24V) and 802.3af PoE (48V) on all ports, but it is not autodetect.

It runs Linux and you can connect to it using SSH, HTTP(S) or Telnet. I have done all its configuration through HTTPS and only connected to look at the hardware itself (CPU, memory, network interfaces, etc).

It seems it only has 2 network interfaces, which are bridged together and the IP address is on the bridge. I think one of the interfaces is a 8port switch and the other one is the management port. Because of this, it is not possible to monitor the traffic of each interface by SNMP, it only reports two interfaces (eth0 and eth1). By the way, only SNMP v1 is supported. It is a bit strange since SNMP v2 is supported on the cameras.

Regarding the port capabilities, you can configure the following parameters on each of them: port name, status (enabled/disabled), PoE (24V/48V/disabled), link speed (10HD/10FD/100HD/100HD/auto), hardware flow control, watchdog and alerts (up/down, tx/rx above/below a certain speed).

The rest of the features are pretty standard for a (web)managed switch: VLANs, syslog, NTP, (R)STP and Jumbo frames. I did not mess with all of this yet.

The hardware is the following:

SW.v1.3# cat /proc/cpuinfo
system type             : Atheros AR7240 (Python)
processor               : 0
cpu model               : MIPS 24Kc V7.4
BogoMIPS                : 259.58
wait instruction        : yes
microsecond timers      : yes
tlb\_entries             : 16
extra interrupt vector  : yes
hardware watchpoint     : yes, count: 4, address/irw mask: \[0x0000, 0x06c8, 0x0afb, 0x0f68\]
ASEs implemented        : mips16
shadow register sets    : 1
core                    : 0
VCED exceptions         : not available
VCEI exceptions         : not available
SW.v1.3# free
              total         used         free       shared      buffers
  Mem:        62036        10704        51332            0          268
 Swap:            0            0            0
Total:        62036        10704        51332

AirCam

To be honest, the camera looks cheap. It is all plastic and it does not seem tough at all. I am a bit worried it might not survive the weather (low temperatures), especially the wall mount which looks really fragile.

I have put all my cameras under a roof, so rain should not pour on it directly. But they are exposed to wind and maybe they will get some water on them. Brave yourself, winter is coming :)

Regarding the optic, it is a fixed optic lens that can only focus on a small area. If I set the focus on the front of my alley, the back will be blurry and vice-versa. If I focus on the middle of the alley, then both front and back are blurry. It is annoying.

And of course, the cameras do not have IR leds so you will need another source of light if you want to use them at night. If it is really an issue for you, look at other brands.

The software itself is also Linux and the camera is responsible of the capture, encoding and streaming (4 H264 streams at different resolutions).

If it is managed by AirVision software, then the configuration is pushed by AirVision and you cannot modify it on the camera. There is a small bug right there: AirVision does not support the configuration of syslog, so you have to configure it on each camera before you manage them to AirVision. It is a bit annoying.

The hardware is the following:

AirCam.v1.2# cat /proc/cpuinfo 
Processor       : FA626TE rev 1 (v5l)
BogoMIPS        : 532.48
Features        : swp half thumb 
CPU implementer : 0x66
CPU architecture: 5TE
CPU variant     : 0x0
CPU part        : 0x626
CPU revision    : 1

Hardware        : Faraday GM8126
Revision        : 0000
Serial          : 0000000000000000
AirCam.v1.2# free 
             total         used         free       shared      buffers
Mem:        127712       107224        20488            0         4056
-/+ buffers:             103168        24544
Swap:            0            0            0

AirVision software

The install of the software is a breeze thanks to Ubnt providing packages for usual Linux distributions. First you need to install a compatible version of MongoDB then run 3 commands.

I have not yet looked at MongoDB, so maybe a bit of configuration (tuning, security, etc) is needed. I will look into it later.

Most of the software is intuitive, it is very easy to add cameras to the NVR because they are autodetected (if you left the option enabled). AirVision pushes (most) the configuration of each camera to that camera, so you have a central point of config. airvision-devices

You can put the cameras on maps and define their field of view, then you will see which areas have an event occuring. You can also configure a “standard” mosaic or cycle view. I have yet to find how this plays with multiple monitors, I guess you need to open multiple tabs/windows of your browser. airvision-liveview

It is possible to configure different motion detection areas for each cameras, and set the sensibility threshold differently for each area. You can also assign a name to each area, so you will be notified which zone triggered an event.

There is a nice dashboard giving statistics about what has happened and where, how the server is doing, what space is left, etc. airvision-statistics

Events can be notified by email. Then you receive an email telling you which camera and motion detection area triggered the event, the time, a “representative” screenshot of the event and a link to view directly the recording. There is a small bug again here, if you add a “view only” user and “allows” him to receive notifications, he will not be able to configure them. For this, he needs configure rights on each camera and this means he can mess with their configuration.

The CPU usage is really low in my point of view, currently it is only 25% of a Turion 2core 1.5GHz, for 4 cameras. I will keep a close eye on it as I fear it will climb over time.

Bottom line

I am pretty happy with the setup at the moment. Of course, it has only been 3 days now. The previous setup which costed less than 100€ (excluding the server) last several years. I hope this one will last at least until 2017 :)

I really miss a night vision feature and, if I had known about Zmodo products, I would have had a hard time deciding between the two manufacturers.