So, I recently took the plunge and did something I’d promised myself I would not do again. I purchased something semi-expensive from China.
The last time I did that was in 2013. I got a Freelander PD800 Android tablet. The specifications looked great; Quad core 1.6 GHz CPU, Mali 400 GPU, 2 GB RAM, and best of all, a whopping 2048×1536 HD screen. All this for just $206! Sounds too good to be true? Well, those parts were actually in the tablet, assembled and somewhat fit for use. However, the tablet was upside down. “What? How can a tablet be upside down?” I hear you say. “Why not just turn it around?” Well, it defaulted to the upside down position. So, when using apps that did not rotate, pressing the volume up button would lower the volume, and vice versa. Come to think of it, looking at the pictures on the site where I bought it, it’s being displayed upside down, with the volume and power buttons in the bottom right corner. Also, it randomly freezes and is generally too slow to use with any modern app. It’s little things like that, that make me wary of ordering directly from China. I just don’t want the potential hassle of returning crappy products.
I’ve long been on the lookout for a cheap mini-PC with dual gigabit LAN ports. A cool and quiet computer suitable for use as a home router and firewall. About a year ago I got myself a CompuLab Utilite Standard. It seemed like a perfect fit. Freescale i.MX6 dual core Cortex-A9 CPU, 2GB RAM, 2 gigabit LAN interfaces, built-in 802.11b/g/n wifi, and even a bluetooth module. They even display the IPFire project logo under the list of Utilite Software, implicitly saying “Hey, this could be a nice firewall solution.” However, that turned out to be baloney, with one of the LAN ports capping out at about 450Mbps, and the other one stalling once every 10 minutes. It’s now a year later, and there’s still no fix in sight, and CompuLab development seems to have moved on to Utilite2. The announced Ubuntu 14.04 Utilite port never materialised.
Enter the Inctel Partaker B5. For less than US$200 including shipping, I got the following:
|CPU model||Intel Celeron N3150 (Braswell)|
|Number of cores||4|
|Frequency||1.6 GHz (burst up to 2.1 GHz)|
|Virtualization||VT-x, VT-x EPT|
|RAM||2 GB DDR3L|
|Storage||16 GB mSATA SSD|
|Network (wired)||Dual Realtek RTL8168 gigabit NIC|
|Network (wireless)||Ralink RT3090 802.11n (2.4 GHz only)|
|USB 2.0||2 ports|
|USB 3.0||4 ports|
|Dimensions||160 x 120 x 37 mm|
What’s especially important to me is that it’s passively cooled. No fan, no noise. And using just 7 W, even under heavy load it never gets more than lukewarm.
So, what was in the box?
The actual Partaker B5, one power adapter with matching power cord, one stand and two antennas. The hole in the box was punched by one of the antenna connectors on the B5, because it just barely fit in there. China.
Now, one of the first things I noticed when I was about to hook up my keyboard, was that the USB connectors were upside down. All my worst fears came back to me. “Oh no, not again.” What does it mean that the USB connectors are upside down? Well, it just means that if you have for example USB thumb drives with lights on them that flash when they’re working, you may not see it because they’ll be facing down instead of up. A minor annoyance, but no big deal. Also, it doesn’t matter if you use the stand. On the front you’ll find the power button, a power indicator, four USB 3.0 connectors and two USB 2.0 connectors.
However, the rear is where the fun begins…
Here you will find two antenna connectors, one audio line out, one mic in, two gigabit network interfaces, two HDMI outputs and one power connector.
On the inside, there’s an SO-DIMM DDR3 memory slot (1.35V only), an mSATA slot and a mini PCIe slot. There’s also a regular SATA connector, and what I believe to be a power connector for a SATA drive right next to it. You can also see unpopulated headers for two serial ports and a buzzer, although I have no idea if they actually go anywhere.
Before dooming it to a life of routing packets back and forth and stopping the odd one, I wanted to try it out with Kodi and OpenELEC. I have no idea what to expect from a Braswell Celeron, and considering the B5 is completely silent, it could make a great HTPC.
My highly unscientific experiment reveals that of course, regular H.264 (AVC) at 1080p was no problem at all, barely using the CPU, offloading all decoding to the built-in GPU.
However, moving on to H.265 (HEVC) at 1080p turned out to be somewhat of a problem. While it could handle it just fine, there was no hardware accelerated decoding. Looking at the datasheet (PDF) for the Celeron N, it seems like there’s some support for it (see table 8-4), but not in the Linux driver. I don’t know if that’s just when it launched, or if maybe there’s a licensing issue making it impossible to support legally.
Seeing as it has to use the CPU to decode H.265, I didn’t even bother trying a 4K video.
With that out-of-the-way, the next thing I did was to install pfSense. This is my “go to” free firewall distribution, but reading their forums, people are warned over and over to stay far, far away from Realtek network controllers. After trying pfSense on the B5, I can understand why.
During installation of version 2.2.6, there was noticeable graphics corruption on the console. Lines like these kept popping back and forth on different parts of the screen.
Since you’re not going to be using the local console on pfSense for much, it doesn’t really matter, but it’s noticeable enough to be annoying.
Once installed and configured with a very light configuration, I could never get more than 375 Mbps in throughput, with about 40% CPU usage. I was ready to be severely disappointed, thinking that I had, but really hoping that I hadn’t, bought another “Utilite”. The iperf results were abysmal; they were all over the place, from 0 Mbps, up to, but never above, 650 Mbps when running the iperf server or client on the B5. Ouch.
Oh well. Good bye pfSense, hello Ubuntu. I had been using a Debian box as a firewall for years and years before switching to pfSense, so I thought why not give Linux another try?
I’m glad I did.
$ iperf -n 1024M -i 1 -c partaker ------------------------------------------------------------ Client connecting to partaker, TCP port 5001 TCP window size: 85.0 KByte (default) ------------------------------------------------------------ [ 3] local 10.11.12.1 port 56498 connected with 10.11.12.249 port 5001 [ ID] Interval Transfer Bandwidth [ 3] 0.0- 1.0 sec 112 MBytes 940 Mbits/sec [ 3] 1.0- 2.0 sec 112 MBytes 941 Mbits/sec [ 3] 2.0- 3.0 sec 112 MBytes 943 Mbits/sec [ 3] 3.0- 4.0 sec 112 MBytes 936 Mbits/sec [ 3] 4.0- 5.0 sec 112 MBytes 942 Mbits/sec [ 3] 5.0- 6.0 sec 112 MBytes 941 Mbits/sec [ 3] 6.0- 7.0 sec 112 MBytes 942 Mbits/sec [ 3] 7.0- 8.0 sec 112 MBytes 942 Mbits/sec [ 3] 8.0- 9.0 sec 112 MBytes 942 Mbits/sec [ 3] 0.0- 9.1 sec 1.00 GBytes 941 Mbits/sec
I ran iperf several times, both with the server on the B5, and with the B5 as the client, connecting to another server. I ran it between two different clients, routed through the B5. Never once did it go below 900 Mbps, and the CPU usage was barely noticeable.
Once netfilter was set up with iptables, I had my firewall, and I just had to run the popular Swedish throughput test Bredbandskollen. I have a EuroDOCSIS internet connection with 500 Mbps down and 50 Mbps up, so anything close to that, and I’m happy.