Platform Compatibility for USB Boot Devices
Updated: December 4, 2001
On This Page
PC Boot and Operating Phases
Architecture of Legacy Support with Both USB and PS/2 Support
Architecture of USB Extrinsic Support
BIOS Setup Options for USB
Boot Support for HID Devices under HID 1.0
Boot Support for HID Devices under HID 1.1
Boot Support for Long Descriptors
MS-DOS Mode for Boot Devices
USB Boot Device Terminology
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.
|
Phase
|
Description
|
Comment
|
| Phase 1 |
POST, including CMOS setup |
The BIOS controls the PC operating environment and lower-level I/O to peripherals during Phase 1. |
| Phase 2 |
Microsoft MS-DOS command prompt |
-- |
| Phase 3 |
USB-aware operating system |
Extrinsic device support is available in this phase. |
| Phase 4 |
Restart in MS-DOS mode |
Microsoft Windows 95/98 only; Windows 2000/Windows XP does not provide restart in MS-DOS mode. |
| Phase 5 |
Power save (ACPI) |
-- |
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:
-
The BIOS traps events from the USB keyboard and mouse and presents them to the system as PS/2-compatible devices.
-
The legacy operating system recognizes the USB keyboard and USB mouse as PS/2-compatible devices, with limitations imposed by the USB boot protocol.
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:
-
Enable/disable USB host controller
-
Enable/disable legacy USB support
-
Assign IRQ to USB host controller
-
Monitor IRQ for APM events
|
BIOS setup option
|
Typical default setting
|
How setting affects USB keyboard and mice
|
| Enable/disable USB host controller |
Disabled |
USB keyboard and mouse will not work during boot phases. |
| Enable/disable legacy USB support |
Disabled |
USB keyboard should work during POST (except for some early BIOS implementations). However, neither USB keyboard nor USB mouse will work during other phases controlled by the BIOS. |
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:
USB keyboard does not work during boot phases controlled by the BIOS.
USB keyboard LEDs and typematic functions do not work during boot phases controlled by the BIOS.
USB mouse may not work during boot phases controlled by the BIOS.
System hangs on boot.
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:
The system should support basic keyboard functions in all boot phases controlled by BIOS including:
Standard keys
Typematic (keys repeat when held down)
LED status for CapsLock, NumLock, and ScrollLock
USB mouse should be supported in all boot phases controlled by the BIOS, providing a driver is loaded. Only basic mouse functions are supported by the boot protocol (that is, no wheel support).
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:
Digital audio speakers with HID controls
Video cameras with integrated microphones
Monitors with integrated hubs and HID controls
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 hangs on boot.
USB devices do not work during boot phases controlled by the BIOS.
For example, the USB keyboard and mouse will not work during these phases.
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.
| MS-DOS Mode Phase | Comment |
| Command prompt/BIOS setup menus | If Windows 98 is shut down abnormally, the Scandisk utility will automatically run during the next boot. Scandisk, as well as Flash utilities, are MS-DOS-based applications that need keyboard support. |
| Operating system Safe Mode | Keyboard is needed to respond to Safe Mode menu. |
| Operating system setup | Operating system does not take control of the USB host controller until the final stages of operating system setup. For example, USB device enumeration cannot occur until after system logon. If a USB keyboard or mouse is plugged into the system for the first time while the system is off, or if the USB keyboard or mouse is moved to a new USB port while the system is off, the device will not work at the logon screen. At this point, the operating system has already taken the hand-off from the BIOS, so the user may be stuck with no primary input device. |
| Restart in MS-DOS mode | -- |
System vendors need to test for common end-user scenarios with USB:
USB keyboard should be able to access the BIOS setup program.
USB keyboard and mouse should be available during operating system setup, in Windows Safe Mode, and at a command prompt.
USB Boot Device Terminology
| Term | Definition |
| Advanced Configuration and Power Interface (ACPI) | A method for describing hardware interfaces in terms abstract enough to allow flexible and innovative hardware implementations and concrete enough to allow shrink-wrap operating system code to use such hardware interfaces. |
| Basic Input/Output System (BIOS) | The software embedded on a chip located on the computer's main board. The BIOS executes Power On Self Test (POST) to test and initialize the system components and then loads (boots) the operating system. The BIOS also handles the low-level input/output (I/O) to the various peripheral devices connected to the computer. Source: Compaq, Intel, Phoenix BIOS Boot Specification, Version 1.01 |
| Boot device | Any device that must be initialized prior to loading the operating system. This includes the primary input device (keyboard), the primary output device (display), and the initial program load device (floppy drive, hard drive, and so on). An Initial Program Load (IPL) device is one form of a boot device. Source: Compaq, Intel, Phoenix BIOS Boot Specification, Version 1.01 |
| Boot device | A device that can be used by host system firmware to assist in system configuration prior to the loading of the operating system. A non-boot device does not need to be functional until the operating system has loaded. Source: USB Device Class Definition for Human Interface Devices (HID) |
| Extrinsic support | In USB terms, this is device support not specific to any particular computer system. Extrinsic support is not inherent to a system and is typically part of a USB-aware operating environment. For example, the keyboard and mouse services of a virtualized operating system such as Windows 98 provide extrinsic device support. Source: USB PC Legacy Compatibility Specification |
| Legacy mode support | In USB terms, this is USB device support built into, or specific to, a particular computer system. Legacy mode support is inherent to a system and is typically provided by legacy hardware interface emulation. Legacy mode support allows devices to function in an operating environment that is not USB-aware. For example, legacy mode support for a USB keyboard and mouse resides in the system BIOS and presents the keyboard and mouse data via the port 60h/64h/IRQ1/IRQ12 interface. Source: USB PC Legacy Compatibility Specification |
| Power On Self Test (POST) | The initial program loaded by a PC from its firmware. POST normally consists of hardware validation, motherboard device configuration, support installation, setup (the user interface for motherboard device configuration and support installation), and Option ROM scan (for external device configuration, support installation, and any associated user interfaces). POST terminates upon a successful IPL from media. Source: USB PC Legacy Compatibility Specification |
| System Control Interrupt (SCI) | A system interrupt used by hardware to notify the operating system of ACPI events. SCI is an active-low, shareable, level-triggered interrupt. Source: Advanced Configuration and Power Interface Specification |
| System Management (SM) BIOS | A standard interface to management software via data structures through which system attributes are reported. Source: Intel web site glossary at http://developer.intel.com/  |
| System Management Interrupt (SMI) | An operating system-transparent interrupt generated by interrupt events on legacy systems. By contrast, on ACPI systems, interrupt events generate an operating system-visible interrupt that is shareable (edge-style interrupts will not work). Hardware platforms that want to support both legacy operating systems and ACPI systems must support a way of re-mapping the interrupt events between SMIs and SCIs when switching between legacy and ACPI modes. Source: Advanced Configuration and Power Interface Specification |
| USB boot device | A USB HID "Boot/Legacy"-compliant device. It reports its ability to use the boot protocol, or report format, defined in the HID Specification for input devices such as keyboards and mice. Source: USB Device Class Definition for Human Interface Devices (HID) |
Reference Sources:
Advanced Configuration and Power Interface Specification, Revision 1.0 and later
http://www.acpi.info/ 
Compaq, Intel, Phoenix BIOS Boot Specification, Version 1.01
http://www.phoenix.com/ 
USB Common Class Base Specification, Revision 1.0 USB Device Class Definition for Human Interface Devices (HID), Versions 1.0 and 1.1
USB HID Usage Tables, Version 1.0
USB PC Legacy Compatibility Specification, Revision 0.9 or later
USB Specification, Version 1.0 or later
USB Usage Tables for HID Power Devices, Release 1.0
Phone: (503) 264-0590
Fax: (503) 693-7975
http://www.usb.org/developers 