好咧
就这样吧

傻瓜式制作仿冒声卡驱动 解决麦克风无电平 睡眠后无声 耳机杂音 更新AppleALC制作教程

第一步:提取声卡codec
首先需要下载Ubuntu系统的U盘启动包,可以去官网下载,
下面是从Ubuntu官网下载的迅雷种子下载镜像后解压到U盘即可启动进入试用界面

 ubuntu-16.04-desktop-amd64.iso.torrent.zip (56.29 KB, 下载次数: 108) 

方法一:
进入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软件: 

 iDSDT.app.zip (4.4 MB, 下载次数: 642) 


 


随便找个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一样可以用所以不要当心版本的问题,下面给出仿冒声卡驱动大全的链接:
http://bbs.pcbeta.com/viewthread-1510552-1-1.html
http://bbs.pcbeta.com/viewthread-1141743-1-1.html
http://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复制到桌面,这个文件是压缩文件,先解压,步骤如下:
下载 

 zlib.pl.zip (1.09 KB, 下载次数: 267) 

到桌面
打开终端输入:
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的请无视)
下载文件 

 HDAEnable.kext.zip (24.23 KB, 下载次数: 108) 


打开里面的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驱动的修改方法

 CodecCommander.kext.zip (25.41 KB, 下载次数: 86) 

关于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 [Pin Complex] 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:  [0x00 0x00]
  Pincap 0x0000001c: OUT HP Detect
  Pin Default 0x0321101f: [Jack] 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 [Pin Complex] 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:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x00000034: IN OUT Detect
  Pin Default 0x90a70920: [Fixed] 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值


修改方法来源于此贴,有问题的地方请大家积极讨论:
http://bbs.pcbeta.com/viewthread-1663564-1-1.html

2016年3月18日更新解决麦克风无电平
打开Platforms在麦克风的最后一个节点下添加如图子项即可

 


我的文件作为参考: 

 Platforms.xml.zip (9.32 KB, 下载次数: 30) 图片中3这个值可以更改成1,值越小麦克风电平越小。

如果你的麦克风节点有2个或4个node值请参考pathmaps下另外的子项,里面有boost=0或28的设置方法。
2016年3月21日更新 解决无法使用双麦克风
目前很多朋友发现 appleHDA外置mic没有办法使用。 或者只能用外置内置就不能用了。按照紫米的解释:

 




所以外置mic必须走line in。
不幸的是我的耳机插口是二合一的那种,貌似无解。听说将HP OUT设置成组合输入/输出能解决,但是找不到具体方法。


耳机插口非二合一,先将耳机麦克风设置成line in。以E1-471G为例子:
打开codec搜索Mic at Ext Left得到:
Node 0x18 [Pin Complex] 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:  [0x00 0x00]
  Amp-Out caps: ofs=0x00, nsteps=0x00, stepsize=0x00, mute=1
  Amp-Out vals:  [0x80 0x80]
  Pincap 0x00001734: IN OUT Detect
    Vref caps: HIZ 50 GRD 80
  Pin Default 0x03a19820: [Jack] Mic at Ext Left



说明Mic at Ext Left的node ID为0x18,打开configdata值,找到018开头的四组数据
01871C10 01871D90 01871EA0 01871F93
将第一组数据的倒数第二个值1改成2
将第三组数据的倒数第二个值A改成8
已经将内置麦克风和耳机麦克风的节点放在一起还不能自动切换的。
修改Platforms即可实现手动切换,给出文件作为参考:

 Platforms手动切换.xml.zip (9.36 KB, 下载次数: 13) 

 Platforms未修改.xml.zip (9.36 KB, 下载次数: 6) 


 



新发现,耳机麦克风只有插上耳机才会有电平。

使用HDAEnable无用的请使用DSDT注入ID为了方便分割线以下的驱动,都将layoutID设置为1
ACER V5-471G ALC269 271X: 

 ACER V5-471G声卡.zip (1.23 MB, 下载次数: 30) 


ACER E1-471G ALC269 271X: 

 E1-471G 声卡.zip (1.24 MB, 下载次数: 21) 


华硕A450J  ACL269VC: 

 华硕A450J声卡.zip (1.72 MB, 下载次数: 7) 

(麦克风有待完善)

ThinkPAD S3 S440 CX20751/2: 

 ThinkPAD S3 S440.zip (932.88 KB, 下载次数: 22) 

(双麦克风都有电平)
联想Y510 ALC888: 

 联想Y510.zip (860.27 KB, 下载次数: 4) 

(扬声器麦克风双自动切换,双麦克风都有电平,内置扬声器设置了组合输出)
戴尔游侠7447 ALC255 (ALC3234): 

 戴尔游侠7447.zip (1.73 MB, 下载次数: 29) 


神舟K580S ALC269VC: 

 神舟K580S.zip (1.2 MB, 下载次数: 28) 


 台式机映泰TP75 ALC662.zip (1.18 MB, 下载次数: 4) 



---------------------------------------------------------------------------------------------
ALC662(具体型号不名): 

 笔记本ALC662.zip (1.19 MB, 下载次数: 6) 

(必须DSDT)
微星GE60 ALC892: 

 微星GE60.kext.zip (1.38 MB, 下载次数: 9) 

(必须DSDT)
微星GS70 ALC892: 

 微星GS70.zip (1.39 MB, 下载次数: 3) 

(必须DSDT)

2016年4月24日更新制作appleALC的详细步骤

 微星GE60 AppleALC 内附DSDT.zip (282.86 KB, 下载次数: 27) 




首先在这里感谢syscl的无私奉献

  1. http://bbs.pcbeta.com/viewthread-1683592-1-1.html
  2. 原贴地址
复制代码

大家需要去原贴查看声卡是否在支持的列表内,并下载XCODE
上传2个好用的软件,懂的朋友拿去

 zlib转换器.zip (166.91 KB, 下载次数: 84) 

 PlistEdit Pro.zip (4.04 MB, 下载次数: 63) 


第一步:显示finder中的小房子图标,并下载appleALC
在终端执行命令,然后按照图片操作会在finder中的小房子生产appleALC文件夹

  1. 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)
29.png 
2016-4-24 12:27 上传
下载附件 (99.19 KB)

将生成的appleALC放入四叶草,通过DSDT注入layoutID就可以让其正常工作(必须DSDT)
另外appleHDA必须原版,且在功能扩展里面显示签名为官方签名。




相关推荐

最新回复