Deep Sleep v. 1.2 documentation
Matthieu Beaumel, Aug. 9th 2010

This software is distributed WITHOUT ANY WARRANTY.
Deep Sleep is a simple Dashboard widget which allows users to put their computer intohibernation. This widget only works on a limited number of Apple computer models. Most
users should read sections 1, 2, 3, 4 and 5 of this document. Advanced users can also
read sections 6, 7 and 8 to learn more about the inner workings of the widget and thepower saving modes of Mac OS X. Finally, sections 9, 10 and 11 might be useful if you experience issues while running the widget.

Table of contents
1.

Purpose of the Deep Sleep widget ...............................................................................12.

System requirements ...................................................................................................2

3.

Installation and use ......................................................................................................24.

Removal of the widget ..................................................................................................3

5.

Known issues ...............................................................................................................36.

More information about sleep and hibernation .............................................................4

7.

Description and modification of the different hibernate modes ....................................48.

Deep Sleep operation in detail .....................................................................................59.

How to enable safe sleep on unsupported computers .................................................510. Frequently Asked Questions ........................................................................................611. Contact information ......................................................................................................712. Version history .............................................................................................................713. Distribution and modification of this software ...............................................................814. Additional credits ..........................................................................................................81. Purpose of the Deep Sleep widget
Deep Sleep is a convenient way to make your computer hibernate. Hibernation is a different way to turn off your computer. When entering into hibernation, your system will be totally switched off and no power will be used. However, when you turn back on your computer, you will find it in the same exact state as when it entered hibernation. Open software1and documents will still be on your desktop, music will continue to play in the background... just as if you had never turned it off.

2. System requirements
The following operating systems are supported:• Mac OS X Tiger from 10.4.3 to 10.4.10• Mac OS X Leopard from 10.5.0 to 10.5.8• Mac OS X Snow Leopard from 10.6.0
Later versions may work, but are not tested. Earlier versions will definitively not work.
Any computer with the safe sleep function is supported. This includes :• Apple Powerbook HD 12”, 15” and 17” (released on October 2005)• Apple Macbook Pro 15” and 17” (released on January 2006)• Apple Macbook 13.3” (released on May 2006)• Apple iMac “intel” (released on January 2006)• Apple Mac Mini “intel” (released on February 2006)• Apple Mac Pro (released on August 2006)
This list will grow as newer hardware is introduced by Apple. However, there is an unsupported way to make this widget work on most of the recent computers. Cautious users canlearn about it in section 9.

3. Installation and use
Install Deep Sleep in Dashboard by double-clicking on its
icon.
The widget will appear as a moon. To put your computer inhibernation, click on it once. You should eject all external
devices before entering hibernation.
On first use, the widget will ask for an administrator password. Enter it, click the OK button, then click again on themoon to switch on hibernation. Deep Sleep will only ask
once for your password, unless a wrong one is entered.
To exit hibernation, press on the power button of your computer. During the wake up, aprogress bar showing the state of the process will be shown.
Several configuration options are available for advanced users on the back panel of thewidget. This panel can be reached by clicking on thesymbol on the lower right of themoon. Two fields can be set:2

• Regular sleep mode: chooses the sleep mode which will
be used when the computer is sent to sleep by the Applesystem menu, or when its lid is closed on laptops.
• Widget sleep mode: chooses the sleep mode which will
be used when the widget is clicked on.
For each of these two fields, three settings are available:• Quick: No hibernation features are enabled. Also known
as mode 0.
• Safe: Hibernation features are only used when the computer runs out of battery power.
Also known as mode 3 or 7.
• Deep: Full hibernation. Also known as mode 1 or 5.
The exact operation of these modes is described in section 7.
By default, the widget sleep mode setting is deep. The regular sleep mode default depends on the computer model used: this is usually quick for desktop computers, and safe
for laptops computers.

4. Removal of the widget
To remove the widget, locate the Deep Sleep.wdgt file in the Library/Widgets
folder of your home directory, and put it to the trash. You can also remove the configuration
file named widget-fr.beaumel.widget.deepsleep.plist in the Library/Preferences folder of your home directory.
If the computer still enters hibernation after the removal of the widget, please refer to section 7 in order to set back the hibernation mode to 0, 3 or 7.

5. Known issues
At the time of writing of this document, the following issues are known:• Mac OS X 10.4 may crash with a kernel panic at wake-up from hibernation if one the thefollowing devices are connected:‣ IPEVO Free-One USB handset;‣ D-Link G122 USB adapter.
• On a Macbook Pro, the “Tap trackpad with two fingers for secondary click” feature may
get disabled after wake-up from hibernation. Unchecking and checking again the option in
the Keyboard and Mouse pane of the System Preferences will restore the correct behavior.
This issue might have been fixed in Mac OS X 10.4.9.
• On a Macbook Pro, the keyboard may get disabled if text is entered too soon after wakeup from hibernation. A reboot is needed to fix the correct behavior.

3

These issues are not related to the widget by itself, but to the Mac OS X kernel. Should
you encounter them, there is unfortunately little I can do to fix them for the time being.
• Parts of the text on the widget might get stuck and stop fading out under rare circumstances. This does not affect the correct behavior of the widget. This issue can be fixed byreloading the widget: see section 10 for full details.

6. More information about sleep and hibernation
The state of a computer is stored into its main memory, which is also called RAM. When acomputer is powered off, the contents of this memory are irremediably wiped out. Hibernation works in the following way: before being powered off, the computer saves all the contents of the memory to a file on the hard disk drive. On wake up, data stored in this file isread out and restored to the memory. Therefore, the RAM contents are the same before
and after the hibernation process, and the state of the computer is also the same. The
saved file is named sleepimage, and is located in the /private/var/vm directory. Hibernation is sometimes also called “software suspend” or “suspend to disk”.
The default suspension feature of Mac OS X, called sleep works in a different way. Whenentering sleep, every subsystem of the computer is shut down, except the main memory
which is still powered. This process preserves the contents of the memory, and allows thecomputer to wake up quickly. However, a sleeping computer still consumes a small
amount of power. Sleep is sometimes also called “hardware suspend” or “suspend toRAM”.
Apple introduced the safe sleep feature in Mac OS X 10.4.3 for the Powerbook HD line oflaptops. This feature is a variation of the default suspension behavior. The main memory isstill powered during the sleep, but the contents of the memory are also saved to the disk at
the beginning of the operation. The saved file will only be used if the laptop runs out of battery power while sleeping, in order to restore the original state of the computer.
This safe sleep feature is what makes hibernation possible in Mac OS X 10.4.3 and above.

7. Description and modification of the different hibernate modes
When the computer goes into sleeping mode, its behavior depends on a power management variable called hibernate mode. The hibernate mode can be set to different values:• 0 (quick): Default sleep behavior on most Apple computers. RAM is still powered on while
sleeping. Wake up is fast. Safe sleep is disabled.
• 1 (deep): Hibernation behavior. System is totally shut down while sleeping. RAM contents
are dumped to disk. Wake up is slow.
• 3 (safe): Default behavior on Powerbook HD and later computers. RAM is still poweredon while sleeping. Wake up is fast. Safe sleep is enabled, so RAM contents arealso dumped to disk before going to sleep.
• 5 (deep): Same as mode 1 for systems with encrypted virtual memory.
• 7 (safe): Same as mode 3 for systems with encrypted virtual memory.

4Only a single mode can be activated at a time. In order to check what hibernate mode iscurrently active, the following command can be used in the Terminal application:pmset -g | grep hibernatemode
In addition, users with administrator privileges can choose the hibernate mode. In order todo so, the following command can be used:sudo pmset -a hibernatemode X
with X replaced by the value of the hibernate mode to set.
The hibernation modes which will be used by the system and the widget can be set on thewidget back panel. Refer to section 3 in order to access it.

8. Deep Sleep operation in detail
Deep Sleep allows you to use hibernation without having to use the Terminal to change thehibernation mode. When clicking on it, its operation can be broken down into the following
steps:• check if the operating system revision is supported;• check if the hibernation file is present on the system;• check what the current hibernate mode setting is, and store it;• check if the system is using encrypted virtual memory;• set the hibernate mode to the widget sleep mode chosen on the back panel, dependingon the previous step;• tell the system to go down to sleep;• on wake up, restore the original hibernate mode.
In order to modify the regular sleep behaviour, Deep Sleep uses a similar process:• check if the operating system revision is supported;• check if the hibernation file is present on the system;• check if the system is using encrypted virtual memory;• set the hibernate mode to the safe sleep mode chosen on the back panel, depending on
the previous step.

9. How to enable safe sleep on unsupported computers
This operation is unsupported and might cause unexpected behavior or damage yourcomputer. Do it at your own risk. A “hack” to enable the safe sleep behavior on most of therecent Apple computers has been found and published on the internet. Deep Sleep will
work on computers supporting this “hack”.
5Read more about it at http://matt.ucc.asn.au/apple/machibernate.html.

10. Frequently Asked Questions
What is the difference between sleep and hibernation ?
To make a long story short, sleep uses power while hibernation does not. On theother hand, waking up from sleep is almost instantaneous, whereas waking up fromhibernation can take many seconds. Read section 6 for more technical details.
How to uninstall the widget ?
Find the Library/Widgets folder in your home folder, and throw the Deep Sleep file tothe trash.
Why should I eject my external drives before entering hibernation ? This is not reallyhandy.
USB and Firewire ports get powered off during hibernation, which could cause dataloss. An automated ejection procedure is likely to appear in a future revision of thiswidget.
Why does the widget need my password ?
As described in section 8, Deep Sleep needs to change the hibernate mode of thecomputer. This operation needs administrator (also called root) privileges. Regular
software cannot gain this kind of privileges without the password of an administrator.
The password is only asked once. Does this mean the widget keeps my password stored
somewhere ?
No, the widget does not keep your password stored. When you enter your password
for the first time, you grant the widget the right to gain administrator privileges whenever needed. For the technically inclined, this operation is called setuid root.
Is there a way to use this software without Dashboard ?
Yes. The widget itself is only an interface to a command line utility called deepsleep
which does all the “magic work”. You will find this utility inside the widget package, bycontrol-clicking on it and selecting “Show Package Contents”.
The computer did not come out of hibernation correctly. I had to shut it down manually.
Now every time I try to make the computer sleep, it enters hibernation instead. What can I
do ?
As the computer crashed during wake up, Deep Sleep was unable to set back thecorrect hibernate mode. Access the back panel of the widget as described in section
3, and set the regular sleep mode to quick or safe. Alternatively, you can consult section 7 to set back manually the hibernate mode to 3 or 7.
I get the following message when I try to switch on hibernation : “Hibernation file is missing”. What does this mean ?

6This means that the hibernation file, located in /private/var/vm/sleepimage
does not exist. There are two usual causes of this error.
Most of the times, you will get this error message if your computer does not support
safe sleep. Refer to section 9 to enable it.
In rare cases, you will get this error message on a supported computer if for a reasonor another, the hibernation file has never been created. In order to create it, pleaserefer to section 7 to set the hibernation mode to 1, then back to 0.
I get the following message when I try to switch on hibernation : “Failed to get the hibernation mode”. What does this mean ?
This means that the widget was unable to determine the sleep mode that is currently
selected on your computer. You might get this message if safe sleep is not enabledon your computer. Refer to section 9 to enable it.
I get the following message when I try to switch on hibernation : “Install the widget in root
Library folder”. What does this mean ?
This means that you are using FileVault in order to encrypt your home folder. As encrypted home folders are mount by Mac OS X in nosuid mode, the widget is unable
to gain administrator privileges required for its correct operation. As a consequence,
you should install the widget in the Library/Widgets folder located at the root of
your system hard drive.
Several lines of text are stuck on the widget, and no longer fade-out. How can I get rid ofthem ?
Access the back panel of the widget as described in section 3, then press simultaneously the keys ⌘ and R in order to reload the widget.
The widget does not work and keeps crashing ! What can I do ?
Unfortunately, this means that your computer is probably not supported. You can try
sending me an e-mail with the error messages and a description of the behavior of
the software, and Iʼll do my best to help you. See section 11 for contact information.

11. Contact information
For most enquiries, suggestions or casual gossip, you can contact me by electronic mail at
matthieu.beaumel@fastmail.fm or cochonou@fastmail.fm.
You should always be able to find the latest version of this widget at the following URL:
http://deepsleep.free.fr.

12. Version history• 0.1 : Initial test release.
• 0.2 : Added the automated setuid procedure to the widget.
• 0.3 : Made a few cosmetic changes to the widget.

7• 0.4 : Added an operating system revision check to the command-line utility. First version
to be widely released.
• 0.5 : Added an hibernation file check to the command-line utility. Updated the documentation with a few common issues.
• 0.6 : Fixed a bug which would cause some computers models to only enter deep sleep
when the “custom” power profile was selected. Support for x86 architecture added.
• 0.7 : Added the default mode restoration behavior: if the widget detects that the computerhas crashed, it will set back the hibernation mode to its default setting. Added aworkaround to prevent widget messages from not showing up in special circumstances. Added the detection of systems running FileVault.
• 0.8 : The widget can now work with non-administrator accounts. Added protection frommultiple clicks. Changed the name of a file to enable the widget to work on case sensitive HFS+ filesystems. Added a workaround to enable the widget to work on computers supporting hibernation, but missing the hibernation file.
• 0.9 : Added a back panel allowing the modification of the system and widget sleep mode.
This takes the place of the automatic crash recovery behavior introduced in version
0.7, which is now disabled. More modifications in order to make the widget work on
case sensitive HFS+ filesystems. Added support for Mac OS X 10.4.10 and Mac OS
X 10.5.
• 1.0 : Fixed a layout bug under Mac OS X 10.5 and Safari 3. Upgraded to GPLv3. Miscellaneous documentation and source code cleanup for a better readability.
• 1.1 : Worked around an issue which caused a significant time delay before sleep under
Mac OS X 10.5. Fixed a rare synchronization issue which could cause computerswith secure virtual memory to enter incorrect hibernation modes. On the password
backpanel, put the focus on the password field by default.
• 1.2 : Changed the authentication method from sudo to Applescript. This should fix theauthentication issues under Mac OS X 10.6. Thanks to Oliver Kusche for finding thissolution.

13. Distribution and modification of this softwareThis software is free and can be distributed under the terms of the GNU General Public
License version 3 (GPLv3). You can find a copy of the GPL in the included file named“GPL-3.0.txt”, in the directory called “license” of the widget package, or on the internet atthe http://www.gnu.org/licenses/gpl.html address.
The source code of the deepsleep command line utility can be found in the directory
called “source” of the widget package. This utility is released under the GPL, and therefore
can be modified under its specific terms to suit your needs.

14. Additional credits
This widget uses the wonderful GreyWyvern's Buffered Text-fade Effect, which you can get
at http://www.greywyvern.com/code/js/fade.
8

Thanks to the adventurous people at http://forum.macbidouille.com who have tested thewidget in its early stages, and to every user who gave me feedback by e-mail.
Thanks to Fabio Corneti for his help on troubleshooting case-sensitive HFS+ filesystem
issues.
Many thanks to Oliver Kusche for fixing up the authentication problems with Snow Leopard.

9