菜鸟求助,关于在DSDT中注入EDID的

菜鸟求助,关于在DSDT中注入EDID的,第1张

我现在用的是神舟飞天UT43的本子,用CLOVER安装MAC OS中发现会黑屏,必须取消INJECTINTEL才能正常显示,但是这样的话,进入系统驱动不正常,显存只有4M,经过爬帖发现是载入驱动的时候没有读到EDID,所以正在这方面尝试,不过看了好久也没搞清楚DSDT的结构,我参考的注入EDID的帖子原文如下:

“驱动HD4000需要一个恰当的ig-platform-id,对于本机器,3、8、9都可以很完美的使用,最佳的设置为3

我所知道的注入ig-platform-id的方式有三种:变色龙直接注入、变色龙efi-string注入和DSDT注入

我推荐使用DSDT注入,方法也很简单,在DSDT的显卡部分_DSM方法中添加如下代码

"AAPL,ig-platform-id",

Buffer (0x04)

{

0x03, 0x00, 0x66, 0x01

}

就可轻松注入为3的ig-platform-id,我的DSDT中就是这样注入的

注入后,显卡其实就已经驱动起来了,如果有HDMI显示器,可以在系统启动完成后连接并查看,一定是正常的

然而,当显卡驱动起来后,内屏就会瞎。这是因为这个廉价的内屏非常糟糕,导致HD4000读不到它的EDID(见备注2)

所以需要手动在Windows下通过EDID Manager软件获取EDID并通过DSDT注入

整理后,添加到到DSDT显卡部分的_DSM方法中,如下

"AAPL00,override-no-edid",

Buffer (0x80)

{

/* 0000 */0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00,

/* 0008 */0x36, 0x7F, 0x03, 0x90, 0x0E, 0x00, 0x00, 0x00,

/* 0010 */0x00, 0x0C, 0x01, 0x03, 0x80, 0x1A, 0x0E, 0xFF,

/* 0018 */0x2F, 0x00, 0x00, 0xA0, 0x57, 0x49, 0x9B, 0x26,

/* 0020 */0x10, 0x48, 0x4F, 0x00, 0x00, 0x00, 0x01, 0x01,

/* 0028 */0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x01,

/* 0030 */0x01, 0x01, 0x01, 0x01, 0x01, 0x01, 0x20, 0x1C,

/* 0038 */0x56, 0x88, 0x50, 0x00, 0x20, 0x30, 0x0E, 0x38,

/* 0040 */0x13, 0x00, 0x00, 0x90, 0x10, 0x00, 0x00, 0x18,

/* 0048 */0x00, 0x00, 0x00, 0xFD, 0x00, 0x00, 0x3C, 0x00,

/* 0050 */0x40, 0x08, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

/* 0058 */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

/* 0060 */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

/* 0068 */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

/* 0070 */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,

/* 0078 */0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xC6,

}

好多人都问如何内建显示器,以便加载亮度条!内建显示器是加载亮度条的必备条件之一!

加载亮度条是能不能够调节显示器的第一步!至于能不能调节显示器的亮度,还要取决于显示器的硬件调节方式,是dcc方式还是pwm方式。

能否加载亮度条,也就是亮度滑块,本质上是显示器加载的是appledisplay还是Applebacklightdisplay!如果显示器加载的是Applebacklightdisplay,那么在偏好设置-显示器上就能看到亮度滑块!

我这篇文章只教你如何加载亮度滑块,至于能不能调节亮度取决于你的显示器亮度调节方式,如果硬件支持,那么你只需按照相关的教程,继续去仿冒环境光,打上pnlf的dsdt补丁,以及键盘快捷键的映射!

先说一下macOS是如何认定加载ApplebacklightDisplay的!

macos是这样判断的,一是根据该端口的flags标识符判断是否是内建端口,其次再判断连接类型是否满足条件(这个连接类型的条件目前还不甚明朗,只知道lvds和dp可以满足,HDMI和一些转接端口比如HDMI转vga,dp转typec,就不满足条件),如果满足即可加载亮度条,且显示器类型加载的是Applebacklightdisplay。第二种方式,就是判断显示器edid的厂商和设备ID,如果是macos支持的,就继续判断连接类型,如果满足条件就加载亮度条!

先说第一种内建方式,内建显示器在显卡端口上有且仅有一个,也就是说你不能把两个端口都设置成内建,另外内建端口仅在设置成有内建屏幕的机型(imac以及MacBook)上才有作用,如果你的机型是macmini,那么就会造成该端口黑屏!其实这也是好多核显在正确驱动之后显示器黑屏的原因之一!当设置完你的机型之后,我们接下来 *** 作,以十代uhd630举例,核显的平台id分两种一种是笔记本平台例如3e9b0000,一种是台式机平台3e9b0007,还有一种03结尾的不显示仅用做独显的辅助!笔记本平台和台式机平台区别在于,笔记本平台的第一个端口con0默认是lvds并且标记为内建端口(这个用hackintool的接口选项卡里就可以看出来),如果你使用笔记本平台,并且设置其他的端口为内建,那么一定记得将这个默认的con0的flags设置成0x00000187(oc中使用framebuffer-con0-flags 87010000)来取消内建!下面以端口1举例设置为内建端口,只需使用framebuffer-con1-flags 98000000即可,这个0x00000098即是macOS端口内建的标识符,使用了这个之后,当然还要使用framebuffer-con1-enable使端口补丁生效,使用framebuffer-patch-enable使核显补丁生效!

第二种,仿冒苹果显示器!这个更简单,打开ioreg工具,找到你核显或独显的显示器项,找到你的显示器display0(要是多个显示器,你就拔掉一个),然后记下该显示器在哪个端口也就是buffer@X,这个X就是端口号,找到display0下的appledisplay或Applebacklightdisplay,找到iodisplayedid,将edid复制到文本编辑器里,去掉空格和开头结尾的<>,将17至24位,这8个字符替换!这八个字符前四位即是供应商ID,后四位即是产品ID,我们将其改成0610ce9c即可!当然你可以尝试更多的!苹果支持的供应商ID及产品id在系统-资源库-displays-contents-resources-overrides下,目录的后四位即是供应商id,三位的要在前面加0!然后将修改过的edid复制下来,在oc中显卡属性里加上appl0x,override-no-connect,(建议使用oc对应版本的occ添加右键视频设备属性,高级属性edid)后面的属性值就是你修改后的edid!

重启后你就能看到显示器出现亮度滑块了!


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/11238872.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存