Host Operating Systems

The major host operating systems (OS), such as Microsoft Windows, Apple Mac OS and Linux, recognize a wide range of USB devices that belong to standard classes defined by the USB Implementers Forum. Upon connection of the USB device, any host operating system performs the following general steps:

  1. Enumerating the USB device to learn about its characteristics.
  2. Loading a proper driver according to its characteristics’ analysis in order to manage the device.
  3. Communicating with the device.

Step 2, where a driver is loaded to handle the device is performed differently by each major host operating system. Usually, a native driver provided by the operating system manages a device complying to a standard class (for instance, Audio, HID, MSC, Video, etc.) In this case, the native driver loading process is transparent to you. In general, the OS won’t ask you for specific actions during the driver loading process. On the other hand, a vendor-specific device requires a vendor-specific driver provided by the device manufacturer. Vendor-specific devices don’t fit into any standard class or don’t use the standard protocols for an existing standard class. In this situation, the OS may explicitly ask for your intervention during the driver loading process.

During step 3, your application may have to find the USB device attached to the OS before communication with it. Each major OS uses a different method to allow you to find a specific device.

This page gives you the necessary information in case your intervention is required during the USB device driver loading process and in case your application needs to find a device attached to the computer. For the moment, this chapter describes this process only for the Windows operating system.