积分 54 最后登录 2021-7-29 精华 0 阅读权限 20 主题 17 UID 4783171 帖子 61 PB币 628 威望 5 贡献 0 技术 2 活跃 287
UID 4783171 帖子 61 PB币 628 贡献 0 技术 2 活跃 287
简介
此教程来源 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.am l, 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加进去,并且确保S SDT-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。
也可以通过修改
// LMAX: Backlight PWM MAX. Must match framebuffer in use.
//
// Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
// Other values: must match framebuffer
Name(LMAX, Ones) 复制代码 变成: // LMAX: Backlight PWM MAX. Must match framebuffer in use.
//
// Ones: Default will be used (0x710 for Ivy/Sandy, 0xad9 for Haswell/Broadwell)
// Other values: must match framebuffer
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。
比如:
Device (ALSD)
{
Name (_HID, "ACPI0008") // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
If ((ALSE == 0x02))
{
Return (0x0B)
}
Return (Zero)
}
... 复制代码 你可以修改_STA方法让它返回0:
Device (ALSD)
{
Name (_HID, "ACPI0008") // _HID: Hardware ID
Method (_STA, 0, NotSerialized) // _STA: Status
{
Return (0)
}
... 复制代码
对于一些系统,你可能需要伪造一个环境光设备(可能KabyLake的机子都需要)来达到亮度完美保存的效果。操作如下:
解压包,复制SSDT-ALS0.aml到EFI/CLOVER/ACPI/patched。
问题反馈
本人高三党,不一定有时间解答所有问题。力所能及的尽量回答。如需专业帮助,求助站内大神或者推荐注册个tonymacx86的账号,并在https://www.tonymacx86.com/threads/guide-laptop-backlight-control-using-applebacklightinjector-kext.218222/下提问
(要英文)。
有时间会写一篇完整的亮度热键的教程,写完了链接会贴在这里。
展开阅读全文​
附件:
你需要登录 才可以下载或查看附件。没有帐号?注册
3
查看全部评分