Yesterday I received a pretty interesting comment from one of my Twitter followers @NTmatter who wrote:

This is a pretty neat find because currently today, the only network adapter that is functional with an Apple Mac OS X guest running on either VMware vSphere or Fusion is the e1000{e} driver. This update was definitely news to me and after sharing it internally to see if I could find some more details, it turns out this news also came as surprise to the folks internally. Darius, one of the Engineers who I frequently reach out to on Apple related topics did some digging and found out that Apple started to bundle this VMXNET3 driver starting with Mac OS X 10.11 (El Capitan) release. You can find the driver located in /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleVmxnet3Ethernet.kext

Disclaimer: Given that this VMXNET3 Mac OS X driver was not developed by VMware nor has it been tested by VMware, it currently would not be officially supported by VMware.

If you wish to try out the VMXNET3 driver, you will need to install Mac OS X 10.11 or newer on a VM running on vSphere or Fusion. By default, the only available network adapter type is e1000{e}. To add a VMXNET3 network adapter, you can either manually tweak the .VMX file or you can easily add it by using either the vSphere Web/C# Client or ESXi Embedded Host Client. Below are the instructions on configuring the VMXNET3 network adapter for your Mac OS X guests.

Step 1 - Remove the existing network adapter and then temporarily change the GuestOS type to "Other" (no need to save setting, just update it in VM reconfigure wizard) so that you will be allowed to add a VMXNET3 network adapter. Once you have added it to the VM reconfigure wizard, go ahead and toggle back the GuestOS type to Mac OS X 10.10 and then save the settings as shown in the screenshots below.

Step 2 - Open a terminal inside of the Mac OS X guest and run the following command to load the VMXNET3 driver:

sudo kextload /System/Library/Extensions/IONetworkingFamily.kext/Contents/PlugIns/AppleVmxnet3Ethernet.kext

Step 3 - You can verify that the VMXNET3 driver was successfully loaded by running the following command:

kextstat | grep -i vmxnet3

Once the driver has been loaded, you should now have networking connectivity to your Mac OS X VM using the VMXNET3 network adapter. Below is a screenshot of the system info showing the VMXNET3 network adapter.

In addition to having an optimized networking when using the VMXNET3 driver, the other benefit is being able to get a link speed of 10GbE which is something customers have been inquiring about when virtualizing Mac OS X guests. Below is a screenshot of the media link shown in this Mac OS X 10.11 guests.

Although this a great development for Apple customers who uses VMware vSphere and Fusion, it also does raise an interesting question on whether Apple would be officially supporting this VMXNET3 driver going forward? If I do receive any more details on this, I will update the article. Until then, you can play with this new capability if you are running Mac OS X 10.11 or greater on VMware. Big thanks to Thomas for this great find and sharing it with the VMware Community!

7 thoughts on “VMXNET3 driver now included in Mac OS X 10.11 (El Capitan)+

  1. This is absolutely awesome. I have requested a vmxnet3 vNIC since years. Now I am able to use my 10GbE Infrastructure at home. Many of my customers will love that hidden feature, too.

  2. Interestingly, the copyright in the Info.plist file (at least on a 10.11.6 system) is:

    Copyright © 2014 Francesco DiMambro. All rights reserved.

    Who is that? Maybe the Apple employee who wrote it and forgot to replace the placeholder Xcode project copyright with the standard Apple one (more like “Copyright © 2002-2013 Apple Inc. All rights reserved.”)

  3. I am using Mac OS X 10.6 on my virtual machine but I can’t use VMXNET3 driver on this Mac OS X 10.6 virtual machine because it does not support but now it is possible I can use vmxnet3 with Mac OS X 10.11 . Thanks for this update.

  4. i tried to just add a new network interface instead of replacing the existing one and it worked without needing to manually load the kext.
    i think the load of the kext is needed only because en0 was already linked to standard driver.
    if the vmnet3 type is selected at installation, it should work directly.

    since i now have both interface i will stress them both to see how it goes.

  5. I get a strange behaviour … can add a vnic with the vmxnet3 driver….can ping the VM … but strangely the VM does not resolve …. no DNS resolving works …. the VM can ping……….anyone seen that ?…. (and yes DNS is correctly configured 😉

Thanks for the comment!