视频教程
————————————–
目录:
- 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://imacos.top/2019/09/07/1920/我们得到以下信息:
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,有一个优先级层次结构,通过该层次结构可以对属性进行优先级排序:
alcid=xxx
boot-arg,对调试有用,并覆盖所有其他值alc-layout-id
在DeviceProperties中,建议用于AppleALClayout-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的提取与补丁的注入方式可以参考此文
AMD上没有麦克风:
当在AMD上运行AppleALC时,这是一个常见问题,特别是尚未制作任何补丁来支持Mic输入。目前,“最佳”解决方案是购买USB DAC / Mic或采用VoodooHDA.kext方法。VoodooHDA的问题在于,它比AppleALC不稳定且音频质量较差
来自Clover的相同布局ID在OpenCore上不起作用
这很可能是IRQ冲突的原因,在Clover上有大量自动应用的ACPI热补丁。解决这个问题有点麻烦,但是SSDTTime的FixHPET
选项可以处理大多数情况。
对于RTC和HPET从其他设备(如USB和音频)获取IRQ的奇怪情况,您可以在trashOS存储库中引用HP Compaq DC7900 ACPI补丁示例
也可以参照此教程操作:黑苹果使用AppleALC.kext声卡驱动注入了所有 id均不可用的解决方法https://imacos.top/2024/05/10/applealc/
评论4