Hardware IDs for Mobile PC Input Devices

Updated: September 23, 2009

This information applies to the following operating systems:
Windows 7
Windows Vista
Windows XP
Windows Server 2003
Windows Server 2008

Mobile PC systems often have built-in input devices such as keyboards and pointing devices. These devices identify themselves to the operating system through a Plug and Play Hardware ID.

In most cases, mobile PC input devices need special drivers to function optimally, but these devices can work in basic mode with generic class drivers. To achieve a better end-user experience, all mobile PC devices must identify themselves to the operating system with two or more IDs. The higher-ranked Device ID must be a unique hardware ID generated by the mobile PC manufacturer. The lower-ranked hardware ID must be the Compatible ID (usually generated by the device), which can be used to load the appropriate generic class driver, if need be.

This new scheme is beneficial to mobile PC manufacturers and customers in these ways:

During system configuration, the system manufacturer can make use of the better-ranked Device ID to load drivers on the system. For example, special drivers can be loaded to configure hot keys on keyboards and to load optimal configurations for pointing devices.

System manufacturers can get their drivers tested and INF files signed and, if desired, placed on the Windows Update site. This is currently not possible, because vendor INF files match the generic Compatible ID. Having drivers available on Windows Update allows important fixes to be quickly propagated to customers, reducing media distribution and support costs.

OEMs can provide drivers for inclusion in future operating system products. When a user performs a clean install of an operating system, the new keyboard and mouse drivers will be loaded automatically. Having a unique hardware ID ensures that the user will have a smoother upgrade experience and can easily get the necessary drivers from Windows Update or similar web sites.

This policy will significantly improve end-user scenarios. Mobile PC manufacturers should invest in this method to identify built-in keyboards and pointing devices with Device IDs in the system ACPI BIOS. Mobile PCs that have hot keys and that require non-Microsoft drivers must identify their keyboards with a unique hardware ID, to load the appropriate drivers.

*
On This Page
General RulesGeneral Rules
Call to ActionCall to Action

General Rules

For every device attached to a PS/2-compatible port, the Microsoft Windows operating system uses the i8042prt port and underlying bus drivers to construct a list of device identification strings for the child device. The Plug and Play Manager uses these device identification strings to match a device to an INF file. Plug and Play device strings are divided into the following types:

A single unique Device ID (often just the first ID in the list of Hardware IDs)

An ordered list of Hardware IDs

An ordered list of Compatible IDs

The Plug and Play Manager always uses all the identifiers in the list when it tries to match a device to an INF file, but it tries to use the most specific identifier first. This allows the setup software to give preference to drivers in the order of their suitability, with those drivers supplied by the vendor being at the top of the priority list.

To locate a driver match, Setup compares the device's Hardware IDs and Compatible IDs (as reported by the device's parent bus driver) to the Hardware IDs and Compatible IDs listed in the INF files on the machine. If Setup does not find a match in any of the installed INF files, it displays the Found New Hardware wizard and asks the user for a driver for the device. If Setup finds more than one match, it assigns a "rank" to each possible driver match. The lower the rank number, the better match the driver is for the device.

For more information on driver development visit Windows Driver Development Kit documentation.

To achieve the scenario described above, the BIOS should report the following:

An exact Device ID to identify the device manufacturer and model.

One or more Hardware IDs to identify an alternative selection of drivers.

One Compatible ID to allow the operating system to load a generic class driver.

In the scenario described earlier, the Device ID will consist of a vendor name and model number to allow for a best match. The format of this ID should be as follows:

ACPI\OOOMMMM

Where OOO is a unique 3-character acronym for the manufacturer's name, and MMMM is a 4-character representation of the model name/number. This unique Device ID is one of the requirements for the manufacturer to place a custom set of drivers on the Windows Update web site. The specified Device ID is only a recommendation, and manufacturers are allowed to add more descriptive Device IDs, if they choose to do so.

System manufacturers are also encouraged to provide more than just a single Device ID. The additional Hardware IDs support the loading of a lower ranked driver on a customer's machine, in cases where drivers that match against Device IDs are not found. The format and ranking of additional Hardware IDs are as follows:

ACPI\OOOIIIMMMM
ACPI\IIIMMMM

In the examples stated earlier, OOO represents a system manufacturer's 3-character ID, III is a 3-character representation of the peripheral hardware vendor, and MMMM is the Model number of the input device.

The Compatible ID is necessary, and all system manufacturers should ensure that it is always present. This ID ensures that a generic class driver is installed for the input device if a better match cannot be found, and it prevents the Add New Hardware Wizard from appearing.

Top of pageTop of page

Call to Action

If you are system manufacturer:

Ensure that each input device selected for a mobile PC generates a Device ID that is unique enough to load a better-ranked driver.

Ensure that the input device always generates a Compatible ID that allows loading the generic class driver (as it does today).

Ensure that better-ranked drivers are well tested, signed, and receive the "Designed for Windows Logo" through WHQL so that they are eligible for the Windows Update web site.

If you are a peripheral hardware vendor:

Develop a unique hardware ID for each input device.

Work closely with the system manufacturers that you supply to ensure that a Device ID and your unique hardware ID are reported to the operating system.

If you do provide an independent set of drivers, work with WHQL to receive the "Designed for Windows" logo; logo'd drivers are eligible for the Windows Update web site.

Additional information is available at Input and HID Architecture and Driver Support.

Send questions and feedback to inputdev@microsoft.com. Please be sure to include your name, title, company name, company type (IHV, ISV, ISP, or OEM), and phone number.


Top of pageTop of page