Set newer portable Macs' sleep mode

The other day, I created a mixed text/video blog for the Mac911 column discussing the Safe Sleep feature on newer laptop Macs. Read the article for a more detailed description, but basically, Safe Sleep puts the contents of your machine’s RAM onto the hard drive each time you put it to sleep. In the event that your Mac loses power completely while sleeping (the battery falls out, you lose the machine for three weeks, etc.), you won’t lose any of your work. (This also means you can easily swap batteries on that long cross country flight.) Instead, your machine enters a hibernation mode, whereby it’s using no power at all. When you next connect power, Safe Sleep will read the contents of the hard drive back into RAM, letting you come right back to where you were—with open applications and documents intact.

There are some downsides to this, however. You’ll give up some hard drive space, for instance—an amount of space equal to your machine’s RAM, plus another 750MB. So on my MacBook, that’s 2.75GB of drive space, or just under 4 percent of my drive’s capacity. In addition, putting the machine into sleep mode takes notably longer. If you watch the video I created, there’s a delay of 10 or so seconds between the time the lid is closed and the power light goes from solid to its normal gentle blinking state. It’s during this time that the machine is writing the contents of RAM to the hard drive. As I noted, in theory nothing should go wrong if you decide to open the lid during this period (when you realize you forgot to print that one important document, for instance). However, there are quite a few stories of people doing just this, and winding up with a machine with a black screen, requiring a full restart to recover.

If these downsides are too much for you, and you’d rather have the old “unsafe” sleep mode back, it’s pretty easy to do just that. It will require a quick trip into Terminal (in /Applications -> Utilities).

Check the current setup

After you launch Terminal, the first step is to determine which sleep mode your Mac is currently using (in case you wish to go back to it). You can both view and change the sleep mode using the Unix program pmset. To see your current settings, type pmset -g | grep hibernatemode. You should see something like this:

	$ pmset -g | grep hibernatemode

hibernatemode 3

Great, so your machine is using mode 3, whatever that might be. Well, thanks to the documentation for the handy Deep Sleep Dashboard widget, which puts your machine immediately into hibernation mode (so you don’t have to yank all the power sources to invoke it), we can tell exactly which mode is which:

  • 0 - Old style sleep mode, with RAM powered on while sleeping, safe sleep disabled, and super-fast wake.
  • 1 - Hibernation mode, with RAM contents written to disk, system totally shut down while “sleeping,” and slower wake up, due to reading the contents of RAM off the hard drive.
  • 3 - The default mode on machines introduced since about fall 2005. RAM is powered on while sleeping, but RAM contents are also written to disk before sleeping. In the event of total power loss, the system enters hibernation mode automatically.
  • 5 - This is the same as mode 1, but it’s for those using secure virtual memory (in System Preferences -> Security).
  • 7 - This is the same as mode 3, but it’s for those using secure virtual memory.
Once you see which mode you’re presently using, make a note of it. You could do this in one step, actually, with a command like this:

sudo pmset -g | grep hibernatemode > ~/Desktop/current_mode.txt

That will take the output of the pmset command, strip out everything other than the hibernatemode value, and then dump the result into a file on your desktop named current_mode.txt. Save this file for future use.

Note: I’m being overly cautious here on purpose. The reality is that, unless you’ve messed with this setting before, your Mac will either be in mode 0 (in which case, this tip doesn’t matter, as your Mac is using old-style sleep), or mode 3 or 7 (the default for machines shipped since last fall). Saving a text file to remember a 3 or a 7 is really overdoing things, but at least you won’t be able to say you don’t remember which mode your machine was in.

Change the sleep mode setting

To change your sleep mode, you use pmset again, providing the variable and value you wish to assign. So to return to the old style sleep mode (which is mode 0 from the above list), enter this command:

sudo pmset -a hibernatemode 0

Press Return, and you’ll be asked for your password. Provide it, and your sleep mode has been changed. If you ever wish to go back to your previous setting, just repeat the above command, but replace 0 with the value from your current_mode.txt file.

And yes, this means you can also set your machine to always go directly into hibernation mode by running the above command with 1 at the end. I find it much simpler, though, to use the Deep Sleep widget linked above—and the widget also returns the hibernatemode setting to its prior value, which means that you can use the widget for hibernation, and still enter normal sleep mode when you simply close the lid.

Note that restarting is not required for these changes to take effect.

Recover some drive space

If your machine was previously set to mode 3 (or 7 ) and you’ve reverted to the old style sleep mode, you’ve got one more step to take: recover the drive space used up by the copy of your system’s RAM, which was created the last time you slept the machine prior to making the switch. In Terminal, enter these two commands, pressing Return after each and providing your password when asked:

	cd /var/vm

sudo rm sleepimage

If you ever return to the new style sleep mode, the sleepimage file will be automatically recreated when you execute the sudo pmset command—yes, it creates the file as soon as you execute the command, not the first time you put the machine to sleep.

Wrap up

Personally, I find the new sleep mode a blessing, and I’ve left my machine in that mode. If you prefer the old behavior, however, now you know exactly how to get it back. Yes, it requires a trip into Terminal land, but it’s really not that hard to do once you’re there.

Subscribe to the Best of Macworld Newsletter

Comments