USB Device Enumeration via Host OS Detection
Find Innovative SolutionsGenerate 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
Engineering 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
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.
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.
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
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.
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
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.
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
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.
Data Source
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.


