【独家方案】尝试解决核显直通的声音输出问题

您所在的位置:网站首页 显卡hdmi输出音频 【独家方案】尝试解决核显直通的声音输出问题

【独家方案】尝试解决核显直通的声音输出问题

2024-05-24 13:13| 来源: 网络整理| 查看: 265

长话短说,最近我有一些尝试,主要研究 11 代及之后的核显[1],在 Proxmox VE 直通后,声音如何输出。涉及设备:彻视 i3-1125G4 QS 软路由,尔英 i7-11800H ES mATX 主板,天邦 i9-13900HK ES ITX 主板。

在默认情况下,以上设备的情况是:

彻视 i3-1125G4 ES (QS) 3.5 英寸软路由:核显正常直通直出,声音随核显 HDMI 输出;尔英 i7-11800H ES mATX 主板:核显正常直通直出,HDMI 无声音,显示未接入喇叭;天邦 i9-13900HK ES ITX 主板:核显正常直通直出,HDMI 无声音,显示未接入喇叭。

经过研究,当前的进展是:

尔英 i7-11800H ES mATX 主板:成功实现声音随核显 HDMI 输出;天邦 i9-13900HK ES ITX 主板:未能实现,但可通过主板音频接口输出声音。

首先,无论哪个设备,核显都位于 0000:00:02.0 路径,而核显的音频位于 0000:00:1f.3 路径:

根据以上路径,直通配置如下:

/etc/default/grub

GRUB_DEFAULT=0 GRUB_TIMEOUT=2 GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian GRUB_CMDLINE_LINUX_DEFAULT="quiet intel_iommu=on iommu=pt"

/etc/modules

vfio vfio_iommu_type1 vfio_pci vfio_virqfd

/etc/modprobe.d/pve-blacklist.conf

blacklist snd_hda_intel blacklist snd_hda_codec_hdmi blacklist i915

/etc/modprobe.d/vfio.conf

options vfio-pci disable_vga=1

以上配置需要应用后重启生效。

update-grub update-initramfs -u -k all

重启后核显将停止输出画面,直到核显虚拟机开机并装完驱动才恢复。

网上有其它教程认为无需 options vfio-pci disable_vga=1 从而使核显无缝输出画面,但在我的三台设备上,都必须加入上述参数才能正常直通并直出。你可以根据实际情况决定是否 disable_vga 。

/etc/pve/qemu-server/120.conf ( 只列出与核显直通相关的设定 )

args: -set device.hostpci0.addr=02.0 -set device.hostpci0.x-igd-gms=1 bios: ovmf hostpci0: 0000:00:02.0,legacy-igd=1,romfile=AIO.rom hostpci1: 0000:00:1f.3 vga: none

虚拟机启动前,确保 /usr/share/kvm/AIO.rom 存在,此文件是核显启动必需的 OpROM ( 下载链接 ) 。

另外,由于核显虚拟机驱动需要通过远程协助安装,建议先不做核显直通,待虚拟机 Win10 / Win11 系统装好,安装了 virtio 驱动后,再将 vga 设置为 none ,加入上述核显直通的配置,从而远程连接装驱动。

注意:装核显驱动时,可能需要使用旧版 ( 如 3790 ) ,而新版驱动有可能错误代码 43 。

详情请参考此文的最后部分:kyupi:完全体的全能主机,大小核的终极方案 - 2.系统篇

现在假设你已实现核显直通,并通过 HDMI 点亮屏幕,能正常使用,但是没声音,提示喇叭未插入。

接下来,尝试通过 BIOS 调整 iDisplay 音频链路频率和周期。

关闭虚拟机,重启宿主机,进入 BIOS ,定位到【Chipset】-【PCH-IO Configuration】-【HD Audio Configuration】-【HD Audio Advanced Configuration】。

进入后,检查和修改以下三个项目:

【iDisplay Audio Disconnect】应为【Disabled】,这一项如开启,则 HDMI 的音频有可能断开连接。【iDisplay Audio Link Frequency】是链路频率,如频率与目标设备不兼容也会断开,我这 48MHz 可用。【iDisplay Audio Link T-Mode】是音频的链路周期,同上,我这 4T Mode 可用。

F10 保存退出即完成。

上述方法在 i7-11800H ES 主板上亲测有效,成功将核显虚拟机的声音随 HDMI 输出到显示器。

注意:应根据具体目标设备调整链路频率和周期。

理论上,上述方法也适用于其它 11-14 代主板。可是,在天邦 i9-13900HK ES ITX 主板,方法 (1) 的选项被隐藏,我尝试通过 EFI Shell 调节 UEFI Variables 也提示写保护 ( 已事先在 BIOS 中关闭了相关锁定但无效 ) 。

因暂时未发现更好的方案,我决定先使用主板的 Realtek 音频控制器输出声音。但是,宿主机距屏幕较远,不便直接连接 3.5mm 音频线,所以我购买了两根 3.5mm to RJ45 转接线,将主板后置音频接口通过网线延长。

延长后,核显虚拟机的声音顺利输出。从 VID 可以看出,这是 Realtek 的音频控制器:

10EC 是 Realtek 的厂商代码

进一步地,如果你需要将 Realtek 的声音由 HDMI 输出,可以购买 HDMI 音频合成器:

按红字接线

当然,以上方案不够完美,还是应该想办法在 BIOS 更改 iDisplay 音频链路设定。

如有新的研究成果,我将更新在本文。

参考^Gen9.5 及之前的核显,因为可采用 Seabios 的传统引导,基本不存在声音输出的问题


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3