randomdot 发表于 2015-7-30 17:09

使用Clover 开启ALC662声卡原生AppleHDA驱动

ALC662一直以来是个难题,非常难以驱动,下载了很多版本的ALC662驱动,但都驱动不了,最后只能使用VoodooHDA。但VoodooHDA也不完美,老是出现破音,声音也不太正常。最近看了看insanelymac上的资料,使用patch-hda脚本进行修改,发现AppleHDA.kext驱动可以正常加载,但没有输入输出设备,发现系统日志中出现很多有关声卡的错误信息,确定两个问题,一是对AppleHDA的bin patch有问题,二是path map不正确,最后经不断试验,终于成功加载了声卡。bin patch中,发现资料中说的替换0x10ec0885为0x10ec0662对我的声卡来说不行,需要使用0x11d41984这个codecID来替换0x10ec0662,同时把0x10ec0885、0x10ec0884改为0x000000才可以正确识别,很奇怪的问题,也许ALC662也有很多版本吧。然后是path map,这个可以根据论坛上的教程来得到,这里附上我成功驱动的文件:
一、修改layout及pin config data
将下载的文件解压至桌面,然后复制layout5.zml.zlib、layout7.zml.zlib、layout9.zml.zlib、Platforms.zml.zlib至/S/L/E/AppleHDA.kext/Content/Resources目录下:
sudo cp ~/Desktop/Resources/* /System/Library/Extensions/AppleHDA.kext/Contents/Resources
二、修改Info.plist
将/System/Library/Extensions/AppleHDA.kext/Contents/PlugIns/AppleHDAHardwareConfigDriver.kext/Contents/Info.plist复制到桌面,用文本编辑器打开,在<HDAConfigDefault>项目下的<arrary>下插入以下内容:
                                <dict>
                                        <key>AFGLowPowerState</key>
                                        <data>
                                        AwAAAA==
                                        </data>
                                        <key>Codec</key>
                                        <string>Mirone - Realtek ALC662</string>
                                        <key>CodecID</key>
                                        <integer>283903586</integer>
                                        <key>ConfigData</key>
                                        <data>
                                        AUccEAFHHUABRx4RAUcfkAGHHCABhx2QAYce
                                        oAGHH5AB5xwwAecdYQHnHksB5x8BAaccQAGn
                                        HTABpx6BAacfAQG3HFABtx1AAbceIQG3HwEB
                                        lxxgAZcdkAGXHoEBlx8C
                                        </data>
                                        <key>FuncGroup</key>
                                        <integer>1</integer>
                                        <key>LayoutID</key>
                                        <integer>5</integer>
                                </dict>
                                <dict>
                                        <key>AFGLowPowerState</key>
                                        <data>
                                        AwAAAA==
                                        </data>
                                        <key>Codec</key>
                                        <string>Mirone - Realtek ALC662</string>
                                        <key>CodecID</key>
                                        <integer>283903586</integer>
                                        <key>ConfigData</key>
                                        <data>
                                        AUccEAFHHUABRx4RAUcfAQFXHCABVx0QAVce
                                        AQFXHwEBZxwwAWcdYAFnHgEBZx8BAXccQAF3
                                        HSABdx4BAXcfAQGHHFABhx2QAYceoAGHH5AB
                                        lxxgAZcdkAGXHoEBlx8CAacccAGnHTABpx6B
                                        AacfAQG3HIABtx1AAbceIQG3HwIB5xyQAecd
                                        YAHnHkUB5x8B
                                        </data>
                                        <key>FuncGroup</key>
                                        <integer>1</integer>
                                        <key>LayoutID</key>
                                        <integer>7</integer>
                                </dict>
                                <dict>
                                        <key>AFGLowPowerState</key>
                                        <data>
                                        AwAAAA==
                                        </data>
                                        <key>Codec</key>
                                        <string>Mirone - Realtek ALC662</string>
                                        <key>CodecID</key>
                                        <integer>283903586</integer>
                                        <key>ConfigData</key>
                                        <data>
                                        IUccECFHHUAhRx4RIUcfASFXHCAhVx0QIVce
                                        ASFXHwEhZxwwIWcdYCFnHgEhZx8BIXccQCF3
                                        HSAhdx4BIXcfASGHHFAhhx2QIYceoCGHH5Ah
                                        lxxgIZcdkCGXHoEhlx8CIacccCGnHTAhpx6B
                                        IacfASG3HIAhtx1AIbceISG3HwIh5xyQIecd
                                        YCHnHkUh5x8B
                                        </data>
                                        <key>FuncGroup</key>
                                        <integer>1</integer>
                                        <key>LayoutID</key>
                                        <integer>9</integer>
                                </dict>
存盘退出。然后使用PList Editor将<HDA Hardware Config Resource>项目复制到Clover目录相应版本FakeSMC.kext/Contents/Info.plist中<IOKitPersonalities>项目下,注意要复制为子项,Paste as child。如果你的Clover装在EFI分区下,目录为:/Volumes/EFI/EFI/CLOVER/kexts/10.10/FakeSMC.kext/Contents/Info.plist
EFI分区一般没有加载,需要手动加载:
首先使用diskutil list命令找到EFI分区:

diskutil list
/dev/disk0   #:                     TYPE NAME                  SIZE       IDENTIFIER   0:   FDisk_partition_scheme                        *500.1 GB   disk0   1:               Windows_NTFS DATA                  500.1 GB   disk0s1/dev/disk1   #:                     TYPE NAME                  SIZE       IDENTIFIER   0:   FDisk_partition_scheme                        *1.0 TB   disk1   1:               DOS_FAT_32 EFI                     210.2 MB   disk1s1   2:               Windows_NTFS WINDOWS               107.4 GB   disk1s2   3:               Windows_NTFS WIN8PE                  12.1 GB    disk1s3   4:               Windows_NTFS PROGRAMS                536.9 GB   disk1s5   5:                  Apple_HFS YOSEMITE                214.7 GB   disk1s6   6:                  Apple_HFS MARVERICK               53.7 GB    disk1s7   7:                  Apple_HFS Yosemite Install(14E46) 10.7 GB    disk1s8
   8:               Windows_NTFS LINUX                   64.4 GB    disk1s9
可以看到EFI分区在disk1s1上,当然,如果你只有一个硬盘,一般在disk0s1上。
然后挂载EFI分区:

mkdir /Volumes/EFI
sudo mount -t msdos /dev/disk0s1 /Volumes/EFI

三、在Clover配置文件config.plist中加入AppleHDA二进制补丁:
配置文件修改完成后,还需要对AppleHDA.kext/Content/MacOS/AppleHDA文件打二进制补丁,一是ID替换:
8408ec10 => 00000000 将此ID屏蔽
8508ec10 => 00000000 将此ID屏蔽
8419d411 => 6206ec10 将此ID修改为ALC662的硬件设备ID:0x10EC0662,由于数据存储规制是高低字节相反,10ec0662高低字节交换后是6206ec10。
为了以后升级后不覆盖修改后的配置文件,还需要将layout5.xml.zlib及platform.xml.zlib改为读取layout5.zml.zlib、platform.zml.zlib。
因此我们需要共加入四个补丁,打开Clover的配置文件/EFI/EFI/CLOVER/config.plist,找到<key>KextsToPatch</key>项,在<array>项下加入补丁数据:
                        <dict>
                                <key>Comment</key>
                                <string>ALC662 ID patch</string>
                                <key>Find</key>
                                <data>
                                hBnUEQ==
                                </data>
                                <key>Name</key>
                                <string>AppleHDA</string>
                                <key>Replace</key>
                                <data>
                                YgbsEA==
                                </data>
                        </dict>
                        <dict>
                                <key>Comment</key>
                                <string>ALC662 range comparison patch</string>
                                <key>Find</key>
                                <data>
                                hAjsEA==
                                </data>
                                <key>Name</key>
                                <string>AppleHDA</string>
                                <key>Replace</key>
                                <data>
                                AAAAAA==
                                </data>
                        </dict>
                        <dict>
                                <key>Comment</key>
                                <string>ALC662 range compare patch</string>
                                <key>Find</key>
                                <data>
                                hQjsEA==
                                </data>
                                <key>Name</key>
                                <string>AppleHDA</string>
                                <key>Replace</key>
                                <data>
                                AAAAAA==
                                </data>
                        </dict>
                        <dict>
                                <key>Comment</key>
                                <string>ALC662 layout patch (xml.zl to zml.zl)</string>
                                <key>Find</key>
                                <data>
                                eG1sLnps
                                </data>
                                <key>Name</key>
                                <string>AppleHDA</string>
                                <key>Replace</key>
                                <data>
                                em1sLnps
                                </data>
                        </dict>
四、声卡注入
AppleHDA的所有修改已经完成,以前还需要改dsdt加入HDEF,现在可以方便的使用Clover来完成,在Clover配置文件config.plist中把<key>audio</key>下的<key>Inject</key>值改为<sting>5</string>,把FixHDA_8000值改为<true/>即可。

至此修改完成,用kext utility修复权限和更新kext cache,重启系统。之后如果升级系统,如AppleHDA.kext无重大变化,补丁将一直有效,不用再每次升级后需要重新打AppleHDA.kext补丁了。




pcbeta-lianyi 发表于 2015-7-31 12:00

ALC892路过帮顶,技术贴居然没人理!{:5_278:}

dayudodo 发表于 2015-7-31 13:43

看着很专业的样子,笔记本的662试下

yctqhe 发表于 2015-8-2 06:52

看着很专业的样子

xq1 发表于 2015-8-9 17:46

yctqhe 发表于 2015-8-2 06:52 http://cdn.pcbeta.img.inimc.com/static/image/common/back.gif
看着很专业的样子

10.10.4下能用吗

xq1 发表于 2015-8-9 17:47

10.10.4下能用吗

FashionCrazy 发表于 2015-8-10 09:02

楼主我是用的变色龙引导的10.10怎么办?有没有变色龙的教程

vitamin!m 发表于 2015-8-18 20:00

DSDT加入声卡ID 5按照楼主的教程通过Clover成功驱动ALC662
非常感谢!

xlfounder 发表于 2015-8-27 20:49

版主幸苦了,!!!!!!!!!!!

狂飞之心 发表于 2015-8-27 20:55

好帖。。。。。。。。。。。。。。

highlandle 发表于 2015-9-4 20:43

试过很多方法不行。。再看看

sibuna 发表于 2015-9-11 18:05

ALC662v2用户来试试

tony_weibs 发表于 2015-10-5 11:57

学习了,很好正需要

zft5180123 发表于 2015-10-13 22:51

学习学习。

平安宝贝 发表于 2015-11-3 18:36

yctqhe 发表于 2015-8-2 06:52 http://cdn.pcbeta.img.inimc.comstatic/image/common/back.gif
看着很专业的样子

有难度学习了

rain0773 发表于 2015-11-8 14:40

有难度学习了

zhengchao666 发表于 2015-11-13 18:22


看着很专业的样子,笔记本的662试下

zhengchao666 发表于 2015-11-13 18:33


yctqhe 发表于 2015-8-2 06:52
看着很专业的样子

有难度学习了

haidingcai 发表于 2015-12-3 09:19

有难度学习了

my306160410 发表于 2015-12-3 18:59

感谢分享..希望有用
页: [1]
查看完整版本: 使用Clover 开启ALC662声卡原生AppleHDA驱动