[翻译][指南]英特尔IGPU HDMI/DP音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

26次阅读
没有评论

翻译 [指南] 英特尔 IGPU HDMI/DP 音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

现将这篇让 INTEL 的 HDMI/DP 音频正确输出的帖子转译过来,让更多的人都能看到。

本人英语炒鸡辣鸡,使用的是 google 的机翻,其中难免会存在错误,请各位群友指正。

概述

本指南将介绍如何为连接到英特尔集成 GPU 的 HDMI 端口的笔记本电脑实现 HDMI 音频。其中一些内容也适用于配备 DP 连接器的笔记本电脑。

如果您的笔记本电脑有外部 DP 端口,您也可以阅读本指南。带有外部 DP 端口的笔记本电脑需要此处介绍的一部分补丁。

为了实现 HDMI/DP,必须满足以下要求:

  • 使用 AppleHDA 的原生音频(有关更多信息,请阅读 FAQ …实现板载音频不在本指南的范围内)

  • 适当的帧缓冲(kext)补丁更改连接器类型以匹配物理连接器。这通过修补与正在使用的 ig-platform-id 关联的数据来完成。

  • Haswell/Broadwell:将 B0D3 重命名为 HDAU(设备位于 0x00030000)

  • 在 HDAU,IGPU,HDEF 对象上注入属性"hda-gfx" = <"onboard-1">

  • Haswell/Broadwell:在 HDAU 上注入 layout-id 以匹配 HDEF 上的布局 ID

  • Haswell:安装 FakePCIID.kextFakePCIID_Intel_HDMI_Audio.kext

注意:通常,对于 PC 笔记本电脑,英特尔图形设备的 ACPI 标识符为 GFX0 产品使用 VID)。由于此标识符通常更改为 IGPU 以启用 IGPU 电源管理,因此本指南将其称为 IGPU。请记住,如果您尚未实施 IGPU PM。

注意:如果您想知道 Skylake(和 Kaby Lake)与 HD3000/HD4000 类似,因为 HDMI/DP 编解码器在 HDEF(通常是 PC DSDT 中的 HDAS,更名为 OS X 的 HDEF)上,而不是单独的设备 HDAU。

关于 Clover 和 Clover 笔记本电脑指南的注意事项

如果您按照此处的指南进行操作:https : //www.tonymacx86.com/threads/guide-booting-the-os-x-installer-on-laptops-with-clover.148093/

你的 config.plist 将已经包含所需的重命名。

您可以将 config.plist/Devices 中的 #AddProperties 重命名为 AddProperties,它将启用所需的“hda-gfx”和其他音频注入。

看看它…

帧缓冲区修补

与 ig-platform-id(或具有 Sandy Bridge 的 snb-platform-id)关联的数据对于每个连接器具有代表连接器类型(以及其他连接器相关数据)的位。由于大多数 Apple 产品使用 DP,因此大多数连接器默认为 DP。为了使 HDMI 音频正常工作,您必须修补 kext,使连接器数据与物理连接器匹配。如果您的连接器是 DP,则无需执行任何操作,但如果您的端口是 HDMI,则可能需要修补连接器,使其成为 HDMI 连接器而不是 DP 连接器。

DP 连接器通过连接器类型在 ioreg 中标识<00 04 00 00>
HDMI 连接器通过连接器类型在 ioreg 中标识<00 08 00 00>

在 ioreg 中标识。在我的向导中链接的 plist 中,您将找到各种连接器 ig-platform-id 数据。

http://www.tonymacx86.com/el-capita…de-boot-os-x-installer-laptops-clover.html

默认情况下,每个补丁都是禁用的。您可以阅读关于禁用的修补程序以及如何在指南的第 2 篇后启用它们。

您需要使用的补丁取决于 HDMI 连接器插入哪个端口。每个端口在 IGPU 下都有自己的 AppleIntelFramebuffer 节点。例如,该图像显示了我的 Lenovo u430 上的 IGPU 下的每个帧缓冲区节点:
[翻译][指南]英特尔 IGPU HDMI/DP 音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

如果有 HDMI 设备插入其中一个帧缓冲区,您将在相应的帧缓冲区下看到 AppleDisplay,就像您看到与 LVDS 相关的帧缓冲区下的 AppleBacklightDisplay 一样端口(笔记本电脑内部显示)。

在我的联想 u430 的情况下,HDMI 端口与 AppleIntelFramebuffer @ 2 相关联。每个帧缓冲区(@ 0,@ 1,@ 2,@ 3)对应于驻留在帧缓冲区 kext 二进制文件中的 ig-platform-id 数据内的一组连接器数据。每个连接器都有一个描述端口号的前缀,并且每个连接器都位于 kext 中(例如:按照该顺序为 0105,0204,0306)。提供的 plists 中的每个修补程序都用前缀进行注释,并按它们在平台数据中出现的顺序进行评论。因此,对于使用 ig-platform-id 0xa260006 的 Lenovo u430,外部端口(@ 1 和 @ 2)标有 0105 和 0204。由于 u430 上的 HDMI 端口连接到 AppleIntelFramebuffer @ 2 这是 0204 连接器,我们可以将其缩小到只适用于 0xa260006 的 0204 的修补程序。

plist 中只有两个这样的补丁。对于每个连接器,都可以选择使用非(12)修补程序或(12)修补程序之一修补。不同之处在于“(12)”变体除了修补连接器类型外,还修补了一个据信定义某种延迟的字节。一些笔记本电脑需要将此延迟从默认(09)延长到(12)。在确定你需要什么的时候,这是试错的问题。假设您已满足所有其他 HDMI 音频要求,并且非 12 修补程序导致 KP(内核崩溃) / 重新启动,则可能需要 12 个变体。

对于 HDMI 监视器热插拔时 KP(内核崩溃) / 重新启动的情况,很难确定您的外部端口分配到了哪个端口(因为在监视器插入时无法查看 ioreg)。在这种情况下,您应该应用适用于您正在使用的 ig-platform-id 的所有(12 个变体)修补程序。这应该让你通过 KP(内核崩溃)/ 重新启动,然后你可以看看 ioreg,确定哪个端口实际使用,并且消除或禁用不需要的补丁。

在我的 u430 的情况下,我没有 KP(内核崩溃) / 重新启动问题,所以我可以通过插入显示器并查看 ioreg 来确定 HDMI 使用哪个端口。正如我之前提到的那样,它是 0204 连接器(framebuffer @ 2)。因此,Lenovo u430 使用标有“HDMI-audio,端口 0204,0x0a260005 0x0a260006”的补丁。

它出现在我的 config.plist 中(在 Xcode 中):在修补 HDMI 音频之前,AppleIntelFramebuffer @ 2 的连接器类型为 <00 04 00 00>。修补后,它将变为<00 08 00 00>。修补之前:修补后:如果您的物理连接器是 DP,则无需为连接器类型打补丁。但是,您可能需要为 09 和 12 延迟打补丁。查看每个修补程序中替换的十六进制数据,应该很明显如何更改修补程序,使其保持<00 04 00 00> 连接器类型而不是将其更改为 <00 08 00 00> 将 B0D3 重命名为 HDAU:

[翻译][指南]英特尔 IGPU HDMI/DP 音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

[翻译][指南]英特尔 IGPU HDMI/DP 音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

[翻译][指南]英特尔 IGPU HDMI/DP 音频(Sandy/Ivy/Haswell/Broadwell/Skylake/Kabylake)

Sandy Bridge(HD3000)和 Ivy Bridge(HD4000)使用具有多个编解码器的单个音频设备(HDEF)。板载音频和 HDMI 音频均位于同一 HDEF 设备上。因此,没有第二个设备,所以不需要将其重命名为 HDAU。

Haswell 和 Broadwell 为 HDMI 音频编解码器使用单独的设备。通常它被命名为 B0D3(它可以在 DSDT 或 OEM SSDT 中定义)。您将在 ioreg 中看到 PCI0 下的 B0D3 节点。对于 OS X,它必须重命名为 HDAU。设备的地址始终为 0x00030000。

您可以使用笔记本修补程序存储库中的“将 B0D3 重命名为 HDAU”来重命名设备。该补丁应该适用于包含 B0D3 参考的任何 DSDT 或 SSDT。同一个补丁还定义了一个在 HDAU 上注入“hda-gfx”=“onboard-1”的_DSM。它还包含一个补丁,为 IGPU 注入“hda-gfx”。

请参阅 ACPI 修补指南更多有关 ACPI 修补程序的信息:http : //www.tonymacx86.com/el-capitan-laptop-support/152573-guide-patching-laptop-dsdt-ssdts.html

注意:Skylake 似乎使用单个音频设备,通常名为 HDAS。它必须被重新命名为 HDEF 为 OS X

注入性质 HDA-GFX(和布局 -ID)

对于桑迪桥和常春藤桥(HD3000/HD4000),"hda-gfx" = <"onboard-1">必须在注入 iGPU 的和 HDEF。

对于 Haswell 和 Broadwell,必须在 IGPU 和 HDAU 上注入"hda-gfx" = <"onboard-1">。没有必要在 HDEF 上注入“hda-gfx”,尽管它似乎不会引起问题。

Audio Layout音色(Audio Layout 3Audio Layout 12或为您的布局 ID 自定义的音色)会在 HDEF 中注入“hda-gfx”。通常情况下,HDEF 在 DSDT 中定义。

注意:HDAU/IGPU“hda-gfx”来自“将 B0D3 重命名为 HDAU”,或者对于 IGPU 其他 IGPU 相关的修补程序。搜索“hda-gfx”的回购补丁,你会看到几个。

Rename B0D3 to HDAU"补丁也为 IGPU 注入“hda-gfx”。通常,HDAU 和 IGPU 对象在相同的 SSDT 中定义,但有可能是一个不同的文件(如 DSDT)。仅在应用修补程序时查看它是否适用于给定文件没有任何坏处。

通常情况下,以下工作将完成所有必需的重命名和注入操作:

  • 将“Audio Layout *”(布局 ID 取决于您修补的 AppleHDA)应用于 DSDT
  • Rename B0D3 to HDAU 应用于 DSDT 和所有 OEM SSDT。

另请注意,“将 B0D3 重命名为 HDAU”补丁会在 HDAU 上注入布局 ID。布局 ID 必须与 HDEF 上的布局 ID 匹配。在应用之前,根据需要修改修补程序中的布局 ID。

注意:Haswell 和 Broadwell 不需要 HDEF 上的 hda-gfx。

安装 FakePCIID.kext FakePCIID_Intel_HDMI_Audio

AppleHDAController kext实现了某些 HDAU 设备的白名单。一些 PC 使用不直接支持的设备。但 FakePCIID_Intel_HDMI_Audio 可以欺骗 PCI ID 以满足 AppleHDAController

安装 FakePCIID.kext 和 FakePCIID_Intel_HDMI_Audio.kext:https://github.com/RehabMan/OS-X-Fake-PCI-ID

阅读 README 以查找预构建的 kext 二进制文件。

即使在您拥有支持的 HDAU 设备的情况下,安装 FakePCIID_Intel_HDMI_Audio 也不会造成任何伤害。kext 不会附加到本机支持的设备。

检查你的工作

你可以判断一切是否完全在 IORegistryExplorer 中实现。

初始 IORegistryExplorer 设置:

  • 从这里下载(附加到帖子):http : //www.tonymacx86.com/audio/58368-guide-how-make-copy-ioreg.html
  • 首选项 – > 查找,勾选“属性键“

检查"hda-gfx" = <"onboard-1">

  • 在搜索框中输入”
  • 你应该在 HDEF/IGPU(Sandy/Ivy/Skylake/Kabylake)和 HDAU/IGPU(Haswell/Broadwell)上找到它。
  • 查看属性值,您应该看到“onboard-1”

检查 HDAU(仅限 Haswell/Broadwell):

  • 您应该在 PCI0

检查 layout-id 下找到 HDAU(不是 B0D3):

  • 在搜索框中键入“layout-id“
  • 您应该在 HDAU(如果适用)和 HDEF 上找到它
  • 如果您检查每个 HDAU 和 HDEF 中的值,HDAU 应具有相同的值

检查帧缓冲区:

  • 检查与您的 HDMI 对应的 IGPU 下的帧缓冲区 / DP 连接器
  • 它应该与物理连接器(DP:<00 04 00 00>,HDMI:<00 08 00 00>

匹配检查 HDAU 下的 FakePCIID 加载:

  • 如果您有不受支持的 HDAU,您会注意到 FakePCIID 已连接到 HDAU 设备。

如果只有其中一项要求未得到满足,则不起作用。

原文链接:

https://www.tonymacx86.com/threads/guide-intel-igpu-hdmi-dp-audio-all-sandy-bridge-kaby-lake-and-likely-later.189495/

感谢名单

  • Apple 的 macOS
  • RehabMan 维护的项目:OS-X-Clover-Laptop-Config Laptop-DSDT-Patch OS-X-USB-Inject-All 等
  • Acidanthera 维护的项目:OpenCorePkg lilu AirportBrcmFixup WhateverGreen VirtualSMC AppleALC BrcmPatchRAM MaciASL 等
  • headkaze 提供的工具:hackintool PinConfigurator BrcmPatchRAM
  • CloverHackyColor 维护的项目:CloverBootloader CloverThemes
  • 宪武整理的:P-little OC-little
  • chris1111 维护的项目:VoodooHDA Wireless USB Adapter Clover
  • zxystd 开发的 itlwm IntelBluetoothFirmware
  • lihaoyun6 提供的工具:CPU-S macOS-Displays-icon SidecarPatcher
  • sukka 更新维护的从 Clover 到 OpenCore —— Clover 迁移 OpenCore 指南
  • xzhih 提供的工具:one-key-hidpi
  • Bat.bat 更新维护的精解 OpenCore
  • shuiyunxc 更新维护的 OpenCore 配置错误、故障与解决办法
  • athlonreg 更新维护的 OpenCore 0.5+ 部件补丁 Common-patches-for-hackintosh
  • github.com
  • 码云 gitee.io
  • 扣钉 coding.net

参考及引用:

  • https://deviwiki.com/wiki/Dell
  • https://deviwiki.com/wiki/Dell_Wireless_1820A_(DW1820A)
  • Hervé 更新的 Broadcom 4350:https://osxlatitude.com/forums/topic/12169-bcm4350-cards-registry-of-cardslaptops-interop/
  • Hervé 更新的 DW1820A 支持机型列表:https://osxlatitude.com/forums/topic/11322-broadcom-bcm4350-cards-under-high-sierramojave/
  • nickhx 提供的蓝牙驱动:https://osxlatitude.com/forums/topic/11540-dw1820a-for-7490-help/?do=findComment&comment=92833
  • xjn819:使用 OpenCore 引导黑苹果 300 系列主板正确使用 AptioMemoryFix.efi 的姿势(重写版)
  • insanelymac.com
  • tonymacx86.com
  • 远景论坛
  • applelife.ru
  • olarila.com
正文完
 0
liveob
版权声明:本站原创文章,由 liveob 于2024-09-15发表,共计6374字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(没有评论)
验证码