As I mentioned in my previous post about Raspberry Pi power monitoring, I recently built a VMware vSphere “datacenter” from three Intel NUC mini PC’s. One limit of the NUC is that it has just one Ethernet port. But there’s a Mini PCIe slot inside the fourth-generation NUC that can be used to add a second Ethernet NIC! Here’s my story.
A Bit About the Intel NUC Hardware
Intel’s NUC (“Next Unit of Computing”) hardware is a mini PC roughly the size of a current Mac Mini. It is designed to support a variety of end user computing applications and functions as a tiny desktop PC for most people. But as many have noticed, it can also support VMware vSphere and similar server workloads! That’s how I’m using it.
I love that the NUC is stable, low-power, compact, and well-supported. I connected three NUCs and a TP-Link 24 port managed Ethernet switch to my CyberPower UPS and the whole setup is drawing less than 60 watts! Plus, it’s quiet and cool and fits in a corner of my basement wiring closet. Score! Although the NUC is limited in RAM and peripheral expansion, these factors make them more attractive for home use than “real” PC’s, even compact ones.
The NUC has reasonably good laptop CPUs, including the latest i3, i5, and i7 models in dual-core variants. It includes two SODIMM slots (1.35 volt), currently supporting a maximum of 16 GB of RAM. Most NUC models are available with space for an internal laptop SATA hard disk drive, and all support some kind of internal SSD as well.
That SSD port is where things get interesting. The first four generations of NUC motherboards sported two Mini PCIe slots: One full length slot on top for mSATA SSDs and another half-length slot below, ostensibly for a Wi-Fi card. Instead of Wi-Fi, I added a wired Gigabit Ethernet NIC in that slot to give my NUCs two Ethernet ports rather than the standard single one.
mSATA, Mini PCI2, and M.2
Let me digress for a moment on Mini PCIe, mSATA, and a new standard called M.2. As I’ve covered before, mSATA is simply a SATA SSD packaged using the same form factor and pinout as a Mini PCIe card. Many modern laptops and small form factor PC’s (and even some full-size PC’s) come with one or more Mini PCIe slots on the board for adding Wi-Fi cards or mSATA SSDs and these can often be used to add additional PCIe Ethernet cards instead. Such is the case of the first four generations of Intel NUC.
Lately, however, the PC industry has adopted a new, even smaller form factor called M.2. On paper, M.2 is way better than Mini PCIe: M.2 has four PCIe 3.0 lanes plus 6 Gbps SATA and USB 3 all packed into that tiny connector! The old standard had a single PCIe 2.0 lane and USB 2.0, plus SMBUS and GSM SIM and such. Plus, the M.2 connector is substantially smaller, taking up less space in today’s super-thin laptops.
Unfortunately for hobbyists, M.2 is brand new and only SSDs and Wi-Fi NICs are available at this point. This means that buyers of fifth-generation Intel NUCs, which have two M.2 slots instead of two Mini PCIe slots, are limited in what they can add internally. Your SSD will be much faster, but you can’t add a wired Ethernet port at this point. I have seen M.2-to-Mini PCIe adapters on the Internets but I doubt these would fit in a NUC.
Adding a Mini PCIe Ethernet Adapter to a NUC
Now back to our discussion! It’s fairly straightforward to add a second Gigabit Ethernet port to your first- through fourth-generation Intel NUC. Just buy a half-length Mini PCIe Ethernet adapter like this Syba Realtek device on Amazon for just $16 and slap it in there. It works perfectly and there are drivers available for most operating systems, including VMware ESX!
The issue is that the Syba card is too tall to also install a mSATA SSD in the NUC and the bulky triple cable it uses doesn’t fit nicely along with a SATA HDD in the little NUC body.
The first problem is solved through the use of solder. I de-soldered the 10-pin Ethernet and 4-pin LED headers on the tiny NIC with my handy de-soldering iron and then pulled the pins out with pliers. I then soldered the Syba cable directly to the board, cutting off the connectors and tinning each little lead. I was careful to solder the wire low and slanted towards the back to allow the cable space in the cramped NUC and cut off the excess afterwards. And I used some plastic to keep everything from shorting out inside.
This gave just enough room to re-install my mSATA SSDs (I picked Samsung EVO because Microcenter had them on sale). But there is still the issue of routing the surprisingly bulky wires out of the case and locating the Ethernet connector. Nick solved this by soldering his own Ethernet pigtail directly to the Syba card, but I wanted to retain the RJ45 connector and activity lights.
So I went to Tinkercad and created a new base for the NUC, complete with a spot for the hard disk and controller and the Syba Ethernet connector. I then printed this out on my AIO Robotics Zeus 3D printer and, after some tinkering, got the whole thing to work! I’ve placed these on Thingiverse if you’d like to print one, too, but be warned that although it works, it’s still not perfect. And it’s a large, time-consuming print that might not fit on a Makerbot platter!
The hard disk drive and controller must be removed from the steel carrier that comes with the NUC (six screws and you’re done) and the Ethernet wires must be carefully routed around the disk. But everything does fit in place, and the NUC sits nicely closed afterward.
VMware ESX 6.0 and the Intel NUC
Happily, VMware added drivers for the Intel e1000 Gigabit Ethernet adapter found on all recent NUC motherboards to the standard set in ESX version 6. This means that it’s simple to install ESX on a NUC! No more creating a custom install! Just follow VMware’s directions to create a bootable USB drive and it’ll boot up perfectly on the NUC.
Once you’ve installed ESX on the USB drive, you might notice that the SATA and Realtek NICs are not detected. You need to install drivers for these. Happily, Andreas Peetz over at v-front.de maintains a depot of the correct drivers and you can install them from the command line in ESX! Just enable SSH and connect using your favorite terminal. Then install the drivers:
esxcli software acceptance set --level=CommunitySupported esxcli software vib install -d http://vibsdepot.v-front.de -n sata-xahci esxcli software vib install -d http://vibsdepot.v-front.de -n net55-r8168
Or something similar… You’ll get it. The SATA-XAHCI driver supports both the mSATA SSD and the SATA HDD in the NUC. The R8168 driver works with the R8111 chip in the Syba Ethernet NIC.
I hope this has been interesting and helpful to those wishing to use Intel’s NUC in a simple, low-power home “datacenter”. The Syba/Realtek NIC works great! Sadly, there’s no such solution for the fifth-generation Intel NUCs, so it’s best to stick to the older models for now. If there’s interest I might discuss my configuration next.