s1025xfei 发表于 2014-2-2 16:33

关于VoodooHDA完美修改,轻松制作属于自己的完美声卡。

本帖最后由 s1025xfei 于 2014-4-29 20:14 编辑

http://cdn.pcbeta.img.inimc.com//static/image/smiley/dadatu/06.gif比起AppleHDA的修改,VoodooHDA还是很简单的。不要Linux提取codec_dump,不要排列数字,不要生成节点图,无需修改DSDT,仅需运行附件getdump,生成voodoohda_dump,然后轻松查找填几个数据就可以完美了。{:8_541:}

修改后的声卡出了问题请主要请参照Nezzdivya大大的这个帖子关于Voodoohda的常见疑问综合列表

我的是基于目前最新的VoodooHDA-2.8.4的完美修改,对于大部分电脑安装完VoodooHDA就可以驱动声卡,mic等,但总是无法很完美,比如有爆音,内外声卡mic无法自动切换。

安装完成之后,进入系统偏好设置>用户与群组> 选择登录项
按照图片将应用程序里面的VoodooHdaSettingsLoader加进去,并设置隐藏。



然后进入系统的\System\Library\Extensions将刚刚安装好的VoodooHDA.kext拷贝到桌面上,右击显示包内容,打开Contents,看到Info.plist,要修改的就是这个,最好使用PlistEdit pro编辑(https://bbs.pcbeta.com/viewthread-978064-1-1.html),当然系统自带的文本编辑也行的。
下载,运行后得到一个窗口,全选里面的所有内容,粘贴到一个新建的文档里面保存下来,命名为voodoohda_dump。
(查看voodoohda_dump时请将窗口宽度拉大到最适合的完全显示的宽度)当然,如果有 前人修改的VoodooHDA声卡驱动,可以按照NodesToPatch复制到最新的声卡驱动里面来,当然本帖子中也会讲解如何制作适合自己声卡的NodesToPatch



更新了最新的VoodooHDA-2.8.5声卡驱动,第一个是zip的压缩包,第二个里面是pkg安装包,自行选择。如果修改2.8.5声卡驱动,getdump请使用zip压缩包里面的
修改声卡的方式和2.8.4的一样的,只不过2.8.5增加的对新的声卡支持而已。





问题:内核崩溃,系统开机五国
-解决方案 1:在安装VoodooHDA驱动前 先移除S/L/E(system/library/extensions/ 下同) AppleHDA.kext 修复权限和重建缓存并重新启动电脑
-解决方案 2:   (不出问题不建议修改,除非不修改这个,声卡无法使用)设置Info.plist 将 IOPCIClassMatch 的键值替换为IOPCIPrimaryMatch 键值 并且把你的声卡硬件ID放于 <string></string>字符串下
Before
<key>IOPCIClassMatch</key>

<string>0x04030000&0xffff0000</string>

After
<key>IOPCIPrimaryMatch</key>

<string>0x你的声卡ID</string>

你的声卡ID,打开提取的codec_dump.txt,可以看到最上面Vendor Id: 0xXXXXXX
冒号后面的id就是你的声卡id,请填进去(voodoohda_dump里面HDA Codec ID:后面的是一样的)
-解决方案 3:如果不移除AppleHDA.kext,可以将AppleHDADisabler.kext安装到system/library/extensions/,当然VoodooHDA-2.8.4.pkg会自动安装这个的。
-解决方案 4:设置Info.plist中的<key>com.apple.iokit.IOAudioFamily</key>
                <string>1.1fc9</string>
                <key>com.apple.iokit.IOPCIFamily</key>
                <string>2.1</string>为当前系统的值。查看方法如图

改后为<key>com.apple.iokit.IOAudioFamily</key>
                <string>1.9.5fc2</string>
                <key>com.apple.iokit.IOPCIFamily</key>
                <string>2.9</string>可以避免偶尔会由VoodooHDA带来的开机5国等情况(变色龙引导遇到居多,clover偶尔也会。就这个比较麻烦,每次系统更新了,这2个值要改)


其余的问题参照https://bbs.pcbeta.com/viewthread-958157-1-1.html修改去。


接下来添加VoodooHDA的HDMI音频输出
在Info.plist找到<key>IOKitPersonalities</key>
      <dict>在<dict>后面添加如下代码<key>HDMI</key>
                <dict>
                        <key>CFBundleIdentifier</key>
                        <string>org.voodoo.driver.VoodooHDA</string>
                        <key>IOClass</key>
                        <string>VoodooHDADevice</string>
                        <key>IOMatchCategory</key>
                        <string>VoodooHDADevice</string>
                        <key>IOPCIPrimaryMatch</key>
                        <string>0xHDMI设备ID</string>
                        <key>IOProviderClass</key>
                        <string>IOPCIDevice</string>
                        <key>IOUserClientClass</key>
                        <string>VoodooHDAUserClient</string>
                        <key>NodesToPatch</key>
                        <array/>
                        <key>VoodooHDAVerboseLevel</key>
                        <integer>1</integer>
                </dict>0xHDMI设备ID的每个人都不一样,自己从voodoohda_dump里面查找了添加修改,当然,不是在voodooHDA的Info.plist里面仅仅添加一段代码就行的,不同的显卡还要修改DSDT等,具体看这里https://bbs.pcbeta.com/viewthread-1053119-1-1.html。不过把AppleHDA换成VoodooHDA修改更简单了而已。




(不要怀疑voodooHDA能否开启HDMI。本论坛有成功案例lihuanzi2007,代码是复制的他的一部分https://bbs.pcbeta.com/viewthread-1259705-1-1.html)

添加基于getDump规范的输出到NodesToPatch
找到<key>NodesToPatch</key>
                        <array/>将<array/>删除,换成
                                        <array>
                                        <dict>
                                        <key>Codec</key>
                                        <integer>3</integer>
                                        <key>Config</key>
                                        <string>0x00000000</string>
                                        <key>DAC</key>
                                        <integer>2</integer>
                                        <key>Node</key>
                                        <integer>5</integer>
                                          </dict>
                                       </array>


从<array>……到</array>之间的这几段代码代表一个节点

其中的
                                        <key>DAC</key>
                                        <integer>2</integer>
                                 
DAC,或者ADC看不懂的,可以这2段代码可以不不写入,所以代码形式就成了,关于DAC或者ADC看2楼说明去

<array>
<dict>
<key>Codec</key>
<integer>3</integer>
<key>Config</key>
<string>0x00000000</string>
<key>Node</key>
<integer>5</integer>
</dict>
</array>






,有多个节点添加下来如下形式
<array>
                           <dict>
                                        <key>Codec</key>
                                        <integer>3</integer>
                                        <key>Config</key>
                                        <string>0x00000010</string>
                                        <key>DAC</key>
                                        <integer>2</integer>
                                        <key>Node</key>
                                        <integer>5</integer>
                              </dict>
                               <dict>
                                        <key>Codec</key>
                                        <integer>3</integer>
                                        <key>Config</key>
                                        <string>0x00000010</string>
                                        <key>ADC</key>
                                        <integer>2</integer>
                                        <key>Node</key>
                                        <integer>5</integer>
                              </dict>      
                        </array>现在讲解
这代码里面的几个数值如何填写
Config和Node的数值填写是很简单的,如图从voodoohda_dump找到


Node就是填写图中的node那一竖排红色圈出来的10进制的数值。
Config就是填写PinDefault那一竖排的数值,一一对应填写就行

请注意,PinDefault那一竖排的数值按下图修改后填写

请将这些数值分组后重新排布。比如笔记本分成内置和外接和SPDIF和HDMI
台式机分组成前置,后置等
台式机上看例如0x400001f0这个数值倒数第三位相同的为一组
笔记本比较麻烦上图那组数据向下拉,找到Patched pins configuration:
除去末尾有的几组数据后,将Analog分为一组,分别是内置mic和扬声器。剩下来的Headphones和Microphone数据就是外接的了,也分为一组,SPDIF-out和HDMI数据各一组。(笔记本上的1/8的正常都属于外接耳机,mic,所以可以放在一组)


http://cdn.pcbeta.attachment.inimc.com/data/attachment/forum/month_1103/110301200789b48a96bce7104f.png.thumb.jpg

像我这样重新排列了将0x400001f0那些数据全部独立排出来,就可以看到其实都是不一样的,但不排除有人一样,自己随便改吧,保证取值不同就行


(PS:在voodoohda_dump里面找到Patched pins configuration如图


后面有的说明也是无用节点,你可以用0x40f000f0替换,也可以删掉不填写。像我这样如果替换要填入10个节点,如果删掉只要填入5个就行了。)








s1025xfei 发表于 2014-2-2 16:34

本帖最后由 s1025xfei 于 2014-2-3 15:13 编辑

然后是
<key>Codec</key>
<integer>2</integer>
这个Codec的数值填写方法
还是打开voodoohda_dump搜索Probing codec #,找到的第一个#后面的数值就是我们要填写的数值。比我的就是0
以上都是声卡节点,下面还有HDMI输出节点

在voodoohda_dump里面搜索Probing codec #找到第一个就是我们已经添加的声卡节点,第二个就是HDMI输出设备节点了
比如我的是Probing codec #3






所以多加上去的一个节点代码是
<dict>
                                        <key>Codec</key>
                                        <integer>3</integer>
                                        <key>Config</key>
                                        <string>0x18560010</string>
                                        <key>DAC</key>
                                        <integer>2</integer>
                                        <key>Node</key>
                                        <integer>5</integer>
                              </dict>
代码里面的ADC或者DAC怎么写呢
如图搜索Building AFG tree...,可以找到如下代码


Pin 31 traced to DAC 16
Pin 27 traced to ADC 20Pin 5 traced to DAC 2等等,按照搜索到的结果填写就行,如
如果没有类似的就不要加上去了。当然,HDMI接口的那个DAC什么的建议一定要写,要是其他的你懒,省掉不写也没事。节点代码直接变成

<dict>
                                        <key>Codec</key>
                                        <integer>3</integer>
                                        <key>Config</key>
                                        <string>0x00000010</string>
                                        <key>Node</key>
                                        <integer>5</integer>
                              </dict>讲解一下这里的DAC。ADC是什么意思呢。
补充一张仿冒AppleHDA声卡要用到的节点连接图,voodoo无需此图参照上一张图pin 31 traced to DAC 16就是这个节点图里面的16到31的一个虚线的连接,不过31到16箭头是反向的,所以是DACpin 27 traced to ADC 20就是这个节点图中最后27到20的,为什么中间的23省去了,因为27最终是可以到20的,输入的是节点最终值。所以如果你不明白什么ADC或者DAC,像上面说的可以省去不写,代码还精简点,让voodoo声卡驱动自己去判断。

然后保存Info.plist,用Kext Wizard将这个修改好的VoodooHDA声卡安装到SLE。注意备份原来的驱动,安装的时候在备份驱动前面打上勾就行,还有注意修复权限和重建缓存。






daxuexinsheng 发表于 2014-2-2 17:27

前排支持,楼主辛苦啦,收藏一下。

s1025xfei 发表于 2014-2-2 17:30

daxuexinsheng 发表于 2014-2-2 17:27 static/image/common/back.gif
前排支持,楼主辛苦啦,收藏一下。

有什么错误的地方请指出来,谢谢啦

neycwby09 发表于 2014-2-2 17:50

最后还是决定用voodoo了?

s1025xfei 发表于 2014-2-2 17:52

neycwby09 发表于 2014-2-2 17:50 static/image/common/back.gif
最后还是决定用voodoo了?

AppleHDA这货更新太频繁了,要稳定的

tmacyunn 发表于 2014-2-2 18:58

getdump工具配合一些教程即可完成修改。只是需要注意2个地方修改就可以完成。专门修改的帖子在http://olarila.com/forum/viewtopic.php?f=28&t=454,c部分和f部分是比较重要的。

s1025xfei 发表于 2014-2-2 19:55

tmacyunn 发表于 2014-2-2 18:58 static/image/common/back.gif
getdump工具配合一些教程即可完成修改。只是需要注意2个地方修改就可以完成。专门修改的帖子在http://olari ...

就是这个的英文版,貌似更加全面点https://bbs.pcbeta.com/viewthread-958157-1-1.html

a137536519 发表于 2014-2-2 20:14

{:5_288:}hda还没仿冒成功。。。

s1025xfei 发表于 2014-2-2 21:30

a137536519 发表于 2014-2-2 20:14 static/image/common/back.gif
hda还没仿冒成功。。。

改VoodooHDA简单多了

a137536519 发表于 2014-2-2 21:35

s1025xfei 发表于 2014-2-2 21:30 static/image/common/back.gif
改VoodooHDA简单多了

现在折腾的有声了,睡眠后又无声(已解决,卸载再加载,还是觉得很麻烦)。。。插耳机的话,声音变调,就比如说,听mp3只能听清伴奏,唱的歌词都听不清。大神知道这个怎么解决吗

s1025xfei 发表于 2014-2-2 21:36

a137536519 发表于 2014-2-2 21:35 static/image/common/back.gif
现在折腾的有声了,睡眠后又无声(已解决,卸载再加载,还是觉得很麻烦)。。。插耳机的话,声音变调,就 ...

{:8_520:}还要再努力。加油吧。所以我改voodoohda

my736250809 发表于 2014-2-2 21:45

看得有点晕,用着别人仿冒成功的,可惜不完美,内置扬声器音量调节图标无变化,每次开机都是最大声!还是原版的仿冒好,期待楼主的原版完美仿冒教程

xiao201261 发表于 2014-2-2 21:48

小学生表示看不懂

s1025xfei 发表于 2014-2-2 21:55

xiao201261 发表于 2014-2-2 21:48 static/image/common/back.gif
小学生表示看不懂

这个很简单的,安装完pkg,运行getdump,得到voodoohda_dump,然后修改info就行了,超级简单

xiao201261 发表于 2014-2-2 21:56

s1025xfei 发表于 2014-2-2 21:55 static/image/common/back.gif
这个很简单的,安装完pkg,运行getdump,得到voodoohda_dump,然后修改info就行了,超级简单

{:9_616:}还是applehda好,已经搞完13c44的然后然后 13c48就出来了 。。

willsmithjs 发表于 2014-2-2 22:11

音质仿冒的好啊!

s1025xfei 发表于 2014-2-2 22:13

xiao201261 发表于 2014-2-2 21:56 static/image/common/back.gif
还是applehda好,已经搞完13c44的然后然后 13c48就出来了 。。

然后里面全变了,,

xiao201261 发表于 2014-2-2 22:30

s1025xfei 发表于 2014-2-2 22:13 static/image/common/back.gif
然后里面全变了,,

没有,但我懒得改了{:9_352:}

s1025xfei 发表于 2014-2-2 22:32

xiao201261 发表于 2014-2-2 22:30 static/image/common/back.gif
没有,但我懒得改了

直接替换文件是吧,voodoo改完了除非官方更新,一劳永逸,Applehda更新太麻烦 了
页: [1] 2 3 4 5 6 7 8 9 10
查看完整版本: 关于VoodooHDA完美修改,轻松制作属于自己的完美声卡。