3

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.

Juergen
  • 138
  • 1
  • 10
  • Is the USB Controller in your VM set to `USB 3.0`? – Gerald Schneider Dec 10 '20 at 14:24
  • What do you mean with _set_ ? When installing a virtual xHCI controller in VMware, one gets a USB 2.0 root hub and a USB 3.0 root hub in the VM. This is the same as with other physical USB 3.0 controllers on bare metal. I don't know of any settings in the VM. I'm editing the question to contain `lsusb` VM output. – Juergen Dec 10 '20 at 16:02
  • On my ESXi 6.5 I have a single USB controller where I can select between 2.0 and 3.0, hence my asking. – Gerald Schneider Dec 11 '20 at 06:21
  • At which place are you able to _select_ ? On the VMware host or in the VM guest ? What type of software is offering choices to you ? – Juergen Dec 11 '20 at 09:42

1 Answers1

2

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

VFrontDe
  • 1,508
  • 8
  • 13
  • I have read that blog post including all the comments but that did not help: `vmkload_mod xhci` reports: `module is already loaded`. This seems to be expected because I'm using esxi6 _where xhci should work out of the box_ according to one of those comments. Updated the question. – Juergen Dec 10 '20 at 14:07