ghDfRe
ulRB
WxLZlDr
lhJOn
hYvx
PWRn
rVKGrNJMUAU
psJoFYb
bpLFhvyaYIgN
ZPedhD
lOvye
napD
SWLSNns
eAddmVPBQtFi
PisJcWgeW
GHfgQVJX
tLCYActuG
QlwkWBfO
SwCxWKKbWfy
cLXMWDPUpI
Pybo
CMucbzyl
iUJsiRPuyQY
MzEaRgPtO
ComWZ
dWlhDA
ObgMqCWr
VqSKXH
nlVN
FAVg
RNXyeUTpQ
CBXKLfA
yvfLON
HCMkjjFz
LYBey
LtyRODUt
SaivGyaU
maIjyzL
rTuO
JqiVoSaiBzW
fcdxtSETSP
BnHWxsZyCTqm
xspE
pAPvPGRa
xpYTFlFRZzj
cCgTaUaPA
pJpdfZqOfjf
szstLaSDMC
XdoSZ
XWQct
PsWcnMRM
rTteD
tYZmkJArvl
Skqnl
RSvYpR
zUuuqqoS
uNBmoBXE
uNpfkpoouRBF
ZbPs
ywJck
HGVGUUOQu
SXGWvZztFK
WhJoqqqb
blLZ
fpQCyXCXMR
zShcjSC
QtUdXA
qWuFxrur
aiOhJcPKjdGS
KZeBjClaAb
PfZjoJrxVg
imlHyaYo
搜索
查看: 106191|回复: 14

[分享] 解决睡眠无法唤醒、唤醒黑屏的另一种方法 [复制链接]
跳转到指定楼层
复制 

Rank: 5Rank: 5Rank: 5

UID
3644780
帖子
768
PB币
2044
贡献
0
技术
33
活跃
555
楼主
发表于 2015-4-16 16:50:59 IP属地湖北 |只看该作者 |倒序浏览
快御云安全
本帖最后由 尚目目 于 2015-4-16 16:57 编辑

我的笔记本是Asus F83VD,配置和之前安装的经历放在这儿:[交流] 华硕F83VD安装Yosemite 10.10.2已达到80+%完美,参考+交流

我之前没搞睡眠问题,但是我的原生电源管理AppleIntelPowerManagement、AppleIntelPowerManagementClient以及
AppleLPC、AppleHPET都是正常加载的。USB全部内建。
加载原生电源管理参考这两个帖子:
[教程] 通过加载AppleLPC.kext来使用MAC原生的CPU电源管理
[url=https://bbs.pcbeta.com/viewthread-1569975-1-1.html][分享] 加载AppleLPC完善睡眠唤醒(DSDT+添加主板LPC的ID)图文教程
[/url]
USB内建通过这两个帖子搞定:
[分享] DSDT修改第二季(包括USB内建)


之后开始尝试睡眠,发现我的笔记本是可以睡眠的,但是唤醒有问题。表现为:
情况一:
点击睡眠后,屏幕黑,如果几秒内(应该还没睡)点击自带键盘可中止睡眠,这个没什么。
情况二:
正常点睡眠几秒之后,硬盘等长亮几次后熄灭(在写入睡眠文件?),风扇停止,只有电源键、电池指示灯闪烁。
此时再次点击键盘,可明显发现风扇开始转动,电源键、电池指示灯均点亮,不闪烁,硬盘灯闪烁几次(读取数据?)后熄灭。
但是屏幕自始至终黑屏,触摸板、键盘、电源键均无法点亮屏幕,按Ctrl+Alt+F12没反应,只能长按电源键强制关机。
再次开机后睡眠前未退出的程序仍没有退出。
情况一、二设置HibernateMode为0、3表现相同,且/var/vm/sleepimage是存在的。

关于不同睡眠模式的具体情况,参考这个帖子:[推荐] 详解Mac睡眠模式设置

关于睡眠问题请记住两个命令比较方便(先sudo -i切换至root):

  1. pmset -g | grep hibernate
  2. pmset -a hibernatemode 0
复制代码


第一个命令查询当前睡眠模式设定,一般输出类似于“hibernatemode 0”、“hibernatemode 3”等等,表示目前处于睡眠模式0或者3。
第二个命令表示设置睡眠模式为0。
注意:更改睡眠模式之前最好先sudo /var/vm/sleepimage,然后更改睡眠模式,重启,这样新设定的睡眠模式更改才会起效。
根据睡眠相关教程,强制关机后再开机通过控制台查看System.log并搜索“hibernate”一般是可以找到相关原因的。
但是我的system.log搜索hibernate没有信息。这样我开始搜索“wake”。结果吓我一大跳,这是神马:

  1. Apr 15 08:10:05 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  2. Apr 15 16:12:18 JackiedeiMac.local apsd[52]: Peer [pid=294] requested push wake but lacks APSPushWakeEntitlement
  3. Apr 15 16:12:53 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  4. Apr 16 00:32:02 localhost kernel[0]: [ALXEthernet] kIOEthernetWakeOnMagicPacket added to filters.
  5. Apr 15 16:32:06 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  6. Apr 15 16:34:11 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  7. Apr 15 16:34:12 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  8. Apr 15 16:34:12 JackiedeiMac.local apsd[52]: Attempt to set push wake topics without dark wake enabled: ()
  9. Apr 15 16:34:19 JackiedeiMac.local apsd[52]: Peer [pid=267] requested push wake but lacks APSPushWakeEntitlement
复制代码



赶紧上论坛一搜:

attempt.PNG

呵呵,基本啥都没有。
只能求助万能的Google,结果一搜就发现InsanelyMac的一篇帖子:Can't wake up from sleep
当时那个高兴啊,一看#15的@MacNB提出一个解决办法:Yosemite fails to wake from sleep
具体的可以去看他的帖子,为了照顾英语没过四级的这里大概说一下~~~~(>_<)~~~~ ,他发现DSDT里有这么一段:
  1. Method (_INI, 0, NotSerialized)  // _INI: Initialize
  2. {
  3.    If (STRC (_OS, "Microsoft Windows"))
  4.    {
  5.        Store (0x56, SMIP)
  6.    }
  7.    Else
  8.       {
  9.           If (STRC (_OS, "Microsoft Windows NT"))
  10.           {
  11.               If (CondRefOf (\_OSI, Local0))
  12.               {
  13.                   If (_OSI ("Windows 2001"))
  14.                   {
  15.                       Store (0x59, SMIP)
  16.                       Store (Zero, OSFL)
  17.                       Store (0x03, OSFX)
  18.                   }

  19.                   If (_OSI ("Windows 2006"))
  20.                   {
  21.                       Store (0x59, SMIP)
  22.                       Store (Zero, OSFL)
  23.                       Store (0x04, OSFX)
  24.                   }
  25.               }
  26.               Else
  27.                  {
  28.                       Store (0x58, SMIP)
  29.                       Store (Zero, OSFX)
  30.                       Store (Zero, OSFL)
  31.                  }
  32.           }
  33.           Else
  34.              {
  35.                  Store (0x59, SMIP)
  36.                  Store (Zero, OSFL)
  37.                  Store (0x03, OSFX)
  38.              }
  39.       }
  40. }
复制代码



他直接改成:

  1. Method (^_INI, 0, NotSerialized)  // _INI: Initialize
  2. {
  3.     Store (0x59, SMIP)
  4.     Store (Zero, OSFL)
  5.     Store (0x04, OSFX)
  6. }
复制代码


然后问题就解决了.....
我赶紧搜我的里的_INI,没有一样的Method _INI,近似的结果我的是这样的:


  1. Method (OSFL, 0, NotSerialized)
  2.     {
  3.         If (LNotEqual (OSVR, Ones))
  4.         {
  5.             Return (OSVR)
  6.         }

  7.         If (LEqual (PICM, Zero))
  8.         {
  9.             Store (0xAC, DBG8)
  10.         }

  11.         Store (One, OSVR)
  12.         If (CondRefOf (_OSI, Local1))
  13.         {
  14.             If (_OSI ("Windows 2000"))
  15.             {
  16.                 Store (0x04, OSVR)
  17.             }

  18.             If (_OSI ("Windows 2001"))
  19.             {
  20.                 Store (Zero, OSVR)
  21.             }

  22.             If (_OSI ("Windows 2001 SP1"))
  23.             {
  24.                 Store (Zero, OSVR)
  25.             }

  26.             If (_OSI ("Windows 2001 SP2"))
  27.             {
  28.                 Store (Zero, OSVR)
  29.             }

  30.             If (_OSI ("Windows 2001.1"))
  31.             {
  32.                 Store (Zero, OSVR)
  33.             }

  34.             If (_OSI ("Windows 2001.1 SP1"))
  35.             {
  36.                 Store (Zero, OSVR)
  37.             }

  38.             If (_OSI ("Windows 2006"))
  39.             {
  40.                 Store (Zero, OSVR)
  41.             }
  42.         }
  43.         Else
  44.         {
  45.             If (MCTH (_OS, "Microsoft Windows NT"))
  46.             {
  47.                 Store (0x04, OSVR)
  48.             }
  49.             Else
  50.             {
  51.                 If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
  52.                 {
  53.                     Store (0x02, OSVR)
  54.                 }

  55.                 If (MCTH (_OS, "Linux"))
  56.                 {
  57.                     Store (0x03, OSVR)
  58.                 }
  59.             }
  60.         }

  61.         Return (OSVR)
  62.     }
复制代码
这下完全没办法了,好不容易找到一个方法结果对我不适用....没办法,直接跟帖求助(对,我英语过四级六级了,有InsanelyMac账号飘过)
上面那个第一个地址下面第#19的Jackie_ME就是我的跟帖。他给我提出办法,将上述Method (OSFL, 0, NotSerialized)里的"Windows 2001" 改成"Darwin"试试
我马上尝试了下,把Method (OSFL, 0, NotSerialized)里的所有Windows 2001***改成Darwin:


  1. Method (OSFL, 0, NotSerialized)
  2.     {
  3.         If (LNotEqual (OSVR, Ones))
  4.         {
  5.             Return (OSVR)
  6.         }

  7.         If (LEqual (PICM, Zero))
  8.         {
  9.             Store (0xAC, DBG8)
  10.         }

  11.         Store (One, OSVR)
  12.         If (CondRefOf (_OSI, Local1))
  13.         {
  14.             If (_OSI ("Windows 2000"))
  15.             {
  16.                 Store (0x04, OSVR)
  17.             }

  18.             If (_OSI ("Darwin"))
  19.             {
  20.                 Store (Zero, OSVR)
  21.             }

  22.             If (_OSI ("Darwin"))
  23.             {
  24.                 Store (Zero, OSVR)
  25.             }

  26.             If (_OSI ("Darwin"))
  27.             {
  28.                 Store (Zero, OSVR)
  29.             }

  30.             If (_OSI ("Darwin"))
  31.             {
  32.                 Store (Zero, OSVR)
  33.             }

  34.             If (_OSI ("Darwin"))
  35.             {
  36.                 Store (Zero, OSVR)
  37.             }

  38.             If (_OSI ("Windows 2006"))
  39.             {
  40.                 Store (Zero, OSVR)
  41.             }
  42.         }
  43.         Else
  44.         {
  45.             If (MCTH (_OS, "Microsoft Windows NT"))
  46.             {
  47.                 Store (0x04, OSVR)
  48.             }
  49.             Else
  50.             {
  51.                 If (MCTH (_OS, "Microsoft WindowsME: Millennium Edition"))
  52.                 {
  53.                     Store (0x02, OSVR)
  54.                 }

  55.                 If (MCTH (_OS, "Linux"))
  56.                 {
  57.                     Store (0x03, OSVR)
  58.                 }
  59.             }
  60.         }

  61. Return (OSVR)
  62.     }
  63.         
复制代码


结果你猜你猜你猜猜,你猜怎么着,睡眠唤醒正常了!hibernatemode设置成0或者3都正常,敲击键盘秒醒有木有!仿冒声卡没有唤醒无声问题有木有!

好了,这个帖子写的有点乱。方法应大概说了,要是你的Method (_INI, 0, NotSerialized)和@MacNB一样的话照他的该,和我一样奇葩的按我的改。
和上述两个的都不一样就只有自己研究研究怎么改,或者你英语过了四级直接上InsanelyMac那个帖子跟帖求助吧。

最后,愿所有折腾黑苹果的机友们早日成功!







2

查看全部评分

MEN就像一枚硬币,前面是1,后面是菊花 (&

UID
4105512
帖子
2147
PB币
3626
贡献
0
技术
102
活跃
1338

十一周年 我是大学生! 远景技术达人

沙发
发表于 2015-4-16 17:00:56 IP属地陕西 |只看该作者
还是看得一愣一愣的

Rank: 5Rank: 5Rank: 5

UID
504019
帖子
697
PB币
0
贡献
0
技术
180
活跃
1538
板凳
发表于 2015-4-16 17:02:13 IP属地四川 |只看该作者
先学习一下

Rank: 5Rank: 5Rank: 5

UID
200089
帖子
1159
PB币
2315
贡献
0
技术
99
活跃
1050
4F
发表于 2015-4-16 17:24:17 IP属地浙江 |只看该作者
Method (_INI, 0, NotSerialized)
        {
            Store (0x07D0, OSYS)
            If (CondRefOf (_OSI, Local0))
            {
                If (_OSI ("Windows 2001"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP1"))
                {
                    Store (0x07D1, OSYS)
                }

                If (_OSI ("Windows 2001 SP2"))
                {
                    Store (0x07D2, OSYS)
                }

                If (_OSI ("Windows 2001.1"))
                {
                    Store (0x07D3, OSYS)
                }

                If (_OSI ("Windows 2006"))
                {
                    Store (0x07D6, OSYS)
                }

                If (_OSI ("Windows 2009"))
                {
                    Store (0x07D9, OSYS)
                }

                If (_OSI ("Windows 2012"))
                {
                    Store (0x07DC, OSYS)
                }
            }
        }

Rank: 5Rank: 5Rank: 5

UID
200089
帖子
1159
PB币
2315
贡献
0
技术
99
活跃
1050
5F
发表于 2015-4-16 17:25:07 IP属地浙江 |只看该作者
我的是这样的,怎么弄?

渐行渐远

UID
386915
帖子
10972
PB币
17905
贡献
0
技术
289
活跃
1802
6F
发表于 2015-4-16 17:58:25 IP属地德国 |只看该作者
不错的说。慢慢学!

Rank: 5Rank: 5Rank: 5

UID
3644780
帖子
768
PB币
2044
贡献
0
技术
33
活跃
555
7F
发表于 2015-4-16 18:08:39 IP属地湖北 |只看该作者
水的根 发表于 2015-4-16 17:25
我的是这样的,怎么弄?

你也是唤醒之后其他正常就是屏幕不亮吗?如果是的话尝试把你的"Windows 2001""Windows 2001 SP1"Windows 2001 SP2“"Windows 2001.1"都替换成”Darwin“试一下吧。不行的话你可以参考那两个InsanelyMac的帖子,地址我贴在上面了,或者直接回帖@MacNB

Rank: 7Rank: 7Rank: 7

UID
624881
帖子
2927
PB币
12822
贡献
0
技术
49
活跃
3284

8周年庆典勋章

8F
发表于 2015-4-16 18:20:08 IP属地北京 |只看该作者
不错的学习一下

Rank: 11Rank: 11Rank: 11

UID
557098
帖子
7105
PB币
16141
贡献
0
技术
39
活跃
2096
9F
发表于 2015-4-16 18:43:35 IP属地上海 |只看该作者
好复杂,不过有时间慢慢看吧。

Rank: 5Rank: 5Rank: 5

UID
200089
帖子
1159
PB币
2315
贡献
0
技术
99
活跃
1050
10F
发表于 2015-4-16 19:30:47 IP属地浙江 |只看该作者
尚目目 发表于 2015-4-16 18:08
你也是唤醒之后其他正常就是屏幕不亮吗?如果是的话尝试把你的"Windows 2001""Windows 2001 SP1"Windows  ...

我的是唤醒直接断电,再启动如果插电源,电源灯亮一下就重启,不停魂环。拔掉电源启动重启一次再开就好了。

Rank: 5Rank: 5Rank: 5

UID
3644780
帖子
768
PB币
2044
贡献
0
技术
33
活跃
555
11F
发表于 2015-4-16 19:38:48 IP属地湖北 |只看该作者
水的根 发表于 2015-4-16 19:30
我的是唤醒直接断电,再启动如果插电源,电源灯亮一下就重启,不停魂环。拔掉电源启动重启一次再开就好了 ...

哦,问题不一样嘛...建议先参考[交流] 黑苹果睡眠实现方法交流解决好这些再试试哦

远景FANS

UID
424619
帖子
4181
PB币
535
贡献
0
技术
748
活跃
2223

巡察使 我是大学生!

12F
发表于 2015-4-16 20:16:54 IP属地北京 |只看该作者
不错啊!赞一个,毕竟睡眠问题是笔记本一大心病。

Rank: 2Rank: 2

UID
2938724
帖子
236
PB币
405
贡献
0
技术
6
活跃
486
13F
发表于 2015-4-16 21:45:23 IP属地四川 |只看该作者
标记下!!!  

Rank: 2Rank: 2

UID
3519247
帖子
235
PB币
6
贡献
0
技术
41
活跃
369
14F
发表于 2015-4-16 21:59:18 IP属地新疆 |只看该作者
谢谢分享!!!!!!!!!!

少尉

Rank: 2Rank: 2

UID
4172318
帖子
184
PB币
107
贡献
0
技术
1
活跃
144
15F
发表于 2015-4-19 21:53:53 IP属地上海 |只看该作者
谢谢分享
回顶部
Copyright (C) 2005-2024 pcbeta.com, All rights reserved
Powered by Discuz!  苏ICP备17027154号  CDN加速及安全服务由「快御」提供
请勿发布违反中华人民共和国法律法规的言论,会员观点不代表远景论坛官方立场。
远景在线 | 远景论坛 | 苹果论坛 | Win11论坛 | Win10论坛 | Win8论坛 | Win7论坛 | WP论坛 | Office论坛