本帖最后由 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。
其中最后的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步: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应该也打开了。
第二部分:驱动你的声卡
其实主要就是获取到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。 "hda-gfx", Buffer (0x0A) { "onboard-2" } 4.修改完成后保存替换掉Extra下的DSDT,重启 5.验证HDMI开启 运行IORegistryExplorer,找到HDEF和IGD0如下:
应该能看到hda-gfx="onboard-2"的字样,然后找到HDEF下AppleHDAController的CodecList验证两个Codec 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。
使用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就行,代码如下 - <key>KextsToPatch</key>
- <array>
- <dict>
- <key>Comment</key>
- <string>HD3000 HDMI Audio</string>
- <key>Find</key>
- <data>
- AQIEABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAEAAAH
- AAAAAwQAAAAEAAAJAAAABAYAAAAEAAAJAAAA
- </data>
- <key>Name</key>
- <string>AppleIntelSNBGraphicsFB</string>
- <key>Replace</key>
- <data>
- AQIDABAHAAAQBwAABQMAAAIAAAAwAAAAAgUAAAAIAAAG
- AAAABgIAABAAAAAJAAAAAAAAAAAAAAAAAAAA
- </data>
- </dict>
- </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如下图所示: 将你的声卡对应的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里找到
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下,修复权限,重建缓存,重启。
注意这里的提示,并不是说你没驱动上,而是声音不可调节,我还没有研究能不能做成可调节的。它默认声音是最大的,你可以通过播放器自带的功能来调节声音的大小。如果有人知道这个怎么调节或者是白苹果也这样根本就不能调节的话请记得告诉我哦!
终于写完了,脖子好酸。。。
|