Usb

我可以通過 qemu 命令行通過 USB 埠嗎?

  • June 24, 2021

我正在使用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 之前,我將永遠無法收回該滑鼠。

如果我通過 BUS 和設備號獲取它,那麼如果我拔掉它,我將不得不告訴 Qemu 重新獲取它。

我可以通過埠(實際的物理插槽)發送它嗎?假設它已插入匯流排 3 埠 2。我可以通過它嗎?

由於某種原因,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

引用自:https://unix.stackexchange.com/questions/452934