查看: 29362|回复: 117

[教程] ALC272音频+HD3000显卡驱动+HD3000 HDMI音频教程贴

[复制链接]
369646366 发表于 2013-10-14 14:36 | 显示全部楼层 |阅读模式
快御云安全
本帖最后由 369646366 于 2015-2-5 22:51 编辑

最近折腾了下HDMI音频,最终成功搞定,下面把整个过程分享出来,给大家做个参考。

整个过程参考了以下的帖子,首先做出感谢:

紫米 http://www.tonymacx86.com/hdmi-audio/40609-lion-hdmi-audio-part-3c-kext-edits-intel-hd3000-revised.html
MacMan http://tonymacx86.blogspot.com/2011/09/hdmi-audio-solutions-intel-hd-3000.html

下面是我的配置:

电脑型号        LENOVO IdeaPad Y470 Laptop
处理器        Intel Core2 i5-2450M @ 2.50GHz Duo
主板                  LENOVO (Intel HM65 Chipset)
内存             8 GB ( KINGSTON DDR3 1333MHz / SAMSUNG DDR3 1333MHz )
主硬盘          ADATA SX300 ( 64 GB / SSD )
显卡                  NVIDIA GeForce GT 550M ( 1 GB )
显示器          ASUS ACI23D2 ASUS VS239 ( 23.1 Inch )
声卡                  ALC272 @ Intel 6 Series Chipset High Definition Audio
网卡                  NetLink BCM57781 Gigabit Ethernet
无线网卡       Atheros AR9285
蓝牙              AR3011

首先务必保证你的S/L/E下的AppleHDA.kext和 AppleIntelSNBGraphicsFB.kext是原生的(要不这个教程就没有意义了),然后就可以开始了。

整个过程主要分为以下几步:

第一部分:驱动你的HD3000显卡使其正常工作

    不管你的显卡是不是已经正常驱动了,第一部分的第3步都是必须做的,否则会影响后边的操作。

    大家都说MAC原生支持HD3000的网卡,可为什么有些人就是驱动不上呢?主要是因为HD3000的ID有很多种,但苹果之支持其中几种,所以有可能是你的ID和MAC支持的不一样。
    那怎样查看MAC支持的ID呢?打开/System/Library/Extensions/AppleIntelHD3000Graphics.kext/Contents/Info.plist你就可以找到,下图是10.9GM支持的ID。
1.png

其中最后的0x01268086是MacBook Pro和Mac Mini支持的ID。你可以去windows设备管理器里面去看一下你的ID是什么,如果你的不是上图包含的ID请不要在Extra下的org.chameleon.Boot.plist中使用GraphicsEnabler =Yes。我的本来就是0126,所以理论上应该不用改Device-ID。但为了保持通用性,我还是在DSDT里面加了和原来一样的Device-ID。下面开始工作:

第1步:DSDT修改:

修改前别忘了备份你的DSDT,以防修改错误导致的不能进入系统。

找到Device (IGD0),和下面的Name (_ADR, 0x00020000)。这个红色的数字是你的显卡的位置,如果不对请按照p.H大大的帖子3L(也就是板凳的位置)找到自己的显卡位置,并对这串红色的数字进行改正。
在Name (_ADR, 0x00020000) 下面加入
Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x04)
                    {
                        "device-id",
                        Buffer (0x04)
                        {
                            0x26, 0x01, 0x00, 0x00
                        },

                        "model",
                        Buffer (0x17)
                        {
                            "Intel HD Graphics 3000"
                        },
                    }, Local0)
                DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
                Return (Local0)
            }

上边的Store (Package (0x04) 这个数字是表示你下边有几个子项,上边是两个,一个 device-id和一个 model,多加一个,就把这个数字以十六进制加2就行了。

如果没有 Device (IGD0),请找到Device (GFX0),并建议把它改成Device (IGD0)

然后重启就可以发现不管你的ID是不是0126,Mac识别出来的都是0126了。(用IORegistryExplorer查看)
2.png

第2步:SMBios.plist

    Extra下放入SMBios.plist,台式机建议用MacMini5.1,笔记本建议用MacBookPro8.1。

第3步:AppleIntelSNBGraphicsFB修改

    更改/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB文件。用Hex Friend打开它。
找到0102 0400 1007 0000 1007 0000,它的下边应该是这样的:

0503 0000 0200 0000 3000 0000
0205 0000 0004 0000 0700 0000
0304 0000 0004 0000 0900 0000
0406 0000 0004 0000 0900 0000

下边说一下Mac支持的五种接口类型以对应的它们的含义:

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 0300 1007 0000 1007 0000 - 表示本机有3个接口
0503 0000 0200 0000 3000 0000 - 内建LCD
0205 0000 0004 0000 0700 0000 - HDMI
0602 0000 1000 0000 0900 0000 - VGA
0000 0000 0000 0000 0000 0000 - 无

如果你觉得不放心的话可以再在/System/Library/Extensions/AppleIntelHD3000Graphics.kext/Contents/info.plist和/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/info.plist里边加上自己显卡的真实ID。

然后重建缓存,修复权限。至此你的HD3000应该就可以驱动成功了,QE/CI应该也打开了。

第二部分:驱动你的声卡

    这个有两种方法:第一种你可以爬贴寻找你的声卡的驱动一定要原生的AppleHDA.kext修改版能正常驱动你的声卡。第二种就是根据紫米的教程自己制作声卡驱动。当然他的教程是制作成LegacyHDA.kext,你只需要把他对应的步骤加到AppleHDA.kext上就行了https://bbs.pcbeta.com/viewthread-623626-1-1.html

这里给出mudzone的教程以供参考。https://bbs.pcbeta.com/viewthread-613358-1-1.html

其实主要就是获取到ConfigData(紫米教程或者可用驱动中获取),然后修改下边几个文件
1./System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist
2./System/Library/Extensions/AppleHDA.kext/Contents/Resources/layoutXXX.xml.zlib文件,这里给出个压缩工具:

使用方法如下:

解压缩:perl zlib.pl inflate layout12.xml.zlib  >layout12.xml
压缩:perl zlib.pl  deflate layout12.xml > layout12.xml.zlib
3./System/Library/Extensions/AppleHDA.kext/Contents/Resources/Platforms.xml.zlib
4./System/Library/Extensions/AppleHDA.kext/Contents/MacOS/AppleHDA
用Hex Friend修改

这部分完成后重建缓存,修复权限保证你的声卡能正常驱动。这个时候将你的AppleHDA.kext复制一份到桌面,后边会用到。

第三部分:DSDT修改

    这一部分主要是吧开启HDMI音频的代码编辑进DSDT中。
    修改前还是别忘了备份你的DSDT,以防修改错误导致的不能进入系统。

    下面开始修改:
1.首先参考第一部分第1步确定你的显卡ID
2.DSDT中查找HDEF,将Name (_ADR, 0x00020000)红色部分改为你的显卡ID。
在Method (_DSM, 4, NotSerialized)
            {
                Store (Package (0x04)    //不一定是04
                    {
后加入
                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        }

并将04(不一定是04)以十六进制加2。
  • DSDT中查找IGD0,同样加入
                        "hda-gfx",
                        Buffer (0x0A)
                        {
                            "onboard-2"
                        }
4.修改完成后保存替换掉Extra下的DSDT,重启
5.验证HDMI开启
运行IORegistryExplorer,找到HDEF和IGD0如下:

3.png

4.png
应该能看到hda-gfx="onboard-2"的字样,然后找到HDEF下AppleHDAController的CodecList验证两个Codec
5.png
0:0x10ec0272 (Realtek ALC272) - 板载声卡ID
1:0x80862805 (Intel 2085) - HDMI音频设备ID

如果以上都符合,那么恭喜你,你已经为HD3000集成显卡开启HDMI音频做好了DSDT的准备了。

第四部分:修改AppleIntelSNBGraphicsFB

首先打开IORegistryExplorer找到IGD0下的带有display0的AppleIntelFramebuffer,查看右侧,看看是不是av-signal-type = connector-type = 8。
QQ20131014-2.png

使用MacMini5.1的朋友应该这里已经是8了,因为白苹果的MacMini5.1就是 2 DisplayPort 和 1 HDMI,framebuffer表里有HDMI的信息。

使用MacBookPro8.1的应该都不是8,因为白苹果MacBookPro8.1是不带HDMI接口的,那么还需要继续修改。

这里和第一部分当中的修改类似, 更改/System/Library/Extensions/AppleIntelSNBGraphicsFB.kext/Contents/MacOS/AppleIntelSNBGraphicsFB文件。用Hex Friend打开它。
还是要找到0102 0300 1007 0000 1007 0000(这个红色的数字和你在第一部分第3步当中改的相对应),然后将0205 0000 0004 0000 0700 0000改为 0205 0000 0008 0000 0600 0000

然后修复权限,重建缓存,重启,至此你的MacBookPro8.1应该也会看到av-signal-type = connector-type = 8了。

其实要是你用clover的话就简单了,不用修改二进制的文件,直接加入kext patch就行,代码如下
  1. <key>KextsToPatch</key>
  2. <array>
  3.         <dict>
  4.                 <key>Comment</key>
  5.                 <string>HD3000 HDMI Audio</string>
  6.                 <key>Find</key>
  7.                 <data>
  8.                 AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAH
  9.                 AAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA
  10.                 </data>
  11.                 <key>Name</key>
  12.                 <string>AppleIntelSNBGraphicsFB</string>
  13.                 <key>Replace</key>
  14.                 <data>
  15.                 AQIDABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAIAAAG
  16.                 AAAABgIAABAAAAAJAAAAAAAAAAAAAAAAAAAA
  17.                 </data>
  18.         </dict>
  19. </array>
复制代码


第五部分,修改AppleHDA.kext

我不知道这部分是不是有必要但是如果上一步做完了你仍然不能进行HDMI音频输出的话(验证方法:打开偏好设置 - 声音 - 输出 如果下边有HDMI的话选中,将耳机查到显示器的耳机接口,放首歌看看有没有声音),就可以进行这一部分操作来解决。

还记得第二部分让你在桌面备份的AppleHDA.kext吗?现在是用它的时候了,将其命名为AppleHDA1.kext。首先下载我提供的AppleHDA.kext,这是我现在用的
游客,如果您要查看本帖隐藏内容请回复
(AppleHDA.kext和各种工具在楼下)。如果你是ALC272的用户可以直接拿去用了。

如果不是272的用户可以继续往下看。

1.使用PlistEdit Pro打开AppleHDA1.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist如下图所示:
6.png
将你的声卡对应的HDAConfigDefault的子项导入到我的ApplehDA.kext的对应位置,我的声卡ID是0x10EC0272,换成十进制也就是283902578。
2.如果第一步当中导入的子项对应的LayoutID:XX,那么将AppleHDA1.kext/Contents/Resources/layoutXX.xml.zlib解压成 layoutXX.xml放进AppleHDA.kext/Contents/Resources/
3.将将AppleHDA1.kext/Contents/Resources/Platforms.xml.zlib解压成 Platforms.xml,将你网卡对应的子项导入到我的AppleHDA.kext的对应位置。这里的PathMapID可以在layoutXX.xml里找到
7.png

8.png

4.修改AppleHDA.kext/Contents/AppleHDA
使用Hex Friend打开AppleHDA,查找72 02 EC 10全部替换成你的声卡ID就可以了。
注意:这里是倒序的,我的声卡ID是0x10EC0272,所以倒过来就是72 02 EC 10了,你替换的时候也要把自己的声卡ID倒过来。

然后修改好的AppleHDA.kext放到S/L/E下,修复权限,重建缓存,重启。

9.png

注意这里的提示,并不是说你没驱动上,而是声音不可调节,我还没有研究能不能做成可调节的。它默认声音是最大的,你可以通过播放器自带的功能来调节声音的大小。如果有人知道这个怎么调节或者是白苹果也这样根本就不能调节的话请记得告诉我哦!

终于写完了,脖子好酸。。。

评分

5

查看全部评分

369646366  楼主| 发表于 2013-10-14 14:38 | 显示全部楼层
本帖最后由 369646366 于 2013-11-12 13:01 编辑

不好意思,忘了加我第五部分提到的驱动了,不知道为什么我不能编辑自己发的帖子,好囧,貌似没有权限?只能放在这了,外加各种工具:
AppleHDA.kext.zip (1.32 MB, 下载次数: 128)
verbit.zip (2.55 KB, 下载次数: 53)
zlib.pl.zip (653 Bytes, 下载次数: 54)
Kext_Utility.app.v2.5.1.zip (264.56 KB, 下载次数: 47)
Kext Wizard.app.zip (597.24 KB, 下载次数: 35)
IORegistryExplorer.app.zip (224.46 KB, 下载次数: 78)
HexFiend.zip (734.23 KB, 下载次数: 194)
DSDTSE.zip (3.69 MB, 下载次数: 225)

去除了Sound assertion "kTypePinComplex != fType" failed in AppleHDAWidget at line 2043 goto Exit错误的AppleHDA
AppleHDA.kext.zip (1.3 MB, 下载次数: 177)

评分

1

查看全部评分

回复

使用道具 举报

wise1985925 发表于 2013-10-14 15:56 来自手机 | 显示全部楼层
写得精彩极了
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-14 16:38 | 显示全部楼层
wise1985925 发表于 2013-10-14 15:56
写得精彩极了

谢谢

评分

1

查看全部评分

回复

使用道具 举报

头像被屏蔽
starsswp 发表于 2013-10-14 18:24 来自手机 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
回复

使用道具 举报

YYH01 发表于 2013-10-14 19:28 | 显示全部楼层
绝对的技术贴,楼主辛苦!!
回复

使用道具 举报

loveqp 发表于 2013-10-14 21:12 来自手机 | 显示全部楼层
技术贴,备用
回复

使用道具 举报

oppop85 发表于 2013-10-14 21:17 | 显示全部楼层
收藏先....
AppleHDA.kext 修改hdmi音頻我還沒學會改....一直有看沒有懂....
其他都玩過了都改好了....
回复

使用道具 举报

Cartson 发表于 2013-10-14 21:28 | 显示全部楼层
非常有意义的教程,有空仔细研究一下!

不知道是否同样适用于台式机上的 ALC8XX 声卡和 Intel 三四代酷睿核显 HD4000、5000?
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-14 21:47 | 显示全部楼层
Cartson 发表于 2013-10-14 21:28
非常有意义的教程,有空仔细研究一下!

不知道是否同样适用于台式机上的 ALC8XX 声卡和 Intel 三四代酷睿 ...

ALC8XX应该是支持的,因为我的参考帖子里边就是ALC892,你可以试试,但是HD4000和HD5000我没有,所以不确定,欢迎补充。
回复

使用道具 举报

ps3bbs 发表于 2013-10-14 22:52 | 显示全部楼层
很好的教程 ,先马克一下,多谢分享!
回复

使用道具 举报

coffees520 发表于 2013-10-15 02:59 | 显示全部楼层
感谢楼主分享
回复

使用道具 举报

gatwin 发表于 2013-10-15 08:41 | 显示全部楼层
主要还是0205 0000 0008 0000 0600 0000开启hdmi。但是我一直没有设备测试。。比较尴尬。还有你的APPLEHDA外接MIC是否可用?
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-15 10:11 | 显示全部楼层
gatwin 发表于 2013-10-15 08:41
主要还是0205 0000 0008 0000 0600 0000开启hdmi。但是我一直没有设备测试。。比较尴尬。还有你的APPLEHDA外 ...

我的是可用的,但是只是适用于272,这个好用不好用主要看你的ConfigData的数据,第一内置和外置麦克是不是都在ConfigData里驱动好了,然后就是ConfigData里边的多通道数据位的逻辑是不是正确,这个具体可以看紫米的教程
回复

使用道具 举报

gatwin 发表于 2013-10-15 11:01 | 显示全部楼层
369646366 发表于 2013-10-15 10:11
我的是可用的,但是只是适用于272,这个好用不好用主要看你的ConfigData的数据,第一内置和外置麦克是不是 ...

你可以用我应该也是可以用的。都是Y470。你的MIC要是能加上降噪就好了。连接MIC设备都没有。。。。。我这是什么情况。。。。。。。。还有VGA比较恶心,第一次可以识别的,然后如果重新插拔或改分辨率就黑了。
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-15 11:11 | 显示全部楼层
gatwin 发表于 2013-10-15 11:01
你可以用我应该也是可以用的。都是Y470。你的MIC要是能加上降噪就好了。连接MIC设备都没有。。。。。我这 ...

哦,VGA我没测试,因为个人不太喜欢VGA所以就抛弃了,你可以试着改改,欢迎补充。
MIC的降噪还没研究,只是自己提取了ConfigData,你可以把ConfigData替换成这个试试(要用PlistEdit编辑),这是我之前用的声卡驱动里的,不知道对MIC降噪有没有效果,记得反馈给我  01271C10 01271D01 01271EA0 01271F90 01871C20 01871D00 01871E81 01871F01 01471C30 01471D01 01471E10 01471F90 02171C40 02171D10 02171E21 02171F01 01470C02
回复

使用道具 举报

gatwin 发表于 2013-10-15 12:56 | 显示全部楼层
369646366 发表于 2013-10-15 11:11
哦,VGA我没测试,因为个人不太喜欢VGA所以就抛弃了,你可以试着改改,欢迎补充。
MIC的降噪还没研究,只 ...

晚上回去看看。公司电脑是WIN无法从驱动提取这玩意。。。
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-15 13:10 | 显示全部楼层
gatwin 发表于 2013-10-15 12:56
晚上回去看看。公司电脑是WIN无法从驱动提取这玩意。。。

我刚才测了下VGA,没什么问题,我的是好的,应该是你自己的事,你是不是用的不是原生的显卡驱动啊?
回复

使用道具 举报

gatwin 发表于 2013-10-15 13:44 | 显示全部楼层
369646366 发表于 2013-10-15 13:10
我刚才测了下VGA,没什么问题,我的是好的,应该是你自己的事,你是不是用的不是原生的显卡驱动啊?

不是。肯定是原生的。是不是显示器分辨率太高了?你的 是多少的?
回复

使用道具 举报

369646366  楼主| 发表于 2013-10-15 15:01 | 显示全部楼层
gatwin 发表于 2013-10-15 13:44
不是。肯定是原生的。是不是显示器分辨率太高了?你的 是多少的?

ASUS VS239:
  分辨率:                1920 x 1080 @ 60 Hz
  像素深度:        32 位彩色 (ARGB8888)
  显示器序列号:D5LMTF084215
  主显示器:        是
  镜像:                关
  联机:                是
  旋转:                支持
  电视:                是
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋手机版联系我们

Copyright © 2005-2025 PCBeta. All rights reserved.

Powered by Discuz!  CDN加速及安全服务由「快御」提供

请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。

远景在线 ( 苏ICP备17027154号 )|远景论坛 |Win11论坛 |Win10论坛 |Win8论坛 |Win7论坛 |WP论坛 |Office论坛

GMT+8, 2025-4-26 08:19

快速回复 返回顶部 返回列表