syscl / M3800

auto patch macOS for M3800/XPS9530
110 stars 36 forks source link

请教大神XPS 9550的问题 #49

Closed darkhandz closed 7 years ago

darkhandz commented 8 years ago

在论坛没有短消息权限,只能来这里求教于大神了。

我的9550安装了10.11.6 (自己的安装过程) ,日常使用都正常,但是有个问题就是在开机(重启)的时候,容易卡住在苹果图标进度条画面。

正常情况下,应该是进度条走到一定的位置就出现8个苹果瞬间消失,然后就进入桌面登录的图形界面的。 而不正常的时候就是不会出现8个苹果的画面,进度条保持一直慢慢增长的假象,等多久都是进不去登录界面…… 在不正常的这种情况,只能强制电源键6秒断电,再重新开机,就可能顺利进入正常情况了。

这里问题很困扰我,不知从哪里下手,希望大神有空可以指点指点。

syscl commented 8 years ago

@darkhandz 大致看了一下, 很不错的项目. 说下一些建议吧:

  1. 在还没有足够稳定的时候,建议你使用verbose模式来启动,这样,就能看到到底是卡在什么地方了。我猜测有可能跟无线网卡有关,也可能是nvram那一块。当然,在你没有上传启动日志之前,一切都不好预测。
  2. 我已经更新了最新的AppleSmartTouchpad的驱动,你可以尝试一下。
  3. 亮度可以保存,你需要这个kext: IntelBacklight 如果仍旧不行,再告诉我,我还有一个其他的方案来解决这个问题。
  4. 我引入了一个新的笔记本修复的项目,关于低电量下让电脑进入睡眠的,叫IOPowerManagement 希望对你的笔记本有帮助.

syscl

darkhandz commented 8 years ago

回答好迅速...

  1. 用verbose模式看过,看不出个所以然……貌似是windowServer不启动,原因我实在看不懂……
  2. AppleSmartTouchpad4.6.5之前我安装过原版,感觉手势配置完全不同了,有点不喜欢,等下我再试试你M3800里面的。
  3. 我已经用上IntelBacklight了,它只能让我不会每次开机都最大亮度,但是保存的不是我关机前的亮度,而是BIOS里设置的默认亮度……这个小问题,不纠结。
  4. 低电量睡眠这个没留意过,似乎我电池模式的话,放着就自动睡眠了(是休眠?完全断电的那种),周六日试试这个项目。
  5. 日志是指system.log吗?我把最近两次截出来了,第一次启动是前面提到的“不正常情况”,然后强制电源重启,进入第二次启动,是“正常情况”,顺利进入系统,并且开Xcode用到11点,平时使用是足够稳定的,只是卡启动Logo太让我烦恼了。 system.log.zip

麻烦你有空时帮忙分析一下,万分感谢!

syscl commented 8 years ago

我觉得不是,倒有可能是显卡的问题, 注意下面这个:

Oct 28 20:06:20 CR kernel[0]: [IGPU] Will fallback to host-side scheduling if graphics firmware fails to load
Oct 28 20:06:20 CR kernel[0]: [IGPU] Chose to use graphics firmware based on platform
...
Oct 28 20:06:22 CR kernel[0]: [IGPU] *****************************************************************************
Oct 28 20:06:22 CR kernel[0]: [IGPU] Failed to initialize graphics firmware.  Falling back to host-side scheduling
Oct 28 20:06:22 CR kernel[0]: [IGPU] Scheduler interface revision = 1: Default EL Scheduler
Oct 28 20:06:22 CR kernel[0]: [IGPU] *****************************************************************************
Oct 28 20:06:22 CR kernel[0]: [IGPU] Graphics accelerator is using scheduler interface revision 1: Default EL Scheduler
Oct 28 20:06:22 CR kernel[0]: [IGPU] Scheduler: Multiple channel indexes per command streamer
Oct 28 20:06:22 CR kernel[0]: [IGPU] Scheduler: Process CSB using HWS.
Oct 28 20:06:22 CR kernel[0]: [IGPU] Scheduler: PM notify enabled
Oct 28 20:06:22 CR kernel[0]: [IGPU] Graphics Address: PPGTT, Separate Address Space
Oct 28 20:06:22 CR kernel[0]: [IGPU] MultiForceWake Enabled: Using 3D Driver
Oct 28 20:06:22 CR kernel[0]: [IGPU] CoarsePowerGating Disabled
Oct 28 20:06:22 CR kernel[0]: [IGPU] Scheduler Throttle Cap = 100ms.
Oct 28 20:06:22 CR networkd[278]: -[NETInterfaceManager updateInterfaces] nwi_state_copy() returned NULL
Oct 28 20:06:28 CR apsd[76]: CGSLookupServerRootPort: Failed to look up the port for "com.apple.windowserver.active" (1102)

这可能是为啥你的变不出八个苹果,然后图标变大,最终进入不了系统的原因。

syscl

darkhandz commented 8 years ago

这些开头我也怀疑过,并且对比过了,正常启动的那次也会有这一段初始化失败的log,所以觉得应该不是这里问题……

darkhandz commented 8 years ago

花了一个多小时逐句对比,删除掉同样的内容,得出两次启动的不同点,麻烦大神再帮忙看看这两个文件的详细内容:

Archive.zip

darkhandz commented 8 years ago

早上起来又试了一下正常启动,再对比了一下,把错误Log的范围缩小到下面这些语句,这些是正常启动情况下不会出现的,Sound assertion在正常启动下只出现一行:

06:18 localhost configd[52]: arp_client_transmit(en1) failed, Network is down (50) 06:18 localhost configd[52]: MANUAL en1: arp probe failed, arp_client_transmit(en1) failed, Network is down (50)

06:19 CR kernel[0]: BrcmPatchRAM2: USBInterfaceShim:open failed

06:19 CR kernel[0]: Sound assertion in AppleHDAController at line 6018 06:19 CR kernel[0]: Sound assertion in AppleHDAController at line 6019 06:19 CR kernel[0]: Sound assertion in IOHDACodecDevice at line 146 06:19 CR kernel[0]: Sound assertion in IOHDACodecDevice at line 552 06:19 CR kernel[0]: Sound assertion in AppleHDAController at line 5219

06:20 CR kernel[0]: Sound assertion in AppleHDAController at line 6018 06:20 CR kernel[0]: Sound assertion in AppleHDAController at line 6019 06:20 CR kernel[0]: Sound assertion in IOHDACodecDevice at line 146 06:20 CR kernel[0]: Sound assertion in IOHDACodecDevice at line 552

06:20 CR kernel[0]: 000004.840250 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840320 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840491 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840704 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840756 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840829 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840873 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service 06:20 CR kernel[0]: 000004.840918 AppleUSBLegacyRoot@: AppleUSBLegacyRoot::usbServiceCallGated: failed to attach or start legacy service

syscl commented 8 years ago

有点像是USB的问题.

darkhandz commented 8 years ago

今天研究了一下USB的问题,我看了Rehabman大神的USBInjectAll驱动,照着教程做了合适自己机器的SSDT-UIAC.aml出来,但还是不太对。 我看了一下你的,你是用USB_injector.kext来做的,就像覆盖系统的相应机型的USB端口配置来达到,请问我的9550也可以这样做(摆脱USBInjectAll驱动和aml)吗?

syscl commented 8 years ago

当然可以~

darkhandz commented 8 years ago

嘿嘿,有相关教程咩? 我用了USBInjectAll,先把所有端口启用,然后用拔插USB2 3设备配合IOReg查看端口号和对应的设备,其实我机身就左右各一个USB口,是自动USB2/3的,我只要建立4个+蓝牙+WebCam共6个端口到USB_Injector的ports字典节点里就可以了是吗?

darkhandz commented 8 years ago

IOPowerDeploy.kext我安装了kext版本,还不知道效果如何 AppleSmartTouchpad新版用上了,感觉和你的4.5没有区别,挺好的。 不正常启动的问题搞了一天还是这样,放弃了,明天还要工作,不能乱搞了,嘿嘿,谢谢啦。

syscl commented 8 years ago

kext版本暂时没有效果,我隐藏了部分功能,而且也不如Objective-C版本符合系统规范的要求。另一个原因是,这个程序同样也是为白苹果开发的,所以白苹果下面安装KEXT需要先禁用SIP等操作,也是我不愿意看到的。

所以安装Objective-C的版本吧。 ////

darkhandz commented 7 years ago

已确定是AppleALC的问题导致,如今用aDummyHDA.kext顶替了, 这两天的二十多次重启测试都没有遇到卡住的情况了.也谢谢大神帮忙!

syscl commented 7 years ago

@darkhandz 你应该有注意到, M3800在10.12上面没有采用AppleALC, 最原始的方法有时候简单高效.

也十分高兴看到你这个问题得到了解决。

最后建议尝试IOPowerManagement的Objective-C版本.

////

darkhandz commented 7 years ago

@syscl 额,直到上周PikeAlpha解决了HD5X0系列的显卡在10.12的环境下左上角花屏的问题我才开始留意10.12...所以没看到原来大神你已经弃用了AppleALC... IOPowerManagement的手动安装版本已经装上, 这个该如何测试呢? 让机器处于低电量(大概数值是?)状态闲置,观察会不会自动休眠吗?

syscl commented 7 years ago

对的 观察会不会自动休眠 一般在6%左右休眠 当然你也可以自己设置然后编译

darkhandz commented 7 years ago
$ sudo launchctl list | grep -i syscl
80  0   com.syscl.externalfix.sleepwatcher
-   78  com.syscl.iopm

应该是在后台运行了,不过我的机子还是会自动休眠, 电量还有很多都会.

syscl commented 7 years ago

@darkhandz

机子自动休眠/睡眠这个取决于设置吧

IOPM做的事情只是在低电量时刻睡眠。如果要日常不休眠,可以在系统中设置。

syscl

syscl commented 7 years ago

@darkhandz 看了一下你的SSDT的改法, 有一个地方有问题, 正确的改法见这个帖子: http://bbs.pcbeta.com/viewthread-1590326-1-1.html

syscl

darkhandz commented 7 years ago

之前没有详细了解过ACPI这些语法的学问,以为是类似Arg0那种类似的参数空行,看了你上面的帖子才知道原来是函数调用,谢谢啦! 话说我现在用了RehabMan提到的hotpatch方法,没去dump aml出来了,直接让clover像给驱动打16进制替换补丁一样,给原生dsdt打补丁 ,回头想办法加上这些补丁。 对了,还有个问题就是,我的机器休眠醒来之后,有个小几率会导致所有程序都崩溃了,打不开了,必须要重启,一重启就惨了,直接进不了系统了,只能进RecoveryHD,然后对系统分区进行“急救”,提示修复不了,退出代码8,然后这个系统分区就真的是死了……fsck_hfs也不能修复…… 这种情况我再10.11.6遇到过2次,在10.12遇到过1次……现在都不敢休眠了。 开头我以为是NVME驱动问题,第2次崩之前是在用10.11.6,我用了20多天都没事,突然一天睡眠醒来就全部崩溃了,由于我是256G的,我分了一个exFAT区来放数据,当时发现exFAT的数据完好无损,EFI区的也是没事,就HFS的出问题了。 额,说了这么多,其实我就是想表达,现在不敢休眠了,没能给你测试IOPM的使用情况,很抱歉……

syscl commented 7 years ago

@darkhandz 你是打开了HWPEnable吧?

这个选项是已知的导致黑苹果在休眠状态下数据严重损坏的选项,如果你留意我的XPS 13的项目应该会发现我默认就没有打开这个选项。另外,HWPEnable一经打开,就无法关闭了,只能重装系统才行,所以,在重装系统前,先改Clover配置关闭HWPEnable然后重装。

当然在Windows下面也不要安装任何HFS读写的软件.

syscl

darkhandz commented 7 years ago

卧槽!!这个特性如此恐怖??我也就在10.12才知道的这个特性,以前在10.11.6的时候并没有碰过这个特性也崩溃了…… 所以我还是不能确定原因在哪里,话说目前我是在Clover开着HWPEnable的……突然感觉脖子凉飕飕……一直没休眠,系统使用了一个星期都没事(工作用),今晚回去看来要准备后事了,重装一次再说…… Windows下读取HFS导致出问题我最初是在10.10的时候试过,之后再也不敢了。 发现和你交流学习到很多 :) ,你英文还那么好,崇拜啊!

syscl commented 7 years ago

@darkhandz 尝试我最新的FixUSB脚本,以及我在XPS9350-macOS里面增加了一些新的dsdt patch, 看看效果如何吧~

syscl

darkhandz commented 7 years ago

最新的FixUSB脚本 刚才测试了一下,睡眠二十分钟再唤醒,没有异常推出的情况。 dsdt patch我得仔细看看commit记录……你9350用的patch,我9550都可以加吗?

darkhandz commented 7 years ago

看了近期的commit,问问HaltEnabler、ResetAddress和ResetValue 这三个参数的更改,具体有什么作用吗?