¿Puedo pasar a través de un puerto USB a través de la línea de comando qemu?


10

Estoy lanzando una VM usando qemu-system-x86_64. Conozco dos formas de pasar por un dispositivo USB.

Digamos, por ejemplo, que tenía un mouse que apareció en lsusb como

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

Podría pasarlo usando

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

o

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

Ninguno de estos me gusta mucho. Si lo tomo por ID de proveedor / producto, nunca podré recuperar ese mouse hasta que la VM esté apagada.

Si lo tomo por BUS y número de dispositivo, tendré que decirle a Qemu que lo vuelva a adquirir si lo desconecto.

¿Es posible que lo envíe por Puerto (la ranura física real)? Digamos que está conectado al puerto 2 del bus 3. ¿Puedo pasarlo por eso?

Respuestas:


13

Por alguna razón, esto no está documentado en el Qemu 2.12.50 User Doc y tuve que aprender lo que aprendí de este chico

Mencionan

-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 

Pero no mencionan que puedes hacer

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

Por ejemplo...

Si ejecuto lsusb -t y obtengo

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

Podría decidir pasar esto por

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

Y esos corresponden a las ranuras físicas.

Sin embargo, el bus y el puerto diferirán para una ranura USB 3.0 dependiendo de si un dispositivo USB 2.0 o un dispositivo USB 3.0 está enchufado, pero el puerto para cada dispositivo seguirá siendo consistente.

Dicha variación no existe para las ranuras USB 2.0.

/ * actualización: Hubs USB * /

Use puntos para separar los puertos. Entonces si tuvieras ...

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

Usarías -device usb-host,hostbus=3,hostport=2.1


Intenté esto y obtuve un error: "No se encontró el bus 'usb-bus' para el dispositivo 'usb-host'" usando qemu 3.1.0 en Debian Buster. Descubrí que también necesitas -usben la línea de comando.
Brian Minton

Parece que actualizaron el número principal, por lo que pueden haber roto la interfaz
DeepDeadpool
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.