积分 171 最后登录 2023-12-14 精华 0 阅读权限 20 主题 18 UID 3493534 帖子 352 PB币 120 威望 5 贡献 0 技术 0 活跃 601
UID 3493534 帖子 352 PB币 120 贡献 0 技术 0 活跃 601
不少童鞋升级了10.12.4/10.12.5之后就遇到一个很难受的问题,就是开机或者睡眠唤醒后会卡屏幕,卡10或20秒后正常,
论坛里面又几篇教程,但是说的很含糊,所以我决定写一篇文章来教大家如何来修复这个问题。
首先感谢tonymacx86的大神rehabman,感谢他提供思路,并附带一个原思路的链接
https://www.tonymacx86.com/threads/readme-common-some-unsolved-problems-in-10-12-sierra.202316/page-94#post-1485104
根据rehabman所说:Now the 0105 port comes before the 0204 port in the framebuffer, but we don't need the 0105 port as it is not connected to anything (and causing the lags).
他说卡屏幕是因为0105 edp端口跑到了0204之前,因为0105端口没有连接,导致了卡屏。。。不过如果我没记错的话,在10.11的时候0105也是在0204之前的。。。所以我赞同的观点是0105端口没有连接导致的卡屏
好的,下面开始教程 :
1. 下载工具hex fiend : http://ridiculousfish.com/hexfiend/
2. 确定自己的cpu架构,并在sle中找到相应的Framebuffer的kext文件:
AppleIntelFramebufferCapri
三代ivy bridge
二代sandy bridge
AppleIntelFramebufferAzul
四代Haswell
AppleIntelBDWGraphicsFramebuffer
五代Broadwell
AppleIntelSKLGraphicsFramebuffer
六代SkyLake
(ps:七代 kaby lake在哪我也不知道,我只知道这几个,如有错误请指正)
3. 把相应的 Framebuffer复制到桌面(为了避免直接修改sle中的文件 ),右键选择“显示包内容”,进入contents--macos,可以看到一个黑色图标的文件,我们使用hex fiend打开。
4. 打开后,搜索你所使用的ig-platform-id,例如0x161e0000,我们把它拆成:16 1e 00 00 ,然后反过来,就是:00 00 1e 16
5. 我们可以搜索到1或多个目标,此时我们只需要后面的数值是00030303/00030404(因为按道理应该只有这个会出现这个bug)的地方
6. 我们我们把鼠标移动到例子中从ig-platform-id开始第80位数字之后,这里就是记录连接端口的地方,每24个数字代表一个端口 ,我举个例子:
ig-platform-id = 0x161e0000
0000 1e16 0003 0303 0000 0001 0000 f000 // 16MB BIOS-allocated memory, 15MB frame buffer memory
0000 0040 9914 0000 9914 0000 0000 0000 // 1024MB VRAM
0000 0000 0000 0000 0000 0800 0200 0000 绿色 = LVDS connector =0000 0800 xxxx
3002 0000 0105 0900 0400 0000 0400 0000 蓝色 = eDP connector =0105 xxxx
0204 0900 0008 0000 8200 0000 ff00 0000 红紫色 = HDMI connector =0204 xxxx
0100 0000 4000 0000 1607 0000 0000 0800 橙色 = Disabled / unused VGA connector
0000 0000 0500 0000 0000 0000 0400 0000
7. 明确我们的目标,我们需要把edp端口移除!!!并把原来的三个端口(lvds,edp,hdmi)变成2个(lvds,hdmi)
在我们的ig-platform-id后面,有记录端口数量的信息,比如上例中:
0000 1e16 0003 0303 0000 0001 0000 f000。红色部分就是记录端口数量的信息
我们需要把它改成2个:
0000 1e16 0003 0202 0000 0001 0000 f000
所以,打开clover配置助手,进入如下界面:
--在name中,添加你所修改的Framebuffer的名字,如:AppleIntelBDWGraphicsFramebuffer(ps:记住不要加.kext)
--在find 中,添加我们需要修改的数值,如上例:0000 1e16 0003 0303 (这个就是告诉clover,搜索你输入的数值)
--在replace中,添加我们修改过的数值,如上例 :0000 1e16 0003 0202 (这个是将clover搜索到的数值替换)
--我们 修改端口数量的补丁 就做好了,点击保存即可。
-------在clover中输入数值时不需要加空格!!!
8. 我们现在再来删除edp接口,基本思路是:用hdmi替换edp,再用Disabled / unused VGA connector替换hdmi
所以,我们先把edp,hdmi,Disabled / unused VGA connector 端口复制下来,如上例:
0105 0900 0400 0000 0400 0000 0204 0900 0008 0000 8200 0000 ff00 0000 0100 0000 4000 0000
--在name中,添加你所修改的Framebuffer的名字,如:AppleIntelBDWGraphicsFramebuffer(ps:记住不要加.kext)
--在find 中,添加我们需要修改的数值,如上例: 0105 0900 0400 0000 0400 0000 0204 0900 0008 0000 8200 0000
--在replace中,添加我们修改过的数值,如上例 : 0204 0900 0008 0000 8200 0000 ff00 0000 0100 0000 4000 0000
--我们 删除edp端口的补丁 就做好了,点击保存即可。
ps:不能开启hdmi-音频的同学,请把clover补丁里面的replace部分里的HDMI部分的代码做修改 0204 0900 000 4 0000 需要改为 0204 0900 000 8 0000
9. 重启,享受顺滑的感觉
ps:请勿直接修改sle中的文件。如果有edp屏幕的同学(暂时没有遇到),可以尝试按上文思路直接破解sle文件。请大家测试并反馈!!!
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册
7
查看全部评分