USB3 redirection

abock

Active Member
Aug 25, 2016
3
0
41
Hamburg
www.cen.uni-hamburg.de
Hallo,

wir haben ein Cluster aus 3 Knoten unter Proxmox VE 4.2:

# pveversion -v
proxmox-ve: 4.2-60 (running kernel: 4.4.13-2-pve)
pve-manager: 4.2-17 (running version: 4.2-17/e1400248)
pve-kernel-4.4.6-1-pve: 4.4.6-48
pve-kernel-4.4.13-1-pve: 4.4.13-56
pve-kernel-4.4.8-1-pve: 4.4.8-52
pve-kernel-4.4.13-2-pve: 4.4.13-58
pve-kernel-4.4.15-1-pve: 4.4.15-60
pve-kernel-4.4.10-1-pve: 4.4.10-54
lvm2: 2.02.116-pve2
corosync-pve: 2.4.0-1
libqb0: 1.0-1
pve-cluster: 4.0-43
qemu-server: 4.0-85
pve-firmware: 1.1-8
libpve-common-perl: 4.0-72
libpve-access-control: 4.0-19
libpve-storage-perl: 4.0-56
pve-libspice-server1: 0.12.8-1
vncterm: 1.2-1
pve-qemu-kvm: 2.6-1
pve-container: 1.0-72
pve-firewall: 2.0-29
pve-ha-manager: 1.0-33
ksm-control-daemon: 1.2-1
glusterfs-client: 3.5.2-2+deb8u2
lxc-pve: 2.0.3-4
lxcfs: 2.0.2-pve1
cgmanager: 0.39-pve1
criu: 1.6.0-1
zfsutils: 0.6.5.7-pve10~bpo80


Darauf laufen u.a. Windows 7 und 10 VMs (die folgende Config ist von Win10):
# cat /etc/pve/qemu-server/106.conf
agent: 1
bootdisk: virtio0
cores: 4
ide0: local:iso/virtio-win-0.1.118.iso,media=cdrom,size=55632K
ide2: local:iso/SW_DVD5_WIN_ENT_LTSB_10_2015_64BIT_German_MLF_X20-26602.ISO,media=cdrom
memory: 4096
name: prox-win10-00
net0: virtio=52:9E:C5:6E:6A:83
numa: 0
ostype: win8
scsihw: virtio-scsi-pci
smbios1: uuid=d1708d78-6daf-46b6-b9cf-a93220c1a69e
sockets: 1
tablet: 0
usb0: spice
vga: qxl
virtio0: EQL1:vm-106-disk-1,cache=writeback,size=64G

Die VirtIO Treiber (viostor, vioser, NetKVM, qxl etc.) und der QEMU Guest-Agent sind alle vom ISO v.0.1.118 installiert.


Der Client ist ein Intel NUC mit aktuellem Archlinux, auf dem virt-viewer und usbredir installiert sind:
# pacman -Ss virtviewer
community/virtviewer 4.0-1 [Installiert]
# pacman -Ss usbredir
community/usbredir 0.7-1 [Installiert]

Dummerweise hat der NUC ausschließlich USB3 Ports, was dazu führt, dass die Windows VMs einen angeschlossenen USB3 Stick nicht erkennen. In den Geräteeigenschaften findet sich "Unbekanntes USB Gerät (ungültige Gerätebeschreibung)". Schließe ich den Stick über einen USB2 Hub an, wird er sauber erkannt. Geschwindigkeiten um die 1-2MB/s für's Lesen und Schreiben sind dann zwar nicht berauschend aber für unseren Anwendungsfall ausreichend.

Aktiviere ich in der VM Config USB3 ("qm set 106 -usb0 spice,usb3=yes") startet sie nicht mehr und Proxmox meldet folgenden Fehler:

kvm: -device usb-redir,chardev=usbredirchardev0,id=usbredirdev0,bus=ehci.0: Bus 'ehci.0' not found
TASK ERROR: start failed: command '/usr/bin/kvm -id 106 -chardev 'socket,id=qmp,path=/var/run/qemu-server/106.qmp,server,nowait' -mon 'chardev=qmp,mode=control' -pidfile /var/run/qemu-server/106.pid -daemonize -smbios 'type=1,uuid=d1708d78-6daf-46b6-b9cf-a93220c1a69e' -name prox-win10-00 -smp '4,sockets=1,cores=4,maxcpus=4' -nodefaults -boot 'menu=on,strict=on,reboot-timeout=1000' -vga qxl -vnc unix:/var/run/qemu-server/106.vnc,x509,password -no-hpet -cpu 'kvm64,hv_spinlocks=0x1fff,hv_vapic,hv_time,hv_reset,hv_vpindex,hv_runtime,hv_relaxed,+lahf_lm,+sep,+kvm_pv_unhalt,+kvm_pv_eoi,enforce' -m 4096 -k de -device 'pci-bridge,id=pci.2,chassis_nr=2,bus=pci.0,addr=0x1f' -device 'pci-bridge,id=pci.1,chassis_nr=1,bus=pci.0,addr=0x1e' -device 'piix3-usb-uhci,id=uhci,bus=pci.0,addr=0x1.0x2' -device 'nec-usb-xhci,id=xhci,bus=pci.1,addr=0x1b' -chardev 'spicevmc,id=usbredirchardev0,name=usbredir' -device 'usb-redir,chardev=usbredirchardev0,id=usbredirdev0,bus=ehci.0' -chardev 'socket,path=/var/run/qemu-server/106.qga,server,nowait,id=qga0' -device 'virtio-serial,id=qga0,bus=pci.0,addr=0x8' -device 'virtserialport,chardev=qga0,name=org.qemu.guest_agent.0' -spice 'tls-port=61001,addr=localhost,tls-ciphers=DES-CBC3-SHA,seamless-migration=on' -device 'virtio-serial,id=spice,bus=pci.0,addr=0x9' -chardev 'spicevmc,id=vdagent,name=vdagent' -device 'virtserialport,chardev=vdagent,name=com.redhat.spice.0' -device 'virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x3' -iscsi 'initiator-name=iqn.1993-08.org.debian:01:5196ce6457' -drive 'file=/var/lib/vz/template/iso/virtio-win-0.1.118.iso,if=none,id=drive-ide0,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.0,unit=0,drive=drive-ide0,id=ide0,bootindex=200' -drive 'file=/var/lib/vz/template/iso/SW_DVD5_WIN_ENT_LTSB_10_2015_64BIT_German_MLF_X20-26602.ISO,if=none,id=drive-ide2,media=cdrom,aio=threads' -device 'ide-cd,bus=ide.1,unit=0,drive=drive-ide2,id=ide2,bootindex=201' -drive 'file=/dev/eql1-vdisk01/vm-106-disk-1,if=none,id=drive-virtio0,cache=writeback,format=raw,aio=threads,detect-zeroes=on' -device 'virtio-blk-pci,drive=drive-virtio0,id=virtio0,bus=pci.0,addr=0xa,bootindex=100' -netdev 'type=user,id=net0,hostname=prox-win10-00' -device 'virtio-net-pci,mac=52:9E:C5:6E:6A:83,netdev=net0,bus=pci.0,addr=0x12,id=net0,bootindex=300' -rtc 'driftfix=slew,base=localtime' -global 'kvm-pit.lost_tick_policy=discard'' failed: exit code 1


Hat jemand eine Lösung für unser Problem? Es geht uns nicht um die USB3 Geschwindigkeit, sondern primär um die Kompatibilität.


Vielen Dank und viele Grüße
Andreas
 
Hallo,

die USB3 Option funktioniert derzeit mit SPICE leider nicht, daher ist der Workaround mit dem usb2 hub (oder alternativ ein usb2 verlängerungskabel) wahrscheinlich der einzige mögliche.
Aber danke, dass sie uns darauf aufmerksam machen, in so einem fall sollten wir eher eine vernünftige fehlermeldung ausgeben.
 
Hi,

das sind leider schlechte Nachrichten.

Wo liegt denn die Ursache des Problems? Wenn ich https://bugzilla.redhat.com/show_bug.cgi?id=949514 verfolge, ist ein möglicherweise ähnlich gelagertes Problem bei Redhat im Paket qemu-kvm mittlerweile behoben. Sind die Qemu Packages in Debian Jessie zu alt oder nicht gepatcht? Plant Proxmox neuere/gepatchte Versionen über das eigene Repository zu verteilen? Spice selber und usbredir scheinen ja USB3 prinzipiell zu unterstützen.

Falls es hier über kurz oder lang keine Lösung gibt: Hat jemand eine Idee, wie man Linux dazu bringt, USB3 Schnittstellen auf USB2 zu drosseln? Geht das überhaupt? In Internet Quellen fand ich Hinweise, dass die Umschaltung über Hardware gelöst wird und von der Software unabhängig ist.

Viele Grüße
Andreas
 
Der Bugreport bezieht sich auf USB3 passthrough im allgemeinen (was bei uns funktioniert), nicht auf SPICE USB redirection.
Wir haben unsere eigene Qemu Version (eigentlich immer aktuelle Releases + Security patches) im moment auf version 2.6

Ich vermute das SPICE einfach einen ehci bzw. uhci controller erwartet/braucht um zu kommunizieren (usb3 braucht einen xhci controller, der aber ganz anders funktioniert)

wie gesagt, der workaround mittels hub (bzw auch ein usb2 verlängerungskabel sollte gehen) scheint die einzige möglichkeit zu sein.
 
mhmm.. nach nochmaligem durchschauen und ausprobieren scheint es mit usb3 doch zu funktionieren....
ich werde einen patch auf unsere liste schicken um es zu ermöglichen
 

About

The Proxmox community has been around for many years and offers help and support for Proxmox VE, Proxmox Backup Server, and Proxmox Mail Gateway.
We think our community is one of the best thanks to people like you!

Get your subscription!

The Proxmox team works very hard to make sure you are running the best software and getting stable updates and security enhancements, as well as quick enterprise support. Tens of thousands of happy customers have a Proxmox subscription. Get yours easily in our online shop.

Buy now!