使用 AppleALC 驱动黑苹果声卡
概述
最后更新:2023/12/30,添加了详细整理好的定制 layout-id 表格
近来发现很多新手似乎不太明白驱动声卡的流程,也有同学清楚需要使用 AppleALC.kext,也知道要注入 id,可是就在启动参数那里扔一个 alcid=1 就觉得“我完事了”😂,这个其实还没完,还有一些步骤要做,本篇将详细介绍一下驱动声卡的详细方法。
瑞昱 ALC 芯片
对于主流的 瑞昱 ALC 芯片(Realtek ALC),推荐使用 AppleALC.kext,它由 Acidanthera 团队开发维护,是一个开放源代码内核扩展(Kernel Extension,缩写 kext),可以无需进行任何文件系统修改就可以为不受苹果官方支持的编解码器提供 HD 音频服务。目前来看,市面上大多数主板均板载了瑞昱的 ALC 芯片,所以 AppleALC.kext 也成为了主流驱动方案。
如何确认你的音频芯片是不是瑞昱,具体是 ALC 哪一款,可以通过以下几种方法:
鲁大师经典版,硬件检测标签下,声卡一栏在大部分情况下可以直接看到瑞昱以及具体 ALC 型号:
或者到主板的官方查看具体参数,比如微星 MPG Z490M,一般情况下主板厂商会在参数页面明确标注出具体芯片的型号:
此外,如果你已经安装好了 macOS,还可以使用 Hackintool → 音频 进行查看。
仅在少数情况下,可能存在显示芯片型号和实际芯片型号不一致的情况,常见于 OEM 产品重新包装,但实际上芯片还是那个芯片,比如戴尔 Inspiron 5548,你会看到 ALC3234 这种古怪型号,但实际上它是 ALC255 加了个马甲,此类情况需要先查清楚真实的型号。
最后,除了瑞昱的 ALC 系列芯片外,AppleALC 还支持部分其他品牌的芯片(但型号都比较老旧),例如 AnalogDevices、Conexant,IDT 等,具体可参考下面的表格。
制造商 | 编码译码器 | 修订和布局 | 最小内核 | 最大内核 |
---|---|---|---|---|
AnalogDevices | AD1984 | 0x100400, layout 11 | 13 (10.9) | |
AnalogDevices | AD1984A | 0x100400, layout 11, 13, 44 | 13 (10.9) | |
AnalogDevices | AD1988A | layout 12 | 13 (10.9) | |
AnalogDevices | AD1988B | layout 5, 7, 12 | 13 (10.9) | |
AnalogDevices | AD2000B | layout 5, 7 | 13 (10.9) | |
Creative | CA0132 | 0x100918 layout 0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 12 | 13 (10.9) | |
CirrusLogic | CS4210 | 0x100101 layout 13 | 13 (10.9) | |
CirrusLogic | CS4213 | 0x100100 layout 28 | 13 (10.9) | |
Conexant | CX8050 | layout 3, 13 | 16 (10.12) | |
Conexant | CX8070/CX11880 | layout 15 | 13 (10.9) | |
Conexant | CX8150 | layout 21, 22 | 13 (10.9) | |
Conexant | CX8200 | layout 3, 15, 21, 23 | 16 (10.12) | |
Conexant | CX8400 | layout 12 | 13 (10.9) | |
Conexant | CX20561 | 0x100000, layout 11 | 13 (10.9) | |
Conexant | CX20583 | layout 3 | 13 (10.9) | |
Conexant | CX20585 | layout 3, 13 | 13 (10.9) | |
Conexant | CX20588 | layout 3 | 13 (10.9) | |
Conexant | CX20590 | 0x100000, 0x100002, 0x100003, layout 3, 12, 13, 14, 28 | 13 (10.9) | |
Conexant | CX20632 | layout 23, 28 | 13 (10.9) | |
Conexant | CX20641 | layout 11, 13 | 13 (10.9) | |
Conexant | CX20642 | layout 11, 13 | 13 (10.9) | |
Conexant | CX20722 | layout 3 | 16 (10.12) | |
Conexant | CX20724 | layout 3, 13 | 13 (10.9) | |
Conexant | CX20751/CX20752 | layout 3, 21, 28 | 13 (10.9) | |
Conexant | CX20753/CX20754 | layout 3, 14, 15, 21 | 16 (10.12) | |
Conexant | CX20755 | layout 3 | 13 (10.9) | |
Conexant | CX20756 | layout 3, 13 | 13 (10.9) | |
Conexant | CX20757 | layout 3, 28 | 13 (10.9) | |
IDT | IDT92HD66C3/65 | layout 3 | 13 (10.9) | |
IDT | IDT92HD71B7X | layout 3 | 13 (10.9) | |
IDT | IDT92HD73C1X5 | layout 19, 21 | 13 (10.9) | |
IDT | IDT92HD75B2X5 | layout 3 | 13 (10.9) | |
IDT | IDT92HD75B3X5 | layout 3, 11 | 13 (10.9) | |
IDT | IDT92HD99BXX | layout 3 | 13 (10.9) | |
IDT | IDT92HD87B1 | layout 3 | 13 (10.9) | |
IDT | IDT92HD81B1C5 | layout 3, 11 | 13 (10.9) | |
IDT | IDT92HD81B1X5 | layout 3, 11, 12, 20, 21, 28 | 13 (10.9) | |
IDT | IDT92HD87B1/3 | layout 12, 13 | 13 (10.9) | |
IDT | IDT92HD87B2/4 | layout 12 | 13 (10.9) | |
IDT | IDT92HD90BXX | layout 3, 12 | 13 (10.9) | |
IDT | IDT92HD91BXX | 0x100102, 0x100303 layout 3, 12, 13, 33, 84 | 13 (10.9) | |
IDT | IDT92HD93BXX | 0x100203, layout 12 | 13 (10.9) | |
IDT | IDT92HD95 | layout 12 | 13 (10.9) | |
Realtek | ALC215 | layout 18 | 13 (10.9) | |
Realteck | ALC222 | layout 11 | 12 (10.8) | |
Realtek | ALC221 | layout 11, 15 | 12 (10.8) | |
Realtek | ALC225 | layout 28, 30, 33, 90 | 13 (10.9) | |
Realtek | ALC230 | layout 13, 20 | 13 (10.9) | |
Realtek | ALC233 | layout 3, 4, 5, 13, 21, 27, 28, 29, 32, 33 | 13 (10.9) | |
Realtek | ALC245 | layout 11, 12, 13 | 13 (10.9) | |
Realtek | ALC235 | layout 3, 11, 12, 14, 15, 16, 21, 22, 28 | 13 (10.9) | |
Realtek | ALC236 | 0x100001, 0x100002 layout 3, 11, 13, 15, 16, 54, 99 | 13 (10.9) | |
Realtek | ALC255 | layout 3, 11, 13, 15, 17, 18, 21, 27, 28, 30, 31, 99 | 13 (10.9) | |
Realtek | ALC256 | layout 5, 11, 13, 14, 21, 22, 28, 56, 57, 66, 97 | 13 (10.9) | |
Realtek | ALC257 | layout 11, 18 | 13 (10.9) | |
Realtek | ALC260 | layout 11, 12 | 13 (10.9) | |
Realtek | ALC262 | 0x100202 layout 7, 11, 12, 13, 28 | 13 (10.9) | |
Realtek | ALC268 | layout 3 | 13 (10.9) | |
Realtek | ALC269 | 0x100004, 0x100100, 0x100202, 0x100203 layout 1-21, 27-33, 35, 40, 45, 55, 58, 66, 76, 88, 93, 99, 100, 127, 188 | 12 (10.8) | |
Realtek | ALC270 | 0x100100, layout 3, 4, 21, 27, 28 | 13 (10.9) | |
Realtek | ALC272 | 0x100001, layout 3, 11, 18, 21 | 13 (10.9) | |
Realtek | ALC274 | 0x100004, layout 21 | 13 (10.9) | |
Realtek | ALC275 | 0x100005, 0x100008, layout 3, 13, 28 | 13 (10.9) | |
Realtek | ALC280 | layout 3, 4, 11, 13, 15, 16, 21 | 13 (10.9) | |
Realtek | ALC282 | 0x100003, layout 3, 4, 13, 22, 27, 28, 29, 41, 43, 51, 76, 86, 127 | 12 (10.8) | |
Realtek | ALC283 | layout 1, 3, 11, 15, 44, 66 | 13 (10.9) | |
Realtek | ALC287 | layout 11 | 13 (10.9) | |
Realtek | ALC284 | layout 3 | 13 (10.9) | |
Realtek | ALC285 | layout 11, 21, 31 | 13 (10.9) | |
Realtek | ALC286 | 0x100002, 0x100003 layout 3, 11 | 13 (10.9) | |
Realtek | ALC288 | layout 3, 13, 23 | 13 (10.9) | |
Realtek | ALC289 | layout 23 | 13 (10.9) | |
Realtek | ALC290 | layout 3, 4, 28 | 13 (10.9) | |
Realtek | ALC292 | layout 12, 18, 28, 32, 55 | 13 (10.9) | |
Realtek | ALC293 | layout 11, 28, 29 | 13 (10.9) | |
Realtek | ALC623 | layout 21 | 13 (10.9) | |
Realtek | ALC294 | layout 11, 12, 13, 21 | 13 (10.9) | |
Realtek | ALC295 | layout 1, 3, 13, 14, 15, 21, 28, 77 | 13 (10.9) | |
Realtek | ALC298 | 0x100101, 0x100103 layout 3, 11, 13, 21, 22, 28, 29, 30, 32, 47, 66, 72, 99 | 13 (10.9) | |
Realtek | ALC299 | 0x100002 layout 21, 22 | 13 (10.9) | |
Realtek | ALC662 | 0x100101, 0x100300 layout 5, 7, 11, 12, 13, 15, 16, 17 | 13 (10.9) | |
Realtek | ALC663 | 0x100001, 0x100002, layout 3, 4, 15, 28, 99 | 13 (10.9) | |
Realtek | ALC665 | layout 12, 13 | 13 (10.9) | |
Realtek | ALC668 | 0x100003, layout 3, 20, 27, 28, 29 | 13 (10.9) | |
Realtek | ALC670 | 0x100002, layout 12 | 13 (10.9) | |
Realtek | ALC671 | layout 12, 15 | 13 (10.9) | |
Realtek | ALC700 | layout 11 | 13 (10.9) | |
Realtek | ALC882 | 0x100101, layout 5, 7 | 13 (10.9) | |
Realtek | ALC883 | 0x100002, layout 7 | 13 (10.9) | |
Realtek | ALC885 | 0x100101, 0x100103 layout 1, 12, 15 | 13 (10.9) | |
Realtek | ALC887 | 0x100202, 0x100302, layout 1, 2, 3, 5, 7, 11, 13, 17, 18, 20, 33, 40, 50, 52, 53, 87, 99 | 13 (10.9) | |
Realtek | ALC888 | 0x100101, 0x100001, 0x100202, 0x100302 layout 1, 2, 3, 4, 5, 7, 11, 27, 28, 29 | 13 (10.9) | |
Realtek | ALC889 | 0x100004, layout 1, 2, 3, 11, 12 | 13 (10.9) | |
Realtek | ALC891 | 0x100002, layout 11, 13 | 13 (10.9) | |
Realtek | ALC892 | 0x100302, layout 1, 2, 3, 4, 5, 7, 12, 15, 16, 17, 18, 28, 31, 90, 92, 97, 99 | 13 (10.9) | |
Realtek | ALC897 | layout 12, 23, 66, 69 | 13 (10.9) | |
Realtek | ALC898 | layout 1,2,3,5,7,11,13,28,65,66,98,99,101 | 13 (10.9) | |
Realtek | ALC1150 | 0x100001, layout 1, 2, 3, 5, 7, 99 | 12 (10.8) | |
Realtek | ALC1220 | layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 17, 21, 27, 28, 29, 30, 34, 35, 98, 99 | 12 (10.8) | |
Realtek | ALCS1200A | layout 1, 2, 3, 7, 49, 50, 51, 69 | 12 (10.8) | |
Realtek | ALCS1220A | layout 1, 2, 3, 5, 7, 11, 20, 21 | 15 (10.11) | |
SigmaTel | STAC9200 | 0x102201, layout 11 | 12 (10.8) | |
SigmaTel | STAC9872AK | 0x100201, layout 12 | 12 (10.8) | |
VIA | VT1705 | 0x100000, layout 21 | 13 (10.9) | |
VIA | VT1802 | 0x100000, layout 3, 33, 65 | 13 (10.9) | |
VIA | VT2020/VT2021 | 0x100100, layout 5, 7, 9 | 13 (10.9) | |
AMD | Radeon 290/290X | 15 (10.11) | ||
AMD | Radeon R9 Fury/R9 Fury X | 15 (10.11) | ||
AMD | Vega-M | 15 (10.11) | ||
AMDZEN | Controller 0x1457 | |||
AMDZEN | Controller 0x1487 | |||
AMDZEN | Controller 0x15E3 | |||
Intel | HD4600 | 13 (10.9) | ||
Intel | Atom Z36xxx/Z37xxx | 13 (10.9) | ||
Intel | Z97 controller | 13 (10.9) | ||
Intel | X99 controller 0x8D20 | 13 (10.9) | ||
Intel | X99 controller 0x8D21 | 13 (10.9) | ||
Intel | WhiskeyLake | 16 (10.12) | ||
Intel | 200 Series Mobile | 16 (10.12) | ||
Intel | 200 Series | 16 (10.12) | ||
Intel | 300 Series | 16 (10.12) | ||
Nvidia | GK208 | 17 (10.13.4) | ||
Nvidia | GM200 | 17 (10.13.4) | ||
Nvidia | GM204 | 17 (10.13.4) | ||
Nvidia | GM206 | 17 (10.13.4) | ||
Nvidia | GP102 | 17 (10.13.4) | ||
Nvidia | GP104 | 17 (10.13.4) | ||
Nvidia | GP106 | 17 (10.13.4) | ||
Nvidia | GP107 | 17 (10.13.4) | ||
Nvidia | GP108 | 17 (10.13.4) | ||
Nvidia | GTX860M | 17 (10.13) |
另外,每次 AppleALC.kext 更新版本时都会添加一些新的型号,具体可参阅下表,或参阅 AppleALC 下载页的更新说明部分。
AppleALC 支持的声卡详细列表
找到合适的布局 ID
下一步,根据你得到的 ALC 芯片型号信息,在上面的表中找到对应的布局 ID(layout-id),例如 ALC1220 的对应 id 有 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 34 ,前面可能还有一个修订号,这个指的是硬件版本,个别型号就会有这类情况,就是布局 ID 特别多,不知道用哪个,这个时候推荐优先尝试 11 以下的 id,因为 1-10 是为基本补丁资源预留的布局 ID:
- 台式机优先 1, 2, 3, 5, 7
- 笔记本优先 1, 2, 3, 4, 5, 6, 7, 8
如果是比较新的主板,例如 300 系或 400 系,近期的 AppleALC 更新中有人专门为其定制了布局 ID 的,那么优先选择定制的 ID。
这里再介绍另一种布局 ID 的查找方法,打开 AppleALC 的开发堆栈,在列表中可以直接看到支持的型号表:
找到你的芯片型号点击进入,即可看到有几个 layout-id:
注入启动参数测试布局 ID
这里分为 OpenCore 和 Clover 两种情况。为了快速测出哪个布局 ID 适用你的硬件,推荐使用启动参数注入法。需要注意的是,无论使用 OpenCore 引导还是 Clover 引导,都不要使用下面的 ACPI 重命名补丁,因为 AppleALC 自己可以处理这些问题:
- HDAS to HDEF
- B0D3 to HDAU
OpenCore
下载 AppleALC.kext,把文件放到 /EFI/OC/Kexts/ 目录,然后使用你喜欢的编辑器编辑 config.plist 文件,找到以下位置:
NVRAM → 7C436110-AB2A-4BBB-A880-FE41995C9F82 → boot-args
以 ALC1220 为例,计划测试 1, 2, 3, 5, 7 这几个 ID,直接添加启动参数 alcid=1,重启后若没有效果则修改为 alcid=2,以此类推,直到找到适合使用的布局 ID。
Clover
使用三叶草引导的用户注意,注意需要先关闭以下选项:
- ACPI → Fixes → FixHDA
- ACPI → Fixes → AddHDMI
- Devices → UseIntelHDMI
- Devices → Audio → Inject 的值设置为 No
下载 AppleALC.kext,把文件放到 /EFI/Clover/Kexts/Other/ 目录,然后找到以下位置:
Boot → Arguments
以 ALC1220 为例,计划测试 1, 2, 3, 5, 7 这几个 ID,直接添加启动参数 alcid=1,重启后若没有效果则修改为 alcid=2,以此类推,直到找到适合使用的布局 ID。
固定注入 ALC 布局 ID
经过上一步确定了要使用的 id 以后,就可以把信息固定到设备属性(DeviceProperties)中,这里分为 OpenCore 和 Clover 两种情况。
OpenCore
使用你中意的编辑器编辑 config.plist 文件,找到以下位置:
DeviceProperties → Devices
添加以下 Pci 位置:
PciRoot(0x0)/Pci(0x1F,0x3)
在大多数情况下,板载音频硬件位置就是上述位置,如果不是则可以使用下面的工具来确定具体位置。
接下来,注入能让 AppleALC 正确运行的信息,以 OpenCore Configurator 为例,设置内容如下图:
参数解释:
Clover
使用三叶草引导的用户注意,注意需要先关闭以下选项:
- ACPI → Fixes → FixHDA
- ACPI → Fixes → AddHDMI
- Devices → UseIntelHDMI
- Devices → Audio → Inject 的值设置为 No
然后找到下图中的位置进行设置:
参数解释:
最后,删除启动参数中的 alcid=N,重启计算机即可。至此,使用 AppleALC.kext 驱动声卡的流程结束。
常见问题
Q:注入了所有列出的 id,都没有用。
A:打开终端,输入以下命令,检查 AppleALC 是否正确加载:
kextstat | grep -E "AppleHDA | AppleALC | Lilu"
如果你看到三行分别包含 AppleHDA、AppleALC、Lilu 的输出结果,那么 AppleALC.kext 就是正常加载状态,注意,Lilu.kext 需要在 config 中排到第一位置,否则你的 macOS 系统会出现很多莫名其妙的问题。另外,请勿同时启用下面的 kexts,因为它们和 AppleALC 是冲突的:
- RealtekALC.kext
- CloverALC.kext
- VoodooHDA.kext
- HDABlocker.kext
- HDAEnabler.kext
Q:我的芯片是 ALC,但是不在任何一个列表里怎么办?
A:这种情况先在网上搜索一下你得到的 ALC 芯片型号,有一些控制器是主板厂商自己重新更换了马甲的,例如 ALC3601,其真身是 ALC671。
Q:Clover 中可以使用的 id,到了 OpenCore 里就没有声音输出?
A:这可能是由 IRQ 冲突导致的,因 Clover 有不少的 ACPI 热补丁是自动应用的,所以掩盖了这个问题,所以到了 OpenCore 问题又出现。可以使用 SSDTTime 中的 FixHPET 选项来解决问题。
Q:从 Windows 热重启切换到 macOS 后音频丢失怎么办?
A:可以尝试添加启动参数 alctsel=1 或添加以下设备属性:
alctsel | Data | 01000000
Q:我的声卡无法用 AppleALC 驱动,怎么办?
A:可使用万能声卡驱动 VoodooHDA.kext,效果比 AppleALC 要差一些,不过至少解决了从无到有的问题。
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
黑苹果星球 » 使用 AppleALC 驱动黑苹果声卡
要咋样才能支持 siri 唤醒呢?
A:这可能是由 IRQ 冲突导致的,因 Clover 有不少的 ACPI 热补丁是自动应用的,所以掩盖了这个问题,所以到了 OpenCore 问题又出现。可以使用 SSDTTime 中的 FixHPET 选项来解决问题。
这个应该怎么使用?、
下载,运行,选择对应选项,生成ssdt
加入了alctsel还是不行咋办
还可以试一下把热重启改成冷重启
https://heipg.cn/tutorial/acpi-hardreset-to-fullreset.html
使用启动参数测试布局 ID以测出适用硬件的ID,最后匹配上应该在重启后看到什么效果?是什么样的界面呢。本人ALC892,调节音量时图标下方有个禁止标志。
苹果认为HDMI设备的音量调节应该由设备完成而不是由macOS负责
再一个就是macOS的HDMI驱动有问题,就是音频方面的,且只对Navi系显卡
建议更换成DisplayPort接口
音量调节问题可由第三方软件比如MonitorControl来完成
识别到声卡但是没有声音怎么办呢
更换layout-id
或自行定制,另外少数一些AMD主板会存在无法驱动的情况
很不错,加油黑苹果系统有些烧脑
感谢大佬,我的是创新声卡
intel丽音驱动干扰无麦克风输入
感谢大佬,终于有声了。。。就是一卡一卡的。。。。
按此文的方法终于可以把声卡完美驱动了,之前把750I独立显卡驱动成功。这样我的黑苹果算是完美安装成功了。在此谢谢各路大神。
MSI Z590i Unify + i910900K,可以识别到声卡但无声音,各们有遇到吗?