Je lance un VM utilisant qemu-system-x86_64
. Je connais deux façons de passer par un périphérique USB.
Disons par exemple, j'ai eu une souris qui est apparue dans lsusb comme
Bus 003 Device 011: ID 6ade:9582 Amazing Mouse Maker
Je pourrais le passer en utilisant
-device usb-Host,vendorid=0x6ade,productid=0x9582
ou
-device usb-Host,hostbus=3,hostaddr=11
Aucun de ceux-là que j'aime vraiment. Si je la récupère par ID de fournisseur/produit, je ne pourrai jamais récupérer cette souris tant que le VM n'est pas désactivé.
Si je le saisis par BUS et numéro de périphérique, je devrai dire à Qemu de le réacquérir si je le débranche.
Est-il possible pour moi de l'envoyer par port (l'emplacement physique réel)? Disons qu'il est branché sur le port 2 du bus 3. Puis-je le contourner?
Pour une raison quelconque, cela n'est pas documenté sur le Doc utilisateur Qemu 2.12.5 et j'ai dû apprendre ce que j'ai appris de ce gars
Ils mentionnent
-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
Mais ils ne mentionnent pas que vous pouvez faire
-device usb-Host,hostbus=bus,hostport=port
Par exemple...
Si je lance lsusb -t et obtient
/: 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
Je pourrais décider de les passer
-device usb-Host,hostbus=3,hostport=10 \
-device usb-Host,hostbus=3,hostport=11 \
Et ceux-ci correspondent aux emplacements physiques.
Cependant, le bus et le port différeront pour un emplacement USB 3.0 selon qu'un périphérique USB 2.0 ou USB 3.0 y est branché, mais le port de chaque périphérique restera cohérent.
Un tel écart n'existe pas pour les emplacements USB 2.0.
/ * mise à jour: Hubs USB * /
Utilisez des points pour séparer les ports. Donc si tu avais ...
/: Bus 03
|__ Port 2: some stuff
|__ Port 1: some stuff
Vous utiliseriez -device usb-Host,hostbus=3,hostport=2.1