Can we boot from a USB HDD?

#1

I tried booting Windows via an external hdd with the latest USB driver. but still get error like the old usb driver. after I inspect. when booting. my external hdd suddenly shutdown. and a few seconds later. i got error “inaccessible boot device”

Can we boot with USB devices attached?
#2

Yeah. Boot off the HDD is not supported with these drivers. There are two issues.

  1. There’s a handoff from the EFI BIOS to the kernel that’s not implemented. It’s pretty complicated to arrange that the USB bus driver, hub driver, and MSC driver all will get loaded and set up properly. If I recall correctly, there are undocumented APIs between the mass storage driver and the USB stack that are used to help with this synchronization. But in any case, there’s work to be done that hasn’t been done here: all the drivers for USB and USBMASS have to be in memory and linked up to the kernel before the EFI BIOS hands control to the kernel. Clearly, this is why the boot has failed. [Edit 2019-02-13] The fix for this is trivial, but it requires an INF file change for both hub and hcd, which means going through the whole signing and release rigamarole all over again. And because the INF files are generated, it probably requires mods to the build system. Only a few hours of work, but I’ve got to look at other things for a while.
  2. There’s an IOCTL, IRP_MN_DEVICE_USAGE_NOTIFICATION, that must be supported after the boot, so that Windows will be happy with having booted from the USB device. I believe that the USBMASS driver supports this, but I don’t think MCCI_DWCHSOTG_{HUB,HCD} do. This probably will have to be fixed.
1 Like
#3

Well, why not 1.1, fixed usbbooting edition.

#4

I’ve got USB boot to work by setting “StartType” to 0 in both INF files.
Make sure to use a powered hub for devices like HDDs.

EDIT: Windows fails to create the paging file though…

1 Like
USB Driver Limitations
#5

(Moved to a separate topic…)

@mario, did you have to re-sign the drivers? Or just turned off the driver signing enforcement.

I’m not surprised Windows failed to create the paging file, given that we don’t really support IRP_MN_DEVICE_USAGE_NOTIFICATION; and Windows may refuse to turn on paging anyway on a “removable” device. It would be interesting to check whether SD card is marked removable; a USBMASS-based device will be based removable. I’ve not booted Windows x86/x64 from a USB drive on a desktop; it might be that it would not make any difference if we support the extra IRP, because of USBMASS removability.

#6

I’ve turned off the driver signature enforcement.

#7

In windows 10 on pi the sd card is marked up in “this pc”
as a SD card

#8

Is it marked removable?

#9

I tried to boot using the method from @Mario. and succeed. In this testing I using my old PC HDD that was connected to a USB SATA adapter and power supply PC (see photo below).


(ignore the weird cable :sweat_smile:)

but when testing I need an SD card to run UEFI. because UEFI on my old hdd doesn’t work.

for booting to my old hdd. i just open UEFI then go to boot manager and boot into my hdd. and succeed without BSOD
in this test I used windows 10 build 17134 and a modified MCCI usb driver

you can see in the screenshot above. My hdd is considered a Windows system and the SD card is considered a removable SD card

1 Like
#10

I hope in the future I can boot into Windows 10 with my USB HDD without external power like the photo above

#11

An SSD will make a big difference in system speed, even with USB2. One of the small Samsung units, or WD Passport might be nice.

#12

Yes, of course. but the problem is in the driver. when booting all usb power is shut down. and the Windows system cannot call USB HDD / SSD if it is shutdown

#13

Hm, I haven’t tested with the Pi of course, but we have SSDs with external power option… wouldn’t that be the same as your approach? Or using an external (powered) hub?

#14

Right here! The X850. It bridges two boards using a USB adapter (as shown) for an MSATA SSD and it has it’s own separate Micro USB port for power to the MSATA drive. I think I posted this elsewhere with the Amazon link. I love this setup. It allows for three heatsinks and a fan (and this thing actually blows out heat when using Windows)! Additionally, there is a case and board for a traditional SSD/HDD called the X820. I prefer MSATA for size and the fact that it’s identical to a standard SSD.

#15

yeah that really makes it easy to boot via ssd with the ssd to usb adapter and external power. but what about those who use external hdd and the power using internal usb?

#16

I don’t know if anyone has tried it yet. That’s why I like this case though. It’s small, looks professional and has a power input. It also allows you to use the internal power if you don’t want to plug it in. I don’t have a drive in it, but it is detected without power issues. I think it would probably work without plugging the power into the board given that MSATA drives are low on power.

#17

The question I have is can we install a full version of Windows on an SATA and have it boot?

#18

I have tried booting via hdd (scroll up). and work

#19

Hello Guys,
Today I installed Windows 10 on the external hard drive and I would like to share the result with you. I made a comparison between the SDCard and an external HD connected to the USB port.

List of components used:

A) SanDisk Ultra 32GB A1, Class 10 SDHC.
B) External HD Toshiba 750GB, 5400RPM.
C) USB 3.0 to SATA ASMT 2115.
D) Windows 10 18334.

1) Speed ​​test with SDCard (Seq) and CPU usage:

The average CPU usage in the writing and reading test was around 50%.

2) Speed ​​test with HD (Seq) and CPU usage:

The average CPU usage in the writing and reading test was around 35%.

Two problems were encountered when using Windows 10 on the USB (HDD) port:
A) Windows can not create paging file. I believe this happens because HD is recognized as external and removable.

B) There is an overuse of ram. I took a print screen comparing memory usage when Windows is initialized on SDcard and HD. When booted into the hard drive, all Windows processes have increased ram usage.
The same problem happens when using the windows version 17134.

Windows initialized on SdCard:

Windows initialized on HDD:

1 Like
USB Driver Test Results
#20

Major update on my end. Booted from USB SSD successfully on the final version of RS5 (release version in test mode). I downloaded it for fun and it works fine. No additional power needed and it also works with ethernet. Pretty big news. @tmm nailed it with these drivers! I have an MSATA coming Sunday to put in the case for a clean look. So glad this works.