Cubieboard NVR case

by spapadim, published

Cubieboard NVR case by spapadim Sep 15, 2013
0 Share
Download All Files

Thing Apps Enabled

Order This Printed View All Apps


Liked By

View All
Deal With It

Give a Shout Out

If you print this Thing and display it in public proudly give attribution by printing and displaying this tag.

Print Thing Tag

Thing Statistics

9175Views 2017Downloads Found in Computer


Network video recorder (NVR) solutions in the market cost a fortune. Just a software license for NAS-based solutions are >$50/camera, and custom hardware solutions are in the thousands of dollars. So I decided to custom build-one.

Total cost: about $140 (including SD card and power brick). That's less than just software license costs for four cameras (and there's CPU cycles to spare, for more cameras), and an order of magnitude cheaper than typical custom hardware!

I used a Cubieboard2 (AllWinner A20 dual-core ARM, 1G RAM), a 2.5" 500G HDD, and Zoneminder. It can handle four standard-def (VGA) MJPEG streams (Foscam cameras) in modect mode (1 zone each) at 1fps, with cycles to spare (load avg is high due to I/O, but each core doesn't seem to go above 20% max, usually much lower than that). YMMV with different video formats and cameras.

Cubieboard parametric model. In addition to the case, cubie-nvr.scad also has a model of the Cubieboard, with outward extension and slack parameters for connectors, so you could use it to cut out holes in your own case designs. Note that OpenSCAD seems to have issues rendering some parts in preview (F5), but all works fine in final render (F6).



  1. Print all three parts. Clean out holes. Test fit everything.
  2. Insert four M3 nuts in base holes at bottom. Insert Cubieboard into base part. You may need to file audio jack holes slightly (PCB should be tight but should insert without force -- it you find you have to push too hard, then probably the audio jacks are not going through their holes).
  3. HDD part screws onto bottom part. Use four long M3 screws and thread: HDD case part, spacer cylinders, then base part with PCB. Screw onto nuts previously inserted.
  4. Insert SATA+power cable into Cubieboard, then insert HDD into HDD part, screw (6mm M3 screws, two are enough, you can use all four holes though) and route cables (it's tight, but they fit).
  5. Lid is simply friction-fit. You may need to file rim corners slightly (just enough so it lid goes in, but not too much so it's loose).

The case was a quick job, to get the NVR together. It could conceivably be used without the HDD part (you'd just need to add a couple of mm height and modify lid dimensions). I was just in a hurry and too lazy to do these minor mods.

Case isn't the cutest thing you've seen, but I was going for function over form (I wanted all ports easily accessible), and this was the only layout I could come up with that works.

My HDD is a WD Blue 2.5" Slim drive, nice and quiet. Case should be ok with standard height 2.5" (not tested) and it should be easy to modify source.

If you need a power brick, the Amazon Basics one is rated for 2A, decent quality, and just $9.


These are not meant to be complete instructions, but this is a fairly standard install. Basically:

  1. Install your distro of choice (I used Cubian, very nice -- installs on either SD or built-in NAND), configure network, create HDD partition and edit /etc/mount, etc etc. Note that you can assign the cubie a fixed MAC by editing /etc/network/interfaces.
  2. Install zoneminder (apt-get install zoneminder).
  3. Move zoneminder cache (/var/cache/zoneminder), log (/var/log/zm), and tmp (/tmp/zm) directories to the HDD partition. Update symlinks in web dir (/usr/share/zoneminder) and configuration (via web interface).
  4. Set up Zoneminder following instructions for whatever camera you have (can't help you there, but there's lots of info on the web).
  5. Move mysql data dir (/var/lib/mysql) to HDD partition and edit /etc/mysql/my.cnf accordingly.
  6. (Re)start apache2, mysql, and zoneminder services, and make sure they come up on boot.

More from Computer

view more

All Apps

3D Print your file with 3D Hubs, the world’s largest online marketplace for 3D printing services.

App Info Launch App

Auto-magically prepare your 3D models for 3D printing. A cloud based 3D models Preparing and Healing solution for 3D Printing, MakePrintable provides features for model repairing, wall thickness...

App Info Launch App

Kiri:Moto is an integrated cloud-based slicer and tool-path generator for 3D Printing, CAM / CNC and Laser cutting. *** 3D printing mode provides model slicing and GCode output using built-in...

App Info Launch App
KiriMoto Thing App

With 3D Slash, you can edit 3d models like a stonecutter. A unique interface: as fun as a building game! The perfect tool for non-designers and children to create in 3D.

App Info Launch App

Print through a distributed network of 3D printing enthusiasts from across the US, at a fraction of the cost of the competitors. We want to change the world for the better through technology, an...

App Info Launch App

Quickly Scale, Mirror or Cut your 3D Models

App Info Launch App

3D Print a wide range of designs with Treatstock. Easy to use tools to get the perfect result. The global 3D printing network that connects you with high-quality and fast working print services nea...

App Info Launch App

Hey, awesome project!
Didn't you have any troubles installing zoneminder on the Cubieboard? I've been trying over and over again, but there is always problems with dependencies.

Do you think the RPI 2 would be powerful enough for an NVR?

I haven't tried (it wasn't out when I built this), but based on specs it seems likely -- both are Cortex-A7, both have 1GB RAM, the RPi2 can be easily overclocked to 1GHz, and it's also quad-core instead of dual-core (Cubieboard2). You'd still need an external USB enclosure for the HDD (and possibly a powered USB hub, although the RPi is better on the power rail front too). It also depends how many cameras you want to run (e.g., for one, maybe two, cameras, even the original RPi should be fine, I think).