I have grub2 installed on my PC's internal hard drive and I am trying to boot a debian installation on a USB key. The PC doesn't have any USB 3 ports so I have added a USB 3 PCIe card. I know that most PCIe USB3 cards don't have boot ROMs, so my plan was to load grub2 from the hard drive and then boot into the USB key.

When the USB key is plugged into a USB 2 port everything works fine in the setup. When I try to instead plug into the USB3 port on the PCIe card, the following error appears:

Blockquote error: no such device: UUID of drive here

After that grub goes into the rescue mode and ls only shows (hd0), (hd0,msdos1), and (hd0,msdos2). So it's as if grub can't "see" the usb key.

I've added insmod for usb, usbms, xhci, echi, uhci to /boot/grub/grub.cfg . I know the USB 3 port works from linux because when I run from a distro on the hard drive I am able to mount from usb keys in the port. Is there any way to get grub2 to support the PCIe USB ports?

3 Answers 3


Different USB controllers require different GRUB modules:

  • for USB 1.x, GRUB has ohci.mod and uhci.mod.
  • for USB 2.0, GRUB has ehci.mod.
  • for USB 3.x, the equivalent module would be xhci.mod, but as of this writing, GRUB still does not seem to have this driver module.

Most new systems seem to have UEFI firmware, which has built-in support for USB at the firmware level, so perhaps the developers have expected no great need for native USB3 XHCI controller support in GRUB. Unfortunately, that means users of add-on cards like you will be out of luck.

Until relatively recently, most systems with USB 3 support also included a backward-compatibility EHCI controller and a hand-over protocol between the two. That would allow the system to start with the EHCI controller initially driving the USB ports, and switching to the XHCI controller once the drivers for it are loaded. With such a system, GRUB would have achieved plenty of USB functionality using only the EHCI driver module.

As Windows 7 (the last major OS with no built-in USB 3 support) is now nearing end-of-support, hardware manufacturers have started producing XHCI-only chipsets and systems. That may increase the demand for XHCI driver module for GRUB. However, a full-featured XHCI driver is a complicated thing, and developing one is a pretty big job.

If your system uses UEFI firmware, there might be another possibility: if you could find a xhciDxe.efi UEFI driver for the XHCI USB controller, it might be possible to load it by configuring the appropriate UEFI NVRAM variable, and that would add XHCI USB support for all the users of UEFI firmware functions, including UEFI versions of GRUB. As far as I know, this is something that might be needed when running Linux on Apple hardware; I have no experience on that, but I found a version of xhciDxe.efi here.


Grub2 modules and linux kernel modules are not the same thing. In other words if you do on Linux

lspci -k

And check what module your PCIe card is using - that's not going to be the same module in the grub2. Perhaps grub2 won't even have a comparable module.

From grub2 try to load these:

  • lspci
  • pcidump
  • pci
  • setpci

Source : http://www.linux.org/threads/understanding-the-various-grub-modules.7535/


The only way to boot a USB 3.0 drive containing Linux or Windows via PCI-E on a PC (BIOS LEGACY) non-UEFI is to install the system on a USB stick for example via USB 2.0 (it will serve as the primary boot channel) and then clone the OS to the final drive that will work connected on PCI-E USB 3.0.

When booting the operating system from USB 2.0 USB stick it will automatically call the USB 3.0 connected drive on PCI-E via UUID.

You must log in to answer this question.