What does the BIOS setting XHCI Pre-Boot Mode do?
Solution 1:
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.
Solution 2:
xHCI Pre-Boot Driver
Enabled The USB 3.0 ports are routed to the xHCI controller before booting to OS. (Default)
Disabled The USB 3.0 ports are routed to the EHCI controller before booting to OS.
When this item is set to Enabled, the xHCI Mode below will be automatically set to Smart Auto; when this item is set to Disabled, the xHCI Mode below will be automatically set to Auto.
source: http://mbforum.gigabyte.de/index.php?page=Thread&threadID=6484
Solution 3:
On Dual-Boot between Windows 10 and Windows 7 (pro for both), the xHCI controller bypasses the legacy usb ports (loads no legacy usb ports). Setting xHCI to disabled allows the dual boot to function correctly under ASUS bios using EHCI controller.