Here are the exact steps needed on my Lucid Lynx. Please note that you need to have Kernel 2.6.22 or later for this to work.
1) Install the Power management interface tools.
sudo apt-get install powermanagement-interface
2) Copy the following code somewhere in your filesystem and save it as "suspend_x_hours.sh".
#!/bin/bash3) Schedule the script in root's crontab. e.g the following crontab entry runs at 8PM and puts the system in sleep for 10 hours, waking it up at 6:00 AM.
# This script puts the system under standby mode for x hoursusage() {echo "usage: $0 <n-hours>"echo "where <n-hours> is the number of hours to be on standby"exit 0
}
if [ $# -ne 1 ]thenusagefi
PATH=$PATH:/usr/sbin
hours=$1
echo 0 > /sys/class/rtc/rtc0/wakealarm
echo `date '+%s' -d "+ $hours hours"` > /sys/class/rtc/rtc0/wakealarm
pmi action suspend
00 20 * * * /home/venkat/bin/suspend_x_hours.sh 10 2>/dev/null
That's it. It takes only about 10 seconds to resume from sleep and it even restores your SSH sessions when it comes back from sleep!
Hope you find it useful.
8 comments:
I'd like to use this but haven't been able to get to work yet. If I copy the code exactly and save it to "suspend_x_hours.sh" in my /etc directory, then, as I understand it, I should enter the following script in root's crontab:
00 20 ***/etc/suspend_x_hours.sh 10 2>dev/null
This isn't working for me with 10.04 Kernel 2.6.32-28-server.
Should I change any of the values in the "suspend_x_hours.sh" code, such as replacing "n" in lines 4 & 5 and "hours" in line 17 with my chosen values?
I'd like to use this but I don't know what I'm doing wrong.
Does it matter that I don't have a "wakealarm" file in /sys/class/rtc/rtco/ ? I see I have a text document file called "wakealarm" in /sys/dev/char/254:0
Mark,
If you don't have wakealarm in /sys/class/rtc/rtc0 (zero not oh), it probably indicates either your hardware is not ACPI supported/enabled or due to a kernel bug.
https://bugs.launchpad.net/ubuntu/+source/linux/+bug/195263
Hope this helps,
Hi Vencat,
Thanks for your reply. After reinstalling 10.04 I've now found the wakealarm in /sys/class/rtc/rtc0. I checked ACPI is enabled in the bios, and it is, and I'm wondering why I can't get it to work.
To put the PC in standby between 10pm and 7am, should I do this?
(1) Copy and paste the code exactly as you've written it and save it as suspend_x_hours.sh in /home/mark/.
(2) Add Crontab entry: 00 22 * * * /home/mark/suspend_x_hours.sh 9 2>/dev/null
Or must I change something in code in (1) to specify the sleep and wake-up times? Maybe I'm misunderstanding something.
Mark,
There is nothing to change inside the code. All you need to do is copy the code and put in the root's crontab just like you have done.
As you can see, the script is a simple one. It takes the number of hours as parameter, calculates the wake up time, puts the wake up time in wakealarm file and calls the suspend action.
Check to see couple of things.
1) Run "sudo pmi action suspend" and see if it correctly suspends the system.
2) See if the wakealarm file contains the right wake up time by running the following command.
perl -e "print scalar(localtime(`cat /sys/class/rtc/rtc0/wakealarm `))"
Hope this helps,
Venkat,
Running "sudo pmi action suspend" does put the PC to sleep and the case fan stops spinning.
When the crontab entry runs, the PC appears to sleep. There is no output to the screen but the case fan still runs and DVD draw opens and closes so I'm not sure what state it is actually in.
Could it be that the script isn't working as it should do in my system?
Thanks for posting this. I found it very useful when trying to get my server to sleep at night.
I had trouble with the "pmi action suspend" command. For some reason, my system would hang when trying to wake up from this command. I found that by replacing it with:
dbus-send --system --print-reply --dest="org.freedesktop.UPower" \
/org/freedesktop/UPower org.freedesktop.UPower.Suspend
I was able to suspend the system and have it wake up successfully with wakealarm. Maybe this tip will be useful to someone else who happens upon this post.
Thanks for the tip. It will surely come in handy.
-Venkat
Post a Comment