qq527951131 发表于 2016-6-8 15:50

[不会看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声卡

LCC2008520 发表于 2016-6-8 23:18

大高玩,给力,太厉害了!

elisontz 发表于 2016-6-9 00:36

codec是在Ubuntu下提取嘛?还没搞过这个。。。

qq527951131 发表于 2016-6-9 02:13

elisontz 发表于 2016-6-9 00:36
codec是在Ubuntu下提取嘛?还没搞过这个。。。

linux应该都一样的,我在ubuntu和centos提取的一模一样

zx110zx@qq.com 发表于 2016-6-9 02:50

我在ubuntu和centos提取的一模一样

lisizhe1987 发表于 2016-6-9 06:31

这帖子绝对会火起来   话说我在ubuntu下提取alc892 每次提取出来的都是hdmi 不是声卡codec   请问这个怎么搞   我把card0-3那个命令都试过了只有card0会输出codec 但是打开一看是HDMI的codec还望指教

thinkwe 发表于 2016-6-9 08:09

codec怎么提,不明白

小健健2015 发表于 2016-6-9 08:21

不知道这个可不可以作为仿冒IDT的参考,最近在学习仿冒声卡{:9_351:}

我不要用户名 发表于 2016-6-9 08:31

很好的冒仿声卡教程

我不要用户名 发表于 2016-6-9 08:37

其实applealc对应声卡型号的文件夹info文件里还配置好了二进制补丁~
如果不是用applealc的话要自行在clover里patch或者直接修改applehda。
另外applealc还patch了解决睡眠唤醒无声的代码~总之applealc是黑苹果史上一大突破

walktewy 发表于 2016-6-9 08:51

支持了!!!!!!!!!!!!!!!!!!

elisontz 发表于 2016-6-9 10:47

楼主,为什么我的节点图里蓝色椭圆为Audio output的。。。

qq527951131 发表于 2016-6-9 10:51

elisontz 发表于 2016-6-9 10:47 https://www.pcbeta.com/static/image/common/back.gif
楼主,为什么我的节点图里蓝色椭圆为Audio output的。。。

以Codec为准咯,我这只是个方法推荐

qq527951131 发表于 2016-6-9 18:38

我不要用户名 发表于 2016-6-9 08:37
其实applealc对应声卡型号的文件夹info文件里还配置好了二进制补丁~
如果不是用applealc的话要自行在clov ...

睡眠唤醒无声我的没用,只能将光数字改为耳机

qq527951131 发表于 2016-6-9 20:36

lisizhe1987 发表于 2016-6-9 06:31 https://www.pcbeta.com/static/image/common/back.gif
这帖子绝对会火起来   话说我在ubuntu下提取alc892 每次提取出来的都是hdmi 不是声卡codec   请问这个怎么搞 ...

可以在UI界面找找看浏览一下内容再提取

wskpm 发表于 2016-6-9 21:39

感谢分享!

dsneko 发表于 2016-6-9 21:42

感觉找到了良心教程!!马上试试

l277277 发表于 2016-6-10 01:32

这个确实挺不错的简单易懂

chenyinji 发表于 2016-6-10 13:31

电平输入大小可有解决?

qq527951131 发表于 2016-6-10 19:07

chenyinji 发表于 2016-6-10 13:31
电平输入大小可有解决?

我的mic很正常
页: [1] 2 3 4 5 6
查看完整版本: [不会看Codec的朋友看看吧]神舟Z7m-i78172d1声卡驱动之路