syscl 发表于 2016-4-26 17:55

Asus H67-M + i3-3225 El Captain完善日志

配置主板 Asus H67-M (rev 0003)处理器 i3 3225 @3.30GHz显卡 Intel Graphics HD4000显示器 Sharp HDMI 46” @1920x1080p
BIOS1. UEFIPatch 解锁MSR 0xE2 lock以开启原生电源管理(AppleIntelCPUPowerManagement或者XCPM).
2. MMTool 利用Ozmosis的Hermitcsmvideo升级/替换Csmvideo模块, 以修复HDMI的各种问题(后文会详细说明).

3. AMIBCP 解锁主板厂家(Asus)隐藏的BIOS菜单, 包括DVMT设置, 禁用休眠, CSM Support开关等.



4. Change OEM logo 更改相应分辨率的logo提高开机阶段的分辨率.
BIOS 设置1. Ai Tweaker-->VT-d = Enabled2. Advanced-->ACPI Settings-->Hibernate Mode = Disabled3. Advanced-->System Agent Configuration-->Graphics Configuration-->iGPU Memory = 32MB4. Advanced-->SATA Configuration-->SATA Mode = AHCI5. Boot-->CSM Support = Disabled
Clover 安装1. 仅安装 UEFI 主板专用的 Clover 版本2. 安装 Clover 到目标磁区的 EFI 系统区3. Drivers64UEFI: OsxAptioFixDrv-64.efi, DataHubDxe-64.efi4. 如果出现开机禁行标志, 你需要这篇文章: https://bbs.pcbeta.com/forum.php?mod=viewthread&tid=1687013]彻底解决开机禁行
Clover config.plist
1. ACPI2. Boot3. GUI4. Graphics5. KernelAndKextPatches6. SMBIOS7. SystemParameters
所需内核扩展 /EFI/CLOVER/kexts/10.111. FakeSMC.kext2. AppleALC.kext3. RealtekRTL8111.kext
ACPI tables/DSDT, SSDT 修正
1. 在Clover界面下按F4提取ACPI表(没有提示, ACPI表存放在/EFI/CLOVER/ACPI/origin/), 检查是否有重复的ssdt表 ls -l2. 若大小相同则可以进一步猜测SSDT表重复(因为大小不同SSDT表必然不相同)cmp SSDT-2.aml SSDT-3x.aml3. cmp命令没有输出不同, 表明SSDT-2和SSDT-3x是相同的, 删掉动态SSDT表, 即SSDT-3x.amlrm SSDT-3x.aml4. 反编译aml文件得到可以编辑修改的dsl文件iasl -da -dl *5. 删掉所有动态SSDT表(即SSDT-4x.aml, SSDT-5x.aml, SSDT-6x.aml …)rm SSDT-*x.*
DSDT.dsl
1. 12192, 6035, _HID suffix must be all hex digits (GH) 删掉错误所在行      Name (_HID, "ABCDEFGH")// _HID: Hardware ID
2. 2445, 3128, ResourceTag larger than Field (Size mismatch, Tag: 64 bits, Field: 32 bits) 修正类型警告(参考: )                   CreateDWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)// _LEN: Length改成                  CreateQWordField (BUF0, \_SB.PCI0._Y0F._LEN, MSLN)// _LEN: Length
3. 3616, 3130, Result is not used, possible operator timeout will be missed 修正超时警告 Acquire (MUT0, 0x0FFF)改成Acquire (MUT0, 0xFFFF)4. 插入LayoutID = 3#   Inject Audio info
into method label _DSM parent_label HDEF remove_entry;
into device label HDEF insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
      "layout-id", Buffer() { 3, 0x00, 0x00, 0x00 },\n
      "hda-gfx", Buffer() { "onboard-1" },\n
      "PinConfigurations", Buffer() { },\n
      //"MaximumBootBeepVolume", 77,\n
    })\n
}\n
end;5. 插入ig-platform-id = 0x01620005into method label _DSM parent_adr 0x00020000 remove_entry;
into device name_adr 0x00020000 insert
begin
Method (_DSM, 4, NotSerialized)\n
{\n
    If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
    Return (Package()\n
    {\n
      "AAPL,ig-platform-id", Buffer() { 0x05, 0x00, 0x62, 0x01 },\n
      "hda-gfx", Buffer() { "onboard-1" },\n
    })\n
}\n
end;6. GFX0—>iGPU# rename GFX0 -> IGPU for better power management
into_all all code_regex GFX0\. replaceall_matched begin IGPU. end;
into_all all code_regex \.GFX0 replaceall_matched begin .IGPU end;
into_all all code_regex \sGFX0, replaceall_matched begin IGPU, end;
into_all all code_regex \(GFX0 replaceall_matched begin (IGPU end;
into_all all label GFX0 set_label begin IGPU end;
into_all all label _SB.PCI0.GFX0 set_label begin _SB.PCI0.IGPU end;
into_all all label \_SB.PCI0.GFX0 set_label begin \_SB.PCI0.IGPU end;
into_all all label _SB.PCI0.GFX0.DD02 set_label begin _SB.PCI0.IGPU.DD02 end;
into_all all label \_SB.PCI0.GFX0.DD02 set_label begin \_SB.PCI0.IGPU.DD02 end;
into_all all label ^^^GFX0 set_label begin ^^^IGPU end;
into_all all label ^^GFX0 set_label begin ^^IGPU end;
into_all all label ^GFX0 set_label begin ^IGPU end;7. 插入IMEI以驱动6系主板上的HD4000# For Ivy Bridge CPU on 6-series board

into device label IMEI parent_label PCI0 remove_entry;
into device label PCI0 insert
begin
Device (IMEI)\n
{\n
    Name (_ADR, 0x00160000)\n
    Method (_DSM, 4, NotSerialized)\n               
    {\n
      If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
      Return (Package()\n
      {\n
            "device-id", Buffer() { 0x3A, 0x1E, 0x00, 0x00 },\n
            "name", "pci8086,1e3a",\n
      })\n
    }\n
}\n
end;8. 插入MCHC设备into device label MCHC parent_label PCI0 remove_entry;
into device label PCI0 insert begin
Device (MCHC)\n
{\n
        Name (_ADR, Zero)\n
}
end;9. 修复IRQ以避免声音变形into device name_hid PNP0000 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0100 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0B00 code_regex IRQNoFlags\s\(\)\n\s+\{(\d+)\} remove_matched;
into device name_hid PNP0103 code_regex IRQNoFlags\s\(\)\n\s+\{.*\} removeall_matched;
into device name_hid PNP0103 code_regex Name\s\(([^,]+),\sResourceTemplate\s\(\).*\n\s+\{((?:.|\n)*)\}\) replace_matched
begin
Name (%1, ResourceTemplate()\n
{\n
    IRQNoFlags() { 0, 8, 11, 15 }\n
%2
})\n
end;10. 修正Darwin带来的问题into_all method code_regex If\s+\([\\]?_OSI\s+\(\"Windows\s2009\"\)\) replace_matched begin If(LOr(_OSI("Darwin"),_OSI("Windows 2009"))) end;11. 修复重置BIOS的问题into device name_hid PNP0B00 code_regex (IO\s\((?:\s*[^,]+,\s*(?:\/\/\s.*)?\s*\n)+\s*)(\dx\d+)(,\s*(?:\/\/\s.*)?\s*\n\s*\)) replace_matched begin %10x02%3 end;12. 插入SMBUS设备into device label BUS0 parent_adr 0x001F0003 remove_entry;
into device name_adr 0x001F0003 insert
begin
Device (BUS0)\n
{\n
    Name (_CID, "smbus")\n
    Name (_ADR, Zero)\n
    Device (DVL0)\n
    {\n
      Name (_ADR, 0x57)\n
      Name (_CID, "diagsvault")\n
      Method (_DSM, 4, NotSerialized)\n
      {\n
            If (LEqual (Arg2, Zero)) { Return (Buffer() { 0x03 } ) }\n
            Return (Package() { "address", 0x57 })\n
      }\n
    }\n
}\n
end;自此DSDT的修复完成, 保存为aml文件即可.
SSDT*.dsl
1. 若SSDT.dsl 没有错误, 可以使用未编译前的SSDT文件, 例如在本例中, SSDT-0.aml可以直接使用而无需编译.2. 255, 6126, syntax error, unexpected PARSEOP_PACKAGE 删掉多余的PSS表或者打入如下补丁into_all all code_regex Package\s+\(0x06\)\n.*\{\n(.*0x80000000.*\n){6}.*\} removeall_matched;3. 保存为aml文件即可.
后期完善1. 利用ssdtPRGen.sh 为i3 3225生成合适的变频文件. 替换掉SSDT中OEM Table ID为CpuPM的SSDT表. 参考:利用ssdtPRGen.sh生成适合的处理器的变频配置文件2. 利用Xcode生成合适的声卡驱动, 参考: 完美原生加载AppleHDA3. 去掉更新提示中的固件更新softwareupdate --ignore ThunderboltFirmwareUpdate1.24. 重建缓存sudo touch /S*/L*/E* && sudo touch /L*/E* && sudo kextcache -u /自此, 6系列主板上HD4000的OS X完善工作就全部完成了.
各部分功能1. XCPM + IvyBridge变频管理方式, 不再出现X86Platform.kext::Failed to send P-stepper错误.2. 睡眠正常.3. HDMI(编辑Framebuffer)音频开启, 通过Hermitcsmvideo修复第一次进入系统花屏, 也不需要依赖CsmVideoDxe-64.efi驱动.4. AppStore安装软件.5. 不再出现因为10.11.4升级带来的禁行问题.6. 前面版USB, USB正常工作, 睡眠后USB设备不会弹出(参看问题描述: 解决唤醒后磁盘没有正确推出问题)7. 系统盘完美原生(和苹果一样), 可以AppStore升级/更新.
尚不工作1. VGA接口(因为Apple移除了HD4000对VGA的支持, 需要VGA的朋友建议使用HDMI转VGA. 如果你的显示器拥有DVI/DP口更建议的做法是采用HDMI转DVI/DP).
心得
组建这台配置的初衷是打造NAS和家庭媒体中心, 自然围绕着低功耗+集成显卡的方向走, 当然还有一条就是要有可玩性(便宜, 配置奇葩). 6系列主板驱动的关键是注入7系列的IMEI, 以达到正常工作的目的(同样的7系列HD3000则是注入6系列的IMEI设备).
在完善的过程中, 一个让人头疼的地方是, 虽然这台机子通过0x01620005正确驱动了显卡并实现了HDMI输出, 但是没有声音, 因此需要修改AppleIntelFramebufferCapri.kext来实现HDMI音频的输出, 在@0接口上面将DVI接口替换成HDMI接口02050000 00040000 11000000 —> 02050000 00080000 06000000但是随之而来出现了一个奇怪的问题, 即图片过扫描了, 并且无法调节, 只有睡眠唤醒后才可以调节. 关掉电视预设的HDMI过扫描功能后, 又遇到第一次进入系统花屏撕裂的问题, 完全无法使用, 只能通过睡眠来修复. 后来经过了一次Enoch的Resolution.dlyb驱动以及设置引导界面分辨率1920x1080后得到启示, 为Clover安装CsmVideoDxe-64.efi并设置引导界面分辨率1920x1080, 问题得到解决. 但是又引入了新的问题, 那就是这个驱动会导致长时间休眠有一定几率无法唤醒的问题. 并且BIOS中的CSM Support形同虚设, 无法关闭. 在一次无意间爬贴后得到启示, 利用Ozmosis中的Hermitcsmvideo.ffs替换掉Asus老旧的Csmvideo模块, 重启问题得到解决, 在BIOS阶段的分辨率就被提升了, 并且也不需要CsmVideoDxe-64.efi就能实现1920x1080的分辨率输出. 同时, 替换1920x1080的开机logo之后, 在BIOS阶段我们便得到了和显示器最大输出分辨率一样的分辨率, 而在这之前分辨率限定在1024x768上面. 通过Ozmosis的Hermitcsmvideo驱动不仅解决了没有UEFI GOP主板开机分辨率的问题, 而且解决了HDMI开机花屏的问题, 扔掉了不稳定的CsmVideoDxe-64.efi, 还提升了逼格一举两得. 6/7系主板的朋友可以尝试一下这个非常有趣的方法!
解决了上面的大问题之后, 另一方面就是解决大水怪PMHeart当时提出的XCPM能否在IvyBridge平台上顺利开启的问题(参见: syscl 你粗来 IVB的XCPM真的没救了咩). 这个问题的答案是正面的, 即IvyBridge确实是可以开启XCPM实现电源管理的, 但是需要下面三个条件:1. 合适的变频文件, 即ssdtPRGen.sh生成的SSDT.aml文件. 参考:利用ssdtPRGen.sh生成适合的处理器的变频配置文件2. 引导器向内核传递-xcpm参数, 强制开启XCPM模式.3. 设置含有XCPM变频的机型来解决X86Platform.kext::Failed to send P-stepper 的错误/注入Frequencies Vectors. 支持XCPM变频机型的列表 Mac-031B6874CF7F642A.plist (iMac14,1)
Mac-06F11F11946D27C5.plist (MacBookPro11,5)
Mac-06F11FD93F0323C5.plist (MacBookPro11,4)
Mac-189A3D4F975D5FFC.plist (MacBookPro11,1)
Mac-27ADBB7B4CEE8E61.plist (iMac14,2)
Mac-2BD1B31983FE1663.plist (MacBookPro11,3)
Mac-35C1E88140C3E6CF.plist (MacBookAir6,1)
Mac-35C5E08120C7EEAF.plist (Macmini7,1)
Mac-3CBD00234E554E41.plist (MacBookPro11,2)
[ 10 ] Mac-42FD25EABCABB274.plist (iMac15,1)
[ 11 ] Mac-50619A408DB004DA.plist ()
[ 12 ] Mac-65CE76090165799A.plist (iMac17,1)
[ 13 ] Mac-77EB7D7DAF985301.plist (iMac14,3)
[ 14 ] Mac-7DF21CB3ED6977E5.plist (MacBookAir6,2)
[ 15 ] Mac-81E3E92DD6088272.plist (iMac14,4)
[ 16 ] Mac-937CB26E2E02BB01.plist (MacBookAir7,2)
[ 17 ] Mac-9AE82516C7C6B903.plist ()
[ 18 ] Mac-9F18E312C5C2BF0B.plist (MacBookAir7,1)
[ 19 ] Mac-A369DDC4E67F1C45.plist (iMac16,1)
[ 20 ] Mac-B809C3757DA9BB8D.plist (iMac17,1)
[ 21 ] Mac-BE0E8AC46FE800CC.plist (MacBook8,1)
[ 22 ] Mac-DB15BD556843C820.plist (iMac17,1)
[ 23 ] Mac-E43C1C25D4880AD6.plist (MacBookPro12,1)
[ 24 ] Mac-F305150B0C7DEEEF.plist (MacBook8,2)
[ 25 ] Mac-FA842E06C61E91C5.plist (iMac15,1)
[ 26 ] Mac-FFE5EF870D7BA81A.plist (iMac16,2)以上三个条件缺一不可. 因为IvyBridge的默认电源管理是AppleIntelCPUPowerManagement.kext. 但是, 我们可以通过向系统传递Frequency Vectors 加上强制-xcpm参数来实现IvyBridge上的XCPM电源管理. 可以猜测IvyBridge时期的电源管理经历过一段”混乱的“时期, 用IvyBridge来做XCPM的变频测试, 并最终为Haswell以后的平台铺路, 应该是Apple当时的策略. 因此IvyBridge才能这么幸运的完美的同时使用两个平台的变频管理(SandyBridge以及之前的平台不能使用XCPM).
好啦, 这就是6系列HD4000主板的完善过程, 这套奇葩的配置虽然问题多多, 但是一点一点想办法修缮的过程其实是最优意思的, 这是hackintosh里面最好玩的部分, 没有人知道最完美的黑苹果配置, 但是你的配置很有可能就是那个最完美的黑苹果配置, 这一切取决于你的努力和态度.
本文中需要改动BIOS的部分很多, 纯粹是因为自己想玩, 如果担心刷坏BIOS的朋友就当看看吧~~
祝好!syscl

syscl 发表于 2016-4-26 17:55

本帖最后由 syscl 于 2016-4-27 19:29 编辑

由于经常改动BIOS, 旧的DSDT表会导致系统崩溃, 因此我制作了最小作用量的ACPI表, 以此来提供最大的灵活性(修改BIOS设定而不需要重新破解DSDT)
[*]自动注入HD4000的ig-platform-id=0x1620005(可以自行修改注入需要的ig-platform-id)
HD4000的ig-platform-id

显卡的platform-id DVMT(MB) 接口数
0166
01660000 96 4
01660001 96 4   
01660002 64 1
01660003 64 2
01660004 32 1
01660008 64 3
01660009 64 3
0166000a 32 3
0166000b 32 3
0162
01620005 32 3
01620006 0 0      


[*]自动修改GFX0-->iGPU以符合OS X的规范(开启显卡的原生电源管理)
[*]注入6系列HD4000显卡需要的IMEI
[*]注入MCHC设备(在6系列的主板上这个修复几乎是必要的)
[*]注入SMBUS设备
[*]注入LayoutID=0x03
[*]修复6系列主板的Darwin问题(XOSI)






修改BIOS所需要的工具

[*]AMIBCP
[*]MMTool
[*]Change OEM logo
[*]Hermitcsmvideo(Hercsmhz77_as表示压缩过的Hermitcsmvideo组件, Hercsmhz77_unzip表示未经压缩过的Hermitcsmvideo组件)





////

syscl 发表于 2016-4-26 17:55

二层备用望谅解。

syscl 发表于 2016-4-26 17:56

三层备用望谅解。

syscl 发表于 2016-4-26 17:56

最后一层备用, 稍后更新.

ge887 发表于 2016-4-26 18:29

写的太好了,学习了。

bizongyi 发表于 2016-4-26 18:41

哈哈,我当时想的csmvideo替换法果然有效啊,我自己都没尝试过。。不过你应该可以用纯uefi啊,所有的核显都支持纯uefi,为何不用纯uefi模式,而非得借助csmvideo提高分辨率?

bizongyi 发表于 2016-4-26 18:51

有点没看明白,居然你的csm support已经disable了,和csm有关的应该都被屏蔽掉了才对啊,为何Hermitcsmvideo还会有效?

syscl 发表于 2016-4-26 19:09

bizongyi 发表于 2016-4-26 18:41 https://www.pcbeta.com/static/image/common/back.gif
哈哈,我当时想的csmvideo替换法果然有效啊,我自己都没尝试过。。不过你应该可以用纯uefi啊,所有的核显都 ...

华硕6系主板的CSM选项就是残废的, 因为强制开启了UEFI, 所以开和关都没有用。

但是Hermit确实可以作为一个独立的模块使用! 感谢你的思路给了我这个启发!

口袋妖怪heart 发表于 2016-4-26 19:16

不是大水怪的路过
哼!
而且mm 7.1也不是haswell的吧...算了 xcpm懒得折腾 不过说起来 我以前用过imac 14.2貌似应该也带有xcpm吧 可还是不能开xcpm。。。

口袋妖怪heart 发表于 2016-4-26 19:26

title有错误= =
Do use El Capitan instead of El Captain.

syscl 发表于 2016-4-26 19:34

bizongyi 发表于 2016-4-26 18:41 https://www.pcbeta.com/static/image/common/back.gif
哈哈,我当时想的csmvideo替换法果然有效啊,我自己都没尝试过。。不过你应该可以用纯uefi啊,所有的核显都 ...

必须借助CSMVideo提高, 没有办法, 这估计是6系华硕主板的问题. Asus原来的CSMVideo大小很小, 换了hermit的之后问题完美解决. 我试过插入GOP, 但是系统没有激活GOP的驱动. 也更新过VBIOS. 最后hermit这个方法完美解决了哈哈~

syscl 发表于 2016-4-26 19:34

口袋妖怪heart 发表于 2016-4-26 19:16 https://www.pcbeta.com/static/image/common/back.gif
不是大水怪的路过
哼!
而且mm 7.1也不是haswell的吧...算了 xcpm懒得折腾 不过说起来 我以前用过imac 14 ...

super 水怪PMheart

口袋妖怪heart 发表于 2016-4-26 19:40

syscl 发表于 2016-4-26 19:34 https://www.pcbeta.com/static/image/common/back.gif
super 水怪PMheart

ultra 水怪syscl

syscl 发表于 2016-4-26 19:41

口袋妖怪heart 发表于 2016-4-26 19:40 https://www.pcbeta.com/static/image/common/back.gif
ultra 水怪syscl

extreme 水怪pmheart

口袋妖怪heart 发表于 2016-4-26 19:42

syscl 发表于 2016-4-26 19:41 https://www.pcbeta.com/static/image/common/back.gif
extreme 水怪pmheart

terminated 水怪syscl

syscl 发表于 2016-4-26 19:43

口袋妖怪heart 发表于 2016-4-26 19:42 https://www.pcbeta.com/static/image/common/back.gif
terminated 水怪syscl

在这样下去我们两个会被举报的.

看来XCPM应该是可以在IvyBridge上面开启的, 你到时候试一下关闭掉BIOS中CPU的变频设置. 然后注入iMac14,2.

口袋妖怪heart 发表于 2016-4-26 19:47

syscl 发表于 2016-4-26 19:43 https://www.pcbeta.com/static/image/common/back.gif
在这样下去我们两个会被举报的.

看来XCPM应该是可以在IvyBridge上面开启的, 你到时候试一下关闭掉BIOS ...

嗯 那macmini 71可以咩

syscl 发表于 2016-4-26 19:56

口袋妖怪heart 发表于 2016-4-26 19:47
嗯 那macmini 71可以咩

可以 没有问题的. 不再出现failed to send P-stepper了。

口袋妖怪heart 发表于 2016-4-26 19:58

syscl 发表于 2016-4-26 19:56 https://www.pcbeta.com/static/image/common/back.gif
可以 没有问题的. 不再出现failed to send P-stepper了。

嗯 假期去给Pike反馈下
不要再说前任什么的了 哼!
页: [1] 2 3 4 5
查看完整版本: Asus H67-M + i3-3225 El Captain完善日志