camlibox

2014 (translated and republished 2021)

i wanted a small box that runs camlistore in my home. the idea is that it acts as my primary instance, constantly syncing to a backup somewhere on the cloud.

the led hidden in the bird's eye tells you its status. solid teal means everything is synced and up to date, pulsing teal means it's pushing some data, amber means something went wrong, and red means it's offline. the led idea isn't mine. i stole it from someone but cannot remember who.

the enclosure

the enclosure is made of plywood that's cut with a laser cutter. its thermal performance is probably as bad as you can get it to be, but it seems to work. the first step to make the box is to steal the creepy bird image off the website and trace it into a vector graphic.

then make the profile for the walls of the box. i made a tool for that, box-joint-o-matic.

finally, put the bird on it, taking care to place the eye of the bird exactly where you'd like the led to be.

the greyscale fill is used to control the laser strength. the darker areas get a more powerful beam and that's how we get the shading in the final product.

the computer

the machine inside is an odroid-xu. it's arm board that's a bit beefier than a raspberry pi, but more importantly it has usb3. that means decent enough io bandwidth to an ssd drive.

the drive itself is a 2.5" ssd drive that was big enough for my need. it would be nice if we can fit multiple drives and raid them, but since everything here should also be pushed to a cloud backup, as long as the software can still run with a broken local storage and just push everything it gets to its upstream while complaining loudly, a single replaceable unit should be enough.

also, somehow, i ended up underestimating how bulky sata plugs were and couldn't fit a cable in. so i soldered the drive's contacts to the usb adapter one by one. i still cannot believe it worked. you should definitely not do this.

another thing that i did that you might not want to do is insist on usb micro for the power port. i made a small adapter plate that connects a female usb micro port to the board's 5 volt barrel connector. there are so many usb micro phone chargers around and they all have the correct voltage that it seemed silly to keep a special power brick just for this box.

well, it turns out the usual 1 amp that you get from a phone charger is not enough for the odroid, and i ended up having to hunt for one that delivers 2.5 amps. this was less convenient that i originally imagined, but i still maintain that it's better than keeping a special cable and brick. the beefy 2.5 amp charger can still charge my phone and power a raspberry pi.

the software

the machine runs debian. getting the odroid to run vanilla debian was the least fun part of this project. original debian arm images don't support the board. there are many os images on the odroid forums, but i don't feel comfortable running unverified images uploaded by anonymous users.

i eventually managed to cross compile a vanilla kernel with the required odroid patches applied and debootstrap a root filesystem for it. i can post my script to reproduce this if anyone asks.