我有一台 iPod Touch 5G 和一台 Windows 7 VM。我试图将 iPod Touch 传递到 VM,以便 Windows 可以识别它,但我在 qemu 监视器中收到以下错误。
(qemu) usb_add host:05ac:12aa Warning: speed mismatch trying to attach usb device "iPod" (high speed) to bus "usb-bus.0", port "2.1" (full speed) (qemu) qemu-system-x86_64: Warning: speed mismatch trying to attach usb device "iPod" (high speed) to bus "usb-bus.0", port "2.1" (full speed) qemu-system-x86_64: Warning: speed mismatch trying to attach usb device "iPod" (high speed) to bus "usb-bus.0", port "2.1" (full speed) (qemu)
答案1
花了 2-3 天时间后,我找到了解决方案。真正的开源软件需要开发更好的软件使用文档!
出现上述 usb 速度不匹配警告是因为我们正在加载较旧的 usb 主机控制器驱动程序(usb-bus = usb1.x),而设备是 usb2.x/usb-ehci 或 usb3.x/usb-xhci。因此发生 usb 速度不匹配。
与 qemu 命令一起加载 usb 主机控制器。
qemu-system-x86_64 --enable-kvm -m 4G -monitor stdio -usb -device nec-usb-xhci,id=xhci -device usb-ehci,id=ehci /pathtovirtdiskfile.vmdk
通过运行以下命令在 qemu 终端中查看 usb 主机设备。
info usbhost
苹果设备将列在这里,如下所示:
Bus 3, Addr 8, Port 3, Speed 480 Mb/s Class 00: USB device, iPhone
将上述命令返回的 usb 主机设备添加到客户系统。
device_add usb-host,hostbus=3,hostaddr=8,id=usb2.0,bus=ehci.0,port=3
现在苹果设备将出现在客户系统上。
答案2
我想改进 sccott 的解决方案。
我将其附加到我的 qemu 启动参数上,其优点是它通过 vendorid/productid 匹配,因此无论 usb 插入何处/何时,它都会自动工作。
-device usb-ehci,id=ehci -device usb-host,vendorid=0x05ac,productid=0x12a8,bus=ehci.0,port=1
对每个标志进行简要说明。
-device usb-ehci,id=ehci
创建一个苹果设备可以连接的 ehci usb 控制器。-device usb-host,vendorid=0x05ac,productid=0x12a8
通过供应商 ID 和产品 ID 传递 USB 设备。(这个比较棘手,因为有类似的语法,-usbdevice host:05ac:12a8
但不接受后面的参数bus=ehci.0
将苹果设备连接到 USB2.0 集线器。正如 Sccott 所说,这将消除速度不匹配警告。port=1
苹果设备从单个地址(USB 线)有多个 USB 端口,因此我们需要选择第一个端口进行同步。