HOOOS

PVE核显直通后HDMI没有声音?手把手教你配置音频控制器直通

0 9 网工阿杰 PVE直通核显直通HDMI音频
Apple

在 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。现在我们需要把音频控制器也加进去。

  1. 打开 PVE 网页后台,选择你的虚拟机 -> 硬件 -> 添加 -> PCI 设备
  2. 在设备下拉菜单中,找到刚才定位的音频控制器(如 00:1f.3 或对应的 AMD HDMI Audio)。
  3. 勾选 所有功能 (All Functions)(如果是多合一设备建议勾选)。
  4. 勾选 ROM-BARPCI-Express(如果是 PCIe 设备)。
  5. 点击添加。

第三步:修改虚拟机配置文件(关键步骤)

光在网页端添加有时还不够,因为 QEMU 默认不会把这两个设备关联到同一个虚拟 PCI 桥接上,导致显卡驱动无法将音频信号路由到 HDMI 口。我们需要手动编辑虚拟机的 .conf 配置文件。

  1. 在 PVE 终端中,使用 nano 或 vim 编辑对应虚拟机的配置文件(假设 VM ID 为 101):

    nano /etc/pve/qemu-server/101.conf
    
  2. 找到你直通显卡和声卡的那两行,它们通常长这样:

    hostpci0: 00:00:02.0,x-vga=1
    hostpci1: 00:00:1f.3
    
  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。)

  4. 高级黑科技(针对部分 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 网页端将原有的 hostpci0hostpci1 移除,否则设备会冲突。


第四步:解决 Windows 虚拟机内的驱动冲突(Intel 智音/SST 报错)

如果你的虚拟机是 Windows 10 或 Windows 11,直通音频后,你可能会在设备管理器里看到一个带有黄色感叹号的设备:

  • Intel(R) Smart Sound Technology (Intel SST) 或者是 智音技术 OED 报错,提示 “该设备无法启动 (Code 10)”。

这是 Intel 驱动在虚拟机环境下的经典 Bug。因为虚拟机无法完美模拟 Intel 智音技术的硬件 DSP。

解决方法:手动强制切换为“高清晰度音频控制器”

  1. 在 Windows 虚拟机中,右键点击开始菜单 -> 打开 设备管理器
  2. 展开 系统设备(注意:不是“声音、视频和游戏控制器”)。
  3. 找到带有黄色感叹号的 Intel(R) Smart Sound Technology (Intel SST) Audio Controller(或类似名称)。
  4. 右键选择 更新驱动程序 -> 浏览我的电脑以查找驱动程序
  5. 选择 让我从计算机上的可用驱动程序列表中检索
  6. 在列表中,不要选择任何带有 "Intel Smart Sound" 或 "智音" 字样的驱动。选择通用的 高清晰度音频控制器 (High Definition Audio Controller)
  7. 点击下一步安装。系统可能会弹出警告,直接点击“是”确认安装。

安装完成后,设备管理器中的黄色感叹号应该会消失,并在“声音、视频和游戏控制器”分类下刷新出 高清晰度音频设备

此时,点击 Windows 任务栏右下角的喇叭图标,播放设备里就会出现你的 HDMI 显示器/电视机音频输出 了。


避坑总结与排错检查清单

  1. 宿主机黑名单:确保 PVE 宿主机没有抢占声卡驱动。如果 PVE 节点本身接了音箱,直通给虚拟机后,PVE 自身就不能再使用该声卡。
  2. UEFI 启动:直通核显和音频,虚拟机强烈建议使用 OVMF (UEFI) 引导,机型(Machine)建议选择 q35(在新硬件上兼容性更好)。
  3. HDMI 线材与接口:确保物理线材连接的是主板上的 HDMI 输出口,且显示器或电视机已开启声音,物理通道没有静音。

点评评价

captcha
健康