USB-Passthrough für QEMU erhält die Fehlermeldung "qemu: USB-Gerät konnte nicht hinzugefügt werden"

2

Wenn Sie versuchen, Arch Linux mit einem USB-Passthrough unter Verwendung von qemu auf meinem MacBook Pro Retina 2015 auszuführen, führen Sie osx Yosemite 10.10 mit dem folgenden Befehl aus:

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

Ich bekomme immer den Fehler:

qemu: USB-Gerät 'Host: 0x13fe: 0x5500' konnte nicht hinzugefügt werden

In den Systeminformationen hat das USB-Gerät die Herstellerkennung "0x13fe" und die Produktkennung "0x5500".

Ich erhalte die gleiche Hersteller- und Produkt-ID mithilfe des Codeblocks (in Bash).

`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);}
    '
`

In der qemu- Dokumentation heißt es, dass die korrekte Form für die Weitergabe über USB lautet

host: vendor_id: product_id

Also glaube ich, dass ich es richtig mache.

Ich lasse Qemu 2.4.0.1 laufen

Mache ich hier etwas falsch?

unterstreichen
quelle

Antworten:

6

Ich bin mir nicht sicher, warum diese Fehlermeldung -usbdeviceangezeigt wird, aber Sie möchten sie sowieso kaum verwenden , da ein Gerät nur im "Full-Speed" -Modus (12 MB) angeschlossen werden kann, auch wenn es sich um einen "High-Speed" -Modus handelt. (480M) Gerät auf der Hostseite:

Bildbeschreibung hier eingeben

Möglicherweise funktioniert es überhaupt nicht, wenn Sie ein "superspeed" (5000M) -Gerät anschließen (xHCI auf der Hostseite aktiviert):

Bildbeschreibung hier eingeben

Stattdessen möchten Sie einen moderneren und allgemeineren -device usb-hostAnsatz mit einem emulierten Host-Controller Ihrer Wahl (z. B. -device nec-usb-xhci):

Bildbeschreibung hier eingeben

Es sollte auch für "high-speed" (480M) Geräte funktionieren:

Bildbeschreibung hier eingeben

sowie "Full-Speed" (12M) Geräte:

Bildbeschreibung hier eingeben

Mögliche Auswahlmöglichkeiten des emulierten Host-Controllers sind:

[tom@localhost ~]$ 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

[tom@localhost ~]$ 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 sollte in den meisten Fällen am besten und gut funktionieren.

Übrigens gibt es auch andere Möglichkeiten als vendorid+, productidum anzugeben, mit welchem ​​Gerät Sie eine Verbindung herstellen möchten -device usb-host. Zum Beispiel hostbus+ hostaddr:

Bildbeschreibung hier eingeben

Oder, hostbus+ hostport:

Bildbeschreibung hier eingeben

Was praktisch ist, wenn sich mehrere Geräte desselben Modells im System befinden.

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

Tom Yan
quelle
1

Höchstwahrscheinlich liegt es daran, dass '-usbdevice host' nur für Linux ist und nicht unter osx verwendet werden kann.

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). 
Alex
quelle
0

Ich hatte das gleiche Problem auf meinem Laptop. Sie können -hdb /dev/sdbanstelle der -usb -usbdevice ...folgenden verwenden:

sudo qemu-system-i386 ubuntu16.img --enable-kvm -monitor stdio -m 2048 -hdb /dev/sdb -vga cirrus -vnc :0
Yacine Hebbal
quelle
Können Sie dieser Antwort einen weiteren Kontext hinzufügen? Zum Beispiel ein Link zu einer Referenzseite oder ein vollständiges Verwendungsbeispiel.
Burgi