ESXi 5.1 has USB 3.0 support, sort of...

Posted Sep 26 2012 (updated on Sep 30 2012) in
  • ESXi
  • Windows
  • VMware ESXi 5.1 has USB 3.0 support, but it's currently limited to using the vSphere Web Client to map client-side USB 3.0 devices to the remote VM.

    Long story short, turns out ESXi 5.1 doesn't really support USB 3.0 in the way you might think. In other words, if your system running ESXi 5.1 has USB 3.0 ports, that's nice! But the USB 2.0 or USB 3.0 devices you have plugged into those ports are not available for mapping to individual VMs. Instead, all ESXi 5.1 can do is map a client side USB 3.0 device to your VMs, if you're using the vSphere Web Client (I used Chrome). I tested a ThinkPad W520 laptop called tZilla, with the solid USB 3.0 drivers that come with Windows 8 Pro 64 bit), and Chrome running the vSphere Web Client with an ADATA USB 3.0 thumb drive successfully mapped to the ESXi-hosted VM running Windows 8, and I witnessed USB 3.0 speeds (over my gigabit LAN). I realize you may need to read this paragraph twice, as this is not likely what you were expecting by USB 3.0 support.

    Back in late August, from my hotel room near VMworld 2012, I hurriedly tried out some quick remote USB 3.0 tests on my freshly built ESXi 5.1 system, having found no documentation stating it would work at all. I didn't do so well, because it's also clear I didn't really know what I was doing quite yet, as you'll see here (where it turns out the USB 3.0 stick was inserted into a USB 2.0 port, making it work, but slowly):

    Online Research Findings:

    So today, I resumed poking around a bit for more info, and a little more info.

    Windows 8 / Windows Server 2012 Operating System does not boot or install on ESXi or ESX, KB: 2006859, Updated: Sep 9, 2012
    says the following:

    VMware does not currently recommend using USB xHCI with Windows 8 / Windows Server 2012. To work around this issue, remove the USB xHCI controller or use the USB EHCI+UHCI controller.

    Surprisingly, even though ESXi 5.1 has been out for some weeks now, there is pretty much no useful info about USB 3.0 support for VMs out there, seen by Google-ing for:
    xHCI "esxi 5.1" "usb 3"

    but I did manage to find this article, in the "VMware vSphere 5.1 Documentation Center" when searching for xHCI (the name of the USB 3.0 controller in the VM):
    Add a USB Controller to a Virtual Machine in the vSphere Client

    which (wrongly) says:

    Drivers are not available for the xHCI controller on Windows guest operating systems.

    sorry, but works fine on Windows 8 64 bit VM I created.

    then there's this article, in a later chapter of the same document:
    Add a USB Controller to a Virtual Machine in the vSphere Web ClientAdd a USB Controller to a Virtual Machine in the vSphere Web Client

    which (wrongly) says "Linux guests only":

    xhci-controller-support-table-fcae7f03b6a9210a6a8d0885de5e8329

    Why do I say wrongly? Well, in this video, you won't see any complaint from the VM when I map a USB 3.0 memory stick to a Windows VM with the xHCI controller configured for the VM. By complaining, I mean the usual "This USB Mass Storage Device can transfer information faster if you connect it to a Super-Speed USB 3.0 port" kind of thing. So yeah, that's pretty interesting. I also find it odd that there's so little info from VMware, especially since comes with a VMware Tools version that seems to equips your VMs to support USB 3.0 jsut fine, even on Windows (not just for Linux VMs, as was the case with 5.0).

    Connect-Client-Devices1

    As I was reading all this stuff, I had the sinking feeling that I now knew why my previous, embarrassing attempt at USB 3.0 tests, with the humiliation on the YouTube video above, was really a doomed effort. It became clear that the Hypervisor itself doesn't recognize my ASMedia USB 3.0 controllers on vZilla's ASRock motherboard. Nor will it recognize them on other folks's systems (NEC USB 3.0 chips, etc). Well, probably not until ESXi 6.0 anyway. Maybe ThunderBolt too?

    Back to reality. What happens when you go to try to add USB devices (2.0 or 3.0)? Well, naturally, you're only presented with USB 2.0 devices to attach to the VM, if you inserted that device into a USB 2.0 port, so that the Hypervisor can recognize that device (running at USB 2.0 speeds). The Hypervisor really doesn't seem to see USB 3.0 ports at all, nor does it see any devices installed in those ports.

    With all the slight inconsistencies I found during my research, I got impatient, and just went ahead and tried stuff out with the vSphere Client (32 bit Windows) and the vSphere Web Client (Chrome). And I'm glad I did, because it seems to work, at about 60% of native speed. And I recorded my experiences, so you can eavesdrop on my unrehearsed horsing around with USB 3.0.

    Actual Tests I Performed:

    You'll see that the Windows VMs no longer warn you the xHCI controller isn't designed for this OS, seen here at this spot in the video for my recent Windows 8 template VM creation video.

    The VMware USB 3.0 configuration and wording from VMware also shows up nicely in this screenshot I just created, where you'll also note that I'm also using Windows 8 64 bit with "Virtual Machine Version: vmx-09" (hardware version 9):

    usb-xhci-controller-b172153db79679cb20b2001c12b53067

    Finally, here's the video that shows me using ATTO Diskbench on the But at least this video shows you what you can do for now, speed testing an ADATA USB 3.0 thumb drive locally attached to my laptop, versus mapped to a Windows VM running on ESXi 5.1, with the vSphere Web Client mapping that same laptop "client" USB 3.0 ADATA USB 3.0 thumb drive. Here's the results (screenshot of the video), with about 40% of the performance lost going virtual (with USB 3.0 traffic flowing over Gigabit Ethernet):

    usb3-stick-on-laptop-versus-same-usb3-stick-on-laptop-test-run-from-vm-ab440c0d2bb582f3f2931c82d2ecfa27

    Here's the full video of those USB 3.0 memory stick tests.

    I admit I didn't test replacing the USB controller with the USB 1.1 / USB 2.0 "EHCI+UHCI" to witness the slowdown, nor did I test a faster USB 3.0 device to really push the limits, but I feel I learned all I need to know about USB 3.0 for now, freeing me to resume the other dozens of drafts I'd like to publish. Near-term, one of those drafts is about why VT-d/ VMDirectPath for USB 3.0 PCI cards seemed to work better on ESXi 5.0, at least on ASRock motherboards. In other words, my article How to configure ESXi 5.0 for USB 3.0 passthrough to a Windows VM seems to no longer work, with ESXi 5.1 no longer allowing me to configure the USB 3.0 card's controllers for passthru to a VM for full USB 3.0 speed, at all. Others have similar stories, seen here on VMware's forum. But there's a workaround, if it's just >2TB NTFS drive support you're trying to get from an affordable external RAID enclosure for example. Just use RDM mappings instead, for eSATA connectivity to your enclosure instead of USB 3.0, described at Practical ways to deal with VMware ESXi 5.0′s 2TB virtual disk size limitation.


    Sep. 30 2012 Update:
    I have now also tried leaving the xHCI controller in the VM, then tried the vSphere Web Client to map the same ADATA USB 3.0 thumb drive to my client-side USB 3.0 port, ran benchmark, then moved the thumb drive to a client-side USB 2.0 port, and ran the benchmark again, here's the results:

    3-0-versus-2-0-0a2c375462693fa1c153dc86229cbdc9

    I then tested attaching a EHCI+UHCI controller type to the VM, which gets me this warning when attempting to attach a client-side USB 3.0 thumb drive:

    usb-3-0-warning

    If I click OK, the VM's console says USB device not recognized:

    USB-device-not-recognized

    so it does seem strange that VMware recommends against using this xHCI controller type. For Windows 8 VMs at least, xHCI sure seems to be the way to go for my templates, which is what I chose in this template creation recipe here.