我有带 GPU 直通功能的 Windows XP VM,还想将 USB 键盘和鼠标传递给它。我正在使用以下方法进行 USB 直通:
-device usb-host,vendorid=0x1e7d,productid=0xafca \
-device usb-host,vendorid=0x046d,productid=0xc53d \
并出现如下错误:
Warning: speed mismatch trying to attach usb device "ROCCAT Kone Air" (full speed) to bus "usb-bus.0", port "1" (high speed)
我认为问题可能出在虚拟机正在运行的 usb-ehci 控制器上。当我将 usb 控制器更改为 qemu-xhci 时,usb 设备根据控制台正确传递,但 windows xp 没有 xhci 的驱动程序。
我的完整虚拟机:
qemu-system-x86_64 \
-nodefaults \
-machine pc-i440fx-5.2,accel=kvm,usb=off,vmport=off,dump-guest-core=off \
-name "Windows XP",debug-threads=on \
-cpu Skylake-Client-IBRS,ss=on,vmx=on,pdcm=on,hypervisor=on,tsc-adjust=on,clflushopt=on,umip=on,stibp=on,arch-capabilities=on,xsaves=on,pdpe1gb=on,ibpb=on,amd-stibp=on,skip-l1dfl-vmentry=on,pschange-mc-no=on,hv-time,hv-relaxed,hv-vapic,hv-spinlocks=0x1fff \
-smp sockets=1,cores=4,threads=2 \
-m 4G \
-vga none \
-drive file=/dev/disk/by-id/ata-C300-MTFDBAK128MAG_0000000011250313A6FD,format=raw,cache=none \
-device vfio-pci,host=05:00.0,multifunction=on,x-vga=on \
-device vfio-pci,host=05:00.1,multifunction=on \
-device usb-ehci \
-device usb-host,vendorid=0x1e7d,productid=0xafca \
-device usb-host,vendorid=0x046d,productid=0xc53d \
-net nic,model=rtl8139 \
-net user \
我有哪些选项可以将全速 USB 设备传递给该虚拟机?
提前致谢。
答案1
好吧,我搞错了速度。全速是 12Mbps,高速是 480Mbps,这意味着我需要兼容 USB 1.1 版的 USB 控制器,并且适用于 WinXP 和 i440fx 机器piix3-usb-uhci
。替换后,usb-ehci
一切piix3-usb-uhci
正常。