USBdevice an eine VM durchschleusen

Getestet mit Proxmox 4.4

Manchmal ist es Sinnvoll ein USBgerät der Gastmaschine direkt durchzureichen. Z.B. ein Dongle… Die Möglichkeiten die man mit Proxmox hat werden in diesem Howto beschrieben. Es gibt 4 Möglichkeiten USB dem Gast zu übergeben. Zum einen kann man eine bestimmte HardwareID des USBgerätes einer VM zuordnen, somit ist es völlig egal wo man das USB-Gerät am Server anschließt. Zum Zweiten kann man einen USBanschluss des Servers einer VM zuordnen. In dem Fall ist das angeschlossenen Gerät egal, aber der Anschluss am Server muss immer der gleiche sein. Diese Funktion ist für USB 2.0 und auch 3.0 verfügbar. v

Z.B. hier ein Bluetoothstick.

lsusb | grep Bluetooth

Das Ergebniss ist dann:

Bus 003 Device 003: ID 0a5c:21e8 Broadcom Corp. BCM20702A0 Bluetooth 4.0

Das Gerät fügt man dann mit dem qm Befehl hinzu:

qm set 109 -usb0 host=0a5c:21e8

Danach muss man die VM herunterfahren und wieder , ein Reboot funktioniert hier nicht, da das Device initalisiert werden muss. Man natürlich auch mehrere USB-Geräte hinzfügen. Einfach die Nummer hinauf zählen: -usb1, -usb2, usw. Man kann das auch noch mit dem Qemu-Monitor darstellen, SSH oder im Webinterface.

qm monitor 109
Entering Qemu Monitor for VM 109 - type 'help' for help
qm>
qm> info usb
  Device 1.1, Port 1, Speed 12 Mb/s, Product BCM20702A0, ID: usb0

Den Bluetoothstick kann man nun anstecken wo man möchte. Um das Gerät nun auch wieder zu entfernen gibt man folgenden Befehl ein:

qm set 109 -delete usb0

Danach die VM wieder herunter fahren, und Starten.

Versuchen wir nun einen USBport direkt der VM zu übergeben. Hierfür bedienen wir uns wieder dem Qemumonitor. Dieser ist über das Kommando qm monitor <vmid> oder auch über das PVE Webinterface verfügbar. Das Ergeniss hier sieht so aus:

qm monitor 109
Entering Qemu Monitor for VM 109 - type 'help' for help
qm> 
 qm> info usbhost
  Bus 3, Addr 4, Port 6, Speed 12 Mb/s
    Class ff: USB device 0a5c:21e8, BCM20702A0
  Bus 3, Addr 2, Port 10, Speed 1.5 Mb/s
    Class 00: USB device 051d:0002, Back-UPS ES 700G FW:871.O2 .I USB FW:O2 

Wir werden nun den USBport einem Windowsserver 2016 durchreichen wo unser Bluetootstick angeschlossen ist. Beachten müssen hier wir BUS und Port.

qm set 109 -usb0 host=3-6

Nun die VM wieder herunter fahren und neu Starten. Nun kann man auf diesem USBport verschieden Geräte im Betrieb an und abstecken so mit man es von einer PHY Maschine gewöhnt ist. Gerät entfernen, gleicher Vorgang wie vorhin.

Man kann auch ohne jeglichen Konfigurationsaufwand ein USBgerät per Hotplug mit dem Qemumonitor an und abschließen. Der Nachteil: Es ist nicht persistent. Und wieder geht's um unseren Bluetoothstick:

qm> info usbhost
  Bus 3, Addr 6, Port 6, Speed 12 Mb/s
    Class ff: USB device 0a5c:21e8, BCM20702A0
  Bus 3, Addr 2, Port 10, Speed 1.5 Mb/s
    Class 00: USB device 051d:0002, Back-UPS ES 700G FW:871.O2 .I USB FW:O2

Wieder geht es hier nur um das USBport des Hosts, also

qm> device_add usb-host,hostbus=3,hostport=6,id=mein_bt_stick
qm> info usb
  Device 0.1, Port 1, Speed 12 Mb/s, Product BCM20702A0, ID: mein_bt_stick

Wichtig ist wir hier eine ID vergeben, sonst kann das Gerät bei aufendem Gast nicht entfernt werden Und schon ist das USBgerät am Gast verfügbar. Entfernt wird es wieder mit:

qm> device_del mein_bt_stick

Man kann auch sehr konfortabel direkt vom Spiceclient (virt-viewer) jedes beliebige USB-Gerät per Mausklick einbinden. Hierfür muss die VM aber mit Spice konfiguriert sein. Weiters muss mindes, ein USB-Spice-Eintrag in der VMconfig erstellt werden.

nano /etc/pve/qemu-server/109.conf
...
usb0: spice
usb1: spice
...

Die VM muss hierfür natürlich heruntergefahren und neu gestartet werden. Danach kann im Virt-Viewer bequem sein USBgerät ein und Aushängen.


Virt-Viewer gibt es zwar für alle Betriebssysteme, diese Funktion gibt es aber nur in der Linuxversion.