When you try to install VMware ESXi on some whitebox hardware that is not officially supported by VMware then your attempt might come to an unpleasant end after the installer presented the error message shown above. ESXi has in-box support for a limited number of network interface cards (NICs), and sadly a lot of consumer grade devices are not on the list.
Is this the end of the world? No. If you are a regular reader of my blog then you probably already know that help (and in some cases even rescue) is available. However, I keep getting e-mails from people asking how to get their NIC xyz to work with ESXi ... So I finally took the time to write down all the steps that you need to take and the options you have - just to point them here instead of giving the same answers per e-mail again and again.
A very similar post of mine is How to make your unsupported SATA AHCI controller work with ESXi 5.5 and 6.0 - it is about a year old now and with 80k pageviews my most successful blog post ever. So far. Let's see how this one goes ...
Before you proceed: Are you in a hurry, or just lazy, or do not like to fiddle around with creating customized ESXi ISOs? Then skip to step 7 at the bottom right now and forget the rest!
You should also skip to step 7 now if your NIC is a wireless device or connected through a USB port. There is no way to get these working in ESXi, the following steps only apply to PCI based LAN controllers:
1. Find out your device's name and PCI ID
The first and one of the most important steps is to clearly identify your NIC's brand and model. The key here is the unique PCI vendor and device ID. There are multiple ways to find this out, and most of them involve booting the machine with another OS (Windows or Linux). But here is the easiest way that starts directly at the stuck ESXi installation process:
When you see the nasty error message displayed at the top of this post then just hit [Alt] and [F1] on your keyboard at the computer's console. You will be greeted with a login prompt: log in as root without a password (just hit [Return] at the password prompt). Now run the following command:
lspci -v | grep "Class 0200" -B 1
If you do not use an English keyboard you may find it hard to type this command (esp. the special characters -, " and |), because the English keyboard mapping is in effect regardless of what your layout is. You can change the effective layout by running a command like
localcli system settings keyboard layout set -l German
This will switch to the German layout. You can list all available layouts and their correct label to be used with the -l switch by running
localcli system settings keyboard layout list
Alternatively you can keep the English layout and enter all special characters using Alt+NumPad ASCII codes: - is code 45, | is code 124 and " is code 34.
If you finally managed to type the lspci command line correctly then the output will look similar to this:
0000:02:00.0 Ethernet controller Network controller: Realtek Realtek 8168 Gigabit Ethernet
Class 0200: 10ec:8168
Here you are: (In this example) you have a Realtek 8168 Gigabit NIC with the PCI ID id 10ec:8168.
2. A special case: Realtek (and some Marvell) NICs and ESXi 5.5 or 6.0
A while back I posted about the Realtek 8168/9 and Marvell NIC drivers being removed in ESXi 5.5. They are still available in ESXi 5.0/5.1 and thus in the VMware Online depot. So it is quite easy to create a customized ESXi 5.5 installation ISO that includes these ESXi 5.1 drivers (they still work with ESXi 5.5).
Use my ESXi-Customizer-PS script for that, and run it like this:
.\ESXi-Customizer-PS-v2.3.ps1 -v55 -load net-r8168,net-r8169,net-sky2
This will cover the following adapters (PCI IDs):
- net-r8168: Realtek 8168 Gigabit Ethernet (10ec:8168)
- net-r8169: Realtek RTL-8110SC/8169SC Gigabit Ethernet (10ec:8167), Realtek RTL8169 PCI Gigabit Ethernet Controller (10ec:8169)
- net-sky2: Marvell 88E8040 PCI-E Fast Ethernet Controller (11ab:4354), Marvell 88E8053 PCI-E Gigabit Ethernet Controller (11ab:4362)
On March 12th 2015 VMware released ESXi 6.0 and I explained in another post how to get Realtek and Marvell NICs to work with it. Unfortunately it is not as easy as with ESXi 5.5, because in 6.0 VMware "blacklisted" the drivers of ESXi 5.1, so you need to use net55-r8168 for Realtek 8168 chips and/or my "replacement" packages net51-r8169 and net51-sky2 instead. Build the ESXi 6.0 installation ISO with them like this:
.\ESXi-Customizer-PS-v2.3.ps1 -v60 -vft -load net55-r8168,net51-r8169,net51-sky2
.\ESXi-Customizer-PS-v2.3.ps1 -v60 -vft -load net55-r8168,net51-r8169,net51-sky2
If you do not have one of the adapters listed in 2. then there is a chance that a community developed driver is available for your NIC. Most of these are available in the V-Front Online Depot. Just go there and search for the PCI ID of your device:
This example will find a version of the net-e1000e driver that is newer than the one that ships with ESXi and thus supports some more Intel NICs (like the I217-LM and -V).
If you cannot find your NIC's exact PCI ID in the V-Front Online Depot then you are almost out of luck. Proceed to step 5 then.
4. Create your custom ESXi installation ISO
If you have found a suitable driver for your NIC in the V-Front Online Depot then you can easily built a customized ESXi 5.5 installation ISO that includes this driver by running my ESXi-Customizer-PS script like this:
.\ESXi-Customizer-PS-v2.3.ps1 -v55 -vft -load net-e1000e
This will build an ESXi installation ISO with the latest 5.5 patch level and (in this example) the community supported net-e1000e driver included.
An example for ESXi 6.0 could look like this:
.\ESXi-Customizer-PS-v2.3.ps1 -v60 -vft -load net55-r8168
This will build an ESXi 6.0 installation ISO with the latest patch level and (in this example) the community supported up-to-date Realtek 8168 driver net55-r8168.
5. Google is your friend
If you haven't found anything in the V-Front Online Depot then there is still a small chance that someone has already created an ESXi driver for your device that I have not (yet) added to the V-Front Online Depot ... The only way to find out is using your favorite Internet search engine!
But please search specifically for a VMware ESXi driver for your NIC! Some people just search for a Linux driver in the false belief that you can use Linux drivers with ESXi. You can not! ESXi drivers can be derived from Linux drivers, but this involves modifying and re-compiling the source code, and packaging it into the appropriate format (VIB file or Offline Bundle)!
If you are lucky and find an ESXi driver for your NIC then download the VIB file or Offline Bundle and create a customized ESXi installation ISO with it. Guess what? You can do that with my ESXi-Customizer-PS script. Copy the downloaded file to an empty directory (e.g. C:\TEMP) and run the script like this:
.\ESXi-Customizer-PS-v2.3.ps1 -pkgDir C:\TEMP
(And be nice and tell me that you have found a community developed ESXi driver that is not yet in the V-Front Online Depot, so that I can add it there!)
6. Be bold: Create your own driver!
Still failing? Your second last chance to get ESXi up and running with your whitebox is to create an ESXi driver for your unsupported NIC on your own!
Warning: This is not a task for the average VMware (or whatever IT) administrator! You need Linux developer skills for this, optimally you are a kernel hacker ...
Are you bold? Then go and read my quick start guide How to build device drivers for ESXi 5.x! But please do not come back to me with questions on how to set up the build environment and overcome compilation errors - I do not have any skills in this.
7. Always easy: Go and get a compatible controller!
The one thing that will always help you to overcome the "No Network Adapters" error is simply getting another NIC that is supported by ESXi out-of-the-box. A lot of Intel Gigabit NICs will work, and there are affordable models available, even dual or quad port devices. But before you purchase a new one be sure to check the VMware HCL if it is supported by the current ESXi release.
Here is an example of how to use the search mask to find all Intel NICs supported by ESXi 5.5 U2:
|Searching the VMware HCL (click to enlarge)|
8. Yet another option: Pass your NIC through to a VM
If you were forced to get a new officially supported NIC to get ESXi up and running then you may wonder if you can still make good use of the other unsupported NIC that sits there in your box without a proper ESXi driver.
Yes! You can try to pass the NIC through to a single VM using PCI passthrough (aka VMDirectPath). This requires a system that is modern enough to support Intel VT-d (resp. AMD IOMMU), and KB1010789 describes how to configure ESXi for this:
|Enable passthrough of a PCI NIC as per KB1010789|
If your unsupported NIC is attached via USB then you need to use USB passthrough to make it available to a VM. This setup is described in KB1022290. With the most recent ESXi 5.5 patch (of Oct 2014) this also works with host connected USB 3.0 devices, but this requires some tweaking: In another recent blog post I already described how to permanently enable the required xHCI driver in ESXi.
I hope that you find this guide helpful - if you think that some important information is missing then please comment!
This post first appeared on the VMware Front Experience Blog and was written by Andreas Peetz. Follow him on Twitter to keep up to date with what he posts.