Win10论坛

Win10正式版系统下载主题平板

重定义Modern UI,打造完美Windows全新体验

Windows10下载|安装|新手宝典|必备软件

搜索
查看: 8787|回复: 106

[教程] 【教程】加载AppleBacklightInjector.kext来驱动笔记本背光 [复制链接]

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 10:34:27 |显示全部楼层
简介


  此教程来源https://www.tonymacx86.com/threads/guide-laptop-backlight-control-using-applebacklightinjector-kext.218222/,感谢Rehabman的无私奉献。本帖大部分是翻译上述链接的内容,另加上本人的小修改。最近看到很多人的笔记本有这样那样的背光问题,而且现有的教程贴大多数是过时的或者不完善的,遂写此贴。

  注意:仅支持系统版本10.12.4+,这篇教程还简要讲述了如何驱动原生亮度热键,如果有时间我也会翻译整理好。
  
  这篇教程是由Rehabman根据他的另一篇教程https://www.tonymacx86.com/threads/native-brightness-working-without-blinkscreen-using-patched-applebacklight-kext.121031/简化而来。原教程略显复杂,这篇教程简单易懂一些,包括以下三个内容来达到驱动背光的目的:
  - 一份做好的AppleBacklightInjector.kext
  - 在config.plist/KernelAndKextPatches/KextsToPatch里给AppleBacklight打补丁
  - SSDT-PNLF.aml,用来激活AppleBacklight驱动
  - SSDT-ALS0.aml,用来空加载环境光感应让亮度保存更完美。


要求
  
  这篇教程仅支持英特尔显卡笔记本
  这篇教程支持的CPU类型有Arrandale, Sandy Bridge, Ivy Bridge, Haswell, Broadwell, Skylake和Kaby Lake


准备

  下载目前最新的SSDT-PNLF.aml, AppleBacklightInjector.kext, 和 config_patches.plist,我已经打包好放在帖子底部了。


安装

  驱动屏幕背光需要这三个步骤:
  - 放置SSDT-PNLF.aml 进 ACPI/patched
  - 在config.plist/KernelAndKextPatches/KextsToPatch给AppleBacklight打补丁
  - 放置AppleBacklightInjector.kext到/L/E或CLOVER/kexts/Other(二者选其一)


  注意:Rehabman对/L/E(/资源库/Extensions)有一种莫名的执念,他的教程全部推荐把驱动装进这个目录,经测试发现把驱动装在/L/E或者CLOVER/kexts/Other效果是一样的。如果“config.plist - System Parameters - Inject Kexts”里是Detect或者No, 那么驱动需要装进/L/E。如果是Yes,驱动需要装进CLOVER/kexts/Other


  注意:如果你已经对SSDT/DSDT打过"Brightness"补丁(PNLF),你需要移除他们!如果你在使用Clover的AddPNLF_1000000,也需要移除。


  再次注意:SSDT-PNLF.aml基于GFX0(或者VID在Thinkpads上)已经被重命名为IGPU。亮度控制不会运行如果你的IGPU方法不位于_SB.PCI0.IGPU。


  解压包,得到SSDT-PNLF.aml, 复制/替换到EFI/Clover/ACPI/patched。如果你的SSDT是以数字排列的,就把SSDT-PNLF.aml加进去,并且确保SSDT-PNLF.aml加载顺序位于OEM SSDTs之后。


  解压包,得到config_patches.plist,把里面comment是"change F%uT%04x to F%uTxxxx in AppleBacklightInjector.kext (credit RehabMan)"的补丁复制进你自己config里面。最好用文本编辑器或者Xcode,不推荐用Clover Configurator。


  解压包,复制AppleBacklightInjector.kext到/L/E或者CLOVER/kexts/Other


  我觉得我不用提到这一点,但以防万一:你需要移除 IntelBacklight.kext 或者 ACPIBacklight.kext如果你之前装过的话。


  装完这一切后第一次重启可能不会生效,因为有缓存。这时候运行Kext Utility或者别的可靠软件来重建系统缓存,然后再次重启生效。


定制

  在一些特别的情况下,你可能希望调整PWMMax值来匹配你的显卡。尤其是当你的ig-platform-id不那么普遍,而且这个id采用与众不同的PWMMax值。


  一个符合这个情况的例子就是Haswell的 ig-platform-id 是 0xa2e0008,采用了 0x56c而不是 0xa260006用的 0xad9。


  这个情况下你需要提供一个默认LMAX值,因为PWMMax不匹配你的ig-platform-id。


  也可以通过修改
  1. // LMAX: Backlight PWM MAX.  Must match framebuffer in use.
  2.         //
  3.         // Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
  4.         // Other values: must match framebuffer
  5.         Name(LMAX, Ones)
复制代码
  变成:
  1. // LMAX: Backlight PWM MAX.  Must match framebuffer in use.
  2.         //
  3.         // Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
  4.         // Other values: must match framebuffer
  5.         Name(LMAX, 0x56c)
复制代码


重启后亮度保存


  AppleBacklight.kext会在NVRAM保存亮度,重启不会丢失。亮度信息保存在NVRAM里的变量“backlight-level”。
  为了让保存亮度工作,你需要正确加载NVRAM。如果你的笔记本不支持原生NVRAM,你需要一个 EmuVariableUefi-64.efi 放在 EFI/CLOVER/drivers64UEFI。没有EmuVariableUefi-64.efi的话,原生NVRAM会被启用。有EmuVariableUefi-64.efi的话,模拟的NVRAM会被启用,关机时保存在磁盘里(nvram.plist),开机时加载。为了让模拟的NVRAM运行,你需要安装CLOVER安装器里的 "RC scripts"。如果没有装 "RC scripts",但drivers64UEFI文件夹下有EmuVariableUefi-64.efi,会导致nvram.plist无法保存NVRAM设置。


  在一些电脑里,原生的NVRAM可能可以工作(不需要EmuVariableUefi-64.efi)。如果你在使用AptioMemoryFix.efi而不是OsxAptioFix*.efi,那么你的电脑应该支持原生NVRAM。所以也可以尝试下载AptioMemoryFix.efi放到EFI/CLOVER/drivers64UEFI,但不一定在每台机子上正常运行。


  其次,确保config.plist/SystemParameters/BacklightLevel里没有任何值。


  最后, Clover Options -> Graphics Injector里的默认背光等级是0xFFFF。为了避免这个现象,确保Clover Options -> Graphics Injector里的设置留空。


模拟光感
  
  一些机子有环境光感应方法在他们的DSDT里。这会影响到背光保存,而且这些环境光感应无法在MacOS驱动因为他们缺少Mac SMC依赖。


  这些机子需要禁用环境光感应,让_STA返回0.
  
  你可以检查你的DSDT,寻找环境光感应设备通过查找他的_HID标示:ACPI0008。


  比如:
  1. Device (ALSD)
  2.     {
  3.         Name (_HID, "ACPI0008")  // _HID: Hardware ID
  4.         Method (_STA, 0, NotSerialized)  // _STA: Status
  5.         {
  6.             If ((ALSE == 0x02))
  7.             {
  8.                 Return (0x0B)
  9.             }

  10.             Return (Zero)
  11.         }
  12. ...
复制代码
  你可以修改_STA方法让它返回0:
  1. Device (ALSD)
  2.     {
  3.         Name (_HID, "ACPI0008")  // _HID: Hardware ID
  4.         Method (_STA, 0, NotSerialized)  // _STA: Status
  5.         {
  6.             Return (0)
  7.         }
  8. ...
复制代码


  对于一些系统,你可能需要伪造一个环境光设备(可能KabyLake的机子都需要)来达到亮度完美保存的效果。操作如下:
  
  解压包,复制SSDT-ALS0.aml到EFI/CLOVER/ACPI/patched。


问题反馈

  本人高三党,不一定有时间解答所有问题。力所能及的尽量回答。如需专业帮助,求助站内大神或者推荐注册个tonymacx86的账号,并在https://www.tonymacx86.com/threads/guide-laptop-backlight-control-using-applebacklightinjector-kext.218222/下提问
(要英文)。


有时间会写一篇完整的亮度热键的教程,写完了链接会贴在这里。


附件: 你需要登录才可以下载或查看附件。没有帐号?注册
2

查看全部评分

UID
233039
帖子
877
PB币
14382
贡献
0
技术
71
活跃
2108
发表于 2018-4-24 17:31:27 来自手机 |显示全部楼层
技术帖,必须顶

Rank: 2Rank: 2

UID
4811417
帖子
330
PB币
376
贡献
0
技术
0
活跃
983
发表于 2018-4-24 18:13:24 来自手机 |显示全部楼层
感谢分享。写的挺好

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
952
PB币
613
贡献
0
技术
1
活跃
1516
发表于 2018-4-24 19:36:08 |显示全部楼层
论坛上有好几个人翻译了这个教程,基本过一段时间就沉了
不过也不一定都是这个步骤,像我的直接用SSDT-PNLF.aml就ok了,加了驱动反而不行

ASlien

Rank: 5Rank: 5Rank: 5

UID
3032997
帖子
589
PB币
611
贡献
0
技术
2
活跃
577
发表于 2018-4-24 21:33:01 |显示全部楼层
我穿越了??

Rank: 7Rank: 7Rank: 7

UID
639620
帖子
2655
PB币
56
贡献
0
技术
24
活跃
1951
发表于 2018-4-24 21:53:10 |显示全部楼层
本帖最后由 fsl37 于 2018-4-25 08:45 编辑

我 不懂dsdt ,麻烦你邦我搞好。谢谢!
附件: 你需要登录才可以下载或查看附件。没有帐号?注册

Rank: 1

UID
4646143
帖子
97
PB币
11
贡献
0
技术
0
活跃
139
发表于 2018-4-24 22:32:11 |显示全部楼层
群里的大神 。过来顶上去

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:33:23 |显示全部楼层
fsl37 发表于 2018-4-24 21:53
我 不懂dsdt ,麻烦你邦我搞好。谢谢!

这篇教程基本上是通过热补丁的方式实现亮度控制的,最好发一下你的clover文件夹。能让附件不需要pb币下载吗,我有点穷。。。

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:35:07 |显示全部楼层
daliansky 发表于 2018-4-24 17:31
技术帖,必须顶

谢谢兵哥大神

菜鸟潜伏者

Rank: 7Rank: 7Rank: 7

UID
2443636
帖子
1632
PB币
479
贡献
0
技术
0
活跃
716
发表于 2018-4-24 22:35:13 |显示全部楼层
http://bbs.pcbeta.com/viewthread-1736908-1-1.html去看看,你只要把热键弄出来就行,

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:35:31 |显示全部楼层
qini95 发表于 2018-4-24 18:13
感谢分享。写的挺好

嘿嘿谢谢支持

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:36:11 |显示全部楼层
yjplayer 发表于 2018-4-24 19:36
论坛上有好几个人翻译了这个教程,基本过一段时间就沉了
不过也不一定都是这个步骤,像我的直接用 ...

666,能解决的方法就是好方法。

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:46:10 |显示全部楼层
liningy123 发表于 2018-4-24 22:32
群里的大神 。过来顶上去

谢谢,大神不敢当

Rank: 1

UID
4783171
帖子
22
PB币
75
贡献
0
技术
0
活跃
119
发表于 2018-4-24 22:47:15 |显示全部楼层
liwenloveyou 发表于 2018-4-24 22:35
http://bbs.pcbeta.com/viewthread-1736908-1-1.html去看看,你只要把热键弄出来就行,

好,我尽快,每个版块我觉得应该都要有个类似的亮度贴,而且我这个自认为讲的很细。

菜鸟潜伏者

Rank: 7Rank: 7Rank: 7

UID
2443636
帖子
1632
PB币
479
贡献
0
技术
0
活跃
716
发表于 2018-4-24 22:56:53 |显示全部楼层
郑世祺 发表于 2018-4-24 22:47
好,我尽快,每个版块我觉得应该都要有个类似的亮度贴,而且我这个自认为讲的很细。

不错,你的很细,这个热键我很想弄好,弄完就完美了

Rank: 2Rank: 2

UID
555753
帖子
225
PB币
0
贡献
0
技术
0
活跃
155
发表于 2018-4-24 23:21:46 |显示全部楼层
挖坑备用   

Rank: 5Rank: 5Rank: 5

UID
4108955
帖子
582
PB币
806
贡献
0
技术
0
活跃
758
发表于 2018-4-24 23:35:06 |显示全部楼层
其实clover勾上addpnlf就可以了...

Rank: 1

UID
4665187
帖子
96
PB币
115
贡献
0
技术
0
活跃
161
发表于 2018-4-24 23:37:03 |显示全部楼层
学习了,谢谢分享哈

Rank: 5Rank: 5Rank: 5

UID
713205
帖子
952
PB币
613
贡献
0
技术
1
活跃
1516
发表于 2018-4-25 01:08:06 |显示全部楼层
郑世祺 发表于 2018-4-24 22:36
666,能解决的方法就是好方法。

个人经验,SSDT-PNLF.dsl里面的绿色字注释,_UID 最好也根据注释的提示来改合适自己的最大亮度值,亮度保存如果用clover的EmuVariableUefi-64的模拟方式的话就不需要SSDT-ALS0,用主板原生nvram来保存亮度的话就需要用到

Rank: 5Rank: 5Rank: 5

UID
2184769
帖子
426
PB币
6
贡献
0
技术
0
活跃
321
发表于 2018-4-25 02:12:15 来自手机 |显示全部楼层
厉害,6666,没毛病
回顶部
Copyright (C) 2005-2019 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛 | 电脑硬件 | 安卓软件