qemuコマンドラインを介してUSBポートを通過できますか?


10

を使用してVMを起動していますqemu-system-x86_64。USBデバイスを通過する2つの方法を知っています。

たとえば、私はlsusbのように現れたマウスを持っていたとしましょう

Bus 003 Device 011: ID 6ade:9582 Amazing Mouse Maker

私はそれを通過させることができました

-device usb-host,vendorid=0x6ade,productid=0x9582

または

-device usb-host,hostbus=3,hostaddr=11

これらはどちらも私は本当に好きではありません。ベンダー/製品IDでそれを取得した場合、VMがオフになるまでそのマウスを取り戻すことはできません。

BUSとデバイス番号で取得した場合、プラグを抜いた場合、Qemuに再取得するように指示する必要があります。

ポート(実際の物理スロット)で送信することはできますか?それがバス3ポート2に接続されているとしましょう。

回答:


13

何らかの理由で、これはQemu 2.12.50ユーザードキュメントに記載されておらず、この人から学んだことを学ぶ必要がありました。

彼らは言及します

-device usb-host,hostbus=bus,hostaddr=addr
Pass through the host device identified by bus and addr 

-device usb-host,vendorid=vendor,productid=product
Pass through the host device identified by vendor and product ID 

しかし、彼らはあなたができることについては触れていません

-device usb-host,hostbus=bus,hostport=port

例えば...

lsusb -tを実行して取得した場合

/:  Bus 03.Port 1: Dev 1, Class=root_hub, Driver=xhci_hcd/14p, 480M
|__ Port 10: Dev 8, If 0, Class=Human Interface Device, Driver=usbhid, 12M
|__ Port 11: Dev 6, If 0, Class=Human Interface Device, Driver=usbhid, 12M

私はこれらを渡すことを決めることができました

-device usb-host,hostbus=3,hostport=10 \
-device usb-host,hostbus=3,hostport=11 \

そして、それらは物理スロットに対応します。

ただし、USB 2.0デバイスまたはUSB 3.0デバイスが接続されているかどうかによって、USB 3.0スロットのバスとポートは異なりますが、各デバイスのポートは一定のままです。

USB 2.0スロットでは、このような差異はありません。

/ *更新:USBハブ* /

ドットを使用してポートを区切ります。だからあなたが持っていた場合...

/:  Bus 03
|__ Port 2: some stuff
    |__ Port 1: some stuff

あなたは使うでしょう -device usb-host,hostbus=3,hostport=2.1


Debian Busterでqemu 3.1.0を使用すると、「デバイス 'usb-host'の 'usb-bus'バスが見つかりません」というエラーが発生しました。-usbコマンドラインでも必要なことがわかりました。
ブライアンミントン

彼らはメジャー番号を更新したように見えるため、インターフェースが壊れている可能性があります
DeepDeadpool
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.