Axo*_*xon 16 virtual-machine usb qemu
我有一个 USB ADC/DAC 和一个受 HASP 保护的专有数据采集系统,两者都不适用于 linux。我正在尝试使用 qemu 使其在 Windows 虚拟机中工作。以下是设备:
$ lsusb
...
Bus 003 Device 011: ID 0529:0001 Aladdin Knowledge Systems HASP copy protection dongle
Bus 003 Device 010: ID 16b2:1001
$ ls -l /dev/bus/usb/003
...
crw-rw-r-- 1 root qemu 189, 265 ??? 22 18:29 010
crw-rw-rw- 1 root qemu 189, 266 ??? 22 18:29 011
Run Code Online (Sandbox Code Playgroud)
我的用户是 qemu 组的成员。Qemu 命令行:
qemu-system-x86_64 \
-enable-kvm \
-m 2G \
-device usb-ehci,id=usb,bus=pci.0,addr=0x4 \
--device usb-host,vendorid=0x16b2,productid=0x1001 \ # ADC/DAC
-device piix3-usb-uhci,id=usb1,bus=pci.0,addr=0x5 \
--device usb-host,vendorid=0x0529,productid=0x0001 \ # HASP
-usbdevice tablet \
-net nic \
-net bridge,br=br0 \
-vga qxl \
-spice port=5930,disable-ticketing \
-device virtio-serial-pci \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-drive file=/mnt/data/win-patch.img,if=virtio
Run Code Online (Sandbox Code Playgroud)
问题是,两个设备都显示在来宾中,但不起作用。ADC/DAC 应识别为 USB 块驱动器,并在设备列表中显示为一个,但不起作用。我在来宾系统上为我的加密狗安装了 HASP 驱动程序,但 DAS 软件无法识别它。我究竟做错了什么?
Axo*_*xon 23
我终于在另一个论坛上得到了帮助。问题似乎与 Qemu 默认模拟的 I440FX 芯片组中的 USB 总线实现有关(详情请点击此处)。解决方法是模拟 ICH9 芯片组。这是通过添加-M q35
参数来完成的。我还更改了指定 USB 设备的方式,最终命令行如下所示:
qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 2G \
-usb -usbdevice host:16b2:1001 \
-usb -usbdevice host:0529:0001 \
-usbdevice tablet \
-net nic \
-net bridge,br=br0 \
-vga qxl \
-spice port=5930,disable-ticketing \
-device virtio-serial-pci \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-drive file=/mnt/data/win-patch.img,if=virtio
Run Code Online (Sandbox Code Playgroud)
现在一切正常。
2019 年更新:该usb-device
选项已弃用;您可以通过将其替换-usb -device
为十六进制数字并指定产品和供应商 ID来实现相同的效果,同样:
qemu-system-x86_64 \
-enable-kvm \
-M q35 \
-m 2G \
-usb -device usb-host:productid=0x16b2,vendorid=0x1001 \
-usb -device usb-host:productid=0x0529,vendorid=0x0001 \
-usbdevice tablet \
-net nic \
-net bridge,br=br0 \
-vga qxl \
-spice port=5930,disable-ticketing \
-device virtio-serial-pci \
-device virtserialport,chardev=spicechannel0,name=com.redhat.spice.0 \
-chardev spicevmc,id=spicechannel0,name=vdagent \
-drive file=/mnt/data/win-patch.img,if=virtio
Run Code Online (Sandbox Code Playgroud)
参考:https : //git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb2.txt;hb=HEAD