黑苹果声卡了解AppleALC的工作原理
黑苹果声卡AppleALC
AppleALC的工作方式与传统的预修补或虚拟kextAppleHDA解决方案有所不同,因此,将AppleALC看作是编解码器连接器,布局和平台补丁的大型数据库是最好的方法。加载后,Lilu/ AppleALC将自动检测您拥有的音频编解码器的类型,并将从其数据库向AppleHDA动态应用一组编解码器补丁。
AppleALC将使用的补丁集是通过使用索引标识符来定义的。为了向后兼容,补丁集索引标识符是一个称为“ layout-id ” 的属性的值,该属性在黑苹果Hackintosh世界中一直用于在AppleHDA(或虚拟HDA kext)的预修补版本中选择布局。 )。
AppleALC睡眠唤醒有效
作为一项额外的好处,AppleALC还可以处理大多数编解码器的唤醒后启用,因此无需安装/使用Codec Commander。
Lilu和AppleALC的交互作用
在Lilu加载时,它会找到“ layout-id ” 的值,并将其传递给AppleALC,后者会创建一个新的名为“ alc-layout-id ”的设备属性,该属性继承该值。layout-id ”更改为新的目标ID,并使用编解码器所需的连接器信息,平台和布局文件(由“ alc-layout-id “)。
此方法允许AppleALC否定Mojave中已删除的layout-id,因为” layout-id “ 的注入值仅用作AppleALC编解码器补丁数据库中的索引请注意,AppleALC不仅在Mojave的所有版本的macOS上都将使用此layout-id重新映射方案。
检查支持的编解码器
要查看AppleALC是否支持您的编解码器,请在源代码中查找其名称。的Resources文件夹。如果不支持您的编解码器,则可以通过在AppleALC官方帮助线程中发布来要求将其包含在下一版本中。
如果AppleALC已经支持您的编解码器,则可以通过在相应的编解码器文件夹中打开info.plist文件来检查支持哪种布局,从代码中您可以看到可用的布局ID,这些注释可以为您提供提示一个使用,
例如,我的2017 HP Spectre X360笔记本电脑具有Realtek ALC295编解码器,因此我在ALC295子文件夹中打开info.plist:- 在此示例中,我知道Mirone的补丁集是我需要的补丁集,即布局3实例读取每个注释,以查看与您的系统匹配的布局描述,如果不确定是否列出所有可用的layout-id值,然后依次尝试每个,直到找到一个可用的布局。AppleALC配置 首先将最新版本的Lilu和AppleALC安装到/ L / E中
说明:SLE:/System/Library/Extensions
安装AppleALC并执行上述检查后,您发现ioreg中存在“ alc-layout-id ”属性,并且该值和属性“ layout-id ”似乎正确,但您仍然没有声音,则可能是由于HPET(高精度事件计时器)引起的IRQ冲突。 HPET是MacOS中音频正常工作的基本要求,并且该论坛上的几乎所有安装指南都指出您应该在BIOS中启用HPET选项,但是在某些主板和笔记本电脑上,HPET的本机DSDT代码可能会导致IQR冲突,可能会阻止AppleHDA kext正确初始化和/或导致“刮擦”音频。 检查此问题的一种方法是在终端中执行以下命令:-
码:
kextstat | grep 'Lilu\|AppleALC\|AppleHDA'
在结果输出中,您应该看到列出了Lilu,AppleALC和AppleHDA kext。复制代码从上面的示例中可以看到,如果正在加载AppleHDA,则还将看到AppleHDAController和AppleHDAHardwareConfigDriverkext,但是要注意的重要一点是AppleHDA。
如果在输出(com.apple.driver.AppleHDA)中看不到AppleHDA,则首先检查BIOS设置,并确保已启用HPET选项(如果已启用),并且仍然在输出中看不到AppleHDA。上面的命令,则需要在DSDT中修补HPET代码。 最简单的方法是在ACPI / DSDT / Fixes中使用Cover选项FixHPET:-复制代码
AppleALC的工作方式与传统的预修补或虚拟kextAppleHDA解决方案有所不同,因此,将AppleALC看作是编解码器连接器,布局和平台补丁的大型数据库是最好的方法。加载后,Lilu/ AppleALC将自动检测您拥有的音频编解码器的类型,并将从其数据库向AppleHDA动态应用一组编解码器补丁。
AppleALC将使用的补丁集是通过使用索引标识符来定义的。为了向后兼容,补丁集索引标识符是一个称为“ layout-id ” 的属性的值,该属性在黑苹果Hackintosh世界中一直用于在AppleHDA(或虚拟HDA kext)的预修补版本中选择布局。 )。
AppleALC睡眠唤醒有效
作为一项额外的好处,AppleALC还可以处理大多数编解码器的唤醒后启用,因此无需安装/使用Codec Commander。
Lilu和AppleALC的交互作用
在Lilu加载时,它会找到“ layout-id ” 的值,并将其传递给AppleALC,后者会创建一个新的名为“ alc-layout-id ”的设备属性,该属性继承该值。layout-id ”更改为新的目标ID,并使用编解码器所需的连接器信息,平台和布局文件(由“ alc-layout-id “)。
此方法允许AppleALC否定Mojave中已删除的layout-id,因为” layout-id “ 的注入值仅用作AppleALC编解码器补丁数据库中的索引请注意,AppleALC不仅在Mojave的所有版本的macOS上都将使用此layout-id重新映射方案。
检查支持的编解码器
要查看AppleALC是否支持您的编解码器,请在源代码中查找其名称。的Resources文件夹。如果不支持您的编解码器,则可以通过在AppleALC官方帮助线程中发布来要求将其包含在下一版本中。
如果AppleALC已经支持您的编解码器,则可以通过在相应的编解码器文件夹中打开info.plist文件来检查支持哪种布局,从代码中您可以看到可用的布局ID,这些注释可以为您提供提示一个使用,
例如,我的2017 HP Spectre X360笔记本电脑具有Realtek ALC295编解码器,因此我在ALC295子文件夹中打开info.plist:- 在此示例中,我知道Mirone的补丁集是我需要的补丁集,即布局3实例读取每个注释,以查看与您的系统匹配的布局描述,如果不确定是否列出所有可用的layout-id值,然后依次尝试每个,直到找到一个可用的布局。AppleALC配置 首先将最新版本的Lilu和AppleALC安装到/ L / E中
说明:SLE:/System/Library/Extensions
ALC中HPET问题(高精度事件计时器)
安装AppleALC并执行上述检查后,您发现ioreg中存在“ alc-layout-id ”属性,并且该值和属性“ layout-id ”似乎正确,但您仍然没有声音,则可能是由于HPET(高精度事件计时器)引起的IRQ冲突。 HPET是MacOS中音频正常工作的基本要求,并且该论坛上的几乎所有安装指南都指出您应该在BIOS中启用HPET选项,但是在某些主板和笔记本电脑上,HPET的本机DSDT代码可能会导致IQR冲突,可能会阻止AppleHDA kext正确初始化和/或导致“刮擦”音频。 检查此问题的一种方法是在终端中执行以下命令:-
码:
kextstat | grep 'Lilu\|AppleALC\|AppleHDA'
在结果输出中,您应该看到列出了Lilu,AppleALC和AppleHDA kext。
- kextstat | grep'Lilu\|AppleALC\|AppleHDA'
- 20 4 0xffffff7f81041000 0x22000 0x22000 as.vit9696.Lilu (1.2.8) 54014689-C8DA-318B-84F4-944BBA7AD2AC <8 6 5 32 1>
- 23 0 0xffffff7f811bd000 0xdf000 0xdf000 as.vit9696.AppleALC (1.3.3) B60FCBAF-6BC2-36EF-A1E6-D5BE2863C35B <2013 8 6 5 3 2 1>
- 138 1 0xffffff7f830a7000 0x1d000 0x1d000 com.apple.driver.AppleHDAController (282.10) 70256EC9-AF38-31BD-A3C5-9C0E30B64AA3<137 113 107 13 8 7 6 5 3 1>
- 157 0 0xffffff7f8323a000 0xb7000 0xb7000 com.apple.driver.AppleHDA (282.10) B2208DA8-8CD9-36D8-BD59-C6D9A5379585<156 138 137 124 113 107 7 6 5 3 1>
- 159 0 0xffffff7f830c6000 0x2000 0x2000 com.apple.driver.AppleHDAHardwareConfigDriver (282.10)C4F674A0-5828-3D97-82BF-A81C8B8BDDBA <5 3>
- <key>ACPI</key>
- <dict>
- <key>DSDT</key>
- <dict>
- <key>Fixes</key>
- <dict>
- <key>FixHPET</key>
- <true/>