跑完代码黑屏分析(包含三种核显接口定制方案)

独显黑屏


  • 主要出现在A卡
    • 可以尝试NVRAM>7C436110-AB2A-4BBB-A880-FE41995C9F82>boot-args
      • 添加启动参数agdpmod=pikera

核显黑屏


  • 笔记本系列架构为Kaby Lake、Coffee Lake启动系统跑完代码以黑屏结束,或者黑三分钟缓慢亮屏
    • 13.4以下的系统为核显添加 enable-backlight-registers-fix
      • 或者使用-igfxblr 启动参数
    • 13.4及以上系统为核显添加 enable-backlight-registers-alternative-fix 属性
      • 或者使用-igfxblt 启动参数
  • 英特尔ICE笔记本开机持续花屏,7-15秒问题
    • 为核显添加 enable-dvmt-calc-fix 属性或者直接使用-igfxdvmt 启动参数
  • 台式机系列启动系统跑完代码以黑屏结束(风扇在转,系统仍在运行)

  • 尝试以下几种方法来解决问题
    • 添加启动参数igfxonln=1核显接口HDMI/DP强制在线
    • 如果有条件可以尝试替换显示器口HDMI或者DP
    • 定制核显接口

台式机核显接口定制


首先假设我们现在使用的AAPL,ig-platform-id是07009B3E

图片[1]-跑完代码黑屏分析(包含三种核显接口定制方案)-黑果老周
ID: 3E9B0007, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00801302

[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
01050900 00040000 C7030000
02040A00 00040000 C7030000
03060800 00040000 C7030000

现在数据我们找到了,开始定制之前我们了解一点资料:

从图上所示:3E9B0007 一共三组数据端口,即:con0、con1、con2

每组数据都有Bus id (Bus id从01-06)

我们要做的就是使用正确的数据来点亮显示器

3组数据,每组6个Bus ID

图片[2]-跑完代码黑屏分析(包含三种核显接口定制方案)-黑果老周
数据含义
00040000DP 接口
00080000HDMI 接口
04000000双链 DVI 接口
00020000单链 DVI 接口
10000000VGA 接口

简单方法一:配合启动参数igfxonln=1 如果这个不起作用,再继续下面方法


思路:开启3个端口并定义端口类型为 HDMI

framebuffer-patch-enable01000000启用核显补丁数据
framebuffer-con0-enable01000000启用端口1
framebuffer-con0-type00008000定义端口1,接口为HDMI
framebuffer-con1-enable01000000启用端口2
framebuffer-con1-type00008000定义端口2,接口为HDMI
framebuffer-con2-enable01000000启用端口3
framebuffer-con2-type00008000定义端口3,接口为HDMI
图片[3]-跑完代码黑屏分析(包含三种核显接口定制方案)-黑果老周

方法二:不需要AAPL,ig-platform-id数据,直接定制,配合启动参数igfxonln=1(最多重启7次)


思路:配合方法一,并遍历每个端口的bus id,首先开启3个端口并定义端口类型为 HDMI

framebuffer-patch-enableData01000000启用核显补丁数据
framebuffer-con0-enableData01000000启用端口1
framebuffer-con0-typeData00080000定义端口1,接口为HDMI
framebuffer-con1-enableData01000000启用端口2
framebuffer-con1-typeData00080000定义端口2,接口为HDMI
framebuffer-con2-enableData01000000启用端口3
framebuffer-con2-typeData00080000定义端口3,接口为HDMI
以上数据含义:开启3个端口并定义端口类型为 HDMI

下面我们再以上数据基础上,稍作修改指定每个端口的Bus id

framebuffer-patch-enableData01000000启用核显补丁数据
framebuffer-con0-enableData01000000启用端口1
framebuffer-con0-typeData00080000定义端口1,接口为HDMI
framebuffer-con0- busidData01000000定义端口1,Busid为:01
framebuffer-con1-enableData01000000启用端口2
framebuffer-con1-typeData00080000定义端口2,接口为HDMI
framebuffer-con1- busidData02000000定义端口2,Busid为:02
framebuffer-con2-enableData01000000启用端口3
framebuffer-con2-typeData00080000定义端口3,接口为HDMI
framebuffer-con2- busidData04000000定义端口3,Busid为:04

这样我们就测试了:

  • 端口1con0的Bus ID 为01
  • 端口2con1的Bus ID 为02
  • 端口3con2的Bus ID 为04

如果测试黑屏下面我们只要更改Bus id继续测试即可:最多重启7次就可遍历完所有Bus id

只需更改每组数据的Bus id:(framebuffer-conX- busid)

数据一数据二数据三数据四数据五数据六数据七
指定Con0 Busid01020304050601
指定Con1 Busid02010403060505
指定Con2 Busid04050102030106

方法三:需要AAPL,ig-platform-id数据,配合启动参数igfxonln=1(最多重启18次)


ID: 3E9B0007, STOLEN: 57 MB, FBMEM: 0 bytes, VRAM: 1536 MB, Flags: 0x00801302

[1] busId: 0x05, pipe: 9, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
[2] busId: 0x04, pipe: 10, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
[3] busId: 0x06, pipe: 8, type: 0x00000400, flags: 0x000003C7 – ConnectorDP
01050900 00040000 C7030000
02040A00 00040000 C7030000
03060800 00040000 C7030000
图片[4]-跑完代码黑屏分析(包含三种核显接口定制方案)-黑果老周
framebuffer-patch-enableData01000000启用核显补丁数据
framebuffer-con0-enableData01000000启用端口1
framebuffer-con0-alldataData01010900 00080000 C7030000定义端口1:接口为HDMI,
并指定端口1的Bus id为 01

如果不能正常亮屏,后面只需要把01010900 00080000 C7030000

中的01010900  ….……01060900 把Busid 从01遍历到06即可(重启6次测试)

如果不能正常亮屏再来测试第二组数据

framebuffer-patch-enableData01000000启用核显补丁数据
framebuffer-con1-enableData01000000启用端口2
framebuffer-con1-alldataData02010A00 00080000 C7030000定义端口2:接口为HDMI,
并指定端口2的Bus id为 01

如果不能正常亮屏,后面只需要把02010A00 00080000 C7030000

中的02010A00  ….……02060A00 把Busid 从01遍历到06即可(重启6次测试)

如果不能正常亮屏再来测试第三组数据

framebuffer-patch-enableData01000000启用核显补丁数据
framebuffer-con2-enableData01000000启用端口1
framebuffer-con2-alldataData03010800 00080000 C7030000定义端口3:接口为HDMI,
并指定端口3的Bus id为 01

后面只需要把03010800 00080000 C7030000

中的03010800  ………………………..……03060800 把Busid 从01遍历到06即可(重启6次测试)

© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容