Win10论坛

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

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

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

搜索
查看: 147151|回复: 724

[教程] [开始上课]今天的题目是:HD3000、HDMI音频的解法     [复制链接]

黄瓜别浪费,可以吃

Rank: 7Rank: 7Rank: 7

UID
971865
帖子
617
PB币
5554
贡献
0
技术
87
活跃
376

7周年庆典勋章

发表于 2012-6-6 01:01:51 |显示全部楼层
本帖最后由 easylin 于 2012-6-6 20:34 编辑

最近经常有网友抱怨HD3000卡顿,或询问HDMI音频输出的问题,
我在这里合并一个帖子来说,目的是提供关于HD3000的全方位解答
让大家都能完美用上这款性能不错、又节能环保的核显。本教程分两部分:


1、驱动HD3000的关键
2、HDMI音频输出


螢幕快照 2012-06-05 下午8.11.27.png


螢幕快照 2012-06-05 下午8.12.56.png


第一部分 驱动HD3000的关键


其实早在去年这个问题就已经攻破,有些人“丢个mbp81的smbios就完美的飘过”,有些人“死活都不能驱动”,这个问题的难点在哪呢,怎么会差距这么大?原因就在于,HD3000的硬件ID有太多种,苹果官方只用了其中某几种,同样是HD3000,但ID不在苹果官方使用列表里的话,就没驱动上。我们先来看看原生驱动的info.plist

打开/S/L/E/AppleIntelHD3000Graphics.kext/Contents/info.plist可以找到以下内容
0x01068086 0x11068086 0x16018086 01168086 01268086

其中0126是macbookpro和macmini机型使用的HD3000设备代号。那些无法成功驱动的朋友,你们到win设备管理器里看一看,ID是不是都很奇怪,和上面的不同,没关系,我的比你们更怪!我的至强带的HD3000是8086010A,我的都可以成功驱动,所以放心往下看。

接下来的步骤,跟以往修改驱动的方法有所不同。拿N卡来说,5xx要驱动的话,我们是往info里面添加自己的
真实显卡ID;但对于Hd3000,我们要做的是往dsdt里加入虚假的显卡id,也就是,从上面5个官方支持的id中挑选一个写进dsdt。骗系统“以为”你的hd3000可支持,开启原生驱动,这就是解决问题的关键。


基于以上分析还可以知道,对于奇怪的ID,是不能使用变色龙GraphicsEnabler =Yes来驱动的,因为变色龙会inject真实ID,并向系统“告密”,造成无法驱动,所以,我们只好用dsdt。当然,如果你的ID正常,是5个其一,就可以用变色龙。


接下来编辑dsdt,找到Device (IGD0)或者Device (GFX0)字段的位置
  1.         Device (IGD0)
  2.         {
  3.             Name (_ADR, 0x00020000)
复制代码
的下面添加
  1.             Method (_DSM, 4, NotSerialized)
  2.             {
  3.                 Store (Package (0x06)
  4.                     {
  5.                         "device-id",
  6.                         Buffer (0x04)
  7.                         {
  8.                             0x26, 0x01, 0x00, 0x00
  9.                         },
  10.                         "model",
  11.                         Buffer (0x17)
  12.                         {
  13.                             "Intel HD Graphics 3000"
  14.                         },
  15.                         "hda-gfx",
  16.                         Buffer (0x0A)
  17.                         {
  18.                             "onboard-2"
  19.                         }
  20.                     }, Local0)
  21.                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  22.                 Return (Local0)
  23.             }
复制代码
这里我选用0126,你也可以结合自己的机型来选择一个
注意一下前后括弧的匹配
建议把 GFX0 都统一成 IGD0
重启可以看到我的010A已经假冒成0126了
螢幕快照 2012-06-05 下午10.39.43.png

然后放入SMBios.plist,台机建议macmini5.1,本本建议macbookpro8.1
幸运的朋友到这里已经可以成功驱动了,不过有些仍然不行或者很卡
于是接下来修改FB接口位置,用Ultraedit或者HexEdit打开
S/L/E/AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB

跳到0x2A600,或者搜索0102 0400 1007 0000 1007 0000
以下是支持的接口类型
0503 0000 0200 0000 3000 0000 - Internal LCD
0205 0000 0004 0000 0700 0000 - HDMI
0304 0000 0004 0000 0900 0000 - DVI
0406 0000 0004 0000 0900 0000 - DVID
0602 0000 1000 0000 0900 0000 - VGA

原版驱动是这样的:
0102 0400 1007 0000 1007 0000   表示本机拥有4个接口
0503 0000 0200 0000 3000 0000   优先使用内建LCD
0205 0000 0004 0000 0700 0000  
0304 0000 0004 0000 0900 0000  
0406 0000 0004 0000 0900 0000

我改成这样:
0102 0300 1007 0000 1007 0000   扔掉内建LCD
0205 0000 0004 0000 0700 0000 - HDMI
0304 0000 0004 0000 0900 0000 - DVI
0406 0000 0004 0000 0900 0000 - DVID
0000 0000 0000 0000 0000 0000
可以结合自己情况修改。
由于台式机没有内建LCD,但是Intel的驱动傻傻分不清楚会一直去找,导致其他几个口也都不能正常工作,所以很卡。


然后我们再回到刚才打开的
/System/Library/Extensions/AppleIntelHD3000Graphics.kext/Contents/info.plist里面
01168086 01268086这里,注意到id前面少了0x,我们帮它补上。
顺便加上真实的显卡id,比如我的0x010A8086。
再打开/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/info.plist
作同上的修正。虽然有些机器不用,保险起见还是改一下。


重建缓存,修复权限
至此HD3000基本上都可以成功驱动,QE/CI也打开了,有些机子偶尔会有一条色块或图标花了,一会就会自己消失,不影响使用。



第二部分 HDMI音频输出

HDMI音频相对比较麻烦,需要建立在第一部分的基础上,首先必须满足:
1。显卡由dsdt识别,完美驱动
2。声卡由dsdt识别,完美驱动
3。无第三方声显卡enabler捣乱,只用Lion原生驱动AppleHDA(版本号2.1.x,可自行仿冒)

第一部分我们已经改好显卡dsdt,现在开始改声卡,以我的alc892为例
打开dsdt,找到:
  1.         Device (HDEF)
  2.         {
  3.             Name (_ADR, 0x001B0000)
复制代码
下面的内容每个人机器不完全相同,注意不要覆盖,而是加入
  1.             Method (_DSM, 4, NotSerialized)
  2.             {
  3.                 Store (Package (0x0E)
  4.                     {
  5.                         "hda-gfx",
  6.                         Buffer (0x0A)
  7.                         {
  8.                             "onboard-2"
  9.                         },
  10.                         "subsystem-id",
  11.                         Buffer (0x04)
  12.                         {
  13.                             0xA0, 0x00, 0x00, 0x00
  14.                         },
  15.                         "subsystem-vendor-id",
  16.                         Buffer (0x04)
  17.                         {
  18.                             0x6B, 0x10, 0x10, 0x10
  19.                         },
  20.                         "layout-id",
  21.                         Buffer (0x04)
  22.                         {
  23.                             0x88, 0x01, 0x00, 0x00
  24.                         },
  25.                         "codec-id",
  26.                         Buffer (0x04)
  27.                         {
  28.                             0x92, 0x08, 0xEC, 0x10
  29.                         },
  30.                         "device-type",
  31.                         Buffer (0x11)
  32.                         {
  33.                             "ALC892"
  34.                         },
  35.                         "PinConfigurations",
  36.                         Buffer (Zero) {}
  37.                     }, Local0)
  38.                 DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
  39.                 Return (Local0)
  40.             }
复制代码
注意"layout-id"不要照抄了,要换成你自己的声卡id,以往有用dsdt修过声卡的应该都有经验。
重启之后,IORegistryExplorer可以看到:
螢幕快照 2012-06-05 下午10.42.29.png

螢幕快照 2012-06-05 下午10.55.49.png

这样系统里HDMI音频通道就建立了,但是还没用上。

接下来的工作是修改AppleHDA,具体就是把仿冒驱动里的字典移植进AppleHDA,关于这个问题论坛有很多帖子,很成熟了,我不再赘述。 这里提供成品alc892的AppleHDA,是老外toleda修改好的版本,MultiBeast里面也收录了,alc8xx声卡的朋友可以直接下载MultiBeast安装。

10.7.3的AppleHDA:
AppleHDA.kext.zip (1.35 MB, 下载次数: 678)

//***这里无需操作,下载已含
这里要说明的是,不知是由于lion还是alc8xx存在bug,原有的两条Line-out在走hdmi音频的时候会出错,于是删掉了一条Line-out,针对不同音频输出通道定义了两套不同的profile:
  1. 1.非HDMI音频输出时保持原状:
  2.    Audio ID: 892, layout-id: 892 (dec), 0x7C, 0x03, 0x00, 0x00 (hex)
  3. 2.HDMI音频输出时:
  4.    Audio ID: 392, layout-id: 392 (dec), 0x88, 0x01, 0x00, 0x00 (hex)
复制代码
新增一套392的profile以示区别,避免冲突,内容其实和892一样,只是走hdmi路线。
所以上面dsdt我用的是188(392),声卡不同的朋友可以以此类推。
***//


接下来是很重要的一步,确认显卡frameBuffer接口类型
看图说话,打开ioreg,找到如下位置:

螢幕快照 2012-06-06 上午12.00.11.png

注意左边,是有个display0的上层
再看右边,正确的HDMI音频输出情况要满足:
  1. av-signal-type = 8
  2. connector-type = 8
复制代码
使用macmini5.1的朋友这里应该已经是8了,修复权限,重建缓存,重启就可以享受HDMI音频了。
因为白苹果的macmini5.1 就是2 DisplayPort 和 1 HDMI,frameBuffer表里有HDMI信息,那么上面的值基本上都是8。macbookpro8,1因为不带hdmi接口所以上面的值都不是8,还需要继续作修改。
当然这里你有两条路可走,懒得继续改,就抛弃mbp8.1,换macmini5.1就行了,想继续改的话往下看:


这里类似第一部分,用HexEdit编辑AppleIntelSNBGraphicsFB
找到
01 02 04 00 10 07 00 00 10 07 00 00


原版驱动是这样的:
01 02 04 00 10 07 00 00 10 07 00 00
05 03 00 00 02 00 00 00 30 00 00 00
02 05 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00

改成这样:
01 02 02 00 10 07 00 00 10 07 00 00
02 05 00 00 00 08 00 00 06 00 00 00
05 03 00 00 00 04 00 00 07 00 00 00
03 04 00 00 00 04 00 00 09 00 00 00
04 06 00 00 00 04 00 00 09 00 00 00

至此mbp81也可以使用hdmi输出音频了


大功告成,HD3000 HDMI音频的有关问题我就说到这里,欢迎补充。各位看官是不是看得眼花了呢,相信耐心加细心,你一定可以搞定它的。
最后附上我的dsdt,配置见签名,由于我的主板BIOS已经升级到华硕官方最新的3808版,版本不同的童鞋不能直接用,但是可以把需要的部分贴过去用。
dsdt with hd3000 hdmi audio.aml.zip (17.86 KB, 下载次数: 905)
SMBios macmini51.plist.zip (509 Bytes, 下载次数: 509)

15

查看全部评分

黄瓜别浪费,可以吃

Rank: 7Rank: 7Rank: 7

UID
971865
帖子
617
PB币
5554
贡献
0
技术
87
活跃
376

7周年庆典勋章

发表于 2012-6-6 01:06:36 |显示全部楼层
本帖最后由 easylin 于 2012-6-6 13:08 编辑

进一步提高可以看:
  1. www.insanelymac.com/forum/index.php?showtopic=259705 注意爬楼,这里的回帖解决了很多问题
复制代码
  1. www.tonymacx86.com/viewtopic.php?f=162&t=31664
复制代码
独立显卡hdmi音频也可以类似处理

点评

easylin  嗯是这个意思  发表于 2012-7-15 14:41
gonggaolei  字段找到了,楼主是不是HDMI输出的?我是DVI的,是不是第一个修改为0304 0000 0004 0000 0900 0000这个?  发表于 2012-7-14 14:56
gonggaolei  奇怪,我的dsdt.aml里面怎么找不到Device (IGD0)或者Device (GFX0)字段。。。?!!  发表于 2012-7-14 03:29

Rank: 1

UID
2726636
帖子
1
PB币
0
贡献
0
技术
0
活跃
0
发表于 2012-6-6 01:22:46 |显示全部楼层
不错不错

Rank: 5Rank: 5Rank: 5

UID
2344472
帖子
370
PB币
3
贡献
0
技术
2
活跃
600
发表于 2012-6-6 02:17:33 |显示全部楼层
感谢分享,下次可以按照LZ的配置一台完美的苹果了。

Rank: 2Rank: 2

UID
1023213
帖子
154
PB币
0
贡献
0
技术
2
活跃
653
发表于 2012-6-6 02:46:38 |显示全部楼层
还是不行啊
我的是ThinkPad E420 1141A86
HD3000的ID是80860116
照您所说应该是可以用变色龙完美驱动
可就是折腾不起来
倒不会黑屏
就是分辨率上不去

UID
2409498
帖子
27335
PB币
926
贡献
4
技术
1338
活跃
694
发表于 2012-6-6 06:26:49 |显示全部楼层
好吧,我表示我也准备了此文
-0-

Rank: 1

UID
2022816
帖子
20
PB币
1
贡献
0
技术
0
活跃
2
发表于 2012-6-6 07:35:18 |显示全部楼层
看起来挺复杂的。

Rank: 5Rank: 5Rank: 5

UID
154304
帖子
640
PB币
1478
贡献
0
技术
29
活跃
1112
发表于 2012-6-6 08:37:17 |显示全部楼层
我再给楼主加上一条,使用HD3000的HDMI音频输出,每次开机、重启osx,必须重新开启一次显示器,不然声音会变形。以前都是怀疑声卡的驱动有问题,后来在老外的站点看到这个解决方法。

点评

easylin  我的不会哦,你后来怎么解决的?  发表于 2012-6-6 10:51

Rank: 5Rank: 5Rank: 5

UID
933479
帖子
778
PB币
1796
贡献
0
技术
14
活跃
191
发表于 2012-6-6 08:44:02 |显示全部楼层
本帖最后由 lsls01 于 2012-6-6 08:54 编辑

请教楼主"onboard-2"这个后面的2是怎么判断的?
另外为什么要在接口那里扔掉内建LCD?这个会有什么影响么?

Rank: 7Rank: 7Rank: 7

UID
1579259
帖子
656
PB币
53
贡献
0
技术
0
活跃
660
发表于 2012-6-6 09:00:29 |显示全部楼层
这个很好,强烈支持
头像被屏蔽

小白

Rank: 7Rank: 7Rank: 7

UID
287738
帖子
435
PB币
0
贡献
0
技术
54
活跃
475

7周年庆典勋章

发表于 2012-6-6 09:14:30 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
头像被屏蔽

Rank: 2Rank: 2

UID
700807
帖子
130
PB币
0
贡献
0
技术
0
活跃
19
发表于 2012-6-6 09:28:08 |显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽

Rank: 11Rank: 11Rank: 11

UID
1521830
帖子
8216
PB币
312
贡献
0
技术
189
活跃
950

7周年庆典勋章 8周年庆典勋章

发表于 2012-6-6 09:53:48 |显示全部楼层
怎么.Xeon志强也带核显的么

Rank: 1

UID
2683463
帖子
31
PB币
15
贡献
0
技术
0
活跃
0
发表于 2012-6-6 10:05:52 |显示全部楼层
sorry, i can catch up.

黄瓜别浪费,可以吃

Rank: 7Rank: 7Rank: 7

UID
971865
帖子
617
PB币
5554
贡献
0
技术
87
活跃
376

7周年庆典勋章

发表于 2012-6-6 10:49:37 |显示全部楼层
jackiezh 发表于 2012-6-6 02:46
还是不行啊
我的是ThinkPad E420 1141A86
HD3000的ID是80860116

你可以在变色龙 -v 第一屏还没跳完之前按下pause
看一看变色龙inject的id是不是80860116
有些变色龙版本没有支持hd3000

黄瓜别浪费,可以吃

Rank: 7Rank: 7Rank: 7

UID
971865
帖子
617
PB币
5554
贡献
0
技术
87
活跃
376

7周年庆典勋章

发表于 2012-6-6 10:56:30 |显示全部楼层
lsls01 发表于 2012-6-6 08:44
请教楼主"onboard-2"这个后面的2是怎么判断的?
另外为什么要在接口那里扔掉内建LCD?这个会有什么影响么? ...

我也是爬文看来的独显hdmi是onboard-1,集显是onboard-2
因为台式机没有内建LCD,但是系统会傻傻分不清楚一直一直找,导致其他几个口也都受影响所以很卡

Rank: 5Rank: 5Rank: 5

UID
2416308
帖子
164
PB币
630
贡献
0
技术
0
活跃
12
发表于 2012-6-6 11:08:03 |显示全部楼层
太及时了~

Rank: 2Rank: 2

UID
1023213
帖子
154
PB币
0
贡献
0
技术
2
活跃
653
发表于 2012-6-6 12:08:16 |显示全部楼层
本帖最后由 jackiezh 于 2012-6-6 12:30 编辑
easylin 发表于 2012-6-6 10:49
你可以在变色龙 -v 第一屏还没跳完之前按下pause
看一看变色龙inject的id是不是80860116
有些变色龙版本 ...

看过了
id确定是80860116
而且系统也识别了:

系统报告.jpg


变色龙和fakesmc我都用上了最新的版本


变色龙:v2.1_r1979


fakesmc: v4.2_rev609




Rank: 1

UID
899042
帖子
32
PB币
105
贡献
0
技术
0
活跃
8
发表于 2012-6-6 12:43:07 |显示全部楼层
收藏,以后慢慢折腾

黄瓜别浪费,可以吃

Rank: 7Rank: 7Rank: 7

UID
971865
帖子
617
PB币
5554
贡献
0
技术
87
活跃
376

7周年庆典勋章

发表于 2012-6-6 12:43:49 |显示全部楼层
jackiezh 发表于 2012-6-6 12:08
看过了
id确定是80860116
而且系统也识别了:

你到AppleIntelHD3000Graphics/Contents/info.plist看看
01168086 01268086 前面是不是都没有0x,补上0x看看
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件