나는 리눅스에서 작동하지 않는 USB ADC / DAC와 HASP로 보호 된 독점 데이터 수집 시스템을 가지고 있습니다. 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
내 사용자는 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
문제는 두 장치가 모두 게스트에 표시되지만 작동하지 않는다는 것입니다. ADC / DAC는 USB 블록 드라이브로 식별되어야하며 장치 목록에 하나로 표시되지만 작동하지 않습니다. 게스트 시스템에 동글 용 HASP 드라이버를 설치했지만 DAS 소프트웨어가이를 인식하지 못합니다. 내가 도대체 뭘 잘못하고있는 겁니까?
답변
나는 다른 포럼에서 마침내 도움을 받았다. 문제는 기본적으로 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
이제 모든 것이 완벽하게 작동합니다.
2019 년 업데이트 :이 usb-device
옵션은 더 이상 사용되지 않습니다. 다음 -usb -device
과 같이 16 진수로 제품 및 공급 업체 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
참조 : https://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb2.txt;hb=HEAD