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