WebUSB Access for Redirected USB Devices in VDI
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In virtual desktop infrastructure (VDI) environments, USB device redirection technologies face challenges in enabling WebUSB access for redirected USB devices, as many USB devices are not designed to use the Winusb.sys function driver, limiting browser-based access to these devices.
Innovation Solution
A server-side agent modifies the device descriptors during enumeration to force the loading of Winusb.sys as the function driver, enabling WebUSB access by reporting a subsequent USB standard version and simulating the presence of a Microsoft OS feature descriptor with a compatible ID of WINUSB, thereby integrating the device into the WebUSB API.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If USB device redirection is implemented in VDI environments, then USB devices become accessible within virtual desktops, but WebUSB access is not enabled for redirected devices because they do not use the Winusb.sys function driver
Solution Approach 1:
The patent introduces a server-side agent as an intermediary component that intercepts and modifies device descriptors during USB device enumeration. This agent acts as a mediator between the redirected USB device and the Windows USB subsystem, forcing the Winusb.sys function driver to be loaded regardless of the device's original driver configuration, thereby enabling WebUSB access without modifying the actual USB device hardware or firmware
Solution Approach 2:
The patent modifies specific parameters within the device descriptor structure, particularly changing the bcdUSB version parameter from the original value to 0x0210 or higher. This parameter change triggers the Windows USB subsystem to load the Winusb.sys function driver, which provides WebUSB API support. The modification transforms the device's interface parameters to enable compatibility with WebUSB requirements
2Adaptability or versatility
If device descriptors are modified to force Winusb.sys loading, then WebUSB access is enabled, but the original device descriptor information is altered
Solution Approach 1:
The server-side agent performs preliminary modification of the device descriptor during the USB device enumeration process, before the device is fully recognized by the Windows subsystem. By intercepting the enumeration process and modifying the descriptor at this early stage, the agent ensures that the Winusb.sys driver is loaded with the correct device information intact, preventing information loss while enabling WebUSB compatibility
Solution Approach 2:
The patent creates a modified copy of the device descriptor that includes the necessary changes to enable Winusb.sys loading, while preserving the original device's functional characteristics. The server-side agent works with a copy of the descriptor structure, modifying only the necessary fields (bcdUSB version, MS OS feature descriptor) without altering the core device identification and functional parameters
3Adaptability or versatility
If Winusb.sys is forced as the function driver, then any USB device can be accessed via WebUSB API, but devices not designed for Winusb.sys may have compatibility issues
Solution Approach 1:
The patent applies universality by forcing the Winusb.sys function driver to be loaded for all redirected USB devices, regardless of their original driver configuration or intended usage. This universal approach enables any USB device to be accessed through the WebUSB API from a browser, providing multi-functional access capability. The server-side agent ensures that the driver loading process respects device capabilities while maintaining universal accessibility
Data Source
AI summary
WebUSB access can be managed for local and redirected USB devices. To enable WebUSB access to a redirected USB device, the server-side agent can force the Winusb.sys function driver to be loaded on the device stack of the USB device by modifying the device's descriptors that are reported during enumeration. To enable WebUSB access to a local USB device, a hook driver can perform similar modifications during enumeration to thereby force the Winusb.sys function driver to be loaded as the function driver on the device stack. The agent or hook driver can also block WebUSB access to a USB device by removing the WebUSB platform capability descriptor during enumeration and/or by blocking requests to access the USB device that originate from a browser process.


