I bought an Asus WL-500g Premium v2 router in April, 2009 and immediately installed DD-WRT on it. I used it for my wired and wireless LAN, printer and disk sharing, and for running Transmission. In about half a year, I grew tired of its USB bandwidth (around 2 MiB/s), bad overall performance and also the development model of DD-WRT (several thousand commits without a stable release). Then in December, 2009, I built my perfect home server, based on the Intel D945GSEJT motherboard, which perfectly replaced this router while barely consuming any more power and I’ve been happily using it ever since.
The key component to find was the motherboard. It is rated at only 12 W and comes with an Atom N270 processor @ 1.6 GHz soldered to it. It needs a notebook DDR2 memory module, I bought an 512 MiB one.
I hooked it up to a universal 12 V power supply and my monitor, then booted from a USB pendrive while it was sitting on the insulation foil that it came in. So small, so simple, and it’s already a working PC!
A good mini-ITX case was quite hard to find because I needed space for an additional network card: I wanted to use the integrated gigabit NIC for the LAN and an additional PCI card for the Internet connection. I chose an EMKO EM-153 case with an EMKO JM-127 PCI riser. It was about the only possibility I could buy in Hungary but it was a perfect fit.
Then I bought a WD Caviar Green hard disk. Green means that its power consumption is better than average (at the cost of performance I guess, but who cares). The motherboard is supposed to work without cooling but I’m paranoid so I also bought a barely audible Noctua NF-R8 fan too. The hard disk was very easy to attach to the top of the case, the fan not so much, but possible.
A wireless NIC and accessories were also hard to find, at least in Hungary. The motherboard has a full-sized Mini PCI-Express slot (there are half-sized ones, too, incredible how small they are). An important requirement was that the card had to support master mode to work as a wireless access point, not only a client. I ended up with a Broadcom BCM4311 which I bought second-hand from someone who works at a notebook service or something. It’s supported by Linux and speaks 802.11g. The antenna was also second-hand, with an RP-TNC connector. The really tricky thing was to connect these two. Apparently this cable is called a pigtail, and the connector on the card is called U.FL.
So let’s see the power consumption: 14 watts! I don’t remember if it was under load or not, but you see my point, this is incredibly low for a full-featured PC, it’s only slightly more than SOHO routers. It might even run on a dozen AA batteries for a few hours.
One more thing, I have to admit I cheated a little: I also bought a D-Link DGS1005D green gigabit switch. Without this I only had one LAN port, now I had four. Only with this addition can I say that it knows everything that my ASUS router did, and it adds about 5 more watts.
My Linux distro of choice is Debian/testing. It booted nicely from a USB pendrive and supported all hardware out of the box except for the wireless card. The only thing I needed were the firmware files for the b43 driver which I got from here and then it worked like a charm, too.
root@wicklow:~# lspci 00:00.0 Host bridge: Intel Corporation Mobile 945GME Express Memory Controller Hub (rev 03) 00:02.0 VGA compatible controller: Intel Corporation Mobile 945GME Express Integrated Graphics Controller (rev 03) 00:02.1 Display controller: Intel Corporation Mobile 945GM/GMS/GME, 943/940GML Express Integrated Graphics Controller (rev 03) 00:1b.0 Audio device: Intel Corporation N10/ICH 7 Family High Definition Audio Controller (rev 02) 00:1c.0 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 1 (rev 02) 00:1c.1 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 2 (rev 02) 00:1c.2 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 3 (rev 02) 00:1c.3 PCI bridge: Intel Corporation N10/ICH 7 Family PCI Express Port 4 (rev 02) 00:1d.0 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #1 (rev 02) 00:1d.1 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #2 (rev 02) 00:1d.2 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #3 (rev 02) 00:1d.3 USB Controller: Intel Corporation N10/ICH 7 Family USB UHCI Controller #4 (rev 02) 00:1d.7 USB Controller: Intel Corporation N10/ICH 7 Family USB2 EHCI Controller (rev 02) 00:1e.0 PCI bridge: Intel Corporation 82801 Mobile PCI Bridge (rev e2) 00:1f.0 ISA bridge: Intel Corporation 82801GBM (ICH7-M) LPC Interface Bridge (rev 02) 00:1f.1 IDE interface: Intel Corporation 82801G (ICH7 Family) IDE Controller (rev 02) 00:1f.2 IDE interface: Intel Corporation 82801GBM/GHM (ICH7 Family) SATA IDE Controller (rev 02) 00:1f.3 SMBus: Intel Corporation N10/ICH 7 Family SMBus Controller (rev 02) 01:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL8111/8168B PCI Express Gigabit Ethernet controller (rev 03) 02:00.0 Network controller: Broadcom Corporation BCM4311 802.11b/g WLAN (rev 01) 05:00.0 Ethernet controller: Realtek Semiconductor Co., Ltd. RTL-8139/8139C/8139C+ (rev 10)
root@wicklow:~# hdparm -tT /dev/sda /dev/sda: Timing cached reads: 1214 MB in 2.00 seconds = 606.88 MB/sec Timing buffered disk reads: 276 MB in 3.00 seconds = 91.94 MB/sec
Instead of p910nd, I’m sharing my HP LaserJet 1020 printer with CUPS and the foo2zjs drivers. I’m sharing files with Samba, I can copy files at about 35 MiB/s. A gigabit LAN could do more but it’s still more than tenfold faster than the 2 MiB/s I had previously. For the networking I run dnsmasq and hostapd. I backup my stuff with rsync.
So far I haven’t encountered any performance or other problems. I have lots of new plans for it, like monitoring and graphing stuff, running a VPN server or even hooking it up with my home alarm system. It’s really the perfect home server for me. Happy 1st birthday!