NightShiftUnlocker
NightShiftUnlocker copied to clipboard
MacBookPro 8,1 无效

测试下来无效。。。不知道为何。Lilu是最新版。。。
请附上内核日志,用 kextstat 检查 Lilu 和 NightShiftUnlocker 是否加载等
内核日志?systemlog?kextstat如何检测?
重启计算机 开机后终端输入 log show --predicate 'process == "kernel"' --last 1m > ~/Desktop/boot.log 会把最近1分钟的内核日志保存到桌面上名为 boot.log 的文件
上传boot.log文件
然后终端输入
kextstat | grep Lilu
kextstat | grep Night
然后上传截图
好的,稍等哈。。。
KCPM 是我的工具
很奇怪 你的启动日志里没有 NightShiftUnlocker 相关的日志,CoreBrightness 相关的日志也没有
之前修改过 Night Shift 相关的文件吗?
检查下列文件是否存在 /System/Library/LaunchDaemons/com.apple.corebrightnessd.plist /usr/libexec/corebrightnessd /System/Library/PrivateFrameworks/CoreBrightness.framework
没修改过任何system下的文件,纯净无任何改动,用了hotpatch和Clover。。。
这三个文件都在啊。。
gujiangangdeMBP:~ gujiangjiang$ /System/Library/LaunchDaemons/com.apple.corebrightnessd.plist -bash: /System/Library/LaunchDaemons/com.apple.corebrightnessd.plist: Permission denied gujiangangdeMBP:~ gujiangjiang$ /usr/libexec/corebrightnessd 2017-05-21 14:42:52.336 corebrightnessd[721:12631] Brightness system started 2017-05-21 14:42:52.337 corebrightnessd[721:12634] Using default queue 2017-05-21 14:42:52.341 corebrightnessd[721:12634] Night mode init 2017-05-21 14:42:52.341 corebrightnessd[721:12634] -[SunriseSunsetProvider initWithCallback:]: SunriseSunsetProvider initialisation 2017-05-21 14:42:52.341 corebrightnessd[721:12634] -[SunriseSunsetProvider initWithCallback:]: CoreDuet loaded dynamically 2017-05-21 14:42:52.345 corebrightnessd[721:12634] -[NightModeControl initWithDisplay:queue:callback:]: Creating defaults status info 2017-05-21 14:42:52.349 corebrightnessd[721:12641] dataDictionary : { isDaylight = 1; nextSunrise = "2017-05-22 21:08:32 +0000"; nextSunset = "2017-05-22 11:06:34 +0000"; previousSunrise = "2017-05-20 21:09:39 +0000"; previousSunset = "2017-05-20 11:05:09 +0000"; status = 1; sunrise = "2017-05-21 21:09:04 +0000"; sunset = "2017-05-21 11:05:52 +0000"; } 2017-05-21 14:42:52.390 corebrightnessd[721:12631] UUID = 5956E860-11A4-4710-855F-A442F85B3DC2 2017-05-21 14:42:52.390 corebrightnessd[721:12631] UID = 501 2017-05-21 14:42:52.390 corebrightnessd[721:12631] Current User UID 501 2017-05-21 14:42:52.390 corebrightnessd[721:12631] Night mode switch user 2017-05-21 14:42:52.390 corebrightnessd[721:12631] -[NightModeControl switchToUser:]: Creating defaults status info 2017-05-21 14:42:52.390 corebrightnessd[721:12641] dataDictionary : { isDaylight = 1; nextSunrise = "2017-05-22 21:08:32 +0000"; nextSunset = "2017-05-22 11:06:34 +0000"; previousSunrise = "2017-05-20 21:09:39 +0000"; previousSunset = "2017-05-20 11:05:09 +0000"; status = 1; sunrise = "2017-05-21 21:09:04 +0000"; sunset = "2017-05-21 11:05:52 +0000"; } 2017-05-21 14:42:52.391 corebrightnessd[721:12631] CB: Restarted Night Mode Control for User CBUser-5956E860-11A4-4710-855F-A442F85B3DC2 /System/Library/PrivateFrameworks/CoreBrightness.framework ^C gujiangangdeMBP:~ gujiangjiang$ cd /System/Library/PrivateFrameworks/CoreBrightness.framework gujiangangdeMBP:CoreBrightness.framework gujiangjiang$
那就麻烦你再重启下电脑 这次开机后 用 log show --last 1m > ~/Desktop/boot.log 来把一分钟内的所有日志都提取出来我看下
我刚才自己重新卸载又安装走了一遍 没有什么问题
在你的启动日志里完全找不到 NightShiftUnlocker 的输出 即使这个kext启动失败也会有日志的 但是 kextstat 又显示这个驱动加载了
我建议把 Lilu 和 NightShiftUnlocker 都安装到 /Library/Extensions/ 下 然后修复权限 重建缓存 重启看看
我记得以前我把 Lilu 和 AppleALC 放到 Clover 里来注入失败过
正常情况 在开机时系统加载完所有 ACPI 表后就会开始加载 Lilu 和 NightShiftUnlocker 然后产生如下日志:
kernel: calling mpo_policy_init for Lilu
kernel: Security policy loaded: Lilu Kernel Extension 1.1.1 (Lilu)
kernel: NightShiftUnlocker: Started on macOS 10.12.5.
kernel: NSUnlocker::init() NSUnlocker started on macOS 10125.
kernel: NSUnlocker::unlock() Attempt to unlock the Night Shift...
kernel: NightShiftUnlocker: Unlocked successfully.
AppleALC没问题。。。不清楚哪里出了问题。。。我不用LE的,所有Kext都在Clover下注入的。也没清理过缓存什么的,都没任何问题
还有别的办法确认么?我是全新安装的系统,Clover的boot.log也提示注入kext成功了啊。
或者你看看能不能编译一个debug版本,然后加一个debug的bootarg,比如-alcdgb等
原来如此 你是用 Clover 注入的啊 虽然你看 Clover 的日志显示注入成功 但内核日志里没有 NightShiftUnlocker 方面的初始化日志 很可能是虚加载
这样 我试试在我机器上用Clover注入kext的话能不能好使
如果不好使 恐怕我提供不了什么帮助 我仍然建议安装到LE 考虑到 Clover 的代码经常变动 时不时就有导致一些功能不怎么好使 我可能无法提供 Clover 注入相关的帮助
然后对于 DEBUG 版本,和当前 RELEASE 版本没什么区别,都是打印那几行语句。
是的,不知道debug版本能不能打印出什么有用的log。
应该没问题,因为我的XPS用的CoreDisplayFixUp,IntelGraphFix,shiki等都没有问题的。。
你可以询问一下vit是怎么回事。@PMHeart
Hi 我觉得只要 Clover 注入成功的话,IOLog() 这个 API 就一定会被调用,无论 Lilu 那边有没有被call到 sys log 中至少会有 log 喔?
来的真及时。。。。
目前在我的机器上有点奇怪:(这可能有点与 topic 无关,见谅) 我目前在用白果 MacBook9,1 准备测试 4K HDMI 输出,很显然我需要将 Lilu 与 CoreDisplayFixup 安装到 /L/E,然而失败了,在 calling policy之后提提示failed to load Lilu... 无论是基于源码编译,或是从release page 中下载1.1.1的预编译版本
所以Lilu的插件还是最好用Clover注入???
你可以帮他看看代码,毕竟这个也是修改的framework,跟你的CoreDiskplay有异曲同工。。。
Vit 表示是这样,不过理论上来说放在系统目录下也可以,只是可能偶尔会失效什么的,虽然目前我还没有遇到过。 之前我在写 CDF 的时候,也是只有白果,我的 CDF 和 Lilu 都是放在 LE 下测试的,没有什么问题。 今天再次测试的时候,Lilu 就 failed to load 了... 至于 NSU 的代码,我没有仔细看,不过看 https://github.com/Austere-J/NightShiftUnlocker/issues/2#issuecomment-302919809 中的讯息应该是没什么问题。
我刚试了下用 Clover r3961 注入 Clover 日志显示注入了此驱动 但驱动本身不加载 内核日志里也没有相关的输出
我还是那个建议安装到LE,Clover 经常有一些莫名其妙的问题
奇怪,这类驱动应该用Clover可以注入啊。。。 @Austere-J 你楼上那个@PMHeart 就写过一个framework的plugin,https://github.com/PMheart/CoreDisplayFixup 可以参考一下,这个可以在Clover下完美的加载。或者你和@PMHeart 交流一下,看看是不是代码有冗余?或者有冲突的地方?比如名字,类等。。。
我略微看了一下代码,我怀疑一些指针可能出了点问题。(比如 this 指针) Clover InjectKext 的代码没记错的话也是基于 XNU 写的,不过是来自哪里我已经彻底忘了。 sec, 我需要仔细看一下。
@PMheart 好在你原本也需要写这个的。。
我看他的代码里多了好多东西,多了好2个文件夹,c和h也比你的多几个,我看不大懂代码,所以也提供不了什么帮助,只能帮忙测试。。。
@Austere-J 还有,我里面有一些其他的插件,比如shiki等等,不知道是不是冲突。
NSU 中多出的那些东西是为了更精准的版本判断。 Lilu 中不提供 minor version 的检查,所以需要比较麻烦。
哦哦哦,你看看是否有需要优化的地方或者和我目前的kext有冲突的。。。
我猜应该是 Clover 把某些东西搞乱了。 anyway 我废除了 minor version 的检查,这可能比 @Austere-J 的 kext 略逊色些,不过要想 Clover 注入的话目前只能这样子了... source code:
binary:
【REMOVED】
@PMheart 依旧不行。

的作者???大神!!!!