What does the BIOS setting XHCI Pre-Boot Mode do

asus-laptopbiosusb-3zenbook

I have a BIOS setting called XHCI Pre-Boot Mode. If I have this enabled USB devices which aren't plugged in at boot are never recognised, if I set it to Disabled then USB devices work normally. The brief BIOS description says "Enable this option if you need USB3.0 support in DOS." Which I don't, but it also says "Please note that XHCI controller will be disabled if you set this item as Disabled." So does that mean that USB3 is disabled with this option?
Here's a picture of the screen:

Asus UX32VD Advanced USB BIOS screen

UPDATE I subsequent BIOS update seems to have fixed this issue in that USB devices work even when not plugged in at boot with this option Enabled.

Best Answer

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.