USB Sharing

Updated: April 19, 2023

The Shared USB framework allows guest and host applications to share access to USB devices. Specifically, it provides a virtual device that lets guests access USB devices connected to the hypervisor host.

The virtual device emulates an eXtensible Host Controller Interface (xHCI) controller, which means guests can use existing xHCI drivers to interact with USB devices and perform class-specific operations, such as bulk data transfers for mass storage devices. The USB framework uses an enumerator to perform guest and USB device discovery and to expose an interface that allows host applications to monitor and respond to device insertions and removals.

Note: This framework is considered experimental because the virtual device interface or the guest OS components that use this interface might change. Thus, the guest or host components may require updates in future releases.

This chapter explains how the framework architecture allows the hypervisor to manage interaction between guests and USB devices, how to configure the USB device in a VM to make it available to a guest, and how to add the necessary framework components to the guest and host.