本帖最后由 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
将名字前面带有[N/A]的点去掉(是前面!!!带“[N/A]”的点,有中括号的!!!其他的留下),然后将文本进行分类,按照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。实心线可以连接,虚线不可连接,带[N/A]的矩形可以忽略。
我的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声卡
|