isochronous usb device forwarding with windows 10 and xhci freezes

Bug #1791947 reported by Florian Kaiser
This bug affects 1 person
Affects Status Importance Assigned to Milestone

Bug Description

When I try to forward isochronous usb devices (webcam, HID-Audio) via usbredir into the VM, the devices work for a few minutes then the device stops working and stays that way until a VM reboot or a windows driver reload.
It does not matter if I use qemu-xhci or nec-xhci.
I can gather more information, if its helpful!

Windows build:
windows 10 pro 1803 jun 2018

Linux Version:
Fedora 28
$ uname -a
Linux 4.17.19-200.fc28.x86_64 #1 SMP Fri Aug 24 15:47:41 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Qemu Version:
$ qemu-system-x86_64 -version
QEMU emulator version 2.11.2(qemu-2.11.2-2.fc28)
Copyright (c) 2003-2017 Fabrice Bellard and the QEMU Project developers

Qemu command line:
/usr/bin/qemu-system-x86_64 -machine accel=kvm -name guest=win10,debug-threads=on -S -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-1-win10/master-key.aes -machine pc-q35-2.11,accel=kvm,usb=off,vmport=off,dump-guest-core=off -cpu Skylake-Client-IBRS,ss=on,hypervisor=on,tsc_adjust=on,clflushopt=on,ssbd=on,xsaves=on,pdpe1gb=on,hv_time,hv_relaxed,hv_vapic,hv_spinlocks=0x1fff -m 8192 -realtime mlock=off -smp 4,sockets=4,cores=1,threads=1 -uuid 38b1258e-fea4-41fe-9e21-07c426c5b2b2 -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-1-win10/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=localtime,driftfix=slew -global kvm-pit.lost_tick_policy=delay -no-hpet -no-shutdown -global ICH9-LPC.disable_s3=1 -global ICH9-LPC.disable_s4=1 -boot strict=on -device i82801b11-bridge,id=pci.1,bus=pcie.0,addr=0x1e -device pci-bridge,chassis_nr=2,id=pci.2,bus=pci.1,addr=0x0 -device pcie-root-port,port=0x10,chassis=3,id=pci.3,bus=pcie.0,multifunction=on,addr=0x2 -device pcie-root-port,port=0x11,chassis=4,id=pci.4,bus=pcie.0,addr=0x2.0x1 -device pcie-root-port,port=0x12,chassis=5,id=pci.5,bus=pcie.0,addr=0x2.0x2 -device pcie-root-port,port=0x13,chassis=6,id=pci.6,bus=pcie.0,addr=0x2.0x3 -device qemu-xhci,id=usb,bus=pci.3,addr=0x0 -device virtio-serial-pci,id=virtio-serial0,bus=pci.4,addr=0x0 -drive file=/var/lib/libvirt/images/win10.qcow2,format=qcow2,if=none,id=drive-sata0-0-0 -device ide-hd,bus=ide.0,drive=drive-sata0-0-0,id=sata0-0-0,bootindex=1 -drive file=/var/lib/libvirt/images/en_windows_10_multiple_editions_version_1803_jun_2018.iso,format=raw,if=none,id=drive-sata0-0-1,media=cdrom,readonly=on -device ide-cd,bus=ide.1,drive=drive-sata0-0-1,id=sata0-0-1 -netdev tap,fd=25,id=hostnet0 -device e1000,netdev=hostnet0,id=net0,mac=52:54:00:ab:33:11,bus=pci.2,addr=0x1 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev spicevmc,id=charchannel0,name=vdagent -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=com.redhat.spice.0 -device usb-tablet,id=input0,bus=usb.0,port=1 -spice port=5900,addr=,disable-ticketing,image-compression=off,seamless-migration=on -device qxl-vga,id=video0,ram_size=67108864,vram_size=67108864,vram64_size_mb=0,vgamem_mb=16,max_outputs=1,bus=pcie.0,addr=0x1 -chardev spicevmc,id=charredir0,name=usbredir -device usb-redir,chardev=charredir0,id=redir0,bus=usb.0,port=2 -chardev spicevmc,id=charredir1,name=usbredir -device usb-redir,chardev=charredir1,id=redir1,bus=usb.0,port=3 -device virtio-balloon-pci,id=balloon0,bus=pci.5,addr=0x0 -msg timestamp=on


Tags: usb Edit Tag help
Florian Kaiser (fkaiser)
description: updated
Revision history for this message
Florian Kaiser (fkaiser) wrote :

I tried it again today with qemu master: 19b599f7664b2ebfd0f405fb79c14dd241557452
Unfortunately it did not work better than with qemu 2.11.2

Revision history for this message
Daniel Herzinger (herzing) wrote :

The same bug also occurs with Windows 7 Enterprise SP1.

Revision history for this message
Florian Kaiser (fkaiser) wrote :

How to reproduce:
1. download windows 10 iso april 2018 from here:
2. create a VM with virtmanager with q35 chipset and configure two usb redirect devices
(3. modify xml to use an xhci controller)
4. Install windows
5. redirect a usb soundcard or a usb headset into the VM
5. play some video and observe that it freezes after some time (1-20 mins)

Revision history for this message
sameeh (sameeh-j) wrote :

I have already posted a reply on Qemu-devel since everything posted here is automatically forwarded to Qemu-devel, however, the opposite is not true. So duplicating my reply on Qemu-devel:

How exactly do you use USB redirection: via virt-manager or via spice
client (like remote viewer)?
If via spice-client, on which OS the client runs? In this case running
it with --spice-debug and collecting logs from stdio and stderr could
be helpful.
Can you also provide a usbpcap capture of the usb device's traffic
from within the VM?


Revision history for this message
Florian Kaiser (fkaiser) wrote :

Oh sorry...
I am not subscribed to Qemu-devel yet.

I'm redirecting the usb devices via virt-manager.
Is there anything I can do?

I attached the pcap file!

Thank you very much!

Revision history for this message
Thomas Huth (th-huth) wrote :

The QEMU project is currently considering to move its bug tracking to another system. For this we need to know which bugs are still valid and which could be closed already. Thus we are setting older bugs to "Incomplete" now.
If you still think this bug report here is valid, then please switch the state back to "New" within the next 60 days, otherwise this report will be marked as "Expired". Or mark it as "Fix Released" if the problem has been solved with a newer version of QEMU already. Thank you and sorry for the inconvenience.

Changed in qemu:
status: New → Incomplete
Revision history for this message
Launchpad Janitor (janitor) wrote :

[Expired for QEMU because there has been no activity for 60 days.]

Changed in qemu:
status: Incomplete → Expired
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers