Qemu USB passthrough (ผู้เยี่ยมชม windows)


15

ฉันมี USB ADC / DAC และ HASP ที่ได้รับการปกป้องระบบเก็บข้อมูลที่เป็นกรรมสิทธิ์ของมันซึ่งทั้งสองอย่างนี้ไม่ทำงานใน linux ฉันพยายามทำให้มันทำงานในเครื่องเสมือน Windows โดยใช้ qemu นี่คืออุปกรณ์:

$ 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 block และแสดงเป็นหนึ่งในรายการอุปกรณ์ แต่ไม่ทำงาน ฉันได้ติดตั้งไดรเวอร์ HASP สำหรับดองเกิลของฉันในระบบของผู้เยี่ยมชม แต่ซอฟต์แวร์ DAS ไม่รู้จัก ผมทำอะไรผิดหรือเปล่า? ภาพหน้าจอของผู้เยี่ยมชม Windows

คำตอบ:


21

ในที่สุดฉันก็ได้รับความช่วยเหลือในฟอรัมอื่น ดูเหมือนว่าปัญหาจะเกิดขึ้นกับการใช้งานบัส USB ในชิปเซ็ต I440FX ที่จำลองโดย qemu โดยค่าเริ่มต้น (รายละเอียดที่นี่ ) วิธีแก้ปัญหาเป็นการจำลองชิปเซ็ต 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

ตอนนี้ทุกอย่างทำงานได้อย่างสมบูรณ์แบบ


อัปเดตสำหรับปี 2562: usb-deviceตัวเลือกเลิกใช้แล้ว คุณสามารถทำสิ่งเดียวกันได้โดยแทนที่ด้วย-usb -deviceและระบุผลิตภัณฑ์และรหัสผู้ขายในจำนวนเลขฐานสิบหกเช่นเดียวกัน:

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

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.