[不会看Codec的朋友看看吧]神舟Z7m-i78172d1声卡驱动之路
本帖最后由 qq527951131 于 2016-6-9 10:58 编辑本教程是基于@syscl大神在论坛发的:
【教程】完美原生加载AppleHDA在此感谢大神的教程,让我声卡得以驱动,楼主的笔记本是Hasee-Z7m-8172d1,声卡是ALC892。https://github.com/vit9696/AppleALC
教程正式开始,跟着我的步骤来打造自己的AppleALC吧。一、制作自己的AppleALC.kext需要有以下条件:1、在linux下提取到了自己声卡的Codec 小水管下不了Xcode的可以直接到https://github.com/vit9696/AppleALC 下载对应的关键文件,然后传上来我帮你编译。
2、Mac端安装好了Xcode。
3、最好有PlistEdit Pro(修改文件会更加直观、简单)。
4、zlib解压和压缩的小工具。
5、S/L/E下的AppleHDA必须是原版。
二、Codec处理与分析:
Codec提取出来后大部分人是看不太懂的,当初我一看到这么多字符也马上蒙圈了,果断放弃仿冒声卡,直到最近VoodooHDA失效才想办法钻研了一阵子~这段时间是玩黑苹果收获最多的时候,在摸索过程中总结了一些经验,现在就分享给大家,有错误的请积极指正哈~~~
1、Codec基本信息提取:
从Codec开头有用的信息,Address:计算congigdata的时候需要;Vendor-ID就是下面需要的CodecID。
2、节点信息分类:
在文本中搜索PinDefault
将名字前面带有的点去掉(是前面!!!带“”的点,有中括号的!!!其他的留下),然后将文本进行分类,按照Pin Complex、Audio Mixer、Audio Output、Audio Input分为四个部分,然后每个Node都转化成十进制(Platforms中填的Node值就是这个)。
一些有Control:name=“……”的点可以打上注释,这样就可以知道这些点是属于哪部分的
3、节点连接:
我接触过的声卡节点一般都是三个的,输入输出分别按照:
输入:AudioInput à Audio Mixer à Pin Complex
输出:Pin Complexà Audio Mixer à Audio Output
如果这样分类看起来还是很晕,那就继续用下面的方法,用图形化的方式来帮助我们连接节点!
4、Codecgraph制作Codec节点连接SVG图:
将Codec.txt放到Codecgraph文件夹中,然后打开终端,cd到Codecgraph文件夹再输入./Codecgraph Codec.txt 就会在文件夹中生成一个你的声卡节点的连接图,这样看起来就足够直观了。
对照节点图和Codec分类后的文本,一步步完成节点的完善,图中蓝色椭圆为Audio Input;红色椭圆为Audio Output;矩形框为Pin Complex;六边形为Audio Mixer。实心线可以连接,虚线不可连接,带的矩形可以忽略。
我的ALC892输出
我的ALC892输入
三、制作AppleALC.kext过程:
1、安装好Xcode:
2、下载AppleALC的源码:
在终端输入
git clone https://github.com/vit9696/AppleALC
如果有提示就点安装,就会自动安装git
再输入一遍上面的命令,下载AppleALC(楼主渣渣网速失败了一次~)
3、找到关键文件:
打开Finder,在偏好设置中显示自己用户文件夹
进入AppleALC/Resources/,里面有很多支持的声卡型号,找到自己的型号,然后把其他型号的文件夹删掉(只删声卡文件夹,文件别乱删),可以减小编译出来的kext的体积。然后进入你的声卡型号文件夹里面有一个info.plist和多个layoutX.xml.zlib和PlatformsX.xml.zlib文件(X是不同的layout-id),我的理解layout-id不是规定的,是自己定义的,但制作过程中必须保持一致(因为我换过很多layout-id都可以驱动,如果有错误请大家指正)。
4、zlib文件转换:
xml.zlib文件是不可编辑的,所以需要解压成xml文件来进行修改然后在压缩成xml.zlib。
打开zlib转换器
把xml.zlib文件拖到这个框框里按转换,在文件夹就会生成一个xml文件,我选择的是layout7.xml.zlib和PlatformsM.xml.zlib(layout-id1、2、3对应PlatformsT,5、7对应PlatformsM)。
5、layoutX.xml修改:
打开解压后的layoutX.xml(我的是layout7.xml)
其中:
CodecID就是Codec中的Vendor ID转成十进制;
PathMapID要记住,要与Platforms中的PathMapID一致。
6、修改PlatformsX.xml:
打开解压后的PlatformsX.xml(我的是PlatformsM.xml)
我layout7.xml中的PathMapID是7,所以保留PathMapID为7的项,另外两项删除掉,然后设置好节点再用zlib转换器压缩成.xml.zlib然后留下修改后的info.plist和layout7.xml.zlib、PlatformsM.xml.zlib(视个人情况),将多余的文件删除,不然可能出问题。
7、修改info.plist:
打开AppleALC/Resources/ALCxxx/info.plist
其中:
CodecID就是Codec中的Vendor ID转成十进制;
Layouts和Platforms项中只留下你选择的layout-id的项目,其他的删掉;
Path的值必须是你选择的layoutX.xml.zlib和PlatformsX.xml.zlib
8、编译AppleALC:
打开AppleALC目录下的AppleALC.xcodeproj
Product-BuildFor-Running就可以编译,编译完成后点左边的文件夹图标,然后展开Products右击AppleALC-Show in Finder就可以拿到编译好的AppleaLC.kext了,放到/EFI/Clover/kext/other下就可以重启试试效果了~
四、附件-->用到的工具:
五、我配置的神舟z7m声卡
大高玩,给力,太厉害了! codec是在Ubuntu下提取嘛?还没搞过这个。。。 elisontz 发表于 2016-6-9 00:36
codec是在Ubuntu下提取嘛?还没搞过这个。。。
linux应该都一样的,我在ubuntu和centos提取的一模一样 我在ubuntu和centos提取的一模一样 这帖子绝对会火起来 话说我在ubuntu下提取alc892 每次提取出来的都是hdmi 不是声卡codec 请问这个怎么搞 我把card0-3那个命令都试过了只有card0会输出codec 但是打开一看是HDMI的codec还望指教 codec怎么提,不明白 不知道这个可不可以作为仿冒IDT的参考,最近在学习仿冒声卡{:9_351:} 很好的冒仿声卡教程 其实applealc对应声卡型号的文件夹info文件里还配置好了二进制补丁~
如果不是用applealc的话要自行在clover里patch或者直接修改applehda。
另外applealc还patch了解决睡眠唤醒无声的代码~总之applealc是黑苹果史上一大突破 支持了!!!!!!!!!!!!!!!!!! 楼主,为什么我的节点图里蓝色椭圆为Audio output的。。。
elisontz 发表于 2016-6-9 10:47 https://www.pcbeta.com/static/image/common/back.gif
楼主,为什么我的节点图里蓝色椭圆为Audio output的。。。
以Codec为准咯,我这只是个方法推荐 我不要用户名 发表于 2016-6-9 08:37
其实applealc对应声卡型号的文件夹info文件里还配置好了二进制补丁~
如果不是用applealc的话要自行在clov ...
睡眠唤醒无声我的没用,只能将光数字改为耳机 lisizhe1987 发表于 2016-6-9 06:31 https://www.pcbeta.com/static/image/common/back.gif
这帖子绝对会火起来 话说我在ubuntu下提取alc892 每次提取出来的都是hdmi 不是声卡codec 请问这个怎么搞 ...
可以在UI界面找找看浏览一下内容再提取 感谢分享! 感觉找到了良心教程!!马上试试 这个确实挺不错的简单易懂 电平输入大小可有解决?
chenyinji 发表于 2016-6-10 13:31
电平输入大小可有解决?
我的mic很正常