USB Device Enumeration via Host OS Detection

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

USB device enumeration processes vary across different operating systems, making it challenging for a USB device to reliably perform enumeration on multiple host OS types without interference from the BIOS stage and to be customer-configurable.

Innovation Solution

A USB device method that identifies the host OS type and executes specific enumeration processes based on the detected OS, using a vendor-specific ID to prevent BIOS interference and allowing for customer-configurable enumeration flows.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Device complexity

If a USB device uses a single enumeration flow to work with all OS types, then the device complexity is reduced, but the reliability of enumeration across different OS types deteriorates

Engineering Contradiction:
Improveenumeration process complexityVSAvoidenumeration reliability
Core Design Contradiction:
Device complexityVSReliability

Solution Approach 1:

The USB device dynamically selects and executes different enumeration processes based on the detected OS type. The device contains multiple enumeration processes (first, second, and third processes) and chooses which one to execute depending on whether the host is running Windows Vista/7, Windows XP, or other OS types. This dynamic adaptation resolves the contradiction by making the enumeration process flexible rather than fixed.

Inventive Principle:
Principle #15Dynamics

Solution Approach 2:

The device changes its enumeration behavior parameters based on the detected OS type. By detecting the OS type first and then selecting the appropriate enumeration process, the device adapts its operational parameters to match the host environment, ensuring reliable enumeration across different OS types while managing complexity through structured process selection.

Inventive Principle:
Principle #35Parameter changes

2Adaptability or versatility

If the USB device performs OS detection flow, then the adaptability to different OS types is improved, but interference from the BIOS stage worsens

Engineering Contradiction:
ImproveOS type adaptabilityVSAvoidBIOS stage interference
Core Design Contradiction:
Adaptability or versatilityVSObject-affected harmful factors

Solution Approach 1:

The device performs preliminary detection to determine whether the host is in BIOS stage or OS stage before proceeding with OS type detection. By checking the stage first and only performing OS detection when appropriate (not during BIOS stage), the device avoids BIOS interference while maintaining OS adaptability. This preliminary check prevents harmful BIOS-stage actions from interfering with the OS detection process.

Inventive Principle:
Principle #10Preliminary action

3Reliability

If the USB device supports multiple enumeration processes for different OS types, then the reliability of enumeration is improved, but the device complexity increases

Engineering Contradiction:
Improveenumeration reliabilityVSAvoidenumeration process complexity
Core Design Contradiction:
ReliabilityVSDevice complexity

Solution Approach 1:

The enumeration functionality is segmented into distinct processes for different OS types. The device contains a first enumeration process for Windows Vista/7, a second process for Windows XP, and a third process for other OS types. Each process is optimized for its target OS, improving reliability while the segmentation allows independent management of each process, preventing the overall complexity from becoming unmanageable.

Inventive Principle:
Principle #1Segmentation

4Ease of operation

If the USB device allows BIOS stage enumeration, then the ease of operation is improved, but the reliability of OS-specific enumeration deteriorates

Engineering Contradiction:
Improvedevice accessibilityVSAvoidOS-specific enumeration reliability
Core Design Contradiction:
Ease of operationVSReliability

Solution Approach 1:

The device performs a preliminary check to determine the host stage (BIOS or OS) before proceeding with enumeration. When in BIOS stage, the device skips OS-specific enumeration and waits for OS stage. This preliminary action maintains ease of operation by allowing the device to be accessible in BIOS stage while ensuring that reliable OS-specific enumeration only occurs when the host is in the appropriate OS stage.

Inventive Principle:
Principle #10Preliminary action

Data Source

PatentUS8661164B2Method of USB device enumeration including detecting the operating system type of the USB host
Publication Date: 2014.02.25 COMM ADVANCES LLC
  • US8661164B2 patent drawing
  • US8661164B2 patent drawing
  • US8661164B2 patent drawing

AI summary

A USB device enumeration process implemented in a USB device is described. The USB device first detects a type of the operating system (OS) of the USB host connected to the device, and performs device enumeration using a process selected from multiple stored processes based on the detected host OS type. To detect the host OS type, the USB device first presents itself to the host as a USB MSD or HID, performs device enumeration to collect OS behavior factors from the host, and determines the OS type from the OS behavior factors. Thereafter, the USB device performs actual device enumeration by presenting itself as the USB device it actually is, using an enumeration process specific to the detected host OS type. The multiple stored enumeration processes are customer configurable. Further, a method is provided to stop an enumeration process when the host is in a BIOS stage.