Qemu USB passthrough (convidado do windows)

10

Eu tenho um ADC / DAC USB e um sistema de aquisição de dados proprietário protegido pelo HASP para ele, ambos os quais não funcionam no linux. Eu estou tentando fazer isso funcionar na máquina virtual do Windows usando o qemu. Aqui estão os dispositivos:

$ 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

Meu usuário é membro do grupo qemu. Linha de comando do 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

O problema é que ambos os dispositivos estão sendo exibidos no guest, mas não funcionam. O ADC / DAC deve identificar como uma unidade de bloco USB e é exibido como um na lista de dispositivos, mas não funciona. Eu instalei drivers HASP para meu dongle no sistema guest, mas o software DAS não o reconhece. O que estou fazendo de errado?

    
por Axon 22.12.2015 / 17:02

1 resposta

14

Eu finalmente consegui ajuda no outro fórum. O problema parece ser com a implementação do barramento USB no chipset I440FX que é emulado pelo qemu por padrão (detalhes aqui ). A solução alternativa é emular o chipset ICH9 em vez disso. Isso é feito adicionando o parâmetro -M q35 . Eu também mudei o modo como os dispositivos USB são especificados e a linha de comando final se parece com isso:

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

Tudo funciona perfeitamente agora.

    
por 24.12.2015 / 22:06