Platform Compatibility for USB Boot Devices

Updated: December 4, 2001
*

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.

PhaseDescriptionComment

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)

--

Top of pageTop of page

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

USBcompat1.gif
Return...

Top of pageTop of page

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

USBcompat2.gif
Return...

Top of pageTop of page

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 optionTypical default settingHow 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.

Top of pageTop of page

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

USBcompat3.gif
Return...

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/ This link leaves the Microsoft.com site, 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.

Top of pageTop of page

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.

Top of pageTop of page

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.

Top of pageTop of page

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 PhaseComment

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.

Top of pageTop of page

USB Boot Device Terminology

TermDefinition

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/ This link leaves the Microsoft.com site

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/tech.htm This link leaves the Microsoft.com site

Compaq, Intel, Phoenix BIOS Boot Specification, Version 1.01

     http://www.phoenix.com/ PlatSS/ products/ specs.html This link leaves the Microsoft.com site

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/index.html This link leaves the Microsoft.com site


Top of pageTop of page