本帖最后由 guoyan6914685 于 2017-12-1 16:58 编辑
由于本篇只是说了大致思路,很多朋友询问具体细节,而大神的文章针对10.11系统,所以我抽出时间完整的写了一篇教程,内容颇多,发布于简书, http://www.jianshu.com/p/29a74f0664f1
自从把自己黑的经验发了贴以后,很多人问我ALC892仿冒的事。Alc仿冒确实挺复杂,再加上大神ALC892专属教程里有些小细节不在意,导致很多新手离成功只差一步的时候放弃了。(可能大神成功的经验太多,照顾不到所有细节吧)我就是卡在一些细节将近一个月,这个之后再说。
本帖只支持ALC892,其他的型号可以借鉴思路,不过最好不要直接用我的文件。ALC892的就无所谓了,把我的文件小幅修改就能用,直接用文件和直接用我的驱动是没有区别的。看这个帖子的人至少需要知道用ubuntu提取codec(不要提取到HDMI的呦),会分析出configdata值,在codec文件中查询节点(其实查询很简单,关键是要分析节点,并且不断的尝试)。当然新手可以通过本帖有针对性的学习大神的教程,这样能够避过一些坑,提高成功率。 https://bbs.pcbeta.com/viewthread-1677191-1-1.html 这是仿冒驱动教程,适用很多声卡 https://bbs.pcbeta.com/viewthread-1685213-1-1.html 这是alc892专属的 而我的教程就是在这个基础上简化方便更多alc892的朋友
首先,使用到的工具有xcode。AppleALC-master提供了诸多声卡驱动工具,集合了xcode命令用来生成AppleALC。(我会放上最新的版本支持10.12Sierra)。 zlib转换器。 至于idsdt,verbit在大神那里有,我就不说了,主要是生成applehdamod和将codec编译出configdata值用的。ALC892的朋友可以直接用我的info.Plist。
AppleALC仿冒 仿冒主要是节点文件Platforms,Layout.xml,和info.Plist文件修改(这里有两个info,之后详说) 一、 Applealc-master——resources——alc892中的info.Plist用来描述你的声卡以及对layout和Platforms文件位置、id的说明。这个地方大神留了个坑,他在教程里设置layoutid为1,但是在info.plist中files——layouts——item中,他把alc892放到了item2中,且id为3。导致我一直没成功。下面的platforms中也是如此。只需要将item2中的comment与item0中的comment换一下就行了,而item下的path要修改为自己的layout文件名和platforms文件名(要带后缀)。很简单的一件事坑了我好久哦。Info中的codecID也要注意,283904146是ALC892的codecID。对应声卡文件夹下的info中的codecid都是对应声卡的,一般不会错。 二、 Applealc-master——resources——pinconfigs.kext——contents中的info,要按照大神的方式用仿冒的applehda中修改替换,我是用idsdt生成applehdamod中的修改替换的。我把我自己的放出来方便大家,ALC892的朋友只需要修改configdata值就好了。其他声卡的还需要修改codecID和layoutID。(我不确定都兼容,至少我只改这几个值可以用在别的声卡上)
Info.plist就这些,很简单,仔细就好了。 这里需要说明一下configdata的问题。说实话,configdata只是为了定义端口,什么优先级,颜色,位置,是否检测等等,修改configdata值是为了更符合mac的要求,更好的兼容苹果系统,虽然它很重要但不是声卡最关键的地方。很多朋友用别的人驱动,系统报告里已经有检测到了,可是声卡设置里什么也没有的原因是configdata系统识别出来了但是节点不匹配不能驱动,由此看出configdata并不驱动,只是定义,当然如果你胡乱修改就不好了。你可以根据自己的需要对他进行修改,比如最经典就是外放和耳机的切换。这个大神的教程说的很清楚,没有坑,不需要再解释,codec有EAPD字样的configdata需要多加01470C02,别忘了。
三、 其实想要驱动声卡,最最关键是节点,节点弄不好,一切都白搭。节点大神们都有很详细的教程,我只说说我自己笔记本的情况。ALC892分为有lineout和没有lineout,我是有lineout。 按照我的platforms的结构修改就好了,从pathmap开始第一个0是输入,1是输出,2是spdif out。向下的分支如图,每个分支最后的012或01就是节点,根据codec文件的搜索找到各个节点,节点大原则是不重复(台式机好像见到过重复的,我不懂,懂的朋友给个说明)节点每个电脑都不太一样,需要一点一点找,然后测试,是最麻烦最容易出现问题的地方,所以只能自己慢慢改了,我和大神的教程里有一些节点是一样的,运气真好哦。platforms最后放到Applealc-master——resources——alc892下,记得放入的是zlib格式的 四、 layout1.xml文件,我直接用大神的,没什么需要改的,alc892的朋友直接用,其他的朋友大神文章里也有说,我就懒得清闲啦,哈哈。这个文件也要放到 Applealc-master——resources——alc892下,也是zlib格式的。 最后把四个文件放到对于的位置,打开appleALC.xcodeproj,运行,如下图
找到applealc复制出来,放到clover下kext对应的系统文件夹里就行了。
之后就是clover或者dsdt注入id就好了,用我文件的朋友要注入layoutID是1哦,别弄错了。 只要保存好这四个文件,以后每次applealc-master更新,只需要复制粘贴,重新生成一个applealc就好了,可以说是一劳永逸了。 最后放上我的configdata值和节点,以供大家参考
网盘失效了才看到,直接将4个文件与相关工具打包,从10.13开始AppleALC都需要用lilu.kextp关联,而相关的lilu.kext也最好使用对应版本的lilu-master生成,然后将生成的lilu.kext放到AppleALC-master中生成AppleALC(注:很多帖子分享的lilu.kext缺少文件,如果生成过程中出现红色报错,要么是lilu与AppleALC版本不对应缺少相关api,要是就是lilu.kext中缺少文件)
个人比较讨厌伸手党,我已经简化了很多工作,所以希望下载文件的朋友都回复一下使用后的感想,只有多交流才能共同进步
|