In order to grasp the concept of a 2Virt device one must think about the steps needed to use a printing service on your computer. One way is to connect to a remote printing service, for which you know it's location (ip address), a system level administrator has provided your user/machine rights to use the printing service and issue a remote call for that file you need to print through the Ethernet Interface system's APIs. Another way is to connect the printer to your computer, install drivers for the new attached device and use legacy software to issue your commands.
A 2Virt device is though to work on the same manner. Someone connects an USB device to your computer, your operating system loads drivers for it and informs you in a real time manner that a new device is available. The only difference is that the someone is actually a cloud component emulating the USB device firmware through virtualization software available infrastructure (emulated UHCI/EHCI controller and so on). The only difference is that the USB interfaces that the device is offering, as well as it's configuration, is what the virtualized environment wanted to add at this moment to the guest machine. It can than unplug the device/interface if access to a specific service is no longer required/desired by the virtual machine.
The advantage of this architecture is that USB has the concept of interfaces captured in it's implementation, and that of the inherent Plug and Play nature of the system, with both the priviled environment and the guest virtual machine being able to remove the device (in a similar manner when a user removes an USB stick from the computer or it safely releases the device). Another ideea behind the implementation is that the system can add only which interfaces it wants to the connected USB device (for example it can add a Web Service interface, but not a Point to Point link interface).
The diagram shows the main steps needed to connect and use a 2Virt device on your guest opperating system. The requirements are listed below:
- emulated USB device firmware - done by the 2Virt device platform provider
- Plug and Play capable operating system for USB devices
- device driver for the USB device for that operating system - also made by the platform provider
- client application that can use the device - demo application implemented by the platform provider, can be used to create thin consumer client.