Friday, September 16, 2011

fit-PC2i Initial Impressions

Note:  I like to write these "initial impression" postings in order to share what I've learned about a product.  All too often, I've discovered something a lot cooler or quite disappointing after having owned the product for a while.  Check back here for updates.

This review is of the CompuLab fit-PC2i Value:
  • 1.10 GHz Intel Atom Z510 CPU (single core, no hyperthreading)
  • 1 GB memory (DDR2-533)
  • Intel US15W SCH ("Poulsbo") Chipset
  • Dual Gigabit Ethernet ports (Realtek RTL8111-based)
  • Slot for a single 2.5" form-factor SATA hard disk
  • Mini-SD socket (note that this is related, but not the same as, the SD or MicroSD)
  • Intel GMA500 graphics chipset (video output via DVI adapter)
  • Realtek ALC662 audio chipset (not tested)
  • 4 USB 2.0 ports (two normal-size, two micro-size ports)
  • RS232 Serial port (micro port with adapter)
I equipped my unit with a  32GB OCZ Onyx SSD.

In Short

The good:
  • Small size 4" x 4.5" x 1.05" (per specifications)
  • Very low power consumption (5 Watts idle, 7 Watts under load measured using the Kill-a-Watt)
  • Made of metal (durable)
  • Power cord has a retaining screw to keep it from pulling out ("that's what she said")
  • Comes complete with necessary adapter cables
The not-so-good:
  • Cost (price tag for the "value" version is US$279.00)
  • Gets very warm (an add-on heat-sink is available)
  • Intel SCH chipset presents the SATA drive to the OS as a PATA drive
  • BIOS doesn't have a "serial console" mode
  • Documentation (particularly for some of the BIOS options) is somewhat lacking
My Goals

I was trying to find a small, very low power consumption system based on Intel architecture with two Ethernet ports that could be used as a sophisticated router/firewall and Asterisk PBX.  I was doing these functions on my server system, but as I added more functionality to the server, I got nervous about the idea of applications binding to the "outside" interface.  While this problem is mitigated by the use of a firewall, applications like NFS (RPC) that use unpredictable port numbers made me feel increasingly more uncomfortable running these on the same box that was my interface to the Internet.  What made this worse was that using Asterisk to interface to Google Voice meant opening an even wider range of outbound ports.  This was pretty much the last straw.

I first considered the idea of using a commodity consumer-grade wireless router with OpenWrt or something similar to do the same thing.  However, while the cost is good, OpenWrt is lacking some of the management flexibility I have come to enjoy with a full Linux distribution.  It's no wonder, too, being that these devices have a limited amount of flash memory.  They also are running a MIPS-based CPU rather than an Intel architecture (IA) CPU, which meant I needed a cross-platform development environment rather than using the native development environment on my server.  Since my time (and patience) is at a premium these days, I wanted something I could put together (running Gentoo Linux) and just have it work.  When I need to do updates, I can compile packages on my fast quad-core server in a chroot environment without the need for a sophisticated cross-compiler environment.

I wanted whatever system I used to be fanless (preferably, or a VERY quiet fan) and very low power consumption (on the order of what I could get from a consumer-grade router).

I chose the fit-PC2i Value because it met my criteria pretty well.  I was first scared away because of the cost, but when I factored-in my own time and decreasing patience level, the higher cost seemed worth it.  In order to keep the power consumption low and further eliminate any moving parts (read: not likely to fail anytime soon) in the design, I added a 32 GB OCZ Onyx SSD.  I chose this SSD because it was relatively inexpensive, and I knew I wasn't going to need much in the way of disk space.  I also had heard that the chipset in the fit-PC2i was not very high performance with respect to disk I/O, so there was no reason to get a really fast (and expensive) SSD.

I am using less than 4 GB of the 32 GB SSD (including a full Gentoo portage tree and package tarballs) using a conservative Gentoo install (no X windows, for sure).

Putting Things Together

Right from the start I could tell this was going to be a nifty little computer.  The initial configuration was done by doing my chroot package compile trick on my fast server.  I then attached the SSD to my server via a USB interface cord, and discovered quickly that even a cheap SSD on a cheap USB interface was impressively fast.

I had a bit of trouble on first boot because I neglected to learn anything about the Intel SCH chipset prior to building the kernel.  This was immediately remedied with a quick kernel reconfigure/recompile on the server.  Just keep in mind that (at least with the older Gentoo live media I used) the drivers were not loaded automatically for both the SCH chipset and the Realtek RTL8111 Ethernet adapters.

Once I got everything booted, the first thing I noticed that it seemed pretty fast given the configuration of the system (see more about this below).

Looking at the hardware this is not a system that you're going to try to run everyday software on.  Okay, someone may do that, but I'm not sure it's beefy enough for anything even near that serious.  Not serious enough, in my opinion, to justify a DVI port on a monitor.  Okay, but that's not much of a problem.  What I was surprised about, given the fit-PC2's leaning toward an embedded device is why the BIOS didn't have an option to redirect console output to the serial port.  I intend to run with no keyboard and no monitor, but getting to a console is really helpful when I put something dumb in iptables and lock myself out of the network.  What I ended up doing was simply to tell grub to output both to the serial port and DVI console, and have the default Linux boot option use a serial console.


The fit-PC2i Value is actually pretty responsive even with a 1.1 GHz Atom CPU.  However, be forewarned that this system is not going to come close to running a firewall at full Gigabit Ethernet speeds!  Running very little and acting primarily as a firewall, I saw the idle CPU down just below 50% measured by "top" when I started streaming Netflix on the Roku.  All of the utilization was in the interrupt stack, indicating that the Ethernet chips were effectively gobbling up the system.  Now that being said, that Atom CPU still has plenty of cycles left, but I'm a bit concerned what would happen if I had an Internet connection that exceeded 15 Mbits/sec.  To be sure, the Linux driver may be slightly at fault, but my guess is that the RTL8111 Ethernet chip is simply not very efficient.

Everything else on the system was plenty responsive during management and running normal system applications.  I haven't tried to run Asterisk on it yet while the unit was doing its firewall/routing application.  Once I do that, I will have a better feel for how well it performs under load.

One thing to note is that the unit runs very warm...I would almost say hot.  CompuLab sells a heat sink that snaps on the case, but that shouldn't be necessary under normal circumstances.  My guess, from looking at the specs, is that the warm-hot aluminum case is okay and won't affect the PC's electronics.  However it is for this reason that I would caution against installing a regular (mechanical) laptop hard disk into the unit.  I anticipate early failure of the bearings in a normal hard drive due to excessive heating of the spindle lubricant, so for longevity's sake I would recommend using a SSD as I did.

Final Initial Thoughts

There's something cool about having a system that fits in the palm of your hand that performs like a system that, just a few years ago, took-up a significant part of your desk.  This is such a system.  It's important to understand its limitations -- you're not going to be using this as a home theater PC or something to run MythTV on.  Why?  Because while these applications may run on this kind of a system, they are not likely to run well.

I'd like to see a version of this with a newer Atom processor and a more efficient Ethernet chip.  However, I don't have any reason to suspect (yet) that the current hardware will be a bottleneck in my application.  Seriously, I haven't seen any small system that doesn't suffer from some degree of this.

The power consumption (or lack of it) is fantastic.  CompuLab's motto, "do without wasting," is very applicable here.  Likewise, not wasting space is also a virtue of this system.  I wish I could do this without spending so much money.

I really like being able to ssh into a Linux system and do what I always do when I administer a box and not get caught-up in fancy web interfaces and other stuff like that.  The fit-PC2i really works for this, so far.  I have no reason to believe that it will have trouble running a pretty full-featured Asterisk installation as well, although I wouldn't expect it to be a PBX for anything bigger than a fairly small business.  It should be well-suited to running a PBX that will be an interface to Google Voice and some other things.  I will soon find out if I'm right.

Update:  September 18, 2011

I had a problem tonight with the Ethernet interfaces (both of them) simultaneously going down in the middle of watching a Netflix video on the Roku, with no other indication except the following in the log:

Sep 17 22:12:29 neuron klogd: r8169 0000:03:00.0: eth1: link up
Sep 17 22:12:29 neuron klogd: r8169 0000:02:00.0: eth0: link up

This was weird since there was no indication that the link even went down.  Doing some googling turned-up that there appears to be a bug in the r8169 driver with the links spontaneously going down on RTL8111/8168B chips on some recent versions of the Linux kernel (I am running 2.6.39), with the fix being to go to the Realtek driver (source is available from their site).  I created a Gentoo ebuild for the r8168 driver from Realtek and that seems to be working.  This also seems to have addressed the high CPU interrupt utilization (which is now about 25%, leaving the CPU 75% idle) when stressed.  There were also some network performance issues while viewing some HD YouTube videos with the Roku that caused the Roku to step-down to a lower-quality video.  This seems to be solved with the new driver.  What is also interesting is that my server system uses the same chipset, and while I haven't seen this issue with 2.6.39 on that system, I am tempted to install the Realtek driver anyway as a proactive measure.

I also installed Asterisk this afternoon with very promising results.  I held a conversation with my parents for over an hour through Google Voice with excellent audio quality.  No complaints at all.  While not fit-PC-related, it may help someone out there looking to use Google Voice on Asterisk for my firewall rules.  If you limit your RTP ports to ports 10000-20000, you need to make sure that the following are opened outbound:  tcp/5222, udp/{10000-20000}, udp/3478, and udp/443.  That last one was a bit of a surprise, but it seems that it is used in the STUN code with Google Voice.

Update September 21, 2011

Well, it seems that the Ethernet problem has surfaced again.  This time only eth0 went down, but that is still annoying.  This time it was when I was VPN'd into work.  The connection dropped for about 5 minutes or so.

I am actually at wits end.  I went onto the fit-PC forums and was disappointed to see that CompuLab's answer to hardware issues with a Linux OS that they haven't tested is:  We don't support that OS (it was RedHat, as I recall) - in order to get support load Ubuntu on it.  Thanks, CompuLab, for that overwhelming feeling of support (said dripping in sarcasm).

What I did see and was worth a try was going into the BIOS and disabling "C-States" and only enabling GV3 support (per this forum article and this forum article).  I also disabled hyperthreading and anything else that this box didn't support, in the hopes that this would prevent any potential issues from that from surfacing.  I'm not sure I have any other ideas at this stage.

If the Ethernet ports are not stable, my only recourse is to dump this idea and go to a more power-hungry and more standard PC.  The whole idea of running this is to support a reliable network router/firewall/PBX.  If that doesn't work, then I am wasting my time with this system.

This is why I think I should wait a few weeks before posting my "initial impressions" even though that seems to be dishonest.

Update October 8, 2011

It seems that the BIOS change made above worked, and I am no longer seeing problems with the Ethernet ports.

Aside from the temperature issue (that doesn't seem to negatively affect the operation of the computer), the fit-PC2i is working great.  Let's hope it stays that way for a long time!


LvT said...

Hi, thanks for your great article and updates. We are just about to start testing fit PC2i with PFSense. I am considering the same model that you got or the slightly more powerful unit with 1.6Ghz CPU and WIFI for $324. The price is really high but similarly to you, I am hoping for a worry-free solution.

Braselectron said...

Hi, could you please post a update about your review of the Fit-PC2i ? I got mine a year ago. CompuLab Fit-PC2i(rev 1.2) Atom Z550 2GHz, 2GB RAM, Wifi and heat sink.

Documentation, support, forum are challenging not to say bad. Most driver issues I had to use Fit-PC2 and Fit-PC2i download page (not documented).

Low power with best performance is my goal.