Posso passare attraverso una porta USB tramite la riga di comando di qemu?


10

Sto avviando una VM usando qemu-system-x86_64. Conosco due modi per passare attraverso un dispositivo USB.

Ad esempio, avevo un topo che si presentava come lsusb

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

Potrei passare attraverso usando

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

o

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

Nessuno di questi mi piace molto. Se lo acquisisco per ID fornitore / prodotto, non potrò mai più recuperare il mouse fino allo spegnimento della VM.

Se lo afferro tramite BUS e numero del dispositivo, dovrò dire a Qemu di riacquistarlo se lo scollego.

È possibile che lo invii tramite Port (lo slot fisico effettivo)? Supponiamo che sia collegato alla porta 2 del bus 3. Posso superarlo?

Risposte:


13

Per qualche motivo questo non è documentato nel Qemu 2.12.50 User Doc e ho dovuto imparare cosa ho imparato da questo ragazzo

Citano

-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 

Ma non menzionano che puoi farlo

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

Per esempio...

Se corro lsusb -t e ottengo

/:  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

Potrei decidere di passarli

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

E quelli corrispondono agli slot fisici.

Tuttavia, il bus e la porta differiranno per uno slot USB 3.0 a seconda che sia collegato un dispositivo USB 2.0 o USB 3.0, ma la porta per ciascun dispositivo rimarrà coerente.

Tale varianza non esiste per gli slot USB 2.0.

/ * aggiornamento: hub USB * /

Usa i punti per separare le porte. Quindi se avessi ...

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

Useresti -device usb-host,hostbus=3,hostport=2.1


Ho provato questo e ho ricevuto un errore: "Nessun bus 'usb-bus' trovato per il dispositivo 'usb-host'" usando qemu 3.1.0 su Debian Buster. Ho scoperto che è necessario anche -usbsulla riga di comando.
Brian Minton,

Sembra che abbiano aggiornato il numero principale, quindi potrebbero aver rotto l'interfaccia
DeepDeadpool
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.