如何在QEMU/KVM中向虚拟机直通Android MTP-USB设备?
解决Android手机MTP直通Win10虚拟机的驱动问题
方法一:修改虚拟机XML配置
- 关闭Win10虚拟机,在虚拟机管理器中右键目标虚拟机,选择「编辑XML」。
- 找到
<devices>节点下的USB控制器配置,将其替换为USB3.0兼容的qemu-xhci控制器(MTP协议对USB控制器版本有要求,旧控制器可能不兼容):<controller type='usb' index='0' model='qemu-xhci' ports='15'> <address type='pci' domain='0x0000' bus='0x02' slot='0x00' function='0x0'/> </controller> - 找到直通手机的
<hostdev>节点,确认vendorid和productid与宿主机lsusb命令输出的一致(比如lsusb显示ID 18d1:4ee2,则vendor id='0x18d1'、product id='0x4ee2'),同时添加配置项启用MTP支持:<hostdev mode='subsystem' type='usb' managed='yes'> <source> <vendor id='0x18d1'/> <product id='0x4ee2'/> </source> <config> <property name='capabilities' value='usb-mtp,usb-storage'/> </config> <address type='usb' bus='0' port='1'/> </hostdev> - 保存XML配置,启动虚拟机后,卸载设备管理器中带黄色感叹号的MTP驱动,重新扫描硬件改动,安装对应手机的官方驱动(或微软通用MTP驱动)。
方法二:终端命令修改配置
- 关闭虚拟机,在宿主机终端执行
lsusb获取手机的USB设备ID,执行lsusb -t查看总线/设备路径。 - 用
virsh编辑虚拟机配置(替换win10-vm为你的虚拟机名称):virsh edit win10-vm - 按照方法一的步骤修改USB控制器和
<hostdev>配置,保存退出后启动虚拟机:virsh start win10-vm
额外排查点
- 确保宿主机安装了必要工具:
sudo apt install usbutils libusb-1.0-0-dev - 检查Android手机的USB模式:开启开发者选项后,确认选择「传输文件(MTP)」模式,而非「仅充电」。
- Win10虚拟机内优先安装手机品牌官方PC套件驱动,避免使用系统自动安装的通用驱动。
内容的提问来源于stack exchange,提问作者user19597949
相关产品推荐
相关产品推荐

