Posso passar por uma porta USB via linha de comando do qemu?

6

Estou lançando uma VM usando qemu-system-x86_64 . Eu conheço duas maneiras de passar por um dispositivo USB.

Digamos, por exemplo, que eu tinha um mouse que aparecia em lsusb como

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

Eu poderia passar usando

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

ou

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

Nenhum desses eu realmente gosto. Se eu pegar por ID de fornecedor / produto, nunca poderei recuperar esse mouse até que a VM seja desativada.

Se eu pegar por BUS e número do dispositivo, então terei que dizer ao Qemu para readquiri-lo se eu o desconectar.

É possível para mim enviá-lo por porta (o slot físico real)? Digamos que ele esteja conectado ao Bus 3 Port 2. Posso passá-lo por isso?

    
por DeepDeadpool 01.07.2018 / 21:50

1 resposta

6

Por alguma razão isto não está documentado no Qemu 2.12.50 User Doc e Eu tive que aprender o que eu aprendi de esse cara

Eles mencionam

-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 

Mas eles não mencionam que você pode fazer

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

Por exemplo ...

Se eu executo lsusb -t e obtenho

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

Eu poderia decidir passar por

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

E aqueles correspondem aos slots físicos.

No entanto, o barramento e a porta serão diferentes para um slot USB 3.0, dependendo se um dispositivo USB 2.0 ou dispositivo USB 3.0 estiver conectado a ele, mas a porta de cada dispositivo permanecerá consistente.

Essa variação não existe para slots USB 2.0.

/ * update: Hubs USB * /

Use pontos para separar as portas. Então se você tivesse ...

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

Você usaria -device usb-host,hostbus=3,hostport=2.1

    
por 01.07.2018 / 23:50

Tags