QEMU 多 USB 设备直通

比如我有两个相同的 U 盘要直通过去,如果通过 virt-manager 直接操作,会提示这个错误 Unable to add device: XML error: Hostdev already exists in the domain configuration

经过排查,发现默认情况下,两个 vendorproduct 相同的配置不能同时出现


解决办法如下(Arch Linux):
首先需要确保系统安装有 usbutils 这个包

1
sudo pacman -S usbutils

接着通过命令 lsusb 查询到 BusDevice

比如原来的配置如下:

1
2
3
4
5
6
7
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x1234"/>
<product id="0xabcd"/>
</source>
<address type="usb" bus="0" port="1"/>
</hostdev>

修改后的配置如下:

1
2
3
4
5
6
7
8
<hostdev mode="subsystem" type="usb" managed="yes">
<source>
<vendor id="0x1234"/>
<product id="0xabcd"/>
<address bus='1' device='1'/>
</source>
<address type="usb" bus="0" port="1"/>
</hostdev>

这样就可以正常添加


当然还有曲线救国的方案:直通一个 USB HUB