Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 110958|回复: 1377

[教程] 关于VoodooHDA完美修改,轻松制作属于自己的完美声卡。     [复制链接]

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 16:33:54 |显示全部楼层
本帖最后由 s1025xfei 于 2014-4-29 20:14 编辑

比起AppleHDA的修改,VoodooHDA还是很简单的。不要Linux提取codec_dump,不要排列数字,不要生成节点图,无需修改DSDT,仅需运行附件getdump,生成voodoohda_dump,然后轻松查找填几个数据就可以完美了。

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

我的是基于目前最新的VoodooHDA-2.8.4的完美修改,对于大部分电脑安装完VoodooHDA就可以驱动声卡,mic等,但总是无法很完美,比如有爆音,内外声卡mic无法自动切换。
VoodooHDA-v2.8.4.zip (216.06 KB, 下载次数: 3576)
安装完成之后,进入系统偏好设置>用户与群组> 选择登录项
按照图片将应用程序里面的VoodooHdaSettingsLoader加进去,并设置隐藏。

QQ20140202-1.png


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




更新了最新的VoodooHDA-2.8.5声卡驱动,第一个是zip的压缩包,第二个里面是pkg安装包,自行选择。如果修改2.8.5声卡驱动,getdump请使用zip压缩包里面的
修改声卡的方式和2.8.4的一样的,只不过2.8.5增加的对新的声卡支持而已。
VoodooHDA-2.8.5.zip (1.01 MB, 下载次数: 1966)
Voodoo_HDA_2.8.5.zip (1.64 MB, 下载次数: 3334)




问题:内核崩溃,系统开机五国
-解决方案 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中的
  1. <key>com.apple.iokit.IOAudioFamily</key>
  2.                 <string>1.1fc9</string>
  3.                 <key>com.apple.iokit.IOPCIFamily</key>
  4.                 <string>2.1</string>
复制代码
为当前系统的值。查看方法如图
QQ20140202-2.png

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


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



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




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


添加基于getDump规范的输出到NodesToPatch
找到
  1. <key>NodesToPatch</key>
  2.                         <array/>
复制代码
将<array/>删除,换成
  1.                                         <array>
  2.                                         <dict>
  3.                                         <key>Codec</key>
  4.                                         <integer>3</integer>
  5.                                         <key>Config</key>
  6.                                         <string>0x00000000</string>
  7.                                         <key>DAC</key>
  8.                                         <integer>2</integer>
  9.                                         <key>Node</key>
  10.                                         <integer>5</integer>
  11.                                           </dict>
  12.                                          </array>
复制代码


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

其中的
  1.                                         <key>DAC</key>
  2.                                         <integer>2</integer>
  3.                                  
复制代码

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

  1. <array>
  2. <dict>
  3. <key>Codec</key>
  4. <integer>3</integer>
  5. <key>Config</key>
  6. <string>0x00000000</string>
  7. <key>Node</key>
  8. <integer>5</integer>
  9. </dict>
  10. </array>
复制代码






,有多个节点添加下来如下形式
  1. <array>
  2.                              <dict>
  3.                                         <key>Codec</key>
  4.                                         <integer>3</integer>
  5.                                         <key>Config</key>
  6.                                         <string>0x00000010</string>
  7.                                         <key>DAC</key>
  8.                                         <integer>2</integer>
  9.                                         <key>Node</key>
  10.                                         <integer>5</integer>
  11.                                 </dict>
  12.                                <dict>
  13.                                         <key>Codec</key>
  14.                                         <integer>3</integer>
  15.                                         <key>Config</key>
  16.                                         <string>0x00000010</string>
  17.                                         <key>ADC</key>
  18.                                         <integer>2</integer>
  19.                                         <key>Node</key>
  20.                                         <integer>5</integer>
  21.                                 </dict>      
  22.                         </array>
复制代码
现在讲解
这代码里面的几个数值如何填写
Config和Node的数值填写是很简单的,如图从voodoohda_dump找到

QQ20140202-8.png

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

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

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

2014-02-03.png



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


(PS:在voodoohda_dump里面找到Patched pins configuration如图
QQ20140202-7.png


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








9

查看全部评分

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 16:34:30 |显示全部楼层
本帖最后由 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


QQ20140202-11.png




所以多加上去的一个节点代码是
  1. <dict>
  2.                                         <key>Codec</key>
  3.                                         <integer>3</integer>
  4.                                         <key>Config</key>
  5.                                         <string>0x18560010</string>
  6.                                         <key>DAC</key>
  7.                                         <integer>2</integer>
  8.                                         <key>Node</key>
  9.                                         <integer>5</integer>
  10.                                 </dict>
复制代码

代码里面的ADC或者DAC怎么写呢
如图搜索Building AFG tree...,可以找到如下代码

QQ20140202-12.png

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

  1. <dict>
  2.                                         <key>Codec</key>
  3.                                         <integer>3</integer>
  4.                                         <key>Config</key>
  5.                                         <string>0x00000010</string>
  6.                                         <key>Node</key>
  7.                                         <integer>5</integer>
  8.                                 </dict>
复制代码

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

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






UID
3322572
帖子
6989
PB币
34221
贡献
0
技术
4536
活跃
897

远景技术达人 热心会员

发表于 2014-2-2 17:27:37 |显示全部楼层
前排支持,楼主辛苦啦,收藏一下。

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 17:30:57 |显示全部楼层
daxuexinsheng 发表于 2014-2-2 17:27
前排支持,楼主辛苦啦,收藏一下。

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

求71狐狸尾巴当抱枕......外出南极洲旅游至今未归

Rank: 15Rank: 15Rank: 15

UID
2881599
帖子
18635
PB币
94932
贡献
1
技术
23281
活跃
2703

热心会员 8周年庆典勋章

发表于 2014-2-2 17:50:33 来自手机 |显示全部楼层
最后还是决定用voodoo了?

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 17:52:21 |显示全部楼层
neycwby09 发表于 2014-2-2 17:50
最后还是决定用voodoo了?

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

Rank: 9

UID
752499
帖子
4067
PB币
5235
贡献
0
技术
357
活跃
495

Win10先驱者

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

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 19:55:08 |显示全部楼层
tmacyunn 发表于 2014-2-2 18:58
getdump工具配合一些教程即可完成修改。只是需要注意2个地方修改就可以完成。专门修改的帖子在http://olari ...

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

Rank: 2Rank: 2

UID
1328517
帖子
265
PB币
550
贡献
0
技术
5
活跃
147
发表于 2014-2-2 20:14:09 |显示全部楼层
hda还没仿冒成功。。。

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 21:30:04 |显示全部楼层
a137536519 发表于 2014-2-2 20:14
hda还没仿冒成功。。。

改VoodooHDA简单多了

Rank: 2Rank: 2

UID
1328517
帖子
265
PB币
550
贡献
0
技术
5
活跃
147
发表于 2014-2-2 21:35:03 |显示全部楼层
s1025xfei 发表于 2014-2-2 21:30
改VoodooHDA简单多了

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

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 21:36:22 |显示全部楼层
a137536519 发表于 2014-2-2 21:35
现在折腾的有声了,睡眠后又无声(已解决,卸载再加载,还是觉得很麻烦)。。。插耳机的话,声音变调,就 ...

还要再努力。加油吧。所以我改voodoohda

Rank: 2Rank: 2

UID
2774792
帖子
378
PB币
3420
贡献
0
技术
14
活跃
854
发表于 2014-2-2 21:45:24 |显示全部楼层
看得有点晕,用着别人仿冒成功的,可惜不完美,内置扬声器音量调节图标无变化,每次开机都是最大声!还是原版的仿冒好,期待楼主的原版完美仿冒教程

我是00后

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15215
PB币
293
贡献
0
技术
82
活跃
1513

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-2 21:48:09 |显示全部楼层
小学生表示看不懂

点评

xiao201261  还是applehda简单  发表于 2014-2-2 21:48

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 21:55:20 |显示全部楼层
xiao201261 发表于 2014-2-2 21:48
小学生表示看不懂

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

我是00后

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15215
PB币
293
贡献
0
技术
82
活跃
1513

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-2 21:56:33 |显示全部楼层
s1025xfei 发表于 2014-2-2 21:55
这个很简单的,安装完pkg,运行getdump,得到voodoohda_dump,然后修改info就行了,超级简单

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

Rank: 5Rank: 5Rank: 5

UID
237826
帖子
593
PB币
1131
贡献
0
技术
7
活跃
787
发表于 2014-2-2 22:11:25 |显示全部楼层
音质仿冒的好啊!

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 22:13:25 |显示全部楼层
xiao201261 发表于 2014-2-2 21:56
还是applehda好,已经搞完13c44的  然后  然后 13c48就出来了 。。

然后里面全变了,,

我是00后

Rank: 15Rank: 15Rank: 15

UID
2867428
帖子
15215
PB币
293
贡献
0
技术
82
活跃
1513

十周年 Win10先驱者 8周年庆典勋章

发表于 2014-2-2 22:30:05 |显示全部楼层
s1025xfei 发表于 2014-2-2 22:13
然后里面全变了,,

没有,但我懒得改了

幼儿园未毕业

Rank: 15Rank: 15Rank: 15

UID
2675209
帖子
13173
PB币
29342
贡献
0
技术
5717
活跃
1329

应用界 8周年庆典勋章

发表于 2014-2-2 22:32:57 |显示全部楼层
xiao201261 发表于 2014-2-2 22:30
没有,但我懒得改了

直接替换文件是吧,voodoo改完了除非官方更新,一劳永逸,Applehda更新太麻烦 了
关闭

站长推荐

近期很多账号被盗,请加强密码保护!!
请注意保护自身账号安全
回顶部
Copyright (C) 2005-2017 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件