My not-so-inexpensive mini-ITX home storage server build

IMG_5779I wrote about the tortuous path I took to building a new home server in an earlier post. Now I’m actually going to take the opportunity to document the build.

First off, the parts list:

My goal was to have an inexpensive, capable, efficient, compact machine to run as a home server as an upgrade to some older Marvel Kirkwood based servers I have. Intel’s BayTrail Celeron CPUs were an interesting option, but I chose to go with an AMD Kabini APU, for a few reasons. Formost among them, it was available as part of a $100 bundle with a case and a motherboard with four 6Gbps SATA channels, rather than the two common on BayTrail boards.

Norco S4-ITX case (top) compared to Coolermaster Elite 130

Unfortunately, the Cooler Master Elite 130 case in the bundle was bigger than I really wanted, so I ended up spending another $100 to get a Norco ITX-S4.

Unfortunately, the ITX-S4 required further upgrades and part-swapping.  The stock fan was amazingly loud at full speed, and because it was a 3-pin fan, couldn’t be regulated by my motherboard, so it was loud all the time. I ended up replacing it was a Arctic F8 PWM fan. The new fan is quieter, at full speed, and I set up a custom fan profile in the motherboard BIOS so it spends most of its time turning even more slowly and quietly.

IMG_5578 IMG_5580A bigger issue is that there wasn’t enough clearance between the stock CPU fan and the bottom of the hard drive cage, which made it impossible to install the motherboard.

I was able to fit it in by removing the hard drive cage, but this resulted in about 1mm of clearance between the top of the can and the bottom of the drive cage.

I considered many options. The AM1 platform used by the socketed Kabini chips like the Sempron I used is still relatively new, and its a low cost platform, so 3rd parties haven’t been rushing to produce aftermarket heatsinks. I looked at the possibility of modifying a heatsink intended for another application, and considered grinding 5mm off the stock heatsink.

IMG_5769I finally realized that the stock fan was 15mm thick, and so I fitted a 10mm fan instead. Cheap and easy, so I did it. This seems to work pretty well, but I’m considering either cutting a hole in the bottom of the drive cage to improve airflow, a wider, lower-profile heatsink with a larger fan, or making some sort of baffle to improve airflow so I can keep the chip cool at lower quieter fan speeds.

Overall, I’m going to have to give mixed marks to the ITX-S4 case. I like the size, and the looks, but there are a number of downsides. In addition to the noisy stock fan, the build-quality is kind of mixed. The sides bow a bit, but the biggest issue is the drive trays. The latching levers feel a little flimsy. I worry I’m going to break something when I insert or remove them.

IMG_5752Even worse, the latches that are supposed to hold the levers closed keep slipping free of the levers. This has happened at least once to each of the four drive trays. If it happens again I’m going to need to resort to some superglue.  This is completely unacceptable for a $100 case!



A few more notes on things that didn’t work out as expected. I purchased an IO Crest 2 Port SATA III PCI-Express x1 Card so that I had an extra SATA channel available to take advantage of an internal SSD bracket, saving the drive bays for 3.5″ drives. Unfortunately, the machine resets during the linux boot process, shortly after identifying devices connected to the card, so I’ve set it aside for now.

I also tried Rosewill 19.7″ Serial ATA III Blue Round Cables, thinking that the round cables would be easier to route. They weren’t. First off, I missed the fact that the ones I bought have 90° connectors on one end, which doesn’t work given the configuration of ports in the drive cage.  In addition, the 180° connectors were too thick for the close spaced SATA ports on the the motherboard. Moreover, the cables were still quite thick and stiff. I found it easier to use standard flat SATA cables. Some of the ones I had on hand were a tight fit because of the length of the molded connectors, so I picked up some matching cables with shorter connectors.



Overall, I’m pretty happy with the way the project turned out so far. With a 3.5″ Western Digital Green HDD, two surplus laptop drives (one 7,200 RPM the other 5,400), and the SSD, it idles at about 25W. With cpuminer and sgminer mining litecoins on the CPU and GPU, respectively, it uses ~45W. At full-load on a warm day the fans are a little noisy, in particular, the CPU fan has to spin at nearly full speed, (4,500 RPM), to keep it under 60°C, otherwise the CPUs thermal throttling will kick in, which seems to shave ~5W off the load by dropping the CPU and GPU clocks by 20% or so.

Next step is to install Debian and migrate over data and services from my old server. In the longer run, I may revise this build with a BayTrail build for lower power consumption and noise.


My costly mistakes on the path to a somewhat inexpensive home server

For the last few years, I’ve been using a couple of ZyXEL NSA320 NASs with Debian in place of the stock firmware as home servers for files, backup, and misc applications. Recently though, I figured out that one of them has a flakey SATA channel, plus, I’ve been wanting better performance for Time Machine backups, AND I’ve had the urge to build a new PC.  So, I decided to address all three issues at once.

In retrospect, the sensible thing would have been to buy an Gen 7 HP Microserver, but when I started out, I didn’t have as much information as I do now. I was drawn to a $95 bundle on NewEgg that included a Cooler Master Elite 130 Case, a ASRock AM1B-ITX mini-ITX motherboard, and an AMD Sempron 3850 quad-core Kabini APU. I thought I’d have a system ready for my existing drives for just $150.

I was shocked by the price of RAM, and irritated with the limited options for low-wattage, efficient power supplies. After much dithering, I realized that the hours I was wasting dithering over my sub-optimal choices was more valuable than just spending an extra ~$50. So I found the best price I could on 4GB of DDR3-1600 RAM, added a 90w pico-PSU + an efficient 80w, 12v AC-DC power brick and got on with the build.

The parts arrived in short order, but once I saw the size of the case, I realized I was going to need to rethink things. The Cooler Master Elite 130 is well made and quite compact for a case that can take a full-sized video card, optical drive, ATX PSU and a CPU with a big heatsink/fan combination on top. Its pretty huge though for a machine with an external power brick and two hard drives. I started looking for other options and wasn’t too happy with what I found.

As far as I can tell, cases with just enough room for an mini-ITX motherboard and two 3.5″ HDDs don’t really exist, or if they do, they are bigger than I’d like and cost more than I wanted to spend. I started to consider cases with room for more drives. Most of them were about as big as the Elite 130, which could hold 3 full sized drives along with some 2.5″ drives, but it was still bigger than I wanted.

I also considered building my own case, and quickly rejected the idea, but kept returning to it over and over. Again, I decided to loosen the purse-strings to save time and energy, but there just weren’t many choices. I didn’t need hot-swap drive bays, but most of the small cases came with them. I finally settled on the Norco ITX-S4 case for $100.

At about this time I got a notification about a special price on the HP Microservers. The cost was ~$270. For that price, I got the whole machine, including 2GB of ECC protected RAM, ready for my hard drives. It was too late though, I was already in for $200. I bit the bullet and ordered the Norco case. Since I had the room for it in the case, I decided to move up my plan to use an SSD as a cache drive to speed up performance, and bought a a 256GB Crucial MX100 for $110.

Soon thereafter, the Microserver went on special at least two more times, but now I was in for $300 (not including the SSD). The ECC memory would have been nice though, and I seriously considered setting aside the  CPU, motherboard and RAM I already had and buying something that supported ECC. After spending, again, much too much time determining my options, I decided against it, because it would have cost another $300 or so, and my limit was $200.

I wasn’t done yet though. Once I assembled the system in the new Norco case, I realized that I had another problem. The heatsink/fan combination that came with my CPU was too tall, and the space for it was too short — the top of the fan was pretty much flush with the bottom of the hard disk cage. Only now, as I’m writing this, do I realize that it would probably have been perfectly acceptable to Dremel cut a hole for the fan in the bottom of the HDD cage. Instead, I went looking for alternative CPU coolers that would fit better. There weren’t any, at least not any made for the AM1 platform. I took measurements and went looking for options that might fit, or that I could easily modify. I didn’t find much. I considered grinding down the top of the heat sink and reducing its height and cooling area by 10-20%, since it is a low-power CPU in a low-power application.

I was leaning towards ordering a generic heat-sink that would work with minimal modification when I realized a better solution. The stock fan was 15mm-thick. A 10mm-thick fan would open enough of a gap and solve my problem for less than $10 and 10 minutes work. Somehow though, the first fan I managed to order was also 15mm-thick…

The case had another problem too, the 80mm exhaust fan it shipped with was LOUD at full speed, and it ran at full speed ALL THE DAMN TIME because it only had 3 pins, and my motherboard required a 4-pin chassis fan for speed control (it does speed control on a 3 pin CPU fan though). This time though, I ordered the right thing, first time.

I did make another mistake though, I didn’t like my jumble of SATA cables and found them hard to route, so I decided to order some nice blue ones with round cables. Unfortunately, I missed the fact that they had 90° connectors on one end, which wouldn’t work with the positioning of the sockets on either the SATA backplane, or the motherboard. What’s more, the plastic molded on the ends of the cables was too thick, so 180° connectors wouldn’t have worked either. I ended up ordering more SATA cables!

Ah, but thats not the end of it. I decided to order a PCIe SATA card so I could mount the SATA drive on an internal bracket and save all the hot-swap bays for 3.5″ drives. I was happy to find an inexpensive card that used the same chip as the motherboard. Unfortunately, if I hook any devices up to it, Linux crashes on boot, shortly after detecting the device on the external card.

This post is long enough. I’ll document the actual build in a separate post after I have dinner.


SATA 3.2 heralds tiny but very speedy SSDs ·


The Serial ATA International Organization SATA-IO has ratified the SATA 3.2 storage spec, adding support for a SATA Express spec that can piggyback on faster PCI Express lanes, and defining a new embedded single-chip microSSD. SATA 3.2 also embraces the tiny, SATA Express based M.2 form factor, which debuted in recent Intel and Samsung SSDs.

via SATA 3.2 heralds tiny but very speedy SSDs ·

Acu-Link Bridge and Acu-Rite Weather Station Teardown

I got an Acu-Rite Weather Station as a gift and, of course, I cracked open some of the parts to see what was inside.

I didn’t open up the 5-in-1 sensor unit which sits outdoors and measures wind speed & direction, temperature, humidity and precipitation. I did crack open the 01500RX display console, and the Acu-Link bridge which receives the sensor data over a wireless link and relays it to the Acu-Link webservice via an ethernet connection.

The 01500RX had a number of blob-top chips-on-board. I didn’t try to figure out what they were. I was most interested in the wireless receiver that picks up sensor data.


The receiver was on its own PCB.  The chip is labeled MICRF211AYQS 1226, which seems to be a 433MHz RF receiver from Micrel with a demodulated signal output.

In the internet bridge, I found the same receiver, along with a low cost ethernet enabled microcontroller, and a surprise.

Acu-Link Bridge PCB


The microcontroller is a PIC18F67J60, very bare-bones 8-bit chip with an ethernet port, 128K of flash, less than 4K of RAM, and 8K RAM for the ethernet buffer. This is apparently enough to run a TCP/IP stack with a bare-bones web server, but it doesn’t exactly leave a lot of room for adding additional functionality, like the ability to make sensor data available locally via HTTP.

I also mentioned that there was a surprise. You can see it too, in the lower left of the photo, a third PCB, this one, apparently holding a serial to RF transmitter. I don’t know what it is for. Acu-Rite doesn’t talk about it at all in any of the marketing materials or users manual. My guess is that it might work as a repeater for the sensor data, that, or they’ll have some actuator equipment in the future, like, say, something that could toggle the mode on an automatic irrigation system based on local weather conditions.

Anyway, that’s what I found. I thought it might help out other people who are intrigued by Acu-Rite’s offerings and interested in hacking them for their own purposes.

Order Out of Chaos

The Chaos Display is a sweet hack.  Fredrik Hübinette wanted to use some individually addressable RGB LED light strings for a programmable holiday display, but he didn’t want to painstakingly place each light, so, he just wrapped the lights around his tree, and then wrote some software to calibrate the installation by lighting each light while recording it with a webcam. Additional software analyzed the video to produce a mapping of light ID to position.


Ubuntu Linux on the Rockchip RK3066 SoC

Those interested in running Linux on a cheap Chinese “MiniPC” with an ARM SoC have had much reason for hope, and just as much reason for disappointment.

The hope springs from the low cost and rapid pace of development of these devices. Earlier this year, the state of the art were devices based on the Allwinner A10 SoC, which had a single ARM Cortex-A8 Core and a dual-core Mali400 GPU, which went for ~$100, now there are products well under $100 with single- or dual-core Cortex-A9 CPUs and a up to a quad core GPU.

The disappointment comes from the fact that these SoCs are targeted at Android, with terrible documentation, and that most of the manufacturers are terrible about complying with the GPL. Add to this the fact that important parts of the chip, like the GPU and the video compression accelerator are under NDA from the original holders of the IP.

Still, there is reason for continued hope. Over on the SlateDroid forums, “AndrewDB” has posted about his progress with getting Ubuntu running on the UG802, which has a RK3066 SoC.

Current status, to the best of my knowledge:

  • Boots with Linux Kernel in Flash and RootFS on an SD card.
  • Framebuffer video out over HDMI
  • WiFi networking
What’s more, Andrew Kirby from Rikomagic, which sells a device based on this chip has been providing recent Kernel source. In addition, there is a working binary-blob based Linux driver for the video processing unit on an earlier Rockchip SoC that may be easily ported to this one.
Update: It looks like the most of the action is actually in the ARM TV tech forum.

via CNX-Software


The ZyXEL NSA320 in Context

I recently purchased a ZyXEL NSA320 to use in upgrading my home server infrastructure. I plan to replace the capable, easy to use, stock firmware with Debian linux.

The NSA320 is a small, low power server based on an “Kirkwood” ARM SoC from Marvell, paired with 512MB of RAM and gigabit ethernet in a small case that accepts two 3.5″ hard disks. It runs a linux-based firmware that provides file sharing, media streaming, and a variety of other features. The NSA320 is one of many low- and mid-priced products based on the Kirkwood family of chips, which first gained attention in the SheevaPlug.

The NSA320′s SheevaPlug pedigree is significant, because when the SheevaPlug debuted 4 years ago, it offered a unique combination of price, performance, capability, compactness, and openness. Up to that point, if you wanted an open platform, your options were x86 PC derivatives, which were larger, more expensive and consumed more power. If you wanted compact and low-power in x86, you had options, but they were 2x the price of the Sheevaplug.

ARM, MIPS and other RISC based options were available, but pricing was aimed at professional developers of embedded devices and wasn’t attractive for hobbyists. The embedded platforms had other issues as well. The dev-envronments took time and/or money to get working, and the platforms were often encumbered by NDAs. They also tended to be less capable than the Sheevaplug, with limited RAM and Flash, slower processors and less capable networking. Interestingly, these platforms ended up generating a lot of interest from hobbyists, but their attention was focused on the products, rather than the development tools; they hacked routers to run custom firmwares, like Tomato and OpenWRT.

The Sheevaplug was $99, which put it in the same price range as many of the commercial devices people were hacking. It also had a 1.2GHz CPU and 512MB RAM and it ran mainstream linux distributions like Debian, which mean that people could easily compile their code right on the device.

Of course, the Sheevaplug spawned its own family of inexpensive commercial products based on the Kirkwood SoC, like the PogoPlug family, and, perhaps more importantly, the PogoPlug based Seagate Dockstar. The Dockstar is significant because Seagate seems to have overestimated demand and then was left with a vast amount of inventory that ended up selling at a deep discount, with some going for less than $25.

The availability of cheap, capable Kirkwood devices, and the relative openness of the platform, has spawned multiple communities of people adapting software to enhance the capability of the devices, which is why I ended up buying the ZyXEL NSA320. The NSA320 stood out for me because its compact case can accommodate two SATA hard disks which offers a tidier, better performing solution than the external hard disks hooked to my Debian-running Dockstar. There are a number of other Kirkwood based dual-SATA NAS boxes, but the tend to be both more expensive (The NSA320 sells for $110, and is often available on sale for less than $90) with less capable hardware (the NSA320 has 512MB RAM, most of the other options have 128MB) or 256MB.

So, that’s a little context on why I found the NSA320 interesting. Next, I’ll be sharing links to the resources I’ve found on customizing the NSA320, and I’ll try to distill down some of what I’ve learned to make it easier for those who come after me.