it-swarm-ja.com

QEMUのUSBパススルーで「qemu:USBデバイスを追加できませんでした」というエラーが発生します

私のmacbookpro retina 2015でqemuを使用してusbパススルーでArchLinuxを実行しようとすると、次のコマンドを使用してosx Yosemite10.10を実行します。

Sudo qemu-system-i386 -cpu core2duo -cdrom archlinux-2015.11.01-dual.iso -boot order = d -m 1G -usbdevice Host:0x13fe:0x5500

エラーが発生し続けます:

qemu:USBデバイスを追加できませんでした 'Host:0x13fe:0x5500'

一方、システム情報では、USBデバイスのベンダーIDは「0x13fe」、製品IDは「0x5500」です。

コードブロック(bash)を使用して同じベンダーと製品IDを取得します

`system_profiler SPUSBDataType     | awk '
      /Product ID:/{p=$3}
      /Vendor ID:/{v=$3}
      /Manufacturer:/{sub(/.*: /,""); m=$0}
      /Location ID:/{sub(/.*: /,""); printf("%s:%s %s (%s)\n", v, p, $0, m);}
    '
`

Qemu documentation では、USBを通過する正しい形式は次のとおりです。

ホスト:vendor_id:product_id

だから私はそれを正しくやっていると信じています。

Qemu2.4.0.1を実行しています

私はここで何か間違ったことをしていますか?

2
underscore

なぜそのエラーが発生するのかわかりませんが、デバイスを「フルスピード」モード(12M)でしか接続できないため、とにかく-usbdeviceを使用することはほとんどありません。ホスト側の「高速」(480M)デバイス:

enter image description here

「超高速」(5000M)デバイス(ホスト側でxHCIが有効)を接続している場合は、まったく機能しない可能性があります。

enter image description here

したがって、代わりに、選択したエミュレートされたホストコントローラー(例:-device usb-Host)を使用した、より現代的で一般的な-device nec-usb-xhciアプローチが必要になります。

enter image description here

「高速」(480M)デバイスでも機能するはずです。

enter image description here

「フルスピード」(12M)デバイスと同様に:

enter image description here

エミュレートされたホストコントローラーの可能な選択肢は次のとおりです。

[[email protected] ~]$ qemu-system-x86_64 -device help |& grep usb.*hci
name "ich9-usb-ehci1", bus PCI
name "ich9-usb-ehci2", bus PCI
name "ich9-usb-uhci1", bus PCI
name "ich9-usb-uhci2", bus PCI
name "ich9-usb-uhci3", bus PCI
name "ich9-usb-uhci4", bus PCI
name "ich9-usb-uhci5", bus PCI
name "ich9-usb-uhci6", bus PCI
name "nec-usb-xhci", bus PCI
name "piix3-usb-uhci", bus PCI
name "piix4-usb-uhci", bus PCI
name "usb-ehci", bus PCI
name "vt82c686b-usb-uhci", bus PCI

[[email protected] ~]$ qemu-system-x86_64 -device help |& grep ohci
name "pci-ohci", bus PCI, desc "Apple USB Controller"
name "sysbus-ohci", bus System, desc "OHCI USB Controller"

nec-usb-xhciは、ほとんどの場合、最適に機能するはずです。

ところで、vendorid + productid以外にも、-device usb-Hostで接続するデバイスを指定する方法があります。例:hostbus + hostaddr

enter image description here

または、hostbus + hostport

enter image description here

これは、システムに同じモデルのデバイスが複数ある場合に便利です。

参照: http://git.qemu.org/?p=qemu.git;a=blob_plain;f=docs/usb2.txt;hb=HEAD

7
Tom Yan

ほとんどの場合、「-usbdevice Host」はLinux専用であり、osxでは使用できないためです。

https://people.cs.clemson.edu/~ccorsi/kyouko/qemu-doc.html#index-g_t_002dusbdevice-38

Host:bus.addr
  Pass through the Host device identified by bus.addr (Linux only). 
Host:vendor_id:product_id
  Pass through the Host device identified by vendor_id:product_id (Linux only). 
1
Alex

ラップトップでも同じ問題が発生しました。次のように、-hdb /dev/sdbの代わりに-usb -usbdevice ...を使用できます。

Sudo qemu-system-i386 ubuntu16.img --enable-kvm -monitor stdio -m 2048 -hdb /dev/sdb -vga cirrus -vnc :0
0
Yacine Hebbal