NL_Automatische_Suspend_Xubuntu
Xubuntu Automatische Standby
In Xubuntu 7.04 is er standaard geen mogelijkheid om bij inactiviteit de computer in standby te zetten. De enige mogelijkheid is om een screensaver te activeren, of om het scherm uit te zetten. Gnome-powermanager werkt ook niet altijd naar behoren in Xubuntu. Deze wiki geeft meer informatie over hoe je automatische standby toch kan laten werken als suspend op je computer werkt.
Deze wiki is gebaseerd op: [http://www.thinkwiki.org/wiki/Installing_Debian_Lenny_on_a_ThinkPad_T60#automated_sleep
Om deze wiki te kunnen gebruiken is het nodig dat suspend werkt. Dit kan je testen door in een terminal het volgende te toetsen:
$ sudo /etc/acpi/sleep.sh
Als dat niet werkt, dan kan je proberen om /etc/default/acpi-support aan te passen. Verander in de volgende tekst ¨¨¨mem¨¨¨ in ¨¨¨standby¨¨¨:
# Change the following to "standby" to use ACPI S1 sleep, rather than S3. # This will save less power, but may work on more machines #ACPI_SLEEP_MODE=mem (veranderd) ACPI_SLEEP_MODE=standby
type dan in een terminal:
$ sudo /etc/init.d/acpid restart
Probeer nu nogmaals of suspend werkt. Werkt het dan kan je deze wiki gebruiken.
De installatie
Er zijn twee manieren:
Methode 1: zonder script, inactiviteit bepaald door afwezigheid toets en muis(pad) gebruik, geen pop-up window met cancelmogelijkheid
stappen:
- installeren sleepd en xosview pakketjes
- zoek de irq van je muis(pad) en toetsenbord
- toevoegen regel aan rc.local
- opnieuw opstarten
Stap 1: installeren sleepd en xosview pakketjes
type in een terminal:
$ sudo apt-get install sleepd xosview
Stap 2: irq muis(pad) en toetsenbord
type in een terminal:
$ xosview
Je kan nu in een schermpje zien welke plek (0-15) geactiveerd wordt bij muis(pad) of toetsengebruik. Onthoudt deze nummers, die zijn later nodig bij het commando sleepd.
Stap 3: toevoegen regel aan rc.local
type in een terminal:
$ sudo nano /etc/rc.local
voeg de volgende regel toe aan het einde voor het commando exit:
sleepd -U 900 -u 180 -s /etc/acpi/sleep.sh -i 1 -i 11 -i 12
Dit is het commando waarbij de tijd tot standby na inactiviteit bij gebruik van netstroom 900 seconden is, bij batterijgebruik van je laptop 180 seconden. De irq's van het toetsenbord, de muis en de touchpad zijn in dit voorbeeld 1, 11 en 12. Deze waarden dienen dus aangepast te worden aan de eigen computer en wensen.
Mijn rc.local ziet er zo uit:
# # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sleepd -U 900 -u 180 -s /etc/acpi/sleep.sh -i 1 -i 11 -i 12 exit 0
Stap 4: start je computer opnieuw op
Geen probleem toch.. Nu zou de automatische stanby functie moeten werken.
Methode 2: met script, deze methode kijkt ook naar schijf-, netwerk- en cpu gebruik, en of er iemand op afstand is ingelogd op de computer, tevens een pop up venster met cancel mogelijkheid:
stappen:
- installeren pakketjes sleepd, xosview, sysstat en zenity
- achterhalen irq's
- opslaan script als /etc/acpi/autosleep.sh en rechten aanpassen met chmod
- lijn toevoegen aan rc.local zodat sleepd bij opstarten wordt geactiveerd en het script aanstuurd.
- opnieuw opstarten
Stap 1: installeren pakketjes
$ sudo apt-get install sleepd xosview sysstat zenity
Stap 2: irq muis(pad) en toetsenbord
type in een terminal:
$ xosview
Je kan nu in een schermpje zien welke plek (0-15) geactiveerd wordt bij muis(pad) of toetsengebruik. Onthoudt deze nummers, die zijn later nodig bij het commando sleepd.
Stap 3: opslaan script
type in een terminal:
$ sudo nano /etc/acpi/autosleep.sh
met de muis het volgende script selecteren, en met rechtermuisklik in nano plakken.
script:
# autosleep.sh # Checks if the computer is inactive before going to sleep. Aborts if it looks like # there's some action. # # Thresholds - these may depend on what you do with your computer and what # you want it to stay awake for. CPUTHRESH=5 # in percent DISKTHRESH=500 # in blocks/sec (the sar manpage says blocks are 512 bytes in normal cases) NETTHRESH=10 # in kB/s #SNDTHRESH=200 # in ???? rms # (no sound playing is ~25 while playing mp3 w/ pcm+master turned all the way to zero is ~250) # Sample times (in seconds) - again needs may vary CPUTIME=1 DISKTIME=2 NETTIME=2 #SNDTIME=2 # Check CPU usage defined as non-idle time. CPU=`sar $CPUTIME 1 | awk '/Average/ { printf "%d\n",100-$8}'` echo "CPU = $CPU%" if [ $CPUTHRESH -lt $CPU ];then echo CPU is working, not sleeping exit; fi # Check disk usage (read + write) DISK=`sar -b $DISKTIME 1 | awk '/Average:/ { printf "%d",$5 + $6 }'` echo "DISK = $DISK" if [ $DISKTHRESH -lt $DISK ];then echo Disk is working, not sleeping exit; fi # Check net usage (exclude wifi0 which appears to have activity all the time for some weird reason) NET=`sar -n DEV $NETTIME 1 | awk '/Average:/ && $2 !~ /(IFACE|wifi0)/ { SUM += $5 + $6 } END { printf ("%d\n",SUM)}'` echo "NETWORK = $NET" if [ $NETTHRESH -lt $NET ]; then echo Network is in use, not sleeping exit; fi # Check remote login REMOTELOGIN=`last | head | grep "pts/.*still logged in"` if [ -n "$REMOTELOGIN" ];then echo Remote login active: echo $REMOTELOGIN echo Not sleeping exit; fi # Set the mixer to some controlled values and set it to record the mixed sound output # This unfortunately is going to be sound-chip specific. #alsactl -f /var/tmp/sound.state store #amixer sset Capture 20% cap #amixer sset Digital 20% #amixer sset Mix cap # Record to null and use RMS amplitude in resulting statistics with a convenience # factor to make it integer #SND=`rec -n stat trim 0 $SNDTIME 2>&1 | sed -n 's/^RMS[ ]*amplitude:[ ]*/1000000 * /gp' | bc | cut -d. -f 1` # Restore previous mixer state #alsactl -f /var/tmp/sound.state restore #echo "SOUND = $SND" #if [ $SNDTHRESH -lt $SND ];then # echo Sound is playing, not sleeping # exit; #fi # Timer 10 secs met pop-up window (for ((i=0;i<100;i+=1)) ; do echo $i ; sleep 0.1; done) | zenity --progress --auto-close --title='' --text='Deze computer gaat binnen 10 sec. in standby!' test=$? if [ $test -eq "1" ]; then exit; fi # Ga in standby . /etc/acpi/sleep.sh
Nu in nano het bestand bewaren en afsluiten. Met het volgende commando zorg je ervoor dat het scriptje executable wordt:
$ sudo chmod ugo+x /etc/acpi/autosleep.sh
Stap 4: toevoegen regel aan rc.local
type in een terminal:
$ sudo nano /etc/rc.local
voeg de volgende regel toe aan het einde voor het commando exit:
sleepd -U 900 -u 180 -s /etc/acpi/autosleep.sh -i 1 -i 11 -i 12
Dit is het commando waarbij de tijd tot standby na inactiviteit bij gebruik van netstroom 900 seconden is, bij batterijgebruik van je laptop 180 seconden. De irq's van het toetsenbord, de muis en de touchpad zijn in dit voorbeeld 1, 11 en 12. Deze waarden dienen dus aangepast te worden aan de eigen computer en wensen. Vervolgens kijkt dit script dus of er net-activiteit is, de cpu actief is, of de harde schijf. Als dat zo is dan gaat de computer niet in standby.
Mijn rc.local is:
# # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. sleepd -U 900 -u 180 -s /etc/acpi/autosleep.sh -i 1 -i 11 -i 12 exit 0
Stap 5: Start je computer opnieuw op
en dan werkt het als het goed is.
NL_Automatische_Suspend_Xubuntu (last edited 2008-08-06 17:00:51 by localhost)