Features/USB1Support

From Spice

(Redirected from SPICE USB Support)

At this points the requirements are not clear. The main ones are unspecified, but could be (in no particular order):

  • booting from usb mass storage devices (disk-on-key, external harddrives)
    • Similar to booting from a remote (on-client-machine) cdrom, partition, etc.
  • accessing usb mass storage devices (subset of accessing a remote directory)
  • web cameras
  • printers (subset of printer remoting)
  • smart phones
  • smart cards
  • digital cameras
  • devices with no driver under linux

Other requirements which are probably not main but still not defined:

  • usb serial devices
  • audio devices (output/input)
  • keyboard and mice (extra keys and strange keyboard support is also fixable in spice itself)
    • Only works if there are two e.g. keyboards connected to the client (one to be used by the client, one by the guest)

The implementations we are considering include:

  • specific solutions for top requirements, don't do any usb remoting
    • usb 2.0 is hard, possibly not worth it
    • usb 1.1 is easy but doesn't cover the top requirements
  • implement usb 1.1 and specific solutions for top requirements
    • support all isoteric low bandwidth devices (possible customer need)
    • more work
  • investigate usb 2.0 support

Requirement/Solution matrix:

specialized (requires client driver) 1.1 only + specialized 2.0
Boot partial/good (general boot from file/device) + +
Mass Storage + (general remote fs remoting) + (same) +
Printing + + (same or 1.1 guest driver based) +
Webcam + (better performance) + (direct 1.1 or specialized) +
Smart cards - + +
Smart phones - + (low speed) +
Keyboard/Mice - + +

For actual usb support we are considering the following [[1]] based solution:

  • client to host use usb2ip, wrapped in a spice channel w or w/o authentication
  • host to guest uses qemu usb 1.1 and we develop usb 2.0 support (or not)

Qemu current usb support:

  • booting from a local iso as if it was a usb mass storage device (requires Seabios 0.6.0. the current Seabios in RHEL-6 (0.5.1) does not support it)
    • qemu-system-x86_64 -cpu kvm64 -usb -usbdevice disk:/store/iso/Fedora-12-x86_64-Live.iso
    • git clone git://git.linuxtogo.org/home/kevin/seabios.git seabios

Other vm's and remoting solutions implementing this:

Virtual box support according to the [[2]] page: (available only in the closed source version)

  • USB support
    • VirtualBox implements a virtual USB controller and supports passing through USB 1.1 and USB 2.0 devices to virtual machines.
  • USB over RDP
    • This is a combination of the RDP server and USB support allowing users to make USB devices available to virtual machines running remotely.

VMWare?