Platform Compatibility for USB Boot Devices
Updated: December 4, 2001
On This Page
PC Boot and Operating Phases
PC Boot and Operating Phases
Between power-up and power-down events, the PC operating environment can go through several phases. The way a USB device is handled can differ in each of these phases.
Architecture of Legacy Support with Both USB and PS/2 Support
Legacy support is shown in Figure 1 for both USB and PS/2-compatibile support. Important features include:
Figure 1. Architecture for Legacy Support for USB and PS/2
Architecture of USB Extrinsic Support
Figure 2 shows the architecture that applies after the operating system takes control from the BIOS.
Figure 2. Architecture of USB Extrinsic Support
BIOS Setup Options for USB
The BIOS may offer one or more of the following options in its setup interface that affect USB:
Note: Some BIOS vendors support only a USB keyboard and not a USB mouse.
If the memory used for legacy-mode USB support is not hidden from the operating system or reserved, a legacy application may try to access it. This can interfere with a Flash BIOS update utility, which must be run from a boot floppy disk or from the command prompt.
Boot Support for HID Devices under HID 1.0
Information about a USB HID device, such as a USB keyboard or mouse, is stored in segments of its ROM (read-only memory). These segments are called descriptors. An interface descriptor can identify a device as belonging to one of a finite number of classes, of which the HID class is one.
In drafts of USB Device Class Definition for Human Interface Devices, Version 1.0 (HID 1.0) prior to Draft 4 (for example, in Draft 3), the order of the descriptor types in a HID device was specified as:
Device, Configuration, Interface, Endpoint, HID
In Draft 4, the final draft, the order is specified as:
Device, Configuration, Interface, HID, Endpoint
Figure 3. Boot Support for HID Devices under HID 1.0
Although most BIOS code and most HID boot devices conform to Draft 4 of HID 1.0, some BIOS code and some HID boot devices were shipped that conformed to an earlier draft of HID 1.0 (typically Draft 3). A HID boot device plugged into a platform can be incompatible with the BIOS code on that platform. This can result in the following:
Important: System vendors should verify their BIOS is HID 1.0 compliant by testing HID 1.0-compliant USB keyboards and mice during boot through at least one hub level, and preferably through several hub levels. USB keyboards and mice can be checked for HID 1.0 compliance with HIDView from http://www.usb.org/ , as follows:
USB keyboard and mouse vendors should be testing for HID 1.0 compliance by using HIDView.
Boot Support for HID Devices under HID 1.1
USB Device Class Definition for Human Interface Devices, Version 1.1 (HID 1.1) is explicit about the Keyboard Boot Protocol:
...To use the boot protocol, the system should do the following:
Select a Configuration that includes a bInterfaceSubClass of 1, "Boot Interface Subclass," and a bInterfaceProtocol of 1, "Keyboard."
Do a Set_Protocol to ensure the device is in boot mode. By default, the device comes up in non-boot mode (must read the Report descriptor to know the protocol), so this step allows the system to put the device into the predefined boot protocol mode...
Some BIOSes do not use the Set_Protocol operation to put boot devices into boot protocol mode. This may cause a boot-capable device to operate incorrectly during boot mode. This is not a problem for devices where boot and non-boot protocol modes are the same.
System vendors need to verify their BIOS does a Set_Protocol operation during all boot phases controlled by BIOS.
Boot Support for Long Descriptors
BIOSes have shipped that cannot handle long descriptors read from a USB device plugged into the PC at boot time. For example, a long descriptor may be a Configuration Descriptor with a wTotalLength value greater than 0xF8. Types of USB devices that may contain long descriptors are:
A platform with a BIOS that cannot handle long descriptors can display the following symptoms when a USB device with a long descriptor is plugged into the platform at boot time:
System vendors should verify that there are no adverse effects during boot with a long descriptor device attached. The system should not hang during boot and a USB keyboard should be functional during all boot phases controlled by the BIOS.
MS-DOS Mode for Boot Devices
Legacy support is required in the BIOS for a USB keyboard or USB mouse to operate in any of the MS-DOS mode phases.
System vendors need to test for common end-user scenarios with USB:
USB Boot Device Terminology