Compartilhar via


Useful USB Boot Information

If your device fails to boot from a UFD and:

1) Your device is getting through NTLDR and you're getting into the NTOS but then failing with error 0x7B

2) You have verified that your BIOS is enumerating your UFD by using the XPE instrumented NTDETECT. 

Then kernel mode PnP is probably failing to set up the critical device storage stack needed by the UFD. This could be related to your UFD and/or your PCI bus and bridge to the USB 2.0 Controller. 

First check to make sure all of the UFD resources exist on your device

The following table shows all of the file and registry resources currently used to boot from a UFD. Resource Requirement list for USB Boot

TOP OF STORAGE DEVICE STACK

DISK.SYS (Disk Class driver)

USBSTOR.SYS (UFD Storage driver)

USBHUB.SYS (USB HUB Port driver)

USBEHCI.SYS (USB 2.0 Enhanced controller Mini Port driver)

PCI.SYS (PCI Bus Driver PCI to USB Controller Bridge)

BOTTOM OF STACK

                NTLDR

                NTDetect.com (USB Boot Version)

                NTOSKRNL

        +------------------------

        | PCI.SYS +--------------------------------------

USB | USBEHCI.SYS ------------------------------------ | USBPORT.SYS

Stack | USBHUB.SYS (USB Boot Version) | USBD.SYS

        | USBSTOR.SYS (USB Boot Version) +--------------------------------------

        | DISK.SYS

        +------------------------

                USBD.SYS

                USB.INF (USB Boot Version)

                USBPORT.INF (USB Boot Version)

                USBSTOR.INF (USB Boot Version)

The following registry entries are critical to the USB Boot process

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\*pnp0a03]

"Service"="pci"

"ClassGUID"="{4D36E97D-E325-11CE-BFC1-08002BE10318}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\pci#cc_0c0320]

"Service"="usbehci"

"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\usb#root_hub20]

"Service"="usbhub"

"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\usb#class_09]

"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

"Service"="USBHUB"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\usb#class_08]

"ClassGUID"="{36FC9E60-C465-11CF-8056-444553540000}"

"Service"="USBSTOR"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\gendisk]

"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"

"Service"="disk"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Control\CriticalDeviceDatabase\usbstor#disk]

"ClassGUID"="{4D36E967-E325-11CE-BFC1-08002BE10318}"

"Service"="disk"

[HKEY_LOCAL_MACHINE\usbsystem.sav\ControlSet001\Services\USBEHCI]

"Start"=dword:00000000

"Type"=dword:00000001

"ErrorControl"=dword:00000001

"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\

  72,00,69,00,76,00,65,00,72,00,73,00,5c,00,55,00,53,00,42,00,45,00,48,00,43,\

  00,49,00,2e,00,53,00,59,00,53,00,00,00

"Group"="Base"

"DisplayName"="USB 2.0 Bus Driver"

"Description"="USB 2.0 Bus Driver"

[HKEY_LOCAL_MACHINE\usbsystem.sav\ControlSet001\Services\USBHUB]

"Start"=dword:00000000

"Type"=dword:00000001

"ErrorControl"=dword:00000001

"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\

  72,00,69,00,76,00,65,00,72,00,73,00,5c,00,55,00,53,00,42,00,48,00,55,00,42,\

  00,2e,00,53,00,59,00,53,00,00,00

"Group"="Base"

"DisplayName"="USB HUB Driver"

"Description"="USB HUB Driver"

[HKEY_LOCAL_MACHINE\usbsystem.sav\ControlSet001\Services\USBSTOR]

"Start"=dword:00000000

"Type"=dword:00000001

"ErrorControl"=dword:00000001

"ImagePath"=hex(2):73,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,64,00,\

  72,00,69,00,76,00,65,00,72,00,73,00,5c,00,55,00,53,00,42,00,53,00,54,00,4f,\

  00,52,00,2e,00,53,00,59,00,53,00,00,00

"Group"="Base"

"DisplayName"="USB Boot Mass Storage Driver"

"Description"="USB Boot Mass Storage Driver"

When Kernel mode PnP builds the critical device storage stack, it needs to map the HW or compatible ID or your hardware to the correct driver. PnP uses the Critical Device data base to do this. Plug your UFD into a safe build (such as an XP Professional system)and verify that all of the Compatible ID’s for your specific hardware exist in the SYSTEM.SAV hive of your runtime. 

Example of Debugging a USB Boot issue:

There may exist some hardware main board that contains some PCI bridge and USB boot support along with a UFD that fails to boot (blue screen 0x7B). In this scenario, boot into Window XP safe environment and plug in the UFD. View the device tree by connection and look at the Compatible Hardware ID(s) for each device from the PCI bus up to the Generic Volume. Verify that your Critical Device Database on your runtime contains compatible ID(s) for each device needed in the tree.

For each device in the tree, verify that a compatible or hardware ID exists in the Critical Device Database, and that it maps to the appropriate driver.

The Compatible ID “PCI\CC_0C03” exists for the Enhanced Host Controller, so this driver is set up correctly. Proceed to the next one. Check that all drivers in the tree contain CDD entries for either a Hardware ID or Compatible ID. If one is missing then add it. 

- Joe

Comments

  • Anonymous
    January 05, 2010
    Thanks - got us going (almost). Note that in USB.inf, the start type must be changed to zero for each of the devices, else when you plug in a SIMILAR device, it will reset the services entry back to 3, and the system will not longer boot... For us, we had major issues with booting from a usb disk which was actually a composite device.  Adding the usbccgp entry to CriticalDeviceDatabase made it work, but when we plugged in another composite device, it broke again... (maybe this is a usefull change to the shipping USB.inf (usb boot version), if there is such a thing). thanks again, Simon & Dan

  • Anonymous
    January 24, 2010
    My usb device is not working at all.It doesnt appear on the safely removal window.But the display information says my device is working properly.I found out that there is no updated Generic USB volume driver.plz i need an updated driver for this display name USB 2.0 Bus Driver

  • Anonymous
    January 26, 2010
    You might want to review this forum post that talks about "Safely Remove hardware" -http://social.msdn.microsoft.com/Forums/en-US/embeddedwindowscomponents/thread/cfffc7b6-5679-46fc-a1c9-4c08228b7b47