前言:USB 设备为何"失联"?
在使用 VMware Workstation 时,你是否遇到过这样的情况:U 盘、加密狗、移动硬盘等 USB 设备插在宿主机上一切正常,但虚拟机里却怎么也找不到?点击虚拟机菜单栏的"虚拟机 -> 可移动设备"时,相关设备显示为灰色,无法连接。
这个问题通常并非硬件故障,而是 VMware 在创建虚拟机时,默认在配置文件中"禁用"了 USB 直通功能。特别是 VMware Workstation 17.0.1 Pro 版本,由于一个已知的配置缺陷,导致新建的虚拟机 .vmx 配置文件中 usb.restrictions.defaultAllow 选项的默认值被错误地设置为 FALSE,从而阻止了所有 USB 设备的直通。本文将带你一步步排查并解决这个问题。
🔍 诊断:确认问题根源
在动手修改之前,可以按以下顺序快速排查,以确认是配置文件的问题:
-
检查 VMware USB 服务 :确保宿主机上的 VMware USB Arbitration Service 服务已启动并正在运行。
-
检查虚拟机设置 :确保虚拟机硬件中添加了 USB 控制器,并且版本与设备匹配(如 USB 2.0 或 3.0)。
-
查看
.vmx配置文件:如果以上两项都正常,那大概率就是配置文件的问题了。
🛠️ 核心解决方案:修改 .vmx 文件
这是解决 USB 无法识别问题的关键步骤。
1. 关机并关闭 VMware
务必先将虚拟机关机(不是挂起) ,并完全关闭 VMware Workstation 软件。这是为了确保 .vmx 文件不被锁定,可以正常编辑。
2. 定位 .vmx 文件
在 VMware 中右键点击目标虚拟机 -> 打开虚拟机目录 。在打开的文件夹中,找到以 .vmx 结尾的文件(例如 Rocky9.2.vmx)。
3. 编辑并修改参数
用记事本或其他文本编辑器打开 .vmx 文件。使用 Ctrl + F 查找 usb.restrictions.defaultAllow 这一行。
-
情况一:找到该行,且值为
FALSE将其修改为:
bashusb.restrictions.defaultAllow = "TRUE" -
情况二:文件中没有这一行
在文件末尾手动添加:
bashusb.restrictions.defaultAllow = "TRUE" -
情况三:找到该行,但不确定如何修改
可以直接将这一整行删除。删除后,VMware 会采用默认的允许策略。
4. 保存并重启
保存 .vmx 文件,关闭编辑器。重新打开 VMware Workstation 并启动虚拟机,USB 设备应该就能正常识别了。
💡 进阶技巧:针对特定设备类型
如果上述基础修改后,某些特殊设备(如鼠标、键盘、智能卡读卡器)仍然无法识别,可以尝试在 .vmx 文件中添加以下参数:
-
连接 HID 设备(鼠标、键盘等) :
bashusb.generic.allowHID = "TRUE" -
连接智能卡读卡器:
bashusb.generic.allowCCID = "TRUE" -
强制连接 USB 根集线器:
bashusb.present = "TRUE" usb.generic.autoconnect = "TRUE" -
处理特定设备的兼容性问题 :
如果某个设备连接后反复断开,可以先在
vmware.log文件中搜索设备名称,找到其vid和pid,然后在.vmx中添加:bashusb.quirks.device0 = "0x<vid>:0x<pid> allow"
📝 总结
VMware 无法识别 USB 设备,尤其是在较新版本中,根源往往是 .vmx 配置文件中 usb.restrictions.defaultAllow 参数被默认设置为 FALSE 所致。解决方法很简单:关闭虚拟机 -> 编辑 .vmx 文件 -> 将 usb.restrictions.defaultAllow 改为 TRUE 或直接删除该行 -> 保存并重启。
如果问题依旧,可以根据设备类型添加 usb.generic.allowHID、usb.generic.allowCCID 等进阶参数。记住,修改 .vmx 文件时,虚拟机必须处于完全关机状态。
希望这篇博客能帮你解决 USB 设备连接的烦恼!