Booting from an USB 3.x PCIe expansion card

rcf

Regular
I would like to install a USB3 PCIe adapter card inside an older USB2-only Sandybridge PC, but AFAIK one can't boot an USB stick or external HDD directly from USB 3.x expansion cards since these cards do not have boot ROMs to insert themselves into the PC's boot sequence (unlike SATA PCIe cards), therefore being useless until an OS with the card's drivers has been booted from somewhere else.
But now I read that a boot ROM is required only for BIOS-based PCs, and that an UEFI PC would be capable of booting from the card even without a boot ROM in it (which I doubt).
Does anyone know if that is true?
 
Switch to uefi mode and try it out, assuming you have all the hardware already.

No one can know for sure unless you post all the exact parts and firmware versions, the card, the motherboard, the bios.
 
I don't believe it's true. If a PC's built-in UEFI firmware doesn't support USB 3.0 it won't be able to boot directly off it.

You wouldn't need to boot a whole OS with drivers from somewhere else though. Just a small EFI partition with an EFI driver like xhcidxe should allow you to boot anything from a USB3 add-in card.
 
Is there such a thing as UEFI Grub boot menu or something similar from the Open-Source area?
 
I haven't bought the card yet, as I would like to be sure before doing it (if that's even possible).
I've booted the Clover EFI bootloader just to take a look. It loads the EFI Shell and detects everything in the PC, but I'm confused since the documentation of the EDK II environment (on which Clover and xhcidxe are based) says that it supports only Sky/Kaby/Whiskey Lake platforms.
 
I read that a boot ROM is required only for BIOS-based PCs, and that an UEFI PC would be capable of booting from the card even without a boot ROM in it (which I doubt).
This is not correct. Booting is only possible from onboard USB 3.0 XHCI controllers integrated on the motherboard, where the UEFI firmware includes XHCI PEI/DXE drivers from the manufacturer. In my experience, USB 3.0 controller PCIe add-on cards never include any kind of boot ROM, neither UEFI nor legacy BIOS, so they are not bootable.

I've booted the Clover EFI bootloader just to take a look. It loads the EFI Shell and detects everything in the PC, but I'm confused since the documentation of the EDK II environment (on which Clover and xhcidxe are based) says that it supports only Sky/Kaby/Whiskey Lake platforms.
TianoCore UEFI emulators, such as CloverEFI and an updated DUET-REFIND, forked an older DUET-compatible version of EDK2 codebase, so they should boot on everything from Intel P43/X48 and Intel 5/6/7-series and up. I'm just not sure that the supplied XhciPei/XhciDxe drivers will recognize the specific USB XHCI controller chip on your PCIe addon card.

I guess you might give it a try anyway - and if you just need additional USB2 ports, you can use bracket adapters that connect directly to the 9-pin USB headers on the motherboard.
 
Last edited:
Some of the available cards around here have VIA VL805/806 controllers. VIA's product page has this printed at the bottom:

"Firmware upgrade options include integrated firmware in system BIOS"
"USB Attached SCSI Protocol (UASP)"

Any idea of what exactly is meant by that?
The firmware upgrade thing could be unrelated to booting, but wouldn't UASP include support for booting?
 
"Firmware upgrade options include integrated firmware in system BIOS"
This actually means VL805 has no onboard controller or device ROM, so it relies on the host CPU and UEFI BIOS for power-on initialization and resource configuration.

"USB Attached SCSI Protocol (UASP)"
This is the high-speed transmission protocol for USB Mass Storage Class devices introduced with USB 3.0. It offers much higher speeds than USB 2.0 era BOT (Bulk-Only Transport) for Mass Storage Class.

You can tell if your device supports this protocol by opening the Device Manager from the Windows button and looking up Storage Controllers - USB Attached SCSI (UAS) Mass Storage Device (it shows up in Driver Properties as UASPSTOR.SYS).

wouldn't UASP include support for booting?
Yes, if the UEFI firmware supports it - but AFAIK most motherboards only support USB 2.0 BOT mode for booting, so UASP devices work in compatibility mode until Windows kernel starts.

bootable card here
It's bootable for SATA ports only, in either legacy BIOS mode or UEFI CSM.
 
Last edited:
I've just tested the DUET-REFIND emulator - it does recognize a USB flash drive connected to my XHCI PCIe card and successfully boots from it (when set to [USB] mode in the Boot menu of the UEFI BIOS). I guess CloverEFI should also work, since it's a modified DUET. I'm using Asrock Z68 Extreme3, Core i5-2500K (Sandy Bridge) and VIA VL805 XHCI controller connected to front-panel USB ports (that Orico PVU3-2O2I card has a standard 20-pin USB 3.0 header).

Because of external USB3 storage
It's not clear why would you want to boot from this external storage.

Starting DUET from USB takes several dozen seconds, which kills any speed advantage you may have from using USB 3.0 and/or UASP devices (and it's not even certain that the USB boot process takes any advantage of this).

If you want faster startup, just use SATA SSDs - and for 'ludicrous speed', go for a M.2 NVMe x4 SSD on an M.2 to PCIe x4 M-key adaptor, and modify your UEFI BIOS to include the NvmExpressDXE boot driver. In order for NVMe booting to work, you will have to repartition your NVMe SSD for UEFI boot, copy the OS partition from your old disk (with MiniTool PartitionWizard for example), configure the EFI system partition and the UEFI boot entries with bcdboot, then setup the Windows Recovery partition (or have the MBR2GPT utility convert your disk to UEFI boot if you still use MBR partitions, then clone it to the NVMe SSD).
It works pretty much like 'instant on' for waking from hybrid sleep, it's still very fast when you need to reboot, and even full OS upgrades take minutes instead of hours.
 
Last edited:
Thanks for your detailed replies.

The PC in question has 6 SATA drives already, and this is not about startup time. I would like to boot from USB3 because a couple of relatives occasionally bring me their external USB3 HDDs for software updates or troubleshooting. They use them exclusively for home banking, so the HDDs spend most of the time inside a drawer. I just thought it would be more convenient for me to be able to just boot them and work at USB3 bandwidth.

These drives are just regular SATA drives inside USB3 enclosures, so when my relatives bring them back I'll see if I can temporarily remove the drives from their enclosures. If I can do that then it would be better to buy an eSATA PCIe card instead. But then again, if they start bringing me M.2 SSDs inside USB3 enclosures then I'm back to square one.
 
That doesn't make any sense. Are those disks the disks that contain the OS? So they all boot from a external USB disk? Why would they do that? And they only use them for banking so they have other OS disks that they normally use?
 
Yes, the external USB3 disks also have an installed OS. They use them only for banking while doing everything else on their laptops' internal SSDs usually filled with malware, keyloggers and who knows what else.
 
I still do not understand the purpose of booting the OS from these external disks. First, the OS is configured to run on a different PC, so it will have to adjust to the new hardware configuration during first boot - and this may require you to manually download and install some of the essential drivers, such as network adapter and videocard, before you can even use the OS and connect to Internet. Second, Windows activation state may be reset, since you've essentially moved the license file to another computer (i.e. a different motherboard), and you will probably have to call Microsoft Support to reactivate the license. So lots of trouble for virtually no benefit.
 
The OS is Linux, and it seems to work well, but I would prefer USB 3.x speeds rather than 25 MB/s.
Maybe I could boot from somewhere else and use chroot or something like that, but I would prefer a normal boot sequence.
It's not a big deal, there's no problem if it turns out to be impossible.
 
That should work if your disks are GPT partitioned with a dedicated EFI system partition and GRUB2 installed as the EFI bootloader in that partition.
 
Back
Top