傻瓜式制作仿冒声卡驱动 解决麦克风无电平 睡眠后无声 耳机杂音 更新AppleALC制作教程
本帖最后由 13469977015002 于 2016-5-27 22:09 编辑ALC892请移步:
https://bbs.pcbeta.com/viewthread-1685213-1-1.html
顶置贴中的仿冒声卡驱动教程太长,看了好久才看懂,结合我的经验发现:用别人修改好的仿冒驱动加以修改只需要更改configdata和节点这2个信息即可让声卡正常工作。
第一步:提取声卡codec
首先需要下载Ubuntu系统的U盘启动包,可以去官网下载,
下面是从Ubuntu官网下载的迅雷种子下载镜像后解压到U盘即可启动进入试用界面
方法一:
进入Ubuntu系统的桌面打开终端:
輸入 cat /proc/asound/card0/codec#0 > ~/Desktop/Codec.txt,
或者 cat /proc/asound/card0/codec#1 > ~/Desktop/Codec.txt,
或者 cat /proc/asound/card0/codec#2 > ~/Desktop/Codec.txt,
然后你就可以在资源管理器的桌面上找到名为codec的文件,将他复制出来
方法二:
打开我的电脑(相当于windows的C盘),进入路劲proc/asound/card0,将文件夹里面的所有名为codec#开头的文件都复制出来,其中一个就是你的声卡codec,千万不要把HDMI音频的文件复制出来了(如果card0没有就一定在card1文件夹)
第二步:用idsdt得到你的声卡configdata和节点信息
需要idsdt软件:
随便找个dsdt不是自己的也可以,选择导入dsdt文件,再导入自己的codec,然后选择生产修改的APPLEHDA.
这里idsdt会编译dsdt如果提示不能编译的请自行百度下载java for mac然后安装
成功会显示编译出错,叫你修正错误。如下,不要管它点确定
点确定后会出现一个文件夹如下
将AppleHDAMOD复制到桌面,打开此路劲AppleHDAMOD.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents下的info.plist,如下图
按图中的路劲找到configdata,右边的数值就是你的configdata值
再打开AppleHDAMOD.kext\Contents\Resources找到文件Platforms.xml打开,如下图
打开如下路劲,可以看到我的PathMap下面有0和1,0下面只有一个节点0,而1下面有2个节点0和1,那么我的声卡总共只有3个节点,每个节点会有3个值。继续打开如下图
NodeID右边的值就是节点的值,那么我的0-0节点就是9>34>27,后面就不传图了,我的1-0节点是20>13>3,我的1-1节点是33>12>2,你的节点可能比我还多,每个都不能漏。
第三步:将自己的configdata和节点信息改到别人修改好的仿冒声卡驱动
本人亲测10.8的仿冒声卡驱动拿到10.11一样可以用所以不要当心版本的问题,下面给出仿冒声卡驱动大全的链接:
https://bbs.pcbeta.com/viewthread-1510552-1-1.html
https://bbs.pcbeta.com/viewthread-1141743-1-1.html
https://bbs.pcbeta.com/viewthread-1517597-1-1.html
找个和自己型号一样的仿冒声卡驱动,打开AppleHDA.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents下的info.plist将自己的configdata修改进去,注意configdata下面有个layoutid,将这个值记下来。
再打开AppleHDA.kext\Contents\Resources找到文件Platforms.xml.zlib复制到桌面,这个文件是压缩文件,先解压,步骤如下:
下载到桌面
打开终端输入:
cd desktop
perl zlib.pl inflate Platforms.xml.zlib > Platforms.xml
这样桌面就多了文件Platforms.xml打开它,如下图:
可以看到这个仿冒驱动有4个节点,比我的多了一个,那么我把0-1节点删除,如果你的少了就加上。
继续打开下面的子项,将之前记下的nodeID值填进去后保存。然后将它重新压缩,打开终端输入:
cd desktop
perl zlib.pl deflate Platforms.xml > Platforms.xml.zlib
将桌面的Platforms.xml.zlib复制到仿冒驱动里面替换之前的仿冒驱动里面的文件
第四步:修改APPLEHDEnable的layoutid值让仿冒声卡驱动工作(有dsdt的请无视)
下载文件
打开里面的info.plist,搜索layoutid右边有个8位的数值
之前修改仿冒声卡驱动的configdata值,记下了下面的layoutid值
这里我们假设layoutid值为269,转换成16进制为10D
10D不够8位数值,前面需要加5个0,变成0000010D。
将这个值2个数2个数的隔开变成: 00 00 01 0D
再倒过来变成0D 01 00 00
最后合起来变成0D010000,将这个值填到APPLEHDAEanble的layoutid里面就ok了
完成以上步骤你的仿冒声卡就可以工具了,如果使用后有问题继续往下看
2016年3月6日更新
五:MuteGPIO值的修改
先按照步骤二的路劲打开仿冒声卡驱动AppleHDA中的info.plist,查找其中layoutid的值,我的layoutid=1
按照路劲AppleHDA.kext\Contents\Resources找到文件layout1.xml.zlib(假设你的layoutid=86,那么就找到layout86.xml.zlib)
将其复制到桌面,打开终端解压,输入:
cd desktop
perl zlib.pl inflate layout1.xml.zlib > layout1.xml
然后打开layout1.xml,如下图:
记下pathmapID的值,我的是269
接下来打开IDSDT生产的仿冒驱动AppleHDAMOD,找到里面的info.plist,layoutid的值,我的layoutid=617
按照路劲AppleHDAMOD.kext\Contents\Resources找到文件layout617.xml(假设你的layoutid=86,那么就找到layout86.xml)
打开它,如下图:
将其中的layoutid,和pathmapID修改成和你的仿冒声卡驱动AppleHDA中的值一致,
我的layoutid=1,pathmapID=269
最后将linout这个子项删除(原因:我的不删除,仿冒声卡驱动没声音,请自行测试是否需要删除)
保存后将文件layout617.xml改名为layout1.xml(如果你的AppleHDA中的layoutid=86,那么改名为layout86.xml)
最后将其压缩,打开终端输入:
cd desktop
perl zlib.pl deflate layout1.xml > layout1.xml.zlib
将生产的layout1.xml.zlib文件替换到AppleHDA中的layout1.xml.zlib
2016年3月10日更新
六:CodecCommander驱动的修改方法
关于windows下重启进入mac耳机无声请在mac下加入此驱动,如果还是无法解决,请删除windows下的audio声卡驱动,只使用intel官方声卡驱动。修改CodecCommander驱动可以解决耳机有杂音和睡眠唤醒无法自动切换或无声的问题,具体方法如下:
打开驱动里面的info.plist,如下图:
这里以我的声卡举例子,我的是ALC269,红圈中是起作用的值,coedec如下:
Codec: Realtek ALC271X
Address: 0
Vendor Id: 0x10ec0269
Subsystem Id: 0x10250727
10ec_0269_HDA_1025_0727中的10ec_0269_指的是Vendor Id,_1025_0727指的是Subsystem Id
10ec_0269_HDA_1025_0727右边的值为Realtek ALC269VB,代表我们需要修改下面的Realtek ALC269VB的值
打开下面的Realtek ALC269VB如下图:
其中SET_UNSOLICITED_ENABLE为解决睡眠唤醒后无法自动切换或无声的值
需设定 HP Out at Ext 所在的节点信息。我的信息如下:
Node 0x21 wcaps 0x40018d: Stereo Amp-Out
Control: name="Headphone Playback Switch", index=0, device=0
ControlAmp: chs=3, dir=Out, idx=0, ofs=0
Control: name="Headphone Jack", index=0, device=0
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals:
Pincap 0x0000001c: OUT HP Detect
Pin Default 0x0321101f: HP Out at Ext Left
Conn = 1/8, Color = Black
DefAssociation = 0x1, Sequence = 0xf
Pin-ctls: 0xc0: OUT HP
Unsolicited: tag=01, enabled=1
红圈的02170882 为Address+NodeID+708+设定值
0x21 SET_UNSOLICITED_ENABLE 0x82中的0x21为NodeID,0x82中的82为设定值
设定值是8bits的一个数。记作a7 a6 a5 a4 a3 a2 a1 a0.
a7=1,表示enabled。
a6=0,没具体应用,不用管。
a5-a0,存放tag,需要将tag的值用6为数的二进制值表示
tag=1(十进制)=000001(二进制)
则a7 a6 a5 a4 a3 a2 a1 a0=10000001
a7 a6 a5 a4=1000(二进制)=8(十进制)
a3 a2 a1 a0=0001(二进制)=1(十进制)
则设定值=81
最后加得到的设定值加1,即82
SET_PIN_WIDGET_CONTROL设定是为了解决耳机杂音的。需要设定的是 Mic at Ext所在的节点信息,我的节点信息如下:
Node 0x1b wcaps 0x40018f: Stereo Amp-In Amp-Out
Control: name="Mic Boost Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Control: name="Mic Phantom Jack", index=0, device=0
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
Amp-In vals:
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals:
Pincap 0x00000034: IN OUT Detect
Pin Default 0x90a70920: Mic at Int N/A
Conn = Analog, Color = Unknown
DefAssociation = 0x2, Sequence = 0x0
Misc = NO_PRESENCE
Pin-ctls: 0x20: IN
红圈中的01B70720为Address+NodeID+707+Pin-ctls值
0x1b SET_PIN_WIDGET_CONTROL 0x20中的0x1b为NodeID,0x20为Pin-ctls值
修改方法来源于此贴,有问题的地方请大家积极讨论:
https://bbs.pcbeta.com/viewthread-1663564-1-1.html
2016年3月18日更新解决麦克风无电平
打开Platforms在麦克风的最后一个节点下添加如图子项即可
我的文件作为参考:图片中3这个值可以更改成1,值越小麦克风电平越小。
如果你的麦克风节点有2个或4个node值请参考pathmaps下另外的子项,里面有boost=0或28的设置方法。
2016年3月21日更新 解决无法使用双麦克风
目前很多朋友发现 appleHDA外置mic没有办法使用。 或者只能用外置内置就不能用了。按照紫米的解释:
所以外置mic必须走line in。
不幸的是我的耳机插口是二合一的那种,貌似无解。听说将HP OUT设置成组合输入/输出能解决,但是找不到具体方法。
{:5_265:}
耳机插口非二合一,先将耳机麦克风设置成line in。以E1-471G为例子:
打开codec搜索Mic at Ext Left得到:
Node 0x18 wcaps 0x40018f: Stereo Amp-In Amp-Out
Control: name="Mic Boost Volume", index=0, device=0
ControlAmp: chs=3, dir=In, idx=0, ofs=0
Amp-In caps: ofs=0x00, nsteps=0x03, stepsize=0x2f, mute=0
Amp-In vals:
Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
Amp-Out vals:
Pincap 0x00001734: IN OUT Detect
Vref caps: HIZ 50 GRD 80
Pin Default 0x03a19820: Mic at Ext Left
说明Mic at Ext Left的node ID为0x18,打开configdata值,找到018开头的四组数据
01871C10 01871D90 01871EA0 01871F93
将第一组数据的倒数第二个值1改成2
将第三组数据的倒数第二个值A改成8
已经将内置麦克风和耳机麦克风的节点放在一起还不能自动切换的。
修改Platforms即可实现手动切换,给出文件作为参考:
新发现,耳机麦克风只有插上耳机才会有电平。
使用HDAEnable无用的请使用DSDT注入ID为了方便分割线以下的驱动,都将layoutID设置为1
ACER V5-471G ALC269 271X:
ACER E1-471G ALC269 271X:
华硕A450JACL269VC: (麦克风有待完善)
ThinkPAD S3 S440 CX20751/2:(双麦克风都有电平)
联想Y510 ALC888:(扬声器麦克风双自动切换,双麦克风都有电平,内置扬声器设置了组合输出)
戴尔游侠7447 ALC255 (ALC3234):
神舟K580S ALC269VC:
---------------------------------------------------------------------------------------------
ALC662(具体型号不名):(必须DSDT)
微星GE60 ALC892:(必须DSDT)
微星GS70 ALC892:(必须DSDT)
2016年4月24日更新制作appleALC的详细步骤
首先在这里感谢syscl的无私奉献
https://bbs.pcbeta.com/viewthread-1683592-1-1.html
原贴地址大家需要去原贴查看声卡是否在支持的列表内,并下载XCODE
上传2个好用的软件,懂的朋友拿去
第一步:显示finder中的小房子图标,并下载appleALC
在终端执行命令,然后按照图片操作会在finder中的小房子生产appleALC文件夹
git clone https://github.com/vit9696/AppleALC
第二步:修改appleALC中的文件
打开appleALC/Resources中你的型号的文件夹,这里以ALC887为例子
可以看到ALC887里面有很多文件,为了方便删除Info.plist以外的所有文件
把之前可以用的仿冒声卡中的layoutX.xml.zlib(X为你设置的layoutID)和Platforms.xml.zlib复制进去
打开Info.plist如下图
codecID要对应AppleHDA.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents\info.plist里面填写的ID
ID对应layoutID
patch对应layoutX.xml.zlib(X为你设置的layoutID)
ID对应layoutID
patch必须填Platforms.xml.zlib
打开appleALC/Resources/PinConfigs/Contents/Info.plist
删除HDAConfigDefault子项,将AppleHDA.kext\Contents\PlugIns\AppleHDAHardwareConfigDriver.kext\Contents\info.plist里面的HDAConfigDefault子项复制进去
第三步生产appleALC驱动
打开AppleALC/AppleALC.xcodeproj(必须要有XCODE)
将生成的appleALC放入四叶草,通过DSDT注入layoutID就可以让其正常工作(必须DSDT)
另外appleHDA必须原版,且在功能扩展里面显示签名为官方签名。
支持一个,回头看看笔记本的声卡,能否完善一些。 既然只是将idsdt生成的节点信息替换到别人做的仿冒驱动里,那是不是直接复制;比如直接复制pathmap下的子项,然后把仿冒的pathmap替换掉,这样会不会更无脑方便点? 留个记号备用 刘明备用!!!!!!!! 感谢你的分享。 本帖最后由 13469977015002 于 2016-3-2 21:31 编辑
cmmd 发表于 2016-3-2 19:15 https://www.pcbeta.com/static/image/common/back.gif
既然只是将idsdt生成的节点信息替换到别人做的仿冒驱动里,那是不是直接复制;比如直接复制pathmap下的子项 ...
idsdt自动计算的configdata值和节点是对的,但是生产的仿冒驱动没用。
直接复制pathmap下的子项理论上可以,没试过。configdata所在的info.plist文件千万不要直接替换,因为不同的仿冒驱动设定的layoutid值不同。
要是没仿冒肯定试试了 可是用了别人仿冒好的可以用 就省下功夫了~还是得顶 好帖!!! 请问我用iDSDt导入dsdt文件和自己的codec,然后生成了驱动,为什么在AppleHDAMOD.kext\Contents\Resources找不到文件Platforms.xml.zlib
是不是iDSDT版本有关系?
另外这个驱动可以驱动我的声卡
好,不错{:9_349:} 本帖最后由 13469977015002 于 2016-3-3 18:00 编辑
cmmd 发表于 2016-3-3 09:58 https://www.pcbeta.com/static/image/common/back.gif
请问我用iDSDt导入dsdt文件和自己的codec,然后生成了驱动,为什么在AppleHDAMOD.kext\Contents\Resources找 ...
IDSDT生产的仿冒驱动里面的文件是没压缩的,所以文件名是Platforms.xml
直接就可以打开不用解压,我表示我生产的都有。如果你还是有问题,把你的codec传上来。 我用iDSDt生成的驱动,在AppleHDAMOD.kext\Contents\Resources确实找不到文件Platforms.xml,里面只有图中的3个文件,但安装完可以驱动我的声卡。
我不知道是不是iDSDT版本原因,可否共享下你的iDSDT,谢谢。
我也上传了我的codec,不知道你能否帮我生成下驱动,感谢。 需要学习下。 cmmd 发表于 2016-3-3 18:59 https://www.pcbeta.com/static/image/common/back.gif
我用iDSDt生成的驱动,在AppleHDAMOD.kext\Contents\Resources确实找不到文件Platforms.xml,里面只有 ...
给你我的IDSDT帖子里面的过程中给了,你仔细找下
本帖最后由 cmmd 于 2016-3-3 20:31 编辑
13469977015002 发表于 2016-3-3 20:22 https://www.pcbeta.com/static/image/common/back.gif
给你我的IDSDT帖子里面的过程中给了,你仔细找下
谢谢,我去研究下。话说归档里的2个文件是用我的codec生成的吗?
不要怀疑 确实是你的codec生产成的 13469977015002 发表于 2016-3-3 20:35 https://www.pcbeta.com/static/image/common/back.gif
不要怀疑 确实是你的codec生产成的
谢谢了,回去好好研究下 支持。。。。。。。。。。。。。。。。 流明备用!!!!!!!!!! ...............................