Прохід USB через Qemu (гість 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

Проблема в тому, що обидва пристрої відображаються в гостях, але не працюють. АЦП / ЦАП повинен ідентифікуватися як блок USB-накопичувачів і відображається як один у списку пристроїв, але не працює. Я встановив драйвери 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

Зараз все прекрасно працює.


Оновлення на 2019 рік: 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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.