使用 AppleALC 驱动黑苹果声卡

概述

近来发现很多新手似乎不太明白驱动声卡的流程,也有同学清楚需要使用 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 产品,比如联想的启天 M420 部分机型,此类情况请先百度自己的芯片型号以确定真实的型号。

最后,除了瑞昱的 ALC 系列芯片外,AppleALC 还支持部分其他品牌的芯片(但型号都比较老旧),例如 AnalogDevices、Conexant,IDT 等,具体可参考下面的表格。另外,每次 AppleALC.kext 更新版本时都会添加一些新的型号,这部分信息并不在下表中,请参阅 AppleALC 下载页的更新说明部分

制造商编码译码器修订和布局最小内核最大内核
AnalogDevicesAD19840x100400, layout 1113 (10.9)
AnalogDevicesAD1984A0x100400, layout 11, 13, 4413 (10.9)
AnalogDevicesAD1988Alayout 1213 (10.9)
AnalogDevicesAD1988Blayout 5, 7, 1213 (10.9)
AnalogDevicesAD2000Blayout 5, 713 (10.9)
CreativeCA01320x100918 layout 0, 1, 2, 3, 4, 5, 6, 9, 10, 11, 1213 (10.9)
CirrusLogicCS42100x100101 layout 1313 (10.9)
CirrusLogicCS42130x100100 layout 2813 (10.9)
ConexantCX8050layout 3, 1316 (10.12)
ConexantCX8070/CX11880layout 1513 (10.9)
ConexantCX8150layout 21, 2213 (10.9)
ConexantCX8200layout 3, 15, 21, 2316 (10.12)
ConexantCX8400layout 1213 (10.9)
ConexantCX205610x100000, layout 1113 (10.9)
ConexantCX20583layout 313 (10.9)
ConexantCX20585layout 3, 1313 (10.9)
ConexantCX20588layout 313 (10.9)
ConexantCX205900x100000, 0x100002, 0x100003, layout 3, 12, 13, 14, 2813 (10.9)
ConexantCX20632layout 23, 2813 (10.9)
ConexantCX20641layout 11, 1313 (10.9)
ConexantCX20642layout 11, 1313 (10.9)
ConexantCX20722layout 316 (10.12)
ConexantCX20724layout 3, 1313 (10.9)
ConexantCX20751/CX20752layout 3, 21, 2813 (10.9)
ConexantCX20753/CX20754layout 3, 14, 15, 2116 (10.12)
ConexantCX20755layout 313 (10.9)
ConexantCX20756layout 3, 1313 (10.9)
ConexantCX20757layout 3, 2813 (10.9)
IDTIDT92HD66C3/65layout 313 (10.9)
IDTIDT92HD71B7Xlayout 313 (10.9)
IDTIDT92HD73C1X5layout 19, 2113 (10.9)
IDTIDT92HD75B2X5layout 313 (10.9)
IDTIDT92HD75B3X5layout 3, 1113 (10.9)
IDTIDT92HD99BXXlayout 313 (10.9)
IDTIDT92HD87B1layout 313 (10.9)
IDTIDT92HD81B1C5layout 3, 1113 (10.9)
IDTIDT92HD81B1X5layout 3, 11, 12, 20, 21, 2813 (10.9)
IDTIDT92HD87B1/3layout 12, 1313 (10.9)
IDTIDT92HD87B2/4layout 1213 (10.9)
IDTIDT92HD90BXXlayout 3, 1213 (10.9)
IDTIDT92HD91BXX0x100102, 0x100303 layout 3, 12, 13, 33, 8413 (10.9)
IDTIDT92HD93BXX0x100203, layout 1213 (10.9)
IDTIDT92HD95layout 1213 (10.9)
RealtekALC221layout 11, 1512 (10.8)
RealtekALC225/ALC3253layout 28, 30, 3313 (10.9)
RealtekALC230layout 13, 2013 (10.9)
RealtekALC233/ALC3236layout 3, 4, 5, 13, 21, 27, 28, 29, 32, 3313 (10.9)
RealtekALC235layout 3, 11, 12, 14, 15, 16, 21, 22, 2813 (10.9)
RealtekALC2360x100001, 0x100002 layout 3, 11, 13, 15, 16, 54, 9913 (10.9)
RealtekALC255/ALC3234layout 3, 11, 13, 15, 17, 18, 21, 27, 28, 30, 31, 9913 (10.9)
RealtekALC256/ALC3246layout 5, 11, 13, 14, 21, 22, 28, 56, 57, 66, 9713 (10.9)
RealtekALC257layout 11, 1813 (10.9)
RealtekALC260layout 11, 1213 (10.9)
RealtekALC2620x100202 layout 7, 11, 12, 13, 2813 (10.9)
RealtekALC268layout 313 (10.9)
RealtekALC269/ALC271X0x100004, 0x100100, 0x100202, 0x100203 layout 1-21, 27-33, 35, 40, 45, 55, 58, 66, 76, 88, 93, 99, 100, 127, 18812 (10.8)
RealtekALC2700x100100, layout 3, 4, 21, 27, 2813 (10.9)
RealtekALC2720x100001, layout 3, 11, 18, 2113 (10.9)
RealtekALC2740x100004, layout 2113 (10.9)
RealtekALC2750x100005, 0x100008, layout 3, 13, 2813 (10.9)
RealtekALC280layout 3, 4, 11, 13, 15, 16, 2113 (10.9)
RealtekALC2820x100003, layout 3, 4, 13, 22, 27, 28, 29, 41, 43, 51, 76, 86, 12712 (10.8)
RealtekALC283layout 1, 3, 11, 15, 44, 6613 (10.9)
RealtekALC284layout 313 (10.9)
RealtekALC285layout 11, 21, 3113 (10.9)
RealtekALC2860x100002, 0x100003 layout 3, 1113 (10.9)
RealtekALC288layout 3, 13, 2313 (10.9)
RealtekALC289layout 2313 (10.9)
RealtekALC290/ALC3241layout 3, 4, 2813 (10.9)
RealtekALC292layout 12, 18, 28, 32, 5513 (10.9)
RealtekALC293layout 11, 28, 2913 (10.9)
RealtekALC294layout 11, 12, 13, 2113 (10.9)
RealtekALC295layout 1, 3, 13, 14, 15, 21, 28, 7713 (10.9)
RealtekALC2980x100101, 0x100103 layout 3, 11, 13, 21, 22, 28, 29, 30, 32, 47, 66, 72, 9913 (10.9)
RealtekALC2990x100002 layout 21, 2213 (10.9)
RealtekALC6620x100101, 0x100300 layout 5, 7, 11, 12, 13, 15, 16, 1713 (10.9)
RealtekALC6630x100001, 0x100002, layout 3, 4, 15, 28, 9913 (10.9)
RealtekALC665layout 12, 1313 (10.9)
RealtekALC6680x100003, layout 3, 20, 27, 28, 2913 (10.9)
RealtekALC6700x100002, layout 1213 (10.9)
RealtekALC671layout 12, 1513 (10.9)
RealtekALC700layout 1113 (10.9)
RealtekALC8820x100101, layout 5, 713 (10.9)
RealtekALC8830x100002, layout 713 (10.9)
RealtekALC8850x100101, 0x100103 layout 1, 12, 1513 (10.9)
RealtekALC8870x100202, 0x100302, layout 1, 2, 3, 5, 7, 11, 13, 17, 18, 20, 33, 40, 50, 52, 53, 87, 9913 (10.9)
RealtekALC888/ALC12000x100101, 0x100001, 0x100202, 0x100302 layout 1, 2, 3, 4, 5, 7, 11, 27, 28, 2913 (10.9)
RealtekALC8890x100004, layout 1, 2, 3, 11, 1213 (10.9)
RealtekALC891/ALC8670x100002, layout 11, 1313 (10.9)
RealtekALC8920x100302, layout 1, 2, 3, 4, 5, 7, 12, 15, 16, 17, 18, 28, 31, 90, 92, 97, 9913 (10.9)
RealtekALC898/ALC8990x100003, layout 1, 2, 3, 5, 7, 11, 13, 28, 65, 66, 98, 99, 10113 (10.9)
RealtekALC11500x100001, layout 1, 2, 3, 5, 7, 1112 (10.8)
RealtekALC12200x100003, layout 1, 2, 3, 5, 7, 11, 13, 15, 16, 21, 27, 28, 29, 3415 (10.11)
RealtekALCS1200Alayout 1, 2, 312 (10.8)
RealtekALCS1220Alayout 1, 2, 3, 5, 7, 11, 20, 2115 (10.11)
SigmaTelSTAC92000x102201, layout 1112 (10.8)
SigmaTelSTAC9872AK0x100201, layout 1212 (10.8)
VIAVT17050x100000, layout 2113 (10.9)
VIAVT18020x100000, layout 3, 33, 6513 (10.9)
VIAVT2020/VT20210x100100, layout 5, 7, 913 (10.9)
AMDRadeon 290/290X15 (10.11)
AMDRadeon R9 Fury/R9 Fury X15 (10.11)
AMDVega-M15 (10.11)
AMDZENController 0x1457
AMDZENController 0x1487
AMDZENController 0x15E3
IntelHD460013 (10.9)
IntelAtom Z36xxx/Z37xxx13 (10.9)
IntelZ97 controller13 (10.9)
IntelX99 controller 0x8D2013 (10.9)
IntelX99 controller 0x8D2113 (10.9)
IntelWhiskeyLake16 (10.12)
Intel200 Series Mobile16 (10.12)
Intel200 Series16 (10.12)
Intel300 Series16 (10.12)
NvidiaGK20817 (10.13.4)
NvidiaGM20017 (10.13.4)
NvidiaGM20417 (10.13.4)
NvidiaGM20617 (10.13.4)
NvidiaGP10217 (10.13.4)
NvidiaGP10417 (10.13.4)
NvidiaGP10617 (10.13.4)
NvidiaGP10717 (10.13.4)
NvidiaGP10817 (10.13.4)
NvidiaGTX860M17 (10.13)

 

找到合适的布局 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)

在大多数情况下,板载音频硬件位置就是上述位置,如果不是则可以使用下面的工具来确定具体位置。

已有4311次阅读

接下来,注入能让 AppleALC 正确运行的信息,以 OpenCore Configurator 为例,设置内容如下图:

参数解释:

已有4311次阅读

Clover

使用三叶草引导的用户注意,注意需要先关闭以下选项:

  • ACPI → Fixes → FixHDA
  • ACPI → Fixes → AddHDMI
  • Devices → UseIntelHDMI
  • Devices → Audio → Inject 的值设置为 No

然后找到下图中的位置进行设置:

参数解释:

已有4311次阅读

最后,删除启动参数中的 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 选项来解决问题。

已有4311次阅读

 

Q:我的声卡无法用 AppleALC 驱动,怎么办?

A:可使用万能声卡驱动 VoodooHDA.kext,效果比 AppleALC 要差一些,不过至少解决了从无到有的问题。

 

0. 本站所有资源解压密码均为 heipg.cn
1. 本站资源收集于网络,仅做学习和交流使用,请于下载后24小时内删除。如果你喜欢我们推荐的软件,请购买正版支持作者。
2. 如有无法下载的链接,联系:admin#heipg.cn,或到QQ群进行反馈,我们将及时进行处理。
3. 本站发布的内容若侵犯到您的权益,请联系站长删除,联系方式:admin#heipg.cn,我们将第一时间配合处理!
扫描QQ二维码加入【黑苹果星球交流群】

黑苹果星球 » 使用 AppleALC 驱动黑苹果声卡

发表评论