在 Proxmox VE (PVE) 环境下将 Intel 或 AMD 的核显直通给虚拟机(如 Windows HTPC、iStoreOS 或 LibreELEC)后,很多朋友会发现画面正常,但 HDMI 接口完全没有声音输出,系统里也找不到 HDMI 音频设备。
这是因为核显(GPU)和它的 HDMI 音频控制器(Audio Controller) 在 PCIe 总线上往往是两个独立的硬件地址。你只直通了显卡本体,却没有把对应的音频核分配过去,或者分配后虚拟机的物理总线映射不正确。
下面教大家如何彻底解决这个问题,让 HDMI 音频正常发声。
第一步:在 PVE 宿主机定位音频 PCIe 地址
首先,我们需要登录 PVE 的 SSH 终端,找出核显和它关联的音频控制器的物理地址。
运行以下命令列出显示设备和音频设备:
lspci -nn | grep -E "VGA|Audio"
你可能会得到类似下面的输出(以 Intel 10代/11代核显为例):
00:02.0 VGA compatible controller [0300]: Intel Corporation CometLake-S GT2 [UHD Graphics 630] [8086:9bc5] (rev 05)
00:1f.3 Audio device [0403]: Intel Corporation Comet Lake PCH cAVS [8086:06c8]
00:02.0:核显(VGA 显示设备)00:1f.3:板载音频控制器(负责主板 3.5mm 接口以及核显的 HDMI 音频输出)
注意:部分 AMD 平台或独显(如 NVIDIA),显卡和音频是在同一个组下的相邻子设备(例如
01:00.0是显卡,01:00.1是音频)。这种情况下需要同时勾选直通。而 Intel 核显通常如上所示,音频位于00:1f.3。
第二步:在 PVE 虚拟机中添加音频设备
有些人在 PVE 网页后台的虚拟机“硬件”列表里只添加了 00:02.0。现在我们需要把音频控制器也加进去。
- 打开 PVE 网页后台,选择你的虚拟机 -> 硬件 -> 添加 -> PCI 设备。
- 在设备下拉菜单中,找到刚才定位的音频控制器(如
00:1f.3或对应的 AMD HDMI Audio)。 - 勾选 所有功能 (All Functions)(如果是多合一设备建议勾选)。
- 勾选 ROM-BAR 和 PCI-Express(如果是 PCIe 设备)。
- 点击添加。
第三步:修改虚拟机配置文件(关键步骤)
光在网页端添加有时还不够,因为 QEMU 默认不会把这两个设备关联到同一个虚拟 PCI 桥接上,导致显卡驱动无法将音频信号路由到 HDMI 口。我们需要手动编辑虚拟机的 .conf 配置文件。
在 PVE 终端中,使用 nano 或 vim 编辑对应虚拟机的配置文件(假设 VM ID 为
101):nano /etc/pve/qemu-server/101.conf找到你直通显卡和声卡的那两行,它们通常长这样:
hostpci0: 00:00:02.0,x-vga=1 hostpci1: 00:00:1f.3为了让 HDMI 音频完美工作,我们需要把它们配置为多功能设备(multifunction),或者确保它们在虚拟机的 PCI 树里处于合理的插槽。对于 Intel 核显,最稳妥的修改方式是:
hostpci0: 00:00:02.0,x-vga=1,pcie=1 hostpci1: 00:00:1f.3,pcie=1(注:如果你的虚拟机机型(Machine)使用的是
i440fx,请不要加pcie=1;如果是q35,建议加上pcie=1。)高级黑科技(针对部分 Intel 核显 HDMI 依然无声的情况):
如果保存后仍无声音,可以尝试通过args参数将它们强制绑定到虚拟机的同一个虚拟 PCI 插槽的子通道上(例如让显卡占用02.0,声卡占用02.1):在配置文件顶部或底部加上一行:
args: -device vfio-pci,host=00:02.0,addr=0x02,multifunction=on,x-vga=on -device vfio-pci,host=00:1f.3,addr=0x02.1注意:使用
args强行指定时,需要先在 PVE 网页端将原有的hostpci0和hostpci1移除,否则设备会冲突。
第四步:解决 Windows 虚拟机内的驱动冲突(Intel 智音/SST 报错)
如果你的虚拟机是 Windows 10 或 Windows 11,直通音频后,你可能会在设备管理器里看到一个带有黄色感叹号的设备:
- Intel(R) Smart Sound Technology (Intel SST) 或者是 智音技术 OED 报错,提示 “该设备无法启动 (Code 10)”。
这是 Intel 驱动在虚拟机环境下的经典 Bug。因为虚拟机无法完美模拟 Intel 智音技术的硬件 DSP。
解决方法:手动强制切换为“高清晰度音频控制器”
- 在 Windows 虚拟机中,右键点击开始菜单 -> 打开 设备管理器。
- 展开 系统设备(注意:不是“声音、视频和游戏控制器”)。
- 找到带有黄色感叹号的 Intel(R) Smart Sound Technology (Intel SST) Audio Controller(或类似名称)。
- 右键选择 更新驱动程序 -> 浏览我的电脑以查找驱动程序。
- 选择 让我从计算机上的可用驱动程序列表中检索。
- 在列表中,不要选择任何带有 "Intel Smart Sound" 或 "智音" 字样的驱动。选择通用的 高清晰度音频控制器 (High Definition Audio Controller)。
- 点击下一步安装。系统可能会弹出警告,直接点击“是”确认安装。
安装完成后,设备管理器中的黄色感叹号应该会消失,并在“声音、视频和游戏控制器”分类下刷新出 高清晰度音频设备。
此时,点击 Windows 任务栏右下角的喇叭图标,播放设备里就会出现你的 HDMI 显示器/电视机音频输出 了。
避坑总结与排错检查清单
- 宿主机黑名单:确保 PVE 宿主机没有抢占声卡驱动。如果 PVE 节点本身接了音箱,直通给虚拟机后,PVE 自身就不能再使用该声卡。
- UEFI 启动:直通核显和音频,虚拟机强烈建议使用 OVMF (UEFI) 引导,机型(Machine)建议选择 q35(在新硬件上兼容性更好)。
- HDMI 线材与接口:确保物理线材连接的是主板上的 HDMI 输出口,且显示器或电视机已开启声音,物理通道没有静音。