视频教程

————————————–

目录:

  • 1.准备
  • 2.查找您的布局ID
  • 3.测试布局
  • 4.使布局ID更永久
  • 5.其他问题

1.准备

首先,我们必须要安装了Lilu和AppleALC,如果不确定是否已正确加载,则可以在终端中运行以下命令(这还将检查是否已加载AppleHDA,因为如果没有AppleALC,则无法正常打补丁):

kextstat | grep -E "AppleHDA|AppleALC|Lilu"

输入后回车出现如下

如果全部三个都出现,那就很好了。注意确保不存在 VoodooHDA 、FakePCllD_ Intel. HDMI_ Audio.kext、只要涉及声卡其他的驱动全部删除,否则将与AppleALC冲突。

2.确定声卡型号/查找您的布局ID

确定声卡型号的几种方式

  • 检查主板规格页面和手册
  • 在Windows中检查DeviceManager
  • 万能的百度也能查
  • 运行cat在Linux上的终端
    • cat /proc/asound/card0/codec#0 | less
  • 可通过windows系统查看,右键我的电脑——管理——设备管理器——声音、视频和游戏控制器——右键设备属性——详细信息——属性中选择硬件id,查看第一行“值”,注意dev后面的值,0282,那么型号就是ALC282.
  • 使用娱乐大师,导出txt文本的详细电脑配置信息,导出后也会显示你声卡的信息,如下图两个地方都会有

以下内容我将使用ALC1220为例,通过AppleALC.kext声卡驱动支持的硬件型号与ID速查表https://xingchencloud.com/19283.html我们得到以下信息:

0x100003, layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34

以上的信息说明了两件事:

  • 支持哪个硬件版本(0x100003),仅当列出多个版本且布局不同时才相关
  • 声卡ID(layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34)支持的各种布局ID

现在有了受支持的布局ID的列表,我们准备一一尝试

注意:如果您的音频编解码器是ALC 3XXX,则可能是错误的,而只是重新命名的控制器,请进行研究,以查看实际的控制器是什么。

  • ALC3601就是一个例子,但是当我们加载Linux时,会显示真实名称:ALC 671

3.测试声卡ID

为了测试我们的ID,我们将使用boot-arg alcid=xxx,其中xxx是您的ID值。请记住,一次尝试一个布局ID值 。不要添加多个ID或alcid boot-args,如果一个不起作用,请尝试下一个ID值。

NVRAM
├── Add
   ├── 7C436110-AB2A-4BBB-A880-FE41995C9F82
      ├── bootargs | String | alcid=11

4.使布局ID更永久

找到适合您的声卡Layout ID后,我们可以创建一个更永久的解决方案,以更接近真实Mac设置其Layout ID的方式。

使用AppleALC,有一个优先级层次结构,通过该层次结构可以对属性进行优先级排序:

  1. alcid=xxx boot-arg,对调试有用,并覆盖所有其他值
  2. alc-layout-id 在DeviceProperties中,建议用于AppleALC
  3. layout-id 在DeviceProperties中,Mac使用相同的属性

正如我们在“AppleALC.kext声卡驱动支持的硬件型号与ID速查表”中看到的那样,它希望通过您设置布局ID,alc-layout-id以便在AppleALC上更轻松,我们将使用DeviceProperties进行设置

首先,我们需要找出音频控制器PCI设备的地址。

  • 方式一:我们将在MacOS终端上使用方便的工具gfxutil
path/to/gfxutil -f HDEF

如下图HDEF之后的PciRoot(0x0)/Pci(0x1F,0x3)就是声卡的pcie设备地址

方式二:使用Hackintool.app - PCle - Audio device - PciRoot(0x0)/Pci(0x1F,0x3)

然后将此带有子级的PciRoot添加alc-layout-id到DeviceProperties-> Add下的config.plist中:

DeviceProperties
├── Add
   ├── PciRoot(0x0)/Pci(0x1F,0x3)
      ├── alc-layout-id | Data | 0b000000

请注意,0b000000值属于十六进制,来源于之前声卡列表ID 11,11为十进制,把11转换为十六进制即为0b000000,你可以是用Hackintool.app的计算器来转换

因此,在这个例子中,alcid=11将成为alc-layout-id | Data | <0B000000>

请注意,最终值应总共为4个字节(即0B 00 00 00),因为声卡ID超过255(FF 00 00 00)将需要记住这些字节已转换。所以256将变成FF 01 00 00

5.其他问题

部分笔记本电脑需要打如下的DSDT补丁才能驱动

# Maintained by: RehabMan for: Laptop Patches
# system_IRQ.txt
# This can fix non-working audio and also has an affect on HPET.
# Use this if you have issues with patched AppleHDA (required on almost all laptops)
# or if you have issues with HPET (restart after wake).
# IRQ fix
into device name_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0103 code_regex IRQNoFlags\s\(\)\n\s+\{.*\} removeall_matched;
into device name_hid PNP0103 code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\).*\n\s+\{((?:.|\n)*)\}\) replace_matched
begin
Name (%1, ResourceTemplate()\n
{\n
    IRQNoFlags() { 0, 8, 11, 15 }\n
%2
})\n
end;

关于DSDT的提取与补丁的注入方式可以参考此文

https://xingchencloud.com/19495.html

AMD上没有麦克风

当在AMD上运行AppleALC时,这是一个常见问题,特别是尚未制作任何补丁来支持Mic输入。目前,“最佳”解决方案是购买USB DAC / Mic或采用VoodooHDA.kext方法。VoodooHDA的问题在于,它比AppleALC不稳定且音频质量较差

来自Clover的相同布局ID在OpenCore上不起作用

这很可能是IRQ冲突的原因,在Clover上有大量自动应用的ACPI热补丁。解决这个问题有点麻烦,但是SSDTTimeFixHPET选项可以处理大多数情况。

对于RTC和HPET从其他设备(如USB和音频)获取IRQ的奇怪情况,您可以在trashOS存储库中引用HP Compaq DC7900 ACPI补丁示例