Based on the general symptom of USB devices not working when XHCI is enabled, and working when XHCI is disabled, it would sound like your OS has USB 2.0 drivers but not USB 3.0 drivers.
What does this sort of BIOS setting do? I found a good summary of the choices for a similar 'XHCI Mode' BIOS setting in a post by tonymac user a6f691ac:
XHCI Mode = Disabled - The on-board USB 3.0 port function like a 2.0
port
XHCI Mode = Enabled - The on-board USB 3.0 port function like a 3.0 port
XHCI Mode = Auto - The on-board USB 3.0 port function like a 2.0 port
before OS USB 3.0 driver load. If you reboot the OS, the on-board USB
3.0 port again function like a 2.0 port during this reboot BIOS phase before OS USB 3.0 driver load.
XHCI Mode = Smart Auto - The on-board USB 3.0 port function like a 2.0
port before OS USB 3.0 driver load. If you reboot the OS, during this
reboot BIOS phase, BIOS is "Smart" enough to avoid downgrade the USB
3.0 port back to 2.0 functionality before OS USB 3.0 driver load. So Smart Auto is faster than Auto on 2nd boot onward, but Enabled is
fastest once you are sure the OS has the USB 3.0 driver installed,
because it avoid the switching. Making the on-board USB 3.0 port
function like a 2.0 port is mainly to support OS installation or to
support OS that does not have build-in USB 3.0 driver, so that the USB
keyboard would still work if the user plug-in a USB keyboard or any
other USB devices into the USB 3.0 ports before the OS is installed
with the USB 3.0 driver come with the motherboard.
Background:
Each major version of USB has used a new software interface on the USB controller (1.x: UHCI/OHCI, 2.x: EHCI: 3.x: XHCI), each incompatible with the drivers for the previous version. Newer USB controllers work fine with older USB peripherals, so there is no reason for a computer to have anything but the latest USB hardware -- provided that it's fully up to date with the necessary drivers.
However, when installing an OS, there's the possibility of a chicken-and-egg problem where you have the drivers in hand but they aren't built into the OS installation, and you don't have a way to complete the OS installation and get the drivers on to the system other than using a disk that you need the drivers for.
To get around this for USB, systems either include dedicated older ports (for instance dedicated USB 2 ports on a system that also has USB 3 ports) or else they put a selection like this one in the BIOS that lets you change ports to use the older interface standard on the computer side, and then once you've got the OS on and the updated USB driver installer copied to the system, you can change back, install the update USB drivers, and now everything is running on the newest faster USB version.
The various "Auto" settings seem like an attempt to provide a BIOS configuration that works at full speed normally without having to change a BIOS setting at install time. This is presumably to save tech support calls from individual owners who are reinstalling their OSes, as well as to suit centrally administered environments where all OS installs are done by remote network boot and something like changing a BIOS setting on an individual machine part way through the setup process would be impractical.
There are two possible causes for this problem:
- in the BIOS setup, the USB 3.0 port(s) are downgraded to USB 2.0
- within Windows 7, the Intel(R) USB 3.0 Host Controller Switch Driver is not installed
The BIOS option:
Only some motherboards offer an option to disable USB 3.0 in the BIOS setup; don't expect to find it everywhere.
The Windows driver option:
Another thing you should check is whether you have the Intel(R) USB 3.0 Host Controller Switch Driver installed. To check whether it is installed, open the Device Manager, open the View menu and select "Devices by Connection", then verify it as follows:
If "iusb3hcs" does not appear when you select "Device lower filters" in the details of the "PCI bus" device, you do not have this essential driver installed.
To install it, you should reinstall Intel's drivers (for your hardware -- either C216 or C220), since they install the Intel(R) USB 3.0 Host Controller Switch Driver (iusb3hcs).
Technical details
Technically, the iusb3hcs driver is installed as a device lower filter of the PCI bus device. The filter driver's goal is to initialize the Intel-specific XUSB2PR register during PCI bus startup. This register allows per-port configuration, to either direct it to the XHCI (USB 3.0) or EHCI (USB 2.0) controller. (Fun fact: The equivalent Linux code can be found here.)
If the filter driver is not installed, the default configuration will apply: all ports would be directed to USB 2.0.
Best Answer
I asked over at Intel Communities to try get to the bottom of this. It turns out Intel Engineering has something to say about this:
Does the Intel USB 3.0 driver for 7-series chipsets support xHCI hand-off?
So that's that then. When running Windows 7 + Intel's USB 3.0 drivers, xHCI hand-off must be ENABLED in the BIOS setup.