MacBook – Why won’t the MacBook Pro automatically sleep

batterymacbook prosleep-wake

I have my MacBook set to go to sleep after 2 minutes while on battery (via the Energy Saver preference pane.) However, when I leave it idle, it only turns off the screen—it does not actually sleep. This means that if I leave it and forget to close the lid, it always ends up with a dead battery.

The system sleeps correctly if it is triggered manually ( – Sleep) or by closing the lid. I have tested it with no USB devices connected and on a fresh user account, on the chance a background program was preventing sleep. There is no relevant information printed to the Console at the time when the system should sleep.

I've performed a PRAM and SMC reset to no avail, as well as the usual superstitious Verify Disk Permissions.

Is there anything else I should try before I reinstall OS X?

This is a MacBookPro5,5 running OS 10.6.6.

It's worth noting that I suffered from this issue some time ago due to a bug in a helper daemon for the product Things, but that this issue was slightly different and involved display sleep. Also, I have verified that the helper daemon was not running during my tests.

Additional information:

I started working through the Apple document titled "Why your Mac might not sleep or stay in sleep mode." I discovered that this issue does not appear when I Safe Boot my computer. I diff'd the process lists and discovered that the following programs are only running when in normal boot, and are thus possible culprits:

  • Quick Look Helper
  • cvmsComp_x86_64
  • kextcache
  • launchd
  • mdworker
  • mdworker
  • nmblookup
  • vmnet-bridge
  • vmnet-dhcpd
  • vmnet-dhcpd
  • vmnet-natd
  • vmnet-netifup
  • vmnet-netifup

Best Answer

To help debug sleeping issues, try the pmset command in the terminal:

$ 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" 

In this case, it's the process 2520 messing up. Check it out in activity monitor and kill it (/usr/sbin/coreaudiod started by iTunes).

After that, run the command again:

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

No flags for PreventUserIdleSystemSleep.