What is the purpose of a xHCI controller while esxi6 doesn't support USB3?
When I add a virtual xHCI controller to my Linux VM on an esxi6 host, plug some USB3 device
to a blue USB 3.0 SuperSpeed port on the server and connect this device to the VM,
I get only USB2 speed.lsusb
reports the device being on a USB2 controller
not only in the VM but also in the esxi6 host (USB3 controller visible, but unused). Host:
# lsusb | sort
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 8087:8008 Intel Corp.
Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 002: ID 8087:8000 Intel Corp.
Bus 002 Device 003: ID 0480:d010 Toshiba America Info. Systems, Inc. External Disk 3TB
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
VM:
# lsusb | sort
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 001 Device 002: ID 0e0f:0003 VMware, Inc. Virtual Mouse
Bus 001 Device 003: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 004: ID 0e0f:0002 VMware, Inc. Virtual USB Hub
Bus 001 Device 005: ID 0480:d010 Toshiba America Inc External Disk 3TB
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
vmkload_mod xhci
reports: module is already loaded
(not by me, but automatically on esxi6 boot).
Googling reveals that esxi6 does not support USB 3.0.
From the official VMware docs: For virtual machines with Linux guests, [...] 3.0 superspeed devices are not supported for passthrough from an ESXi host to a virtual machine.
So what is the purpose of having a virtual xHCI controller which cannot be used ?
Or to ask the question the other way:
How can I use the xHCI controller in my VM ?
The physical USB3 controller on the mainboard has vendor:product 8086:8c31 which is reported as USB controller Serial bus controller: Intel Corporation Lynx Point USB xHCI Host Controller by lspci -v
on the VMware esxi6 host.
The generic Linux pci.ids
file lists this vendor:product as 8 Series/C220 Series Chipset Family USB xHCI.
Solution 1:
ESXi supports USB 3.0 since version 5.5 Update 3. However, for some reason you need to manually load/activate the xhci module in ESXi to enable the support:
esxcli system module load -m xhci
esxcli system module set -e true -m xhci
See e.g. this blog post for details: https://www.v-front.de/2014/11/vmware-silently-adds-native-usb-30.html