[教程&交流]解决最低亮度黑屏和亮度不均
前言:最近研究了一下关于亮度的调节,发现了一些心得,我个人不喜欢最低亮度黑屏,虽然白果是这样的,但是我个人不喜欢黑屏,没有修改之前,最低亮度依然很亮,晚上很刺眼,修改之后的亮度可以降到非常低,过渡平滑,希望与大家交流一下,希望大家可以一起讨论,测试一下我的方法。下面我们开始:**需要用到的工具:maciasl/plistedit pro (自己百度一下,附件太大传不上来)
1.首先,你的笔记本要能够实现亮度调节,简单介绍一下各种显卡的亮度调节方法:
(1)集显:集显的亮度调节一般来说需要三个条件,注入ig-plantfrom-ID驱动显卡,并且屏幕内建,pnlf()。
(2)独立显卡:显卡以驱动,在dsdt中注入独显rom,有pnlf(),10.12.4之后的版本可能需要使用10.12.4的Applebacklight.kext。
ps:部分电脑可以在bios屏蔽集显,部分电脑出场就屏蔽集显,极少数电脑可以独显和集显同时驱动,但是对于大多数电脑来说,只能使用集显,因为独立显卡是没有显示核心的,只有运算核心,所以在osx下无法切换显卡!先搞清楚自己属于哪种情况~~
2.dsdt部分:
我们的dsdt中一般来说有多个亮度表,也就是(_bcl),我们使用maciasl打开dsdt和ssdt查找“Method (_BCL”,就可以找到若干个。如:
此图中的_bcl方法调用了上一级的定义,所以这不是我们要找的。
我们在ssdt中找到如上定义,我们看见了一堆数字,这就是传说中的亮度表。
下面来简单介绍一下亮度表:亮度表的前两个数字,代表了使用电池的亮度和使用电源的亮度。后面的数字代表的是可支持的亮度!
好的,我们可以直接修改此亮度表,来获取一个可支持的亮度:
Return (Package ()
{
0x0AD9,
0x02EC,
Zero,
0x23,
0x27,
0x2C,
0x32,
0x3A,
0x43,
0x4D,
0x58,
0x65,
0x73,
0x82,
0x93,
0xA5,
0xB8,
0xCC,
0xE2,
0xF9,
0x0111,
0x012B,
0x0146,
0x0162,
0x017F,
0x019E,
0x01BE,
0x01DF,
0x0202,
0x0225,
0x024B,
0x0271,
0x0299,
0x02C2,
0x02EC,
0x0317,
0x0344,
0x0372,
0x03A2,
0x03D2,
0x0404,
0x0437,
0x046C,
0x04A2,
0x04D9,
0x0511,
0x054B,
0x0586,
0x05C2,
0x05FF,
0x063E,
0x067E,
0x06C0,
0x0702,
0x0746,
0x078B,
0x07D2,
0x081A,
0x0863,
0x08AD,
0x08F8,
0x0945,
0x0994,
0x09E3,
0x0A34,
0x0A86,
0x0AD9
})
(注意:package()括号中的数值要删除后再编译,否则会发生错误,甚至导致maciasl无响应!)
如果你是核显,可以修改你igpu/gfx0中的亮度表,然后在dsdt中使用rehabman的acpi100补丁来添加一个pnlf()
例:在igpu.pnlf._bcl中,修正ssdt中bcl的路径,如上图中,我的核显亮度表在ssdt-7中,它的路径是:\_SB.PCI0.IGPU.DD1F._BCL(),所以,在dsdt里的pnlf._bcl中引用此路径:
Method (_BCL, 0, NotSerialized)// _BCL: Brightness Control Levels
{
Return (\_SB.PCI0.IGPU.DD1F._BCL() )
}
最后别忘了在dsdt开头添加引用定义:External (_SB_.PCI0.IGPU.DD1F._BCL, MethodObj)
注意:核心显卡将pnlf放在独立显卡下,一般为pegp.peg0,方法同上。
3.修改applebacklight(自己提取s/l/e中的,注意备份!):
首先,右键显示包内容,用plistedit 打开info.plist
可以看到如下图:
如果不嫌麻烦可以用ioreg查看你的显示器的product id,并新建项,如:
ps:直接修改default也可以,但是其他的要全部删除!
4.我们来修改亮度档位:
(1)我们的亮度表中,记录了允许的亮度值,如上,我提供的亮度表中,允许的亮度是:0x0--0x0ad9,这是十六进制数,为了计算方便,我们用自带的计算器,选择编程器,来计算一下十进制:0x0=0,0x0ad9=2777.
我们的亮度表中,允许的亮度是从0-2777(十进制)
(2)科普一下,苹果的亮度调节有17档(16档亮度加最后一档黑屏)
我们需要做的,就是把这些亮度分为17个档。
例:2777平分为17档,先确定一个最低档,2777除16,商173余9,那么我的最低档可以定为16+n*9(这个n可以自己试,太暗了貌似也没什么用处,找到合适的最低档就好),我们以n=1为例,最低档为:25,那么其余各档位之间间隔为(2777-25)/16=172,所以,其他档位就是(十进制):197,369,541,713,885,1057,1229,1401,1573,1745,1917,2089,2261,2433,2605,2777
换算为16进制(包括最低档):0019 00C5 0171 021D 02C9
0375 0421 04CD 0579 0625 06D1 077D 0829 08D5 0981 0A2D 0AD9
接下来,我们要在这17个档位前面加上一个额外的档位,此档位是用来在显示器关闭前使屏幕变暗的,就像手机一样,关屏前先变暗,然后关屏,我研究了苹果原生的值,全部为0011,那么我们也使用0011就好。
所以,我们最终会得到这样一串数字:0011 0019 00C5 0171 021D 02C9
0375 0421 04CD 0579 0625 06D1 077D 0829 08D5 0981 0A2D 0AD9
5.我们把它复制进刚刚的info里,替换default的值,并删除其他项(如图中的f10t0000),保存,退出,并安装修改后的applebacklight.kext到S/L/E,重启,测试!
6.后记:
其实我还是有很多疑问的,比如这个档位调用亮度表中不存在的亮度时,我并没有发现什么不妥,还是不太懂它调用的机制,以上经验是我多次试验得出的猜想,迫不及待与大家分享,希望有大神可以一起讨论,指教,感激不尽,希望大家踊跃测试,反馈。附上10.13(17A365)的applebacklight.kext,版本不同最好自己制作!有空写个app来造福广大景友。
本帖最后由 hswwm 于 2017-10-31 16:29 编辑
更新----
1。经过多次尝试,有人反映修改applebacklight后没效果,这里提供一个解决方法,在修改applebacklight中的info.plist时,上文中的default后加一个项:F10Txxxx,其中xxxx是你显示器的设备id(用ioreg查看你的显示器设备id),然后把亮度值写在后面即可。
2。请认真阅读此教程,需要同时改dsdt和kext,不是只改个dsdt就可以的 好帖 只素布丁 很难得的技术贴啊.... 技术贴,必须支持。 很好的教程,谢谢分享 测试无效,不知道是不是操作不对,目前是dsdt加pnlf,亮度不均匀 247689829 发表于 2017-10-17 17:16
测试无效,不知道是不是操作不对,目前是dsdt加pnlf,亮度不均匀
修改applebacklight.kext了吗,这个很重要 我的电脑亮度表是7档,有办法吗? 龙心梦飞 发表于 2017-10-17 18:22
我的电脑亮度表是7档,有办法吗?
附上applebacklight和详细配置 hswwm 发表于 2017-10-17 17:59 https://www.pcbeta.com/static/image/common/back.gif
修改applebacklight.kext了吗,这个很重要
我是用你改好的,没起作用,不过现在好了,用了新方法backlinginjector+ssdt-pnlf 247689829 发表于 2017-10-17 22:47
我是用你改好的,没起作用,不过现在好了,用了新方法backlinginjector+ssdt-pnlf
backlingingector和applebacklight是一样的,你可以通过显示包内容根据我的教程自己修改里面的档位 感谢楼主,同亮度最低太亮 pnlf是加在显卡的device里面还是显卡下面的显示器device(LCD0)里面。。 技术贴必须顶 5784557 发表于 2017-10-18 10:51 https://www.pcbeta.com/static/image/common/back.gif
pnlf是加在显卡的device里面还是显卡下面的显示器device(LCD0)里面。。
加载你的显卡下,集显igpu/gfx0,独显pegp hswwm 发表于 2017-10-18 23:13 https://www.pcbeta.com/static/image/common/back.gif
加载你的显卡下,集显igpu/gfx0,独显pegp
坑爹1070,显示器内建就会出现开机黑屏只有鼠标的问题,这时倒是亮度管用了。。。 5784557 发表于 2017-10-19 09:40
坑爹1070,显示器内建就会出现开机黑屏只有鼠标的问题,这时倒是亮度管用了。。。
注入显卡rom了吗 hswwm 发表于 2017-10-20 17:54 https://www.pcbeta.com/static/image/common/back.gif
注入显卡rom了吗
VBIOS放在rom文件夹,勾选LoadVBIOS? 5784557 发表于 2017-10-20 17:59 https://www.pcbeta.com/static/image/common/back.gif
VBIOS放在rom文件夹,勾选LoadVBIOS?
在dsdt中,注入你的显卡rom