我可以通过qemu命令行通过USB端口吗?


10

我正在使用启动VM qemu-system-x86_64。我知道两种通过USB设备的方式。

举例来说,我有一只老鼠出现在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之前,我将永远无法收回该鼠标。

如果我通过总线和设备号来获取它,那么如果我拔掉它,我将不得不告诉Qemu重新获取它。

我可以通过端口(实际的物理插槽)发送它吗?假设它已插入总线3端口2。我可以通过它吗?

Answers:


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 3.0插槽的总线和端口会有所不同,具体取决于是否插入了USB 2.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在命令行上。
Brian Minton

看起来他们更新了主号码,所以他们可能已损坏界面
DeepDeadpool
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.