How to make your unsupported NIC work with ESXi 5.x or 6.0


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


3. Look it up in the V-Front Online Depot

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)
You can also use the new Guided Search Wizard of the HCL to check if your NIC of interest is included here.


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
The host PCI device must then be added to the hardware configuration of a VM which will see the NIC as-is (instead of the standard emulated or paravirtualized vNIC types) so you will need a suitable NIC driver for your guest OS, but it shouldn't be too hard to find that.

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.



51 comments:

  1. What happens with the customized drivers when updating ESXi?

    ReplyDelete
    Replies
    1. Hi Gerald,

      if you do it right then they are preserved. Use "esxcli software profile update ..." like described e.g. in this post.

      Andreas

      Delete
  2. Hi, Andreas!
    I have a driver for new rtl8168 cards built from 8.039.00 sources. Is it possible to publish it on your site?

    ReplyDelete
    Replies
    1. Hi Nadin,

      that sounds great! Can you please send me the package and any information that you want to publish along with it via e-mail to vibsdepot@v-front.de ?

      Thanks
      Andreas

      Delete
    2. Hi Nadin,

      Please, can you share the SOURCE CODE of the 8.039.00 driver for ESXi?

      I like to compile a new upgraded version using this version of the Linux driver:
      http://github.com/mtorromeo/r8168

      Version 8.039 lacks support for rtl8168 revision "G" and up!

      Thank you!

      Delete
    3. Hi Anonymous,

      I don't think that Nadin will read this comment, but you can send an e-mail to the address that is listed on the Wiki page of the net55-r8168 package.

      Andreas

      Delete
    4. Hi Andreas,

      I already done this two weeks ago! But, no response.

      So, at time, I'm doing an effort for find the source code of this driver, or suggest to someone to recompile the driver using the last version of the Realtek source driver.

      The reason because the driver don't work with new chip revisions is the "microcode" included in the driver. It is updated in each driver version, and not compatible with newer chips.

      In any case, I suggest to ALL DEVELOPERS that creates communitty drivers for ESXi that they publish the source code. Like this:
      http://github.com/lamw/ax88179_178a-esxi
      Or including the source in the VIB file.

      Regards!

      Delete
  3. Hi Andreas,

    If i cant find the availabe nic driver for pic id: 8086:100e, can i use other nic driver?

    Thanks,
    Jack

    ReplyDelete
    Replies
    1. Hi Jack,

      this device is supported by the builtin e1000 driver - should work out-of-the-box.

      Andreas

      Delete
    2. No more, :( it is on the list of deprecated device for esxi6. Can I use e1000 driver to slipstream?

      Delete
  4. This post was so useful and worked fine on my ESXi 6.0 environment
    with your ESXi-Customizer-PS-v2.4 script.

    Thanks!

    ReplyDelete
  5. Thanks for a really useful and thorough walkthrough (setting the keyboard commands alone saved me so much pain). Major Respect

    ReplyDelete
  6. Thanks for this post. The most useful part for me was to search by the PCI ID instead of the vendor name.
    I have a SysKonnect card, but the syskonnect driver didn't work on my ESXi6 for this card. I then noticed the PCI ID was in the net51-sky2 VIB !
    Installing it now. :)

    ReplyDelete
  7. Thanks for the detailed steps. By following them, I figured I have an Intel 82545EM Giga Eth controller (Copper) card (btw, my laptop is Lenovo T520) which is supported by ESXi 6 or 6U according to VMware Compatibility Guide. However, it is not recognized by the system as I still got the same error message "No Network Adapters" during installation. Do you have any idea on this? Thanks again.

    Gary

    ReplyDelete
    Replies
    1. Hi Gary,

      can you please send me an e-mail (to info(at)v-front.de) and include the output of the following shell commands:

      esxcli network nic list
      lspci -v | grep "Class 0200" -B1

      We will continue troubleshooting from there!

      Andreas

      Delete
  8. Thanks very much Andreas. For the results, please see the screenshot picture attached in the email I sent to you. Appreciate you help.

    ReplyDelete
    Replies
    1. It turned out that Gary had installed ESXi inside a VM, and that VM was configured with only 2 GB RAM. ESXi 6.0 requires at least 4 GB RAM, and booting it with 2 GB RAM will result in the false error message that no network adapter can be detected.

      He could resolve the issue by configuring the VM with 4 GB RAM.

      Delete
  9. "booting it with 2 GB RAM will result in the false error message that no network adapter can be detected."

    I wish I'd read the comments on this page earlier! I was used to editing upgrade_precheck.py to get ESXi to install with <4GB RAM, but 6.0 seemed not to mind it. So when it said there was no network card, I took that at face value and spent ages with the customizer trying different driver packages, and scouring the web. Thank goodness a search for the NIC's device ID led back to this site and I found the answer here in the comments.

    Just wanted to say how much I appreciate this site and the tools. I've made a small donation to show my thanks.

    ReplyDelete
    Replies
    1. Hi John,

      thank you for your feedback and your donation, much appreciated!

      Andreas

      Delete
  10. http://esxi-customzer-ps.v-front.de/ <--- broken

    ReplyDelete
    Replies
    1. A typo, corrected: http://esxi-customizer-ps.v-front.de ...
      Thanks for the heads up!

      Delete
  11. Hello,
    thanks for a great website. I'm trying ESXi 6 on mini-itx motherboard Gigabyte GA-1037UN-EU and I have problem with built-in NICs. There are two Realtek NICs 8168 (id 10ec:8168). I got them working using the net55-r8168 package. BUT - both NICs works on 100 Mbps/FD only. I change the settings in vCenter to 1000Mbps/FD but it still runs 100 Mbps (reboot didn't help).

    This problem is not related to switch port settings/cable - for example previous Xpenology installation or Xenserver installation work on 1 Gbps without any problem.

    Any idea what can cause this and how to solve this?

    Thanks a lot.

    Jaroslav

    ReplyDelete
  12. Hey Genius,
    Thanks alot, the Intel I217 was missing from my ESX 5.5 iso, went to VFront and got the VIB file, used your script to customize the iso, WORKED LIKE A CHARM.
    Again, many thanks for your help.

    ReplyDelete
  13. I know that this post have some time but, im trying to install ESXi 6.0 because i want to learn about this before i enter to the university and i have an idea but well, im trying to install it on a laptop(HP Pavilion g7 1117cl) that can be a reason to this error of network interface not detected? I have 4gb of ram (3.45 Usable)and the wifi card its installed...Thanks.

    ReplyDelete
    Replies
    1. Hi Christian,

      please see my later post here: http://www.v-front.de/2014/12/how-to-make-your-unsupported-nic-work.html.

      You won't be able to use the WiFI card, but the onboard LAN adapter might work with a custom driver.
      However, having less than 4 GB RAM available might be a problem, because ESXi 6.0 requires at least 4 GB RAM. Can you upgrade RAM, use another machine or try ESXi 5.5?

      Andreas

      Delete
  14. Hi Andreas.
    I am not able to install esxi 6 due the error.
    Intel Corporation Ethernet Connection (2) I219-V [8086:15b8]. Do You have any suggestion? I have wireless tp-link usb adapter as well. Can I use it?
    Regards
    Damian

    ReplyDelete
    Replies
    1. Hi Damian,

      be sure to install the latest version (Update 1b) of ESXi 6.0. Only that supports the I219 NICs. You can create the ESXi 6.0 U1b installation ISO using my ESXi-Customizer-PS script.

      You won't be able to use the WiFi adapter, sorry.

      Andreas

      Delete
  15. I had had last version (that I can see) VMware vSphere Hypervisor 6.0 Update 1 - Binaries before I asked. Its form VMware Download Center.
    ESXi ISO image (Includes VMware Tools)
    2015-09-10 | 6.0U1 | 352.16 MB | iso

    I am not sure that from September is the last.

    Damian

    ReplyDelete
    Replies
    1. Hi Damian,

      no, this is NOT the latest version. You need Update 1b published on Jan 7th 2016 with the net-e1000e driver version 3.2.2.1. See https://esxi-patches.v-front.de/ESXi-6.0.0.html#2016-01-07.

      You can create an ISO file with this build using my ESXi-Customizer-PS script like this:

      .\ESXi-Customizer-PS-v2.4.ps1 -v60

      Andreas

      Delete
  16. I just wanted to say that I successfully used this to roll a custom ISO for ESXi 6.0 Update 1b with the latest Emulex driver, v10.7.179.0-10OEM.600.0.0.2768847,for HP BL460c G7 blades with the NC551i CNA. I've been struggling for many hours trying to find the right combination. Your tool just saved a c7000 chassis full of G7s from the auction block.

    ReplyDelete
    Replies
    1. I'm glad that the tool helped you, but ...

      ... for HP hardware you should really use the HP Customized Installation ISO. That should include all necessary drivers plus CIM providers for hardware monitroing and more.

      See my HP & VMware Links page!

      Delete
  17. I've got a dual port intel 82546EB (8086:1010) which apparently USED to be supported, but isn't anymore, but I can't find a driver for it.. Is there any way to use an old 4.x driver on an already installed 6.0 ESXi or am I going to be stuck installing 4.x from scratch and upgrading through to 6.0? Thanks for your help!

    ReplyDelete
    Replies
    1. Hi Steve,

      sorry, ESXi 6.0 is not compatible with ESXi 4.x drivers. Even installing 4.1 and upgrading to 6.0 won't help you.

      Regards
      Andreas

      Delete
    2. Thanks.. That's what I was afraid of.. New NICs were already ordered from Ebay when I wrote that, but was hoping to get LACP up without waiting literally for the slow boat from China. :-)

      Delete
  18. Hi Andreas, I seem to be hitting a PS error when running the script you have provided.

    An unexpected error occured:
    The term 'Get-PowerCLIVersion' is not recognized as the name of a cmdlet, function, script file, or operable program. Check the spelling of the name, or if a path was included, verify that the path is correct and try again.


    Any suggestions? I can't find a way around this currently, running a Get-VICommand doesn't show this or any equivalent command available to me.

    Thanks,
    Toby

    ReplyDelete
    Replies
    1. Hi Toby,

      this is an issue with the PowerCLI installation that quite a few peoplw run into. Please see the comments of this blog posts for a solution:
      http://blogs.vmware.com/PowerCLI/2015/03/powercli-6-0-r1-now-generally-available.html.

      Andreas

      Delete
    2. Hi Andreas,

      Thanks that's given me a solution!

      Delete
  19. Hi andreas I would like to thank for your work as it really helps people that want to try out esxi on home and consumer equipment, I've read and understand the steps but on the display "no network adapter" i cant press [alt and F1] my PC always freeze on the screen and i need to reboot my pc. Just wanted to ask im using asrock z97m anniversary mobo and it uses Realtek RTL8111GR. Is this under the Net55-r8168 package? Thanks in advance!

    ReplyDelete
    Replies
    1. Hi Unknown,

      yes, the net55-r8168 package will probably work for the NIC.

      The PC freeze might not really be the PC freezing, but the keyboard just not working!? There have been reports that on some systems USB keyboards are not working with ESXi until you connect them to an *internal* USB port.
      If this is not the case on your system then please check your hardware (CPU, RAM etc,)

      Andreas

      Delete
    2. Hi Andreas,

      Wrong! The package Net55-r8168 doesn't work with *GR* or other chip revisions later than 8111E.

      The developer needs to update the driver version to the lastet:
      http://github.com/mtorromeo/r8168

      The source code of the Net55-r8168 is at time missing. Only until it is available is possible to compile a new upgraded version of the driver.

      :(

      Delete
  20. Thanks for your help Andreas..!! Good work..!!

    ReplyDelete
  21. I've been using your net55-r8168 package w/ ESXi 6.0 to get my Realtek 8168 network adapter working. I see that there's a ESXi 6.0 Update 2 release, which includes several network driver packages. Will any of them interfere with your net55-r8168 package? I don't have physical or KVM access to the box, so need to ensure that I still have network connectivity when it comes back from a reboot.

    ReplyDelete
    Replies
    1. Hi Anonymous,

      I just upgraded a white box server using the net55-r8168 package to ESXi 6.0 U2. No issues here, the Realtek NIC and driver is still working.

      Andreas

      Delete
  22. Hello Andreas,

    I am trying to find out if ESXI v5.5 can recognize A USB to Gigabit adapter.
    I currently am running the ESXI on a Intel NUC(NUC5i5RYH) i had to customize the installation ISO to get the network adapter to work, and it works fine.
    I am just curious if you have been able to get a USB to Ethernet adapter to work or not.

    ReplyDelete
    Replies
    1. For one specific model of an USB 3.0 Ethernet Adapter there is now a driver available. See here.

      Delete
    2. I have done that, when i create the new custom ISO to include the VIB for the adapters, the VIB does not get added to the iso, it does the other VIB's i have but not that one. Here is a copy of the script i am using in PowerCLI :
      .\ESXI-Customizer-PS-v2.4.ps1 -v55 -vft -load net-e1000e,sata-xahci,cpu5-microcode,vmware-esx-dvfilter-maclearn -pkgDir C:\Users\(removed for Security Reasons)\Desktop\asmtdesk\esxibootdrivefiles\newesxiiso -outDir C:\Users\(removed for Security Reasons)\Desktop\asmtdesk\esxibootdrivefiles\newesxiiso\newisowithdrivers -nsc

      The Vib it misses is vghetto-ax88179-esxi55u3.vib, which is the VIB for the adapters drivers.

      Delete
    3. Hi Anonymous,

      please see the ESXi-Customizer-PS project page for how to get support with the script. Thanks!

      Andreas

      Delete
  23. This might be a dumb question, but will net55-r8168 and net51-r8169 work on the latest 5.5?

    ReplyDelete
    Replies
    1. They do work on the latest ESXi 5.5 (and the latest 6.0)!

      Delete
  24. Great, thank you. Would you recommend using them over the older net-r8168/etc for 5.5?

    ReplyDelete
    Replies
    1. net51-r8168 is the same driver as the VMware supplied net-r8168, just renamed to work around the ESXi 6.0 black list.
      net55-r8168 is a newer version of the Realtek driver that supports more adapters and works fine since years (at least for me). I'd recommend net55-r8168.

      Delete

***** All comments will be moderated! *****
- Please post only comments or questions that are related to this post's contents!
- Advertising and link spamming will not be tolerated!