Go to file
2012-10-21 14:59:40 +02:00
dom0 dom0/qvm-usb: bugfix 2012-10-21 14:59:39 +02:00
misc dom0/qvm-usb: detach operation appears to work 2012-10-21 14:59:39 +02:00
network vm/network: do not fail service on failed xenstore-read 2012-10-13 11:47:32 +02:00
qrexec vm/qrexec: fix race between child cleanup and select call 2012-10-04 05:44:18 +02:00
qubes_rpc Merge branch 'hvm-for-master' 2012-10-17 21:41:03 +02:00
rpm_spec dom0/spec: add R: python-lxml for pretty print 2012-10-19 02:21:41 +02:00
test dvp/qvm-usb: ignore whitespaces when comparing output of qvm-usb tools 2012-10-21 14:59:36 +02:00
u2mfn gitignores 2011-03-23 19:57:48 -04:00
vchan win/vchan: reset the evtchn buffer in case of overflow 2012-09-16 23:32:56 +02:00
vm-init.d vm/prepare-dvm: wait for Xorg in more deterministic way (#636) 2012-07-22 01:23:45 +02:00
vm-systemd vm/systemd: force exit status 0 in qubes-sysinit 2012-10-15 02:33:36 +02:00
.gitignore gitignore files - add build products 2011-03-06 14:06:24 +01:00
install-pvusb-backend.sh dvp/qvm-usb: fixed global install script 2012-10-21 14:59:39 +02:00
install-pvusb-dom0.sh dom0/qvm-usb: detach operation appears to work 2012-10-21 14:59:39 +02:00
install-pvusb-frontend.sh dvp/qvm-usb: reworked installation scripts for usbvm and added one for appvms 2012-10-21 14:59:37 +02:00
install-pvusb-xen.tgz dvp/qvm-usb: fixed global install script 2012-10-21 14:59:39 +02:00
install-pvusb.sh dvp/qvm-usb: support multiple backend vms in the installer 2012-10-21 14:59:40 +02:00
LICENSE Added LICENSE 2010-04-05 21:21:27 +02:00
Makefile vm: kernel-placeholder package to inhibit real kernel pkg in VM (#645) 2012-07-23 23:17:50 +02:00
README.pvusb dom0/qvm-usb: detach operation appears to work 2012-10-21 14:59:39 +02:00
version_dom0 version 1.7.46 2012-09-27 11:03:26 +02:00
version_vaio_fixes sony-vaio-fixes v1.6.1 2011-07-25 01:49:07 +02:00
version_vm version 1.7.46 2012-09-27 11:03:26 +02:00

Installation
~~~~~~~~~~~~

In dom0, once:
 qvm-create -l red usbvm

 # FIXME: use your own PCI device IDs
 qvm-pci -a usbvm 00:1d.0
 qvm-pci -a usbvm 00:1d.1
 qvm-pci -a usbvm 00:1d.2
 qvm-pci -a usbvm 00:1d.7

In dom0, after each dom0 reboot:
 sudo ./install-pvusb-dom0.sh
 qvm-start usbvm

In dom0, after each usbvm reboot:
 usbvm_xid=`xl list | awk '($1=="usbvm"){print $2}'`
 xenstore-write /local/domain/${usbvm_xid}/qubes-usb-devices ''
 xenstore-chmod /local/domain/${usbvm_xid}/qubes-usb-devices n0 b${usbvm_xid}

In usbvm, after each reboot:
 sudo ./install-pvusb-backend.sh 

In appvms, after each reboot:
 sudo ./install-pvusb-frontend.sh 

In dom0, after each usbvm and appvm reboot (FIXME):
 sudo ../pvusb-scripts/initpv.py <backend-id> <frontend-id> <device-id>

After the above is done:
 'qvm-usb -l' in usbvm displays a list of local USB devices
 'lsusb' in appvm displays an entry for the root hub

Attach
~~~~~~

In dom0:
 qvm-usb -a [-b <usbvm-name>] [-f <frontend-controller> [--p <frontend-port>]] [--no-auto-detach] <vm-name> <controller>-<port>

Defaults:
 usbvm-name = 'usbvm'
 frontend-controller = 0
 frontend-port = first unused between 1 and 8

Example:
 qvm-usb -a netvm usbvm:4-1

List
~~~~

In dom0:
 qvm-usb -l

Example output:
 usbvm:4-1 1234:5678 My Bluetooth Dongle
 usbvm:4-2 5678:1234 My Wireless Adapter (attached to 'netvm' as '0-1')

Detach
~~~~~~

In dom0:
 qvm-usb -d <vm-name>:<vusb-controller>-<vusb-port>
 qvm-usb -d <vm-name>

Example:
 qvm-usb -d netvm:0-1

Known issues
~~~~~~~~~~~~

* The content of backend/vusb does not get cleaned on domain shutdown (no impact on functionality)
* System keyboard / mouse are listed and can be detached away
* Virtual USB devices (ones created by PVUSB frontend) may be listed
* The installation/configuration is not persistent, not retained between reboots
* No logging / audit trail?
* When an attached device is physically unplugged, USB port remains mapped but not displayed in the list. If device is plugged back it continues to work. Unlisted device cannot be detached.
* We are not attaching actual devices, but USB ports (different behavior from VMWare, might be confusing)
* After device is detached from the frontend and returned back to the backend it is not usable there