M1芯片Mac使用QEMU为Android模拟器配置USB透传失败问题咨询
报错根因
你遇到的'usb-host' is not a valid device model name报错,核心原因是M1芯片适配的官方Android模拟器自带的qemu-system-aarch64二进制为裁剪编译版本,编译阶段未开启USB_HOST模块支持,也未内置对应依赖,仅手动安装系统级libusb无法让QEMU识别usb-host设备参数。
解决方法
方案一:替换自行编译的带USB透传支持的QEMU
- 先通过Homebrew安装编译依赖:
brew install libusb pkg-config glib pixman - 下载对应版本QEMU源码,编译时添加参数
--enable-libusb --enable-usb-redir开启USB_HOST支持 - 进入Android SDK的
emulator/qemu/darwin-aarch64/路径,备份原有qemu-system-aarch64二进制,将编译完成的新二进制替换进去,保留文件执行权限 - 修正启动命令参数:M1版本模拟器默认使用xhci总线而非ehci,将原命令里的
bus=ehci.0改为bus=xhci.0,最终命令为:./emulator -avd 你的模拟器名称 -qemu -device usb-host,bus=xhci.0,vendorid=0x045e,productid=0x0b00
方案二:使用社区预编译的适配版模拟器
直接下载开源社区维护的M1适配Android模拟器,这类版本大多已经内置了开启USB_HOST支持的QEMU二进制,无需自行编译替换。
注意事项
- 启动模拟器前要先给终端授予USB设备访问权限,路径为「系统偏好设置-安全性与隐私」,权限未开启的情况下即使QEMU支持也无法读取USB设备
- 透传前可执行
system_profiler SPUSBDataType确认目标USB设备的vendorid和productid是否正确,避免参数填错 - 替换完成后可执行
./emulator/qemu/darwin-aarch64/qemu-system-aarch64 -device help,查看返回的设备列表中是否存在usb-host项,确认替换是否生效
内容的提问来源于stack exchange,提问作者Jonathan Kats
相关产品推荐
相关产品推荐

