Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

MacBookPro 8,1 无效 #2

Open
gujiangjiang opened this issue May 21, 2017 · 48 comments
Open

MacBookPro 8,1 无效 #2

gujiangjiang opened this issue May 21, 2017 · 48 comments

Comments

@gujiangjiang
Copy link

qq20170521-135705

测试下来无效。。。不知道为何。Lilu是最新版。。。

@0xFireWolf
Copy link
Owner

请附上内核日志,用 kextstat 检查 Lilu 和 NightShiftUnlocker 是否加载等

@gujiangjiang
Copy link
Author

内核日志?systemlog?kextstat如何检测?

@0xFireWolf
Copy link
Owner

重启计算机 开机后终端输入 log show --predicate 'process == "kernel"' --last 1m > ~/Desktop/boot.log 会把最近1分钟的内核日志保存到桌面上名为 boot.log 的文件

上传boot.log文件

然后终端输入
kextstat | grep Lilu
kextstat | grep Night

然后上传截图

@gujiangjiang
Copy link
Author

好的,稍等哈。。。

@gujiangjiang
Copy link
Author

boot.log.zip
1
2

大神,你是这个
3的作者???大神!!!!

@0xFireWolf
Copy link
Owner

KCPM 是我的工具

很奇怪 你的启动日志里没有 NightShiftUnlocker 相关的日志,CoreBrightness 相关的日志也没有

之前修改过 Night Shift 相关的文件吗?

检查下列文件是否存在
/System/Library/LaunchDaemons/com.apple.corebrightnessd.plist
/usr/libexec/corebrightnessd
/System/Library/PrivateFrameworks/CoreBrightness.framework

@gujiangjiang
Copy link
Author

没修改过任何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$

@0xFireWolf
Copy link
Owner

那就麻烦你再重启下电脑 这次开机后 用 log show --last 1m > ~/Desktop/boot.log 来把一分钟内的所有日志都提取出来我看下

@gujiangjiang
Copy link
Author

boot.log.zip

@0xFireWolf
Copy link
Owner

0xFireWolf commented May 21, 2017

我刚才自己重新卸载又安装走了一遍 没有什么问题

在你的启动日志里完全找不到 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.

@gujiangjiang
Copy link
Author

AppleALC没问题。。。不清楚哪里出了问题。。。我不用LE的,所有Kext都在Clover下注入的。也没清理过缓存什么的,都没任何问题

@gujiangjiang
Copy link
Author

还有别的办法确认么?我是全新安装的系统,Clover的boot.log也提示注入kext成功了啊。

@gujiangjiang
Copy link
Author

或者你看看能不能编译一个debug版本,然后加一个debug的bootarg,比如-alcdgb等

@0xFireWolf
Copy link
Owner

原来如此 你是用 Clover 注入的啊
虽然你看 Clover 的日志显示注入成功 但内核日志里没有 NightShiftUnlocker 方面的初始化日志 很可能是虚加载

这样 我试试在我机器上用Clover注入kext的话能不能好使

如果不好使 恐怕我提供不了什么帮助 我仍然建议安装到LE
考虑到 Clover 的代码经常变动 时不时就有导致一些功能不怎么好使 我可能无法提供 Clover 注入相关的帮助

然后对于 DEBUG 版本,和当前 RELEASE 版本没什么区别,都是打印那几行语句。

@gujiangjiang
Copy link
Author

是的,不知道debug版本能不能打印出什么有用的log。

应该没问题,因为我的XPS用的CoreDisplayFixUp,IntelGraphFix,shiki等都没有问题的。。

你可以询问一下vit是怎么回事。@PMheart

@PMheart
Copy link

PMheart commented May 21, 2017

Hi
我觉得只要 Clover 注入成功的话,IOLog() 这个 API 就一定会被调用,无论 Lilu 那边有没有被call到 sys log 中至少会有 log 喔?

@gujiangjiang
Copy link
Author

来的真及时。。。。

@PMheart
Copy link

PMheart commented May 21, 2017

目前在我的机器上有点奇怪:(这可能有点与 topic 无关,见谅)
我目前在用白果 MacBook9,1 准备测试 4K HDMI 输出,很显然我需要将 Lilu 与 CoreDisplayFixup 安装到 /L/E,然而失败了,在 calling policy之后提提示failed to load Lilu... 无论是基于源码编译,或是从release page 中下载1.1.1的预编译版本

@gujiangjiang
Copy link
Author

所以Lilu的插件还是最好用Clover注入???

@gujiangjiang
Copy link
Author

你可以帮他看看代码,毕竟这个也是修改的framework,跟你的CoreDiskplay有异曲同工。。。

@PMheart
Copy link

PMheart commented May 21, 2017

Vit 表示是这样,不过理论上来说放在系统目录下也可以,只是可能偶尔会失效什么的,虽然目前我还没有遇到过。
之前我在写 CDF 的时候,也是只有白果,我的 CDF 和 Lilu 都是放在 LE 下测试的,没有什么问题。
今天再次测试的时候,Lilu 就 failed to load 了...
至于 NSU 的代码,我没有仔细看,不过看 #2 (comment) 中的讯息应该是没什么问题。

@0xFireWolf
Copy link
Owner

我刚试了下用 Clover r3961 注入
Clover 日志显示注入了此驱动 但驱动本身不加载 内核日志里也没有相关的输出

我还是那个建议安装到LE,Clover 经常有一些莫名其妙的问题

@gujiangjiang
Copy link
Author

奇怪,这类驱动应该用Clover可以注入啊。。。
@Austere-J 你楼上那个@PMheart 就写过一个framework的plugin,https://github.com/PMheart/CoreDisplayFixup
可以参考一下,这个可以在Clover下完美的加载。或者你和@PMheart 交流一下,看看是不是代码有冗余?或者有冲突的地方?比如名字,类等。。。

@PMheart
Copy link

PMheart commented May 21, 2017

我略微看了一下代码,我怀疑一些指针可能出了点问题。(比如 this 指针)
Clover InjectKext 的代码没记错的话也是基于 XNU 写的,不过是来自哪里我已经彻底忘了。
sec, 我需要仔细看一下。

@gujiangjiang
Copy link
Author

@PMheart 好在你原本也需要写这个的。。

我看他的代码里多了好多东西,多了好2个文件夹,c和h也比你的多几个,我看不大懂代码,所以也提供不了什么帮助,只能帮忙测试。。。

@gujiangjiang
Copy link
Author

@Austere-J 还有,我里面有一些其他的插件,比如shiki等等,不知道是不是冲突。

@PMheart
Copy link

PMheart commented May 21, 2017

NSU 中多出的那些东西是为了更精准的版本判断。
Lilu 中不提供 minor version 的检查,所以需要比较麻烦。

@gujiangjiang
Copy link
Author

哦哦哦,你看看是否有需要优化的地方或者和我目前的kext有冲突的。。。

@PMheart
Copy link

PMheart commented May 21, 2017

我猜应该是 Clover 把某些东西搞乱了。
anyway 我废除了 minor version 的检查,这可能比 @Austere-J 的 kext 略逊色些,不过要想 Clover 注入的话目前只能这样子了...
source code:

binary:

【REMOVED】

@gujiangjiang
Copy link
Author

@PMheart
依旧不行。

@0xFireWolf
Copy link
Owner

试一试 2.0 版本: https://github.com/Austere-J/NightShiftUnlocker/releases/tag/2.0

在我自己机器上可以通过 Clover 的注入功能加载 也可以解锁

@gujiangjiang
Copy link
Author

@Austere-J
我试一下,非常感谢您的付出!

@gujiangjiang
Copy link
Author

@Austere-J

很抱歉了。。。测试貌似依旧无效啊。。。

qq20170628-212221

我看你的说明里面说有些机型可能会出现没有设置面板的问题,那么如何才能确定加载了NightShift呢?

@0xFireWolf
Copy link
Owner

你看看你通知中心里面有没有 Night Shift 的开关

@gujiangjiang
Copy link
Author

@Austere-J

没有。。。

qq20170628-212620

@0xFireWolf
Copy link
Owner

对了 请你确保你的 Lilu 版本是 1.1.5
你需要手动从 Lilu 的代码仓库下载最新的代码 然后手动编译

@gujiangjiang
Copy link
Author

@Austere-J
擦。。。1.1.4。。。我有自己编译的版本,不过给XPS用了,稍等一下下,我重新编译一下试试看。。。

@PMheart
Copy link

PMheart commented Jun 28, 2017

@Austere-J 我觉得最好Lilu dependencies设置为 1.1.0 ?(reference:https://github.com/vit9696/Lilu/blob/master/Lilu/Info.plist#L24)

@gujiangjiang
Copy link
Author

@Austere-J

很抱歉。。。

qq20170628-213445
依旧不行。。。Lilu最新的1.1.5,NS2.0,依旧不行。。。

@PMheart
Copy link

PMheart commented Jun 28, 2017

首先确保 kextstat | grep NightShiftUnlocker 的输出结果不为空。
其次使用
log show --predicate 'process == "kernel" AND eventMessage CONTAINS "NightShiftUnlocker"' --style syslog --source
来查阅 log 。

@0xFireWolf
Copy link
Owner

终端输入 kextstat | grep Night 看看驱动加载没

我今天测试了好几台机器 至少通知中心里面都显示 Night Shift 开关的

@gujiangjiang
Copy link
Author

qq20170628-214154
qq20170628-214312

@PMheart
Copy link

PMheart commented Jun 28, 2017

所以,这就是问题所在?Lilu 版本设置太高了

@gujiangjiang
Copy link
Author

qq20170628-215011
qq20170628-215138

@gujiangjiang
Copy link
Author

@Austere-J @PMheart 不行。。。。

@PMheart
Copy link

PMheart commented Jun 28, 2017

所以为什么 findBytesAA 和 replBytesAA 为空?

@gujiangjiang
Copy link
Author

我不清楚啊,我是原本的系统,没有改过任何东西啊。。。system下保持原状,我也不知道哪里出问题了。

@0xFireWolf
Copy link
Owner

0xFireWolf commented Jun 28, 2017

原因已查明 与加载/二进制补丁无关

相关问题已记录 感谢支持与反馈

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants