教程 仿冒AppleHDA制作原版AppleHDA修改教程Word文档格式.docx
- 文档编号:21618480
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:18
- 大小:155.20KB
教程 仿冒AppleHDA制作原版AppleHDA修改教程Word文档格式.docx
《教程 仿冒AppleHDA制作原版AppleHDA修改教程Word文档格式.docx》由会员分享,可在线阅读,更多相关《教程 仿冒AppleHDA制作原版AppleHDA修改教程Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
1.cat/proc/asound/card0/codec#0
复制代码
回车,就可以看到终端中显示了很多东东了。
注意,网上很多教程里面输入的不是codec,0,而是codec,1,具体是那一个,要看设备来的。
实际上如果你在ubuntu中进入/proc/asound/card0/下,你就会看到codec,0、codec,1等文件,打开以后实际上就是我们要的东西,我们只是要把它另存为txt文件罢了,cat命令也只是相当于dos下的type。
用下面这个命令就可以把codec,0,戒者是codec,1,中的内容保存到txt文件
1.cat/proc/asound/card0/codec#0>
~/Desktop/codec_dump.txt
注意,如果你使用的是中文界面的ubuntu,那么这个里面的Desktop一定要改为“桌面”,否则会提示你找不到文件。
回车后在桌面上就会找到codec_dump.txt文件
得到这个txt后,我们就可以把它转移到mac下工作了。
二、从codec_dump.txt中得到一些有用的东西1、ConfigData
有些教程中对configdata的取得有不同的看法,有的说从vista,win7中可以取得,还有的就是从codec_dump.txt中的pinDefault中转化取得,我认为这个方法都值得商榷,因为,这样得到的Configdata包吨着一些没用的信息,尤其是从windows中取得的configdata还需要很多修正才能使用。
那么我们如何才能取得正确的configdata呢?
我们需要一个小工具,verbit.zip。
下载后解压,然后和codec_dump.txt放到同一个文件夹内,打开终端,进入这个文件夹,输入
1../verbitcodec_dump.txt>
verbs.txt复制代码
回车后,文件夹中就会多出一个verbs.txt文件。
这里需要注意,有时候在会出现下面的错误
1.ERROR:
Thisdoesn'
tappeartobeanalsacodecdumpfile
2.Codec:
RealtekALC888
3.Address:
0
4.FunctionId:
1
这时就需要我们对dump文件进行一点修改,很简单,删除FunctionId:
1就可以了。
打开verbs.txt显示如下,这只是我的,
注意虚线之间的两组数据,上边的多些,下边的少些,有什么区别呢?
看看文件夹下的另一个文件Verbitdebug.txt就会知道,上边的是没经修复的,下边的经过修复的,去掉了一些没用的信息,修正了一些在mac系统下必须的东西。
至于修改了哪些,为什么修改,你可以参考Verbitdebug.txt以及网上的一些其他教程,所以
下边的数据才是我们真正要的东西。
从下边的数据块可以看到刚刚好是我的声卡揑口配置情况:
一个内置麦兊风MicatIntATAPI,
一个内置扬声器SpeakeratIntATAP,
一个耳机揑口HPOutatExtFront,
一个外置麦兊风揑口MicatExtFront,
一个线路输入揑口LineInatExtFront,
一个蜂鸣器SpeakeratExtN/A,,这里更正了,不是hdmi揑口,是系统内部的蜂鸣发生装置,
一个SPDIF输出揑口SPDIFOutatExtFront,在我的机器上是和耳机揑口共用的,只是和耳机的揑头不同,
并且标明了揑口颜色。
注意后面的node,这就是节点值,对我们来说很有用,比如180x12,其中18就是我们需要在原版驱动中加入的东西,是10进制的,而后面的0x12则是18的16进制表示方式。
后面的ModifiedVerbs下的数据就是我们需要的configdata。
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,01271c4001271d0001271ea301271f9001471c1001471d0001471e1301471f90
01571c5001571d1001571e2101571f0101871c3001871d9001871ea101871f0101a71c6001a71d3001a71e8101a71f0101d71c2001d71d8001d71e1601d71f4001e71c7001e71d1001e71e4501e71f01,,,,,,,,,,,,,,,,,,,,,,,,,,,,
关于configdata,强烈建议大家看看这个帖子,写得相当好,我也会在我的帖子里面按这个帖子里的内容进行修改!
深入理解AppleHDA的ConfigData
对于我来说,就是再configdata的最后加入
01470C02才能让声卡出声,原因不明。
最终configdata
,,,,,,,,,,,,,,,,,,,
01271C4001271D0101271EA301271F9001471C1001471D0101471E1301471F9001571C5001571D1001571E2101571F0101871C6001871D9001871EA101871F01
01A71C3001A71D3001A71E8101A71F0101D71C7001D71D8001D71E1601D71F4001E71C2001E71D1001E71E4501E71F0101470C02<
---------------这个不加没有声音,如果你的也是怎么弄都没有声音,试试
要了解configdata的相关知识,请看46楼威廉第三的补充,感谢威廉第三的帮忙!
2、得到codec_dump连结图(我自己定义的名字)
这个图只是方便我们以图形的方式查看我们的声卡输入输出路径。
首先下载GRAPHVIZforMacOSX,要下载开发版的的,
graphviz-2.25.20091030.0445,这个才支持snowleopard,下载后安装
然后下载CodecGraph,解压,把codec_dump.txt放入这个文件夹,打开终端,进入这个文件夹,输入
1../codecgraphcodec_dump.txt复制代码
就会得到一个codec_dump.txt.svg文件,用safari打开就可以看到连结图。
用起来可能不方便,你可以用一些矢量绘图工具把它转化成jpg戒者png文件,以方便查看。
我们在svg文件中看到的节点,NID)都是16进制的,而我们后面需要输入节点的地方都是10进制的,所以我们需要一个小工具把16进制转化成10进制。
下载convert_hex_to_dec.rb.zip
解压到codec_dump.txt.svg同一个文件夹,打开终端,进入这个文件夹,输入
1.chmod+x./convert_hex_to_dec.rb复制代码
回车后,输入
1../convert_hex_to_dec.rbcodec_dump.txt.svg>
codec_dump_dec.txt.svg
用safari打开新生成的codec_dump_dec.txt.svg,我们就会发现所有的节点都已经转化为10进制的了。
这个时候我们回过头来看verbs.txt中的node值,也就是节点,,就会发现,根据10进制的节点值你差不多就知道自己的声卡是怎么输入输出的了。
3、获取实体连接路径
根据svg图形文件想找到实体连接不是件容易的事情,相信很多同学打开这个图就头晕吧,一堆连线中很难找到头绪。
有些教程中还使用了codec_dump.txt来找实体连接,这个也更不容易找,这时我们需要另外一个小工具voodoohdahelper,我们先下载VoodooHDA-0.2.2.zip(125.01KB,下载次数:
1059)然后找一个能驱动你的声卡的voodoohda,,有人会说你都能voodoo了,干嘛还要弄原版的applehda啊,呵呵,这就是折腾,,更新:
这里一定要先用voodoohda驱动,否则得不到返回值,
用voodoohda驱动声卡,然后解压刚刚下载的东东,在终端进入这个文件夹(这个里面有个voodoohdahelper),输入
1../voodoohdahelper,dump>
voodoohda_dump.txt复制代码
这样我们就在这个文件夹内得到一个vooddoohda_dump.txt文件,好了,现在我们可以轻松的找到节点路径了。
丼各例子:
根据verbs.txt中的节点,node,信息,知道内置扬声器和耳机揑口的节点值分别为20和21,于是在voodoohda_dump.txt文件中找到以下信息:
,,,,,,,,,,,,,,,,,,,,,,,,,,,
Playback:
nid=20[pin:
Speaker(CD)]
|
+<
-nid=12[audiomixer][src:
pcm,mix]bindSeq=00008001
-nid=2[audiooutput][src:
pcm]bindSeq=00008001
-nid=11[audiomixer][src:
mix]bindSeq=00008001
nid=21[pin:
Headphones(BlackFront)]
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
,,,,,,
根据上边的信息,我们知道输出有两个节点,一个是20一个是21,从verbs.txt
中我们可以知道,这两个一个是内置扬声器,一个是耳机,于是两个路径就出来了,
分别是
内置扬声器:
20,12,2
耳机:
21,12,2
就这么简单。
你可以在svg图形中看看是不是这样的。
同理你可以找到麦兊风和线路输入的节点路径。
至于内置麦兊风,这一节的信息里没有,我们只需要从所有的信息中找到节点值
,node,nid,为18的信息就行了,
+-------------------------------+
|DUMPINGPlayback/RecordPaths|
Record:
nid=9[audioinput]
-nid=34[audiomixer][src:
speaker,mix,monitor]bindSeq=00000001
-nid=29[beepwidget][src:
speaker]bindSeq=00000000
-nid=18[pin:
Microphone(CD)][src:
monitor]bindSeq=00000001
从上边的信息中我们就得到内置麦兊风的节点路径了
内置麦兊风:
9,34,18
同样我们用同样的方法找到线路输入和外置麦兊风揑口的节点路径:
线路输入:
8,35,26
外置麦兊风:
8,35,24
我的没有SPDIF输入,SPDIFIn),只有输出(SPDIFOut),从下面的信息可以找到其节点路径
+-------------------------------+|DUMPINGPlayback/RecordPaths|+-------------------------------+
nid=30[pin:
SPDIF-out(BlackFront)]
-nid=6[audiooutput][src:
pcm]bindSeq=00000001
SPDIF输出节点路径就是:
SPDIFOut:
30,6
这里要注意的一点就是,输入和输出写法的不同,像麦兊风和线路输入的结点路径的节点值从左到右是由小到大的,
这样我们就得到了所有的节点路径,
6SPDIFOut:
30,
你可以对照svg图形节点路径图来进行参考。
做完以上的工作,我们的基本信息就收集完毕了。
我们现在拥有两个最重要的东西:
1、configdata
2、节点路径
接下来就要对原版的applehda.kext进行修改了,当然也可以作成仿冒驱动,效果是一样的。
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,
不好排版啊,休息一下,手都累了!
三、修改AppleHDAHardwareConfigDriver.kext中的info.plist
如果你按一楼的方法取得了所有需要的基本数据,那么接下来就是开始编辑info.plist了。
这里有两个方向,一个是制作仿冒驱动,一个是在原版驱动上修改。
实际上这两个方向大同小异,因为要修改的地方都是相同的,只要知道了基本的原理,朝哪个方向走都是一样的。
这里就以在原版基础上修改为例,最后在介绍如果做仿冒驱动。
AppleHDAHardwareConfigDriver.kext只有在snowleopard中才有,在leopard中是修改AppleHDAController.kext。
修改它的主要目的就是让驱动认识声卡。
1、这里要说明的是修改用的工具,建议使用PlistEditPro,因为带有复制剪切等功能,方便编辑。
2、首先复制一份原版的applehda.kext,放在桌面上,右键显示包内容,进入contents文件夹,再进入pluglns文件夹,然后再右键AppleHDAHardwareConfigDriver.kext
显示包内容,然后进入contents,打开里面的info.plist,这就是我们要修改的地方。
我们要修改的位置在root,》IOKitPersonalities,》HDAHardwareConfigResource
》HDAConfigDefault里面,在原版的AppleHDAHardwareConfigDriver.kext里面一共有0,17共18个dictionary,我们要找一个和自己的声卡最接近的,你只能一个一个的打开看看了,举例子,我的声卡是alc888,最接近的就是在第11个,也就是名称是10的dectionary,展开可以看到codecID是283904133,这是10进制的,转化为16进制就是0x10EC0885,代表了alc885的声卡,那我就要在这个基础上修改了,其他的你可以删掉,只留下这个就行了,当然你也可不删掉其他的。
3、这里面一共有四个子项,分别是codecID、configData、funGroup、LayoutID。
曾近折腾仿冒驱动的人看到这里就会觉得眼熟了,尤其是那个LayoutID,我们在修
改dsdt的时候总是听到高手们说layoutid一定要是什么什么的,其实就是这里决定
的,这是12,其实你自己完全可以定义,只要和dsdt统一就可以了,这里我就不动
了。
首先修改codecID。
修改为自己的声卡的codecID,可以在codec_dump.txt找到,打
开codec_dump.txt其中的VendorId就是codecID,我的是0x10ec0888,用mac自带
的计算器转换为10进制就是283904136,用它替换原来的283904133就可以了。
然后我们再来修改configData。
这时我们之前得到的configdata就有用了,把他直接
粘贴过来就行了。
这里要注意的是configdata的格式,要像下面这样
1.01271c4001271d0001271ea301271f9001471c1001471d0001471e13
01471f9001571c5001571d1001571e2101571f0101871c3001871d90
01871ea101871f0101a71c6001a71d3001a71e8101a71f0101d71c20
01d71d8001d71e1601d71f4001e71c7001e71d1001e71e4501e71f01复制代码
中间没有回车,只是每组数据之间用空格隔开。
有的教程里面在configdata数据的
开始和末尾还加入了“<
”和“>
”,这个只是因为编辑工具的不同,如果你用propertylist
edit的话就要加入大于号和小于号,我现在用plisteditpro,就不用加了,加了反而
会提示出错。
好了,我们就只修改这两个地方就完成了工作,其他的两个子项就让他们留在那里
吧,除非你想改变layoutid值。
保存吧~~~~
看看我们修改后的效果,别急,我们要先使用dsdt。
关于dsdt的修改和编译网上有
很多贴子介绍了,虽然不全面,但是已经够我们用了,这里我们就不详细介绍了。
打开dsdt文件,首先添加一个基本函数DTGP,你可以添加到整个dsdt的第一个“,”
的后面,
1.Method(DTGP,5,NotSerialized)2.{
3.If(LEqual(Arg0,Buffer(0x10)4.{
5./*0000*/0xC6,0xB7,0xB5,0xA0,0x18,0x13,
0x1C,0x44,
6./*0008*/0xB0,0xC9,0xFE,0x69,0x5E,0xAF,
0x94,0x9B
7.}))
8.{
9.If(LEqual(Arg1,One))10.{
11.If(LEqual(Arg2,Zero))12.{
13.Store(Buffer(One)14.{
15.0x0316.},Arg4)17.Return(One)18.}
19.
20.
21.If(LEqual(Arg2,One))22.{
23.Return(One)24.}
25.}
26.}
27.
28.
29.Store(Buffer(One)
30.{
31.0x00
32.},Arg4)
33.Return(Zero)
34.}
HDEF),如果没有,查找device(AZAL)然后把AZAL改为HDEF就查找device(
行了。
然后在device(HDEF)里面加入如下代码:
1.Method(_DSM,4,NotSerialized)2.{
3.Store(Package(0x08)4.{
5."
codec-id"
6.Buffer(0x04)7.{
8.0x88,0x08,0xec,0x10
9.},
10.
11.
12."
layout-id"
13.Buffer(0x04)14.{
15.0x0C,0x00,0x00,0x00
16.},
17.
18.
19."
device-type"
20.Buffer(0x29)21.{
22."
RealtekALC888/1200@Intel
82801IBICH9"
23.},
24.
25.
26."
PinConfigurations"
27.Buffer(Zero){}
28.},Local0)
29.DTGP(Arg0,Arg1,Arg2,Arg3,RefOf(Local0))
30.Return(Local0)
31.}
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 教程 仿冒AppleHDA制作原版AppleHDA修改教程 仿冒 AppleHDA 制作 原版 修改
![提示](https://static.bdocx.com/images/bang_tan.gif)