[2016.4.6]加载原生的CPU电源管理,AppleLPC,睡眠 多方法整理
本帖最后由 tanpengsccd 于 2016-4-9 02:15 编辑概述:
此教程教程需要一定基础,不懂请善用论坛搜索。
方法1:dsdt注入相似白果相似LPC ID(推荐)
方法2:修改AppleLPC.kext驱动加入黑果主板LPC ID
以上2种都需要都需要知道自己的LPC的设备 id。
-----------------------
1.0 获取自己主板的LPC id(以我的ASUS P5Q 的原LPC id 3a16仿冒为3a18为例子)
在windows 系统 的设备管理球 获取LPC 设备ID 一般 4位 如“3a 16”,“8c50”等
在MAC系统里 使用IORegisryExplorer 搜索 LPC 也可以找到(前提是使用未修 改过的DSDT,或者没使用DSDT)
-------------------------
2.1 dsdt注入相似白果相似LPC ID(推荐)
2.1.1 选择需要的仿冒的LPC id
这一步需要先在/System/Library/Extensions/AppleLPC.kext/Contents/ 的Info.plist 找到原生支持的id,这里列举一下10.11.4原生支持的id
<dict>
<key>AppleLPC</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleLPC</string>
<key>IOClass</key>
<string>AppleLPC</string>
<key>IONameMatch</key>
<array>
<string>pci8086,2811</string>
<string>pci8086,2815</string>
<string>pci8086,27b9</string>
<string>pci8086,27bd</string>
<string>pci8086,2670</string>
<string>pci8086,8119</string>
<string>pci8086,2916</string>
<string>pci8086,3a18</string>
<string>pci8086,3b00</string>
<string>pci8086,3b01</string>
<string>pci8086,3b02</string>
<string>pci8086,3b09</string>
<string>pci8086,1e44</string>
<string>pci10de,aac</string>
<string>pci10de,aae</string>
<string>pci10de,aaf</string>
<string>pci10de,d80</string>
<string>pci10de,d81</string>
<string>pci10de,d82</string>
<string>pci10de,d83</string>
</array>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>LCTL_Offset</key>
<integer>424</integer>
</dict>
我原LPC的id 为3a16 ,选择仿冒的id是列表中的 3a18 (红色标出),判断依据 是 id前三位 字母尽量相同
2.1.2 使用MaciASL 打开自己主板的无错DSDT,搜索 0x001F0000 ,
在 Name (_ADR, 0x001F0000)的下一行插入 (注意要删除我的注释(红色),不然可能 编译出错)
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
Store (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0x18, 0x3a, 0x00, 0x00 //若 id 是 3a 18 则该填183a
},
"name",
Buffer (0x0D)
{
“pci8086,3a18"//直接输入 3a18
},
"compatible",
Buffer (0x0D)
{
“pci8086,3a18" //直接输入 3a18
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
如:(已经插入好自己需要仿冒LPCid 3a18,红色部分)
……..
Device (SBRG)
{
Name (_ADR, 0x001F0000)// _ADR: Address
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
Store (Package (0x06)
{
"device-id",
Buffer (0x04)
{
0x18, 0x3a, 0x00, 0x00
},
"name",
Buffer (0x0D)
{
"pci8086,3a18"
},
"compatible",
Buffer (0x0D)
{
"pci8086,3a18"
}
}, Local0)
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
}
Device (IELK)
{
………..
关于id 倒序:
因为intel的X86 使用的是小端,而Mac 是大端,所以在Mac上就得转换一下,简单说上就是倒一下顺序。所以如果id 为 3a 18,则DSDT 上要注入的是 18 3a,(注意不是81 a3,因为16进制是2位 表示一个数字)
-------------------------------------
2.2:修改AppleLPC.kext驱动加入黑果主板LPC ID (不推荐,升级系统可能会失效)
/System/Library/Extensions/AppleLPC.kext/Contents/
在 上述的路径 中找到 Info.plist,添加 于自己相近的 LPC id
我原LPC的id 为3a16 ,找到最相近的id是列表中的 3a18 (红色标出),判断依据 是 id前三位 字母尽量相同。
在3a18 下一行加入 自己的 id 我的是3a16(绿色标注)
这里是10.11.4 的LPC id列表
<dict>
<key>AppleLPC</key>
<dict>
<key>CFBundleIdentifier</key>
<string>com.apple.driver.AppleLPC</string>
<key>IOClass</key>
<string>AppleLPC</string>
<key>IONameMatch</key>
<array>
<string>pci8086,2811</string>
<string>pci8086,2815</string>
<string>pci8086,27b9</string>
<string>pci8086,27bd</string>
<string>pci8086,2670</string>
<string>pci8086,8119</string>
<string>pci8086,2916</string>
<string>pci8086,3a18</string>
<string>pci8086,3a16</string>
<string>pci8086,3b00</string>
<string>pci8086,3b01</string>
<string>pci8086,3b02</string>
<string>pci8086,3b09</string>
<string>pci8086,1e44</string>
<string>pci10de,aac</string>
<string>pci10de,aae</string>
<string>pci10de,aaf</string>
<string>pci10de,d80</string>
<string>pci10de,d81</string>
<string>pci10de,d82</string>
<string>pci10de,d83</string>
</array>
<key>IOProbeScore</key>
<integer>1000</integer>
<key>IOProviderClass</key>
<string>IOPCIDevice</string>
<key>LCTL_Offset</key>
<integer>424</integer>
</dict>
使用 Kext Utility修复权限缓存
3.0 重启
仿冒成功的标志
1是 节能器 出现 断电后自动重启 的选项。
2 IORegistryExplorer 搜索LPC 可以看到自己仿冒的 LPC id未成功的话是自己原LPC id
3关于本机-系统报告-功能扩展-找到 AppleLPC已载入 为 “是”
需要的软件 请自己搜索,本人另发的帖子大部分软件都有,请点击我的头像下的帖子后再选主题。
没颜色了。。。。。。。。。
传一个 word 文档 支持了 晚上回去看 编译出现 Object does not exist (DTGP) 错误
macisal 使用 此脚本
#Maintained by: PHPdev32 for: Sourceforge
into method label DTGP remove_entry;
into definitionblock code_regex . insert
begin
Method (DTGP, 5, NotSerialized)\n
{\n
If (LEqual (Arg0, Buffer (0x10)\n
{\n
/* 0000 */ 0xC6, 0xB7, 0xB5, 0xA0, 0x18, 0x13, 0x1C, 0x44, \n
/* 0008 */ 0xB0, 0xC9, 0xFE, 0x69, 0x5E, 0xAF, 0x94, 0x9B\n
}))\n
{\n
If (LEqual (Arg1, One))\n
{\n
If (LEqual (Arg2, Zero))\n
{\n
Store (Buffer (One)\n
{\n
0x03\n
}, Arg4)\n
Return (One)\n
}\n
If (LEqual (Arg2, One))\n
{\n
Return (One)\n
}\n
}\n
}\n
Store (Buffer (One)\n
{\n
0x00\n
}, Arg4)\n
Return (Zero)\n
}
end 另一种仿冒id的补丁
Method (_DSM, 4, NotSerialized)// _DSM: Device-Specific Method
{
Local0 = Package (0x02)
{
"compatible",
Buffer (0x0D)
{
"pci8086,1e44"
}
}
DTGP (Arg0, Arg1, Arg2, Arg3, RefOf (Local0))
Return (Local0)
} 例子重复了,另外第二个是不是错了,里面的
"device-id",
Buffer (0x04)
{
0x50, 0x8C, 0x00, 0x00
不应该是
"device-id",
Buffer (0x04)
{
0x18, 0x3a, 0x00, 0x00
吗? 这个总结很有用,方便查找 感谢你的分享。 这么6666666
感谢你的分享。 这个不错{:5_262:} 收藏了,感谢楼主。 看看先、、谢谢分享 赞赞赞的。 先收藏一下,刚换了 skylake 1151 + 150 主板玩玩黑苹果。 好东西,有时间研究研究 楼主这个地方
在windows 系统 的设备管理球 获取LPC 设备ID 一般 4位 如“3a 16”,“8c50”等
应该是设备器,然后获取LPC 这个获取LPC 是设备管理器的哪一个? 搞个图可以吗. 学习学习了 tanpengsccd 发表于 2016-4-6 14:25 https://www.pcbeta.com/static/image/common/back.gif
没颜色了。。。。。。。。。
传一个 word 文档
楼主强人 /mark备用