While attending an offsite this week, there were some discussions amongst my colleagues about their new Apple Mac Pro and its USB-C only ports. The discussion was completely unrelated to work, however that did get me thinking about the USB-C peripheral market and specifically their ethernet adapters. While searching online, I came across several new USB-C to gigabit ethernet adapters that were now available and one in particular that was very interesting, was the Plugable USB-C to 10/100/1000 Gigabit Ethernet LAN Network Adapter. What caught my eye about this specific network adapter was that it uses the exact same ASIX AX88179 driver as my USB 3.0 to Ethernet Adapter ESXi VIBs were built off of! There was a good chance this might just work.


As you can probably guess, I was pretty excited and quickly ordered one of the Plugable USB-C Ethernet Adapters. The next challenge was getting access to a system that has a USB-C port. After asking around, I finally got my hands on a Dell XPS 13 which has a USB-C port that I could use for a few days. Funny enough, the Dell laptop only has USB 3.0 and USB-C ports, so the first challenge was to disable Secure Boot since I had built a custom ESXi 6.5 image that included my USB 3.0 Ethernet Adapter VIB. Below are the ESXi VIBs or offline bundles that will be required for this solution.

Please see this blog post for more detailed instructions on installing the VIB as well as accessing the vusbX pNIC.

Disclaimer: This is not officially supported by VMware. Use at your own risk.

Once I got ESXi up and running, I was disappointed to see that the USB-C device was not being detected. I had tried a few more things but nothing worked and I decided to sleep on it. The next morning, I realize maybe there was some additional settings that needed to be tweaked in the BIOS. With a bit of trial/error, I found out that you needed to enable the "Thunderbolt Boot Support" which apparently is disabled by default, at least on this Dell system. Below is a screenshot of the BIOS USB/Thunderbolt Settings and this was the only change required from the system defaults.


Once I rebooted, I immediately saw the link up on the USB-C device while ESXi was starting up 😀

Running the lspci command after the BIOS tweak, I can now see both the Thunderbolt 3 bridge as well as the USB 3.1 controller, where as before it was just showing the TB3 bridge.


You can also verify that the USB NIC has been claimed by running the lsusb command. In my setup, I have both the USB 3.0 to Ethernet Adapter as well as the USB-C to Ethernet Adapter functioning on my ESXi 6.5 host.


I ran a couple of iPerf experiments between two ESXi hosts and the speeds are pretty decent, see the results below.

iPerf benchmark for Ingress traffic (single port USB ethernet adapter):


iPerf benchmark for Engress traffic (single port USB ethernet adapter):


Now, how freaking cool is this!? Best of all, this solution should work on ANY system that has a USB-C / Thunderbolt 3 port as long as you are using the driver along with a supported ethernet adapter. For other systems, it may just work out of the box or you may be required to make similiar changes to the BIOS. If you are successful in getting this to work on other systems, please leave a comment sharing the details and any workarounds that may be needed so others may benefit. Some other popular platforms that are currently shipping with USB-C ports are the Intel NUC Skull Canyon or the new Apple Macbook Pro. The upcoming Intel NUC i5 Kaby Lake will also include USB-C ports similiar to the Skull Canyons, so if you are considering purchasing a new system, you may want to wait until those are available so you can take advantage of the USB-C ports when running ESXi.

Given the large bandwidth of a USB-C, I suspect you *might* even be able to drive 2x more the bandwidth by using a Dual Gigabit Ethernet Adapter like the USB-C to Dual Gigabit Ethernet Adapter from StarTech which also uses the ASIX AX88179 driver. I personally would love to see a USB-C to 10GbE adapter where you can then use a cross-over cable to connect two devices for a sweet 2-Node vSAN Cluster. As of right now, the only 10GbE solution in the market is from ATTO with their ThunderLink device (Thunderbolt 3 to 10GbE SFP+). This would require an additional 10GbE switch, which is probably out of reach for most folks including myself. Alternatively, which I suspect is probably not possible without changes to ESXi, is to get Thunderbolt Networking which allows you to connect two hosts together using TB3 to TB3 cable like you can today on Mac OS X. This would theoretically give you 40Gbps of bandwidth, which should be more than enough for anyone wanting to run a small vSAN Cluster 🙂 There seems to be some good progress on this front with the Thunderbolt Networking support for Linux project, but it is still very early to tell. Perhaps Plugable, StarTech or other vendors might consider looking into this for the future given USB-C potential?

19 thoughts on “Functional USB-C Ethernet Adapter for ESXi 5.5, 6.0 & 6.5

  1. I am waiting for the NUC7i5BNH which comes with USB C 3.1 (Gen2 10GB, Thunderbolt 3).
    Initially, i plan on just attaching a USB-to-1Gb-Nic.

    Not an expert on this stuff, would it be possible to attach an USB 3.1 hub to attach multiple 1Gb NICs? I don’t know how USB handles it or if ESXi would need a driver to handle the hub.

  2. Just to be more specific: Initially I’ll use an “old” USB3.0 Type A port with a 1Gb NIC. I’m just curious for what might be possible later on.

  3. Does it this require a Thunderbolt USB-C connection, or is a “normal” USB-C connection enough?
    Thinking about the NUC7i3BNH and NUC7i5BNH.
    The NUC7i3BNH has 1x USB 3.1 Gen 2 (10 Gbps) and Mini DisplayPort* 1.2 via USB-C
    The NUC7i5BNH has 1x Thunderbolt™ 3 port (40 Gbps, with USB 3.1 Gen 2 10 Gbps and DisplayPort* 1.2) via USB-C

    Would this setup work on a NUC7i3BNH?

  4. Hi William,
    Very nice post and useful informations.

    I’m just a beginner in VM world but I’m very happy to have found your infos.

    I just bought a notebook Dell I14-5457-A40 with an unsupported NIC – realtek pcie fe Family. Sad abaout that.

    I’ll try to find a supported adapter next week.

    Are there a list of compatible USB adapters?

    Cheers.

    CIRO.

  5. Thanks for your help. Now my startech usb-c dual gigabit adapter running with ESXi 6.5 U1 on NUC7i5BNH

  6. Hi, thanks for all your efforts, I wonder if anyone has had experience with NUC7i5BNH / ESXI 6.5 U1 / Plugable USB C NIC – where the NIC is discovered by ESXI, but is always shown as ‘link down’? I cant get to go link ‘up’… I’m possibly doing something stupid…

    • perhaps I should mention that the vghetto-ax88179-esxi65 driver is installed, have run:
      ‘esxcli system module set -m=vmkusb -e=FALSE’ and:
      ‘esxcli network vswitch standard uplink add -u vusb0 -v vSwitch0’
      have also tried various cables to no avail…

  7. Is there any way to connect to NUC7’s directly via a usb-C cable (no usb/ethernet adapter) and use Thunderbolt networking between them? A poor man’s 2-node cluster?

  8. Hardware:
    NUC Skull Canyon (NUC6i7KYK)
    StarTech USB-C to Gigabit Network Adapter – USB 3.1 Gen 1 (Part # US1GC308)
    SanDisk 64GB Ultra Fit USB 3.1 Flash Drive (SDCZ430-064G-G46) Boot for ESXI 6.5 (clean install)

    Steps:
    1. Disabled “Thunderbolt Controller” within BIOS during ESXI install from USB to USB.
    2. Confirmed Thunderbolt was not listed (telnet, lspci – didn’t show in list)
    3. Restarted, BIOS, enabled “Thunderbolt Controller” under “Devices” \ “Onboard Devices”
    4. CD /
    5. wget http://s3.amazonaws.com/virtuallyghetto-download/vghetto-ax88179-esxi65.vib
    6. esxcli software vib install -v /vghetto-ax88179-esxi65.vib -f
    7. esxcli system module set -m=vmkusb -e=FALSE
    8. reboot -f
    9. telnet, lspci – shows “Bridge: Intel Corporation DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015]”
    But does NOT show Serial bus controller: Intel Corporation DSL6340 USB 3.1 Controller

    I have tried multiple times. Has the download changed for USB-C? Am I doing something wrong?

    Thanks,

    -b0n3z

    • Is the adapter listed when you are running the lsusb command?

      Here is my output:

      [[email protected]:~] lsusb
      Bus 003 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
      Bus 004 Device 002: ID 0b95:1790 ASIX Electronics Corp. AX88179 Gigabit Ethernet
      Bus 002 Device 002: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
      Bus 001 Device 002: ID 0e0f:000b VMware, Inc.
      Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
      Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
      Bus 002 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
      Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

      • Thanks for your help Ronny,

        I needed this environment up and running now, so I ordered and received the normal USB to NIC device (pictured on the left below). I removed the virtualGhetto vib and used the link you suggested to install that vib. Also making sure to run:
        esxcli system module set -m=vmkusb -e=FALSE

        Hardware used:
        Intel NUC Skull Canyon NUC6i7KYK
        (1) CORSAIR ValueSelect 32GB (2 x 16G) 260-Pin DDR4 SO-DIMM DDR4 2133
        (1) SAMSUNG 860 EVO Series M.2 2280 1TB SATA III 3D NAND (SSD – Storage)
        (1) SAMSUNG 960 EVO M.2 250GB NVMe PCI-Express 3.0 x4 (SSD – Cache)
        (1) SanDisk 64GB Ultra Fit USB 3.1 Flash Drive – SDCZ430-064G-G46 (Boot ESXi 6.5)
        (1) StarTech USB-C to Gigabit Ethernet Adapter – USG1GC30B
        http://www.b0n3z.com/download/vmware-usb-nic/usb-to-nic.jpg (image on right)
        (I had a Logitech mouse & Deck keyboard to set BIOS settings)

        BIOS setttings (version: KYSKLi70.86A.0053 & F9 to reset):
        Devices\Onboard Devices
        Disabled all except for LAN & Thunderbolt Controller

        [[email protected]:~] lspci
        0000:00:00.0 Bridge: Intel Corporation Skylake Host Bridge/DRAM Registers
        0000:00:02.0 Display controller: Intel Corporation Iris Pro Graphics 580
        0000:00:08.0 Generic system peripheral: Intel Corporation Skylake Gaussian Mixture Model
        0000:00:14.0 Serial bus controller: Intel Corporation Sunrise Point-H USB 3.0 xHCI Controller
        0000:00:14.2 Signal processing controller: Intel Corporation Sunrise Point-H Thermal subsystem
        0000:00:16.0 Communication controller: Intel Corporation Sunrise Point-H CSME HECI #1
        0000:00:17.0 Mass storage controller: Intel Corporation Sunrise Point-H AHCI Controller [vmhba0]
        0000:00:1c.0 Bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #1 [PCIe RP[0000:00:1c.0]]
        0000:00:1c.4 Bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #5 [PCIe RP[0000:00:1c.4]]
        0000:00:1d.0 Bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #9 [PCIe RP[0000:00:1d.0]]
        0000:00:1d.4 Bridge: Intel Corporation Sunrise Point-H PCI Express Root Port #13 [PCIe RP[0000:00:1d.4]]
        0000:00:1f.0 Bridge: Intel Corporation Sunrise Point-H LPC Controller
        0000:00:1f.2 Memory controller: Intel Corporation Sunrise Point-H PMC
        0000:00:1f.4 Serial bus controller: Intel Corporation Sunrise Point-H SMBus
        0000:00:1f.6 Network controller: Intel Corporation Ethernet Connection (2) I219-LM [vmnic0]
        0000:02:00.0 Bridge: Intel Corporation DSL6340 Thunderbolt 3 Bridge [Alpine Ridge 2C 2015]
        0000:3c:00.0 Mass storage controller: Samsung Electronics Co Ltd NVMe SSD Controller SM961/PM961 [vmhba1]

        [[email protected]:~] lsusb
        Bus 002 Device 002: ID 0781:5583 SanDisk Corp. Ultra Fit
        Bus 001 Device 003: ID 046d:c51a Logitech, Inc. MX Revolution/G7 Cordless Mouse
        Bus 001 Device 002: ID 0a34:0110 TG3 Electronics, Inc. Deck 82-key backlit keyboard
        Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
        Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

Thanks for the comment!

This site uses Akismet to reduce spam. Learn how your comment data is processed.