Monday, 19 May 2014

Why can't I boot from the USB 3.0 ports on my PCI add-in card?

I was asked this question today via email from Guptila. I thought I would share my reply here too.

The short answer is - you cannot boot via the BIOS on any device that is an 'add-in' device, unless it is a PCI card that also contains an option ROM.

BIOS Code

Think about how the BIOS works...

The BIOS knows that it's mainboard contains a certain chipset (it was designed for that chipset).
The BIOS contains the code required to access the registers on that chipset.
The BIOS has to have code which allow the operator to boot from devices connected to the chipset.
If the board has an ABC chipset, then the BIOS will contain code to access an ABC chipset with ABC-type USB registers.

Now you connect a PCI card containing a different (e.g. Renesas) chip. The BIOS will see a XYZ chip connected to the PCI Bus when you switch on the system, but the BIOS does not contain any code to access this XYZ chip - it does not even 'know' that the chip has USB 3.0 ports connected to it. In fact, when the BIOS code was written by the manufacturer, USB 3.0 chips probably did not even exist!

It would be the same even if you connected a USB 2.0 Renesas add-in card - the BIOS only contains code to boot from the chipset on the mainboard, it does not contain code for the 1001 different cards that could possibly be connected to the PCI bus.

So you cannot expect your system to boot from an add-in card... or can you...


So how can you add a SATA Add-in card to a system, and how come it can boot from SATA drives then?
You may well ask this question!

These add-in cards contain an option ROM - a chip that contains extra BIOS code. VGA (graphics) cards also contain these option ROMs so that you can see the BIOS text and setup menu etc when you switch on the computer. 

When the computer is switched on, it scans for Option ROMs and adds the code in the Option ROM to it's own BIOS code. In this way, the BIOS 'knows' about the extra chips that are now in the system.

Unfortunately, I am not aware of any USB 3.0 add-in cards which have their own Option ROMs that allow you to boot from their USB 3.0 ports. There are products such as 
which contain an Option ROM, but this only allows you to boot from the SATA devices and not from the USB 3.0 devices.

You have these options available to you if you have an add-in USB 3.0 card:

1. Get a mainboard\system that has a USB 3,0 chipset and ports
2. Plug your USB 3 devices into your systems USB 2.0 mainboard ports
3. Use a Virtual Machine and connect your USB drive to the add-in card's USB 3.0 port - however anything you boot to will see the USB drive as a non-USB hard disk and not a USB 3.0 drive. It does mean that most things will boot at USB 3.0 speeds in the VM though (see RMPrepUSB - Tutorial 4 and the video).


Also bear in mind that many bootable OS's do not contain support for USB 3.0 chips, so even if you could boot from a USB 3.0 port, once you boot to an OS (e.g. plop, Vista\Win7 and many linux distros) the boot will fail because it cannot access the USB drive on a USB 3.0 port because the OS does not contain any USB 3.0 drivers.