Dlaczego mój MacBook Pro nie śpi automatycznie?

16

Mam MacBooka ustawionego w tryb uśpienia po 2 minutach na zasilaniu bateryjnym (poprzez panel preferencji Oszczędzanie energii). Gdy jednak pozostawiam go bezczynnego, wyłącza tylko ekran - w rzeczywistości nie śpi. Oznacza to, że jeśli go zostawię i zapomnę zamknąć pokrywkę, zawsze kończy się to rozładowaną baterią.

System śpi poprawnie, jeśli jest uruchamiany ręcznie ( - uśpienie) lub przez zamknięcie pokrywy. Przetestowałem to bez podłączonych urządzeń USB i na nowym koncie użytkownika, na wypadek, gdyby program działający w tle uniemożliwiał sen. Nie ma żadnych istotnych informacji drukowanych na konsoli w czasie, gdy system powinien spać.

Zresetowałem PRAM i SMC bezskutecznie, a także zwykłe przesądne uprawnienia Zweryfikuj dysk.

Czy jest coś jeszcze, co powinienem wypróbować przed ponowną instalacją OS X?

To jest MacBookPro5,5uruchomiony system operacyjny 10.6.6.

Warto zauważyć, że jakiś czas temu cierpiałem na ten problem z powodu błędu w demonie pomocniczym dla produktu Rzeczy , ale ten problem był nieco inny i dotyczył uśpienia wyświetlacza. Ponadto sprawdziłem, czy demon pomocnika nie działał podczas moich testów.

Dodatkowe informacje:

Rozpocząłem pracę nad dokumentem Apple zatytułowanym „ Dlaczego komputer Mac nie może spać lub pozostać w trybie uśpienia. Odkryłem, że ten problem nie pojawia się po bezpiecznym uruchomieniu komputera. Po diffprzejrzeniu list procesów odkryłem, że następujące programy działają tylko podczas normalnego rozruchu, a zatem są potencjalnymi winowajcami:

  • Quick Look Helper
  • cvmsComp_x86_64
  • kextcache
  • launchd
  • mdworker
  • mdworker
  • nmblookup
  • vmnet-bridge
  • vmnet-dhcpd
  • vmnet-dhcpd
  • vmnet-natd
  • vmnet-netifup
  • vmnet-netifup
Phil Calvin
źródło
Upewnij się, że ustawiasz tryb uśpienia komputera, a nie ekran uśpienia. Zdjęcie tutaj: imgur.com/yVGb4.png
Nathan Greenstein
1
Czy z ciekawości możesz spróbować ustawić opcję Wyświetlaj uśpienie po uśpieniu komputera? Może znajdziemy błąd. Inna rzecz, która przychodzi mi na myśl: może twój wygaszacz ekranu aktywuje i powstrzymuje coś od spania (byłby to również błąd). Spróbuj zmieniać ustawienia, aż przejdzie płynnie, wygaszacz ekranu, uśpienie wyświetlacza, uśpienie komputera, z odstępem co najmniej jednej minuty.
Nathan Greenstein
1
Panel preferencji uniemożliwia ustawienie opcji Wyświetlaj uśpienie po uśpieniu komputera. Wypróbowałem je zarówno jako to samo, jak i inne (myśląc, że ten pierwszy może mieć błąd.) Próbowałem też wygaszacza ekranu, uśpienia wyświetlacza i uśpienia komputera z minutą między nimi, ale bez kości.
Phil Calvin
1
@Martin Wickman: Mogłem to rozwiązać. Miałem mniej niż 5% wolnego miejsca na woluminie systemowym, który był rejestrowany w dzienniku systemowym (ale nie w sposób, który wyjaśniał, że istnieje związek). Uwolnienie 50 GB rozwiązało problem. Czy brakuje ci też wolnego miejsca?
Phil Calvin
1
Właśnie dowiedziałem się, pmset -g assertionsktóre pokazuje pewne informacje o tym, jaki proces (lub coś) uniemożliwia sen. Sprawdź to.
Martin Wickman

Odpowiedzi:

5

Aby ułatwić debugowanie problemów ze snem, wypróbuj pmsetpolecenie w terminalu:

$ pmset -g assertions

Assertion status system-wide:
   ChargeInhibit                           0
   PreventUserIdleDisplaySleep             0
   PreventUserIdleSystemSleep              1
   NoRealPowerSources_debug                0
   CPUBoundAssertion                       0
   EnableIdleSleep                         1
   PreventSystemSleep                      0
   DisableInflow                           0
   DisableLowPowerBatteryWarnings          0
   ExternalMedia                           0

Listed by owning process:
  pid 2520: [0x0000012c000009d8] PreventUserIdleSystemSleep named: "com.apple.audio.'AppleHDAEngineOutput:1B,0,1,2:0'.noidlesleep" 

W tym przypadku jest to proces zepsucia 2520. Sprawdź to na monitorze aktywności i zabij (/ usr / sbin / coreaudiod uruchomiony przez iTunes).

Następnie ponownie uruchom polecenie:

Assertion status system-wide:
   ChargeInhibit                           0
   PreventUserIdleDisplaySleep             0
   PreventUserIdleSystemSleep              0
   NoRealPowerSources_debug                0
   CPUBoundAssertion                       0
   EnableIdleSleep                         1
   PreventSystemSleep                      0
   DisableInflow                           0
   DisableLowPowerBatteryWarnings          0
   ExternalMedia                           0

Brak flag dla PreventUserIdleSystemSleep.

Martin Wickman
źródło
To fantastyczne zastosowanie, o którym pmsetnie wiedziałem. Dziękuję za zwrócenie mojej uwagi na to.
Phil Calvin,
Co robisz, jeśli proces nie jest uruchomiony i PreventUserIdleDisplaySleepnadal jest ustawiony na 1?
Abhi Beckert,
4

Mam ten sam problem z moim MacBookiem Pro 3,1. To bardzo frustrujące. Poszedłem tak daleko, że całkowicie przeinstalowałem OS X, co nie rozwiązało problemu. To prowadzi mnie do przekonania, że ​​w moim przypadku to prawdopodobnie problem ze sprzętem.

Zrezygnowałem z rozwiązania problemu i po prostu korzystam z PleaseSleep .

PleaseSleep to oprogramowanie narzędziowe przeznaczone dla systemu Mac OS X, które pomaga uśpić komputer, gdy wiesz, że jakaś inna aplikacja uniemożliwia przejście komputera Mac w tryb uśpienia.

PleaseSleep siedzi w tle i czeka na wyłącznik czasowy ustawiony w panelu preferencji Oszczędzania energii. W zależności od ustawionych preferencji PleaseSleep spróbuje uśpić komputer po uruchomieniu zaplanowanego wyłącznika czasowego. PleaseSleep jest bardzo łatwy w konfiguracji, możesz włączyć, wyłączyć i uzyskać dostęp do jego preferencji za pomocą ikony paska menu systemowego. Możesz wybrać, aby PleaseSleep aktywował funkcję uśpienia przez cały czas, lub możesz powiedzieć PleaseSleep, aby aktywował funkcję uśpienia tylko wtedy, gdy niektóre aplikacje są uruchomione.

Graham
źródło
To jest straszne! Jeśli nie będę w stanie znaleźć „prawdziwego” rozwiązania, z pewnością wypróbuję ten produkt i zaakceptuję odpowiedź. Jestem jednak uparta i jeszcze nie chcę się poddawać. =)
Phil Calvin
Nie działa w dniu 10.8
sorin
3

Wreszcie mój system znów niezawodnie śpi. Zmieniłem trzy rzeczy, aby osiągnąć ten punkt, z których wszystkie, moim zdaniem, przyczyniły się:

  • Brakowało mi miejsca na dysku (mniej niż 5% wolnego miejsca) na głównym woluminie. Jądro narzekało na to system.log(widoczne w Console.app) na czas, kiedy powinien spać.

  • Wyłączyłem Dropboksa, który często i niezręcznie uzyskuje dostęp do dysku, i ma zapobiegać zasypianiu w Snow Leopard.

  • Uaktualniłem ze wstydliwie starego Chromium co noc i mam teraz 11.0.658.0 (73560) . Istnieje kilka błędów otwarte na ten temat Chrome / Chromium zapobieganiu bezczynności sen. Odkryłem to jednak dopiero po przejściu systemu w stan bezczynności po ponownym uruchomieniu komputera bez uruchomionych programów.

Obserwacje techniczne są następujące:

Warto zauważyć, że okienko preferencji Oszczędzania energii leży nieco. Mam ustawiony tryb uśpienia i wyłączam ekran po 1 minucie, ale system tak naprawdę nie przechodzi w tryb uśpienia przez 3 minuty i 30 sekund, ani nie trwa kilka sekund, aby zapisać obraz Bezpiecznego snu. Ekran zajmuje 2 minuty, aby przejść do trybu uśpienia. Podejrzewam, że jest to przypadek, w którym Apple wie lepiej od nas - 1 minuta jest prawdopodobnie zbyt szybka. Niezależnie od tego utrudnia to debugowanie takich problemów, ponieważ musisz poczekać dłużej niż wskazano, aby sprawdzić, czy system naprawdę będzie spał.

Fakt, że te dwie aplikacje przyczyniły się do tego, mimo że nie robił nic szczególnie intensywnego, sugeruje, że Snow Leopard zmienił coś w tym, jak system decyduje, czy może wystąpić bezczynność. Istnieje udokumentowany interfejs API do wyłączania bezczynnego trybu uśpienia, ale wydaje się również, że aktywność dysku (w szczególności zapisywanie) więcej niż raz na minutę również resetuje licznik czasu uśpienia, a zatem opóźnia sen. Każda aplikacja, która często pisze, jest zatem możliwą przyczyną. sudo fs_usage -e grep -f filesys | grep -e writew oknie terminala może pomóc w ujawnieniu sprawców.

Phil Calvin
źródło
1
Prawdopodobnie użytym tutaj poleceniem powinno być: sudo fs_usage -e grep -f fileys | grep write Bez -e, po prostu zwymiotuje grep pisze. Niepomocne.
Dominic Hopton,
Ciekawy! Podczas testowania tego na Snow Leopard nie wystąpiły wymioty, ale na Lion. Naprawiony.
Phil Calvin,
Na forach dyskusyjnych Apple jest dość długi wątek, który sugeruje, że Lion wprowadza pewne nowe możliwe problemy ze snem dotyczące drukarek i udziałów sieciowych. Więcej rzeczy do wypróbowania, jeśli jesteś, tak jak ja, pod koniec rozumu.
Phil Calvin,
0

Może to być indeksowanie Spotlight. Możesz to sprawdzić, przechodząc do Preferencji systemowych> Spotlight> Wyniki wyszukiwania i odznaczając wszystko. Sprawdź, czy Twój MacBook idzie spać.

conorgriffin
źródło
Wyłączyłem indeksowanie mdutil -a -i off, ale problem nadal występował. Daj mi znać, jeśli nie jest to funkcjonalnie równoważne z twoją sugestią.
Phil Calvin
Nie wiem, czy jest funkcjonalnie taki sam. Ale testowanie jest szybkie, więc dlaczego nie spróbować zgodnie z opisem?
conorgriffin
Czy masz skype?
Martin Marconcini,
@ martin-marconcini - Pytasz @ Phil-Calvin czy ja?
conorgriffin