usbvfiod 0.2.0

A vfio-user server for USB pass-through.
Documentation
[![Hercules CI](https://hercules-ci.com/api/v1/site/github/account/cyberus-technology/project/usbvfiod/badge)](https://hercules-ci.com/github/cyberus-technology/usbvfiod/status)

# usbvfiod

**usbvfiod** is a Rust-based tool designed to enable USB device
passthrough to [Cloud
Hypervisor](https://github.com/cloud-hypervisor/cloud-hypervisor)
virtual machines using the [vfio-user
protocol](https://www.qemu.org/docs/master/interop/vfio-user.html). Other
VMMs might also work, but are currently not the main target.

This project is under active development. We are planning to work on this
project in the following order:

1. **Validating our Assumptions** (Done)
   - We are looking for suitable libraries to use and finalize our design.
1. **Towards USB Storage Passthrough** (Done)
   - We build up a virtual XHCI controller and the necessary plumbing
     to pass-through USB devices from the host.
   - Our initial test target will be USB storage devices.
1. **Broaden Device Support** (Done)
   - We broaden the set of USB devices we support and actively test.
   - Our current focus is enabling USB-2 devices and devices with interrupt
     endpoints.
1. **Hotplug Devices** (Done)
   - We enable attach and detach of exposed devices during runtime.
1. **Stability & Error Recovery** (Done)
   - We seek out points where we currently panic but should not have to panic.
1. **Windows Guest Support** (🚧 **Ongoing** 🚧)
   - Enable all features required for the Windows xHCI driver to interact with
     devices through the controller.
1. **Everything Beyond**
   - Many topics remain open. We stay flexible regarding upcoming features.
   - Missing features include isochronous endpoint support, non-Linux Host
     support, and support for other VMMs than Cloud Hypervisor.

If you want to use this code in production and need professional support,
please [get in touch](https://cyberus-technology.de/en/contact).

## Documentation

Find the overview of documentation [here](./docs/overview.md).

## Funding

This open-source project was developed within the *Edge Gateway Platform* project and is sponsored by **secunet Security Networks AG**. 
This project has received public funding from the **European Union** NextGenerationEU within the Important Project of Common European Interest – Cloud Infrastructures and Services (IPCEI-CIS) under grant agreement 13IPC022.

<p align="center">
  <img alt="Bundesministerium für Wirtschaft und Energie (BMWE)-EU and secunet funding logo" src="docs/images/logo_sponsored_funding_ic_sec.png" width="400"/>
</p>