AppleALC使用和修改教程
本帖最后由 13469977015002 于 2016-8-21 11:28 编辑-------------------------------------------------------------------
-------------------------------------------------------------------
操作前必看:
多次安装万能驱动可能会造成不知名的原因无法加载AppleHDA,
确定方法为查看功能扩展中查看AppleHDA是否加载。
已知俩款声卡使用AppleALC无效:ALC662,CX20590
-------------------------------------------------------------------
本教程以ALC887为例,希望方法简单了能让更多小白完美驱动声卡。
在终端输入代码,下载AppleALC
git clone https://github.com/vit9696/AppleALC记录codec中以下内容:
①Address值
address值只有0和2俩种情况,本帖举例中为0
②在codec中搜索Pin Default
如上图如果搜到的内容中间有N/A则不记录(后方有N/A,可记录)
如上图如果搜到的内容无N/A则记录下一串数字后面的设备名称和往上找最近的node值
此处记录的内容为:Line Out at Ext Rear Node=0x14
整理下记录内容如下:
Line Out at Ext Rear Node=0x14 线路输出
Mic at Ext Rear Node=0x18 后置麦克风
Mic at Ext Front Node=0x19 前置麦克风
Line In at Ext Rear Node=0x1a 线路输入
HP Out at Ext Front Node=0x1b 耳机扬声器
这里需要解释下:
对于台式机,可能会出现多个线路输出,至少要把一个线路输出改成内置扬声器。
麦克风最多只可定义一个,所以把前置麦克风改成线路输入。
对于笔记本MIC at ext为外置麦克风,mic at in为内置麦克风,需要把外置麦克风改成线路输入。
更改后内容如下:
Line Out at Ext Rear Node=0x14 内置扬声器
Mic at Ext Rear Node=0x18 后置麦克风
Mic at Ext Front Node=0x19 线路输入
Line In at Ext Rear Node=0x1a 线路输入
HP Out at Ext Front Node=0x1b 耳机扬声器
③Vendor Id值,并将其转换为10进制
使用PlistEdit Pro打开appleALC/Resources/PinConfigs/Contents/Info.plist
搜索283904135(此数字为Vendor Id值的10进制)
如上图有不止一个ALC887声卡的配置内容,但是其中的layoutID不同。
先把layoutID=1中的ConfigData后面很长的数字复制出来
如上图将每四串数字排成1行,没串数字的第一个数字代表Address值。
示例中Address=0,所以layoutID=1不适合这款声卡。继续往下找:
每一串数字的第二位+第三位代表node值
每一行的第三串数字中的倒数第二个数字是设备的定义,定义的规则如下:
0 = Line Out
1 = Speaker
2 = HP Out
3 = CD
4 = SPDIF Out
5 = Digital Other Out
6 = Modem Line Side
7 = Modem Handset Side
8 = Line In
9 = AUX
A = Mic In
B = Telephone
C = SPDIF In
D = Digital Other In
E = Reserved
F = Other拿出之前记录的内容和图中对比:
Line Out at Ext Rear Node=0x14 内置扬声器
Mic at Ext Rear Node=0x18 后置麦克风
Mic at Ext Front Node=0x19 线路输入
Line In at Ext Rear Node=0x1a 线路输入
HP Out at Ext Front Node=0x1b 耳机扬声器
第一行node值为0x14,第三串数字中的倒数第二个数字是1= Speaker=内置扬声器,符合条件。
第二行node值为0x18,第三串数字中的倒数第二个数字是A= Mic In=内置麦克风,符合条件。
第三行node值为0x19,第三串数字中的倒数第二个数字是8= Line In=线路输入,符合条件。
第四行node值为0x1A,第三串数字中的倒数第二个数字是8= Line In=线路输入,符合条件。
第五行node值为0x1B,第三串数字中的倒数第二个数字是2= HP OUT=耳机扬声器,符合条件。
第六行为多余,删除它。
最后将整理好的数字,替换到info.plist原位置中。记录下其中的LayoutID值=5
将appleALC/Resources/ALC887中的layout5.xml.zlib(5为layoutID值)拖入zlib转换器
点击转换后ALC887文件夹会生成layout5.xml文件,使用PlistEdit Pro打开它。
记录下PathMapID值,此处为1。
将codec导入IDSDT,生成声卡驱动AppleHDAMOD.kext
打开AppleHDAMOD.kext/Contents/Resources复制里面的Platforms.xml文件到ALC887目录下。
然后将其打开更改PathMapID值,之前记录的值为1。
最后将其拖入zlib转换器进行转换完成后会生成Platforms.xml.zlib
再打开ALC887中的info.plist
CodecID值需要改成之前记录的Vendor Id值10进制=283904135
在Platforms下找到ID=5的子项,将Path后面的内容改成Platforms.xml.zlib
打开AppleALC/AppleALC.xcodeproj,生成appleALC
生成的appleALC放入四叶草
layoutID值可先尝试四叶草注入(某些电脑四叶草注入可能无效)
四叶草注入方法:
DSDT注入方法:
先给DSDT打开IRQ补丁:
#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;
搜索HDEF插入以下函数:
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
Store (Package (0x0A)
{
"hda-gfx",
Buffer (0x0A)
{
"onboard-1"
},
"layout-id",
Buffer (0x04)
{
0x05, 0x00, 0x00, 0x00
},
"PinConfigurations",
Buffer (Zero) {}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}其中layoutID可自行更改
可能需要的DTGP函数:
Method (DTGP, 5, NotSerialized)
{
If (LEqual (Arg0, ToUUID ("a0b5b7c6-1318-441c-b0c9-fe695eaf949b")))
{
If (LEqual (Arg1, One))
{
If (LEqual (Arg2, Zero))
{
Store (Buffer (One)
{
0x03
}, Arg4)
Return (One)
}
If (LEqual (Arg2, One))
{
Return (One)
}
}
}
Store (Buffer (One)
{
0x00
}, Arg4)
Return (Zero)
}
技术贴 支持一下 为论坛做贡献值得赞扬!支持了! 这个真心给力,很详细。 技术贴,收藏了 这个真心详细,要想弄好合适自己的,真心需要学习啊 楼主写的真详细啊,收藏!再有这种方法驱动ALC662也是可以的,我就是ALC662。不过就是签名显示是未知,不是显示apple 太给力了,一直没弄好,再详细学习一下~ 谢谢!! 这个真心给力,很详细。 等有空在练练手 写的挺详细不过需要注意下10.11和10.12的Patch不一样
10.11下用1.0.14版本的话需要修改patch 丶鸭梨大大。 发表于 2016-8-12 16:57 https://www.pcbeta.com/static/image/common/back.gif
写的挺详细不过需要注意下10.11和10.12的Patch不一样
10.11下用1.0.14版本的话需要修改patch
我10.11.6和10.12测试版用的同样的appleALC
不知道你说的区别在哪里
真是没注意过
{:9_348:} 13469977015002 发表于 2016-8-12 17:09 https://www.pcbeta.com/static/image/common/back.gif
我10.11.6和10.12测试版用的同样的appleALC
不知道你说的区别在哪里
真是没注意过
8419D411在10.12下是8A19D411
no-cat 发表于 2016-8-12 14:48 https://www.pcbeta.com/static/image/common/back.gif
楼主写的真详细啊,收藏!再有这种方法驱动ALC662也是可以的,我就是ALC662。不过就是签名显示是未知,不是 ...
签名是未知,appleALC就没启到效果哦。 丶鸭梨大大。 发表于 2016-8-12 17:17 https://www.pcbeta.com/static/image/common/back.gif
8419D411在10.12下是8A19D411
这个没注意
不过出了10.12测试版后,重新下载新版appleALC。重新制作新的appleALC
驱动放10.11和10.12俩个系统都正常驱动声卡。 支持,写的不错 哎~~ 完整的做了一遍,CX20751/2依然是2合1接口的外置MIC无效。
系统重启后音量调节滑条自动变为最大。 本帖最后由 13469977015002 于 2016-8-12 17:47 编辑
fhybin 发表于 2016-8-12 17:41 https://www.pcbeta.com/static/image/common/back.gif
哎~~ 完整的做了一遍,CX20751/2依然是2合1接口的外置MIC无效。
系统重启后音量调节滑条自动变为最大。
2和一接口为特殊情况
如果你的codec中有mic at ext外置麦克风就有解,否则无解。
解决方法为:
把位置麦克风和耳机扬声器那行的第三串数字的最后一个数字改为B 13469977015002 发表于 2016-8-12 17:20 https://www.pcbeta.com/static/image/common/back.gif
签名是未知,appleALC就没启到效果哦。
我重新尝试了一下,发现是appleALC没有完全发挥作用。我的驱动是仿冒过的,每次升级都要重新安装方面驱动。在使用appleALC后,升级后不用重新安装驱动了。制作仿冒的时候,bin patch中,发现资料中说的替换0x10ec0885为0x10ec0662对我的声卡来说不行。需要使用0x11d41984这个codecID来替换0x10ec0662,同时把0x10ec0885、0x10ec0884改为0x000000才可以正确识别。估计appleALC中的这部分没有针对ALC622进行修改,不知道能否自己添加上。