dell lid
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
dell lid
Hi, Ich möchte die lid taste dazu benutzen mein inspiron 8600 in den sleep modus zu versetzen. Dazu hab ich ein script geschrieben, welches auch einwandfrei funkt
Nur bin ich ja Faul, und möchte das halt nicht jedesmal manuell machen
cat /proc/acpi/button/lid/LID/state
state: open
oder
cat /proc/acpi/button/lid/LID/state
state: closed
Den status bekomm ich von acpi, Ich will aber nicht irgend was ständig im hintergrund laufen lassen, was mir den status abfragt.
Nur bin ich ja Faul, und möchte das halt nicht jedesmal manuell machen
cat /proc/acpi/button/lid/LID/state
state: open
oder
cat /proc/acpi/button/lid/LID/state
state: closed
Den status bekomm ich von acpi, Ich will aber nicht irgend was ständig im hintergrund laufen lassen, was mir den status abfragt.
- emge
- Beiträge: 1525
- Registriert: 20.10.2003 22:05:46
- Lizenz eigener Beiträge: Artistic Lizenz
- Wohnort: 50° 45' 0" N 12° 10' 0" E
Nun ja, in nahezu jeder aktuellen Programmiersprache gibt es das Konzept, an bestimmte ereignisauslösende Elemente sog. Listener zu knüpfen, die bei Eintreten eines Ereignisses aktiviert werden.Savar hat geschrieben:wie stellst du dir das denn bitte sonst vor??
du willst also ohne das ein Tool/Script ständig abfragt ob LID open/closed ist das trotzdem dein Sleep-Script gestartet wird???
Kann ja gut sein, dass Linux so etwas auch auf ACPI-Ebene unterstützt.
Von daher fände ich die Frage gar nicht so abwegig.
Grüße, Marco
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
Genau, wie emge sagt, es gibt ein ACPI event layer. Die Knoepfe sind nicht weiter schwer einzurichten, ein paar Ansatzpunkte findest du unter 10. auf http://forums.gentoo.org/viewtopic.php?t=170548
Falls du KDE benutzt, das kcontrol Modul fuer Laptop Energy Saving hat auch diese Option.
Falls du KDE benutzt, das kcontrol Modul fuer Laptop Energy Saving hat auch diese Option.
Zuletzt geändert von sebas am 09.08.2004 16:48:15, insgesamt 1-mal geändert.
Magic is always the best solution -- especially reliable magic.
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
Nein ich mag KDE nicht, ich bevorzuge blackbox, habs jedoch noch nicht hinbekommen.
laut dem link
cat /etc/acpi/events/powerbtn
event=button[ /]lid
action=/etc/acpi/lid.sh
event=button[ /]power
action=/etc/acpi/power.sh
jedoch passiert gar nichts
laut dem link
cat /etc/acpi/events/powerbtn
event=button[ /]lid
action=/etc/acpi/lid.sh
event=button[ /]power
action=/etc/acpi/power.sh
jedoch passiert gar nichts
Zuletzt geändert von Voyager_MP am 09.08.2004 16:51:26, insgesamt 1-mal geändert.
- Savar
- Beiträge: 7174
- Registriert: 30.07.2004 09:28:58
- Lizenz eigener Beiträge: MIT Lizenz
- Wohnort: Berlin
hmm..
@sebas: das was auf der von dir geposteten Seite steht, funktioniert auch "nur" über den acpid, ist also quasi auch "nur" ein Programm was die ganze Zeit abfragt (ok vielleicht wird es mittels C und IRQ's gelöst)
@emge:
siehe oben.. ja klar diese Listeners (verdammt mir will partout nicht einfallen wie's genau heißt) kann man verwenden. Aber ich dachte nicht, dass er das machen wollte, da er sonst wahrscheinlich kein Script geschrieben hätte. Mag mich getäuscht haben.
btw: scheiße das bei mir im Büro die KLimaanlage im A**** ist
@sebas: das was auf der von dir geposteten Seite steht, funktioniert auch "nur" über den acpid, ist also quasi auch "nur" ein Programm was die ganze Zeit abfragt (ok vielleicht wird es mittels C und IRQ's gelöst)
@emge:
siehe oben.. ja klar diese Listeners (verdammt mir will partout nicht einfallen wie's genau heißt) kann man verwenden. Aber ich dachte nicht, dass er das machen wollte, da er sonst wahrscheinlich kein Script geschrieben hätte. Mag mich getäuscht haben.
btw: scheiße das bei mir im Büro die KLimaanlage im A**** ist
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
Vielen Dank für eure Hilfe, es funzt
hier meine conf's
acpid läuft,
root@mp:/etc/acpi# ll
total 20
drwxr-xr-x 3 root root 4096 Aug 10 09:35 .
drwxr-xr-x 158 root root 8192 Aug 10 09:07 ..
drwxr-xr-x 2 root root 4096 Aug 10 09:36 events
lrwxr-xr-x 1 root root 23 Aug 9 16:35 lid.sh -> /usr/local/bin/sleep.sh
-rwxr-xr-x 1 root root 284 Apr 23 18:06 powerbtn.sh
#!/bin/bash
COL="\\033[20G"
CS="\\033[1;32m"
CF="\\033[1;31m"
CW="\\033[1;33m"
CN="\\033[0;39m"
if [ $EUID -ne 0 ]; then
echo "You must be root, sorry"
exit
fi
SERVICES=""
MODULES="ehci_hcd sg"
UNLOADED=""
echo
echo "-------------------------------------------------------------"
echo "ACPI: Setting System to \"Suspent to RAM\""
echo "-------------------------------------------------------------"
echo
for i in $SERVICES; do
/etc/init.d/$1 stop
done
for i in $MODULES; do
if /sbin/lsmod | grep -q $i; then
UNLOADED="$UNLOADED $i"
fi
done
echo -n "Entferne Module: "
for i in $UNLOADED; do
/sbin/modprobe -r $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
echo
sleep 2
echo 3 > /proc/acpi/sleep
#after resume
echo -n "Lade Module: "
for i in $UNLOADED; do
modprobe $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
for i in $SERVICES; do
/etc/init.d/$i start
done
echo
echo "-------------------------------------------------------------"
echo
root@mp:/etc/acpi# cat events/lidbtn
event=button[ /]lid
action=/etc/acpi/lid.sh "%e"
root@mp:/etc/acpi# cat events/powerbtn
event=button[ /]power
action=/etc/acpi/powerbtn.sh
==> /var/log/acpid <==
[Tue Aug 10 09:38:22 2004] starting up
[Tue Aug 10 09:38:22 2004] 2 rules loaded
hier meine conf's
acpid läuft,
root@mp:/etc/acpi# ll
total 20
drwxr-xr-x 3 root root 4096 Aug 10 09:35 .
drwxr-xr-x 158 root root 8192 Aug 10 09:07 ..
drwxr-xr-x 2 root root 4096 Aug 10 09:36 events
lrwxr-xr-x 1 root root 23 Aug 9 16:35 lid.sh -> /usr/local/bin/sleep.sh
-rwxr-xr-x 1 root root 284 Apr 23 18:06 powerbtn.sh
#!/bin/bash
COL="\\033[20G"
CS="\\033[1;32m"
CF="\\033[1;31m"
CW="\\033[1;33m"
CN="\\033[0;39m"
if [ $EUID -ne 0 ]; then
echo "You must be root, sorry"
exit
fi
SERVICES=""
MODULES="ehci_hcd sg"
UNLOADED=""
echo
echo "-------------------------------------------------------------"
echo "ACPI: Setting System to \"Suspent to RAM\""
echo "-------------------------------------------------------------"
echo
for i in $SERVICES; do
/etc/init.d/$1 stop
done
for i in $MODULES; do
if /sbin/lsmod | grep -q $i; then
UNLOADED="$UNLOADED $i"
fi
done
echo -n "Entferne Module: "
for i in $UNLOADED; do
/sbin/modprobe -r $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
echo
sleep 2
echo 3 > /proc/acpi/sleep
#after resume
echo -n "Lade Module: "
for i in $UNLOADED; do
modprobe $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
for i in $SERVICES; do
/etc/init.d/$i start
done
echo
echo "-------------------------------------------------------------"
echo
root@mp:/etc/acpi# cat events/lidbtn
event=button[ /]lid
action=/etc/acpi/lid.sh "%e"
root@mp:/etc/acpi# cat events/powerbtn
event=button[ /]power
action=/etc/acpi/powerbtn.sh
==> /var/log/acpid <==
[Tue Aug 10 09:38:22 2004] starting up
[Tue Aug 10 09:38:22 2004] 2 rules loaded
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
hi, also das script heißt bei mir sleep.sh und liegt unter /usr/local/bin
aufgerufen wird es so /usr/local/bin/sleep.sh 3
die Zahl am ende gibt den jeweiligen zustand an (suspend to ram) zur zeit.
ich habs bei mir so eingerichtet, das wenn ich das notebook schließe das /etc/acpid/lid.sh aufgerufen wird, welches lediglich mit einer verzögerung das sleep.sh script aufruft.
aufgerufen wird es so /usr/local/bin/sleep.sh 3
die Zahl am ende gibt den jeweiligen zustand an (suspend to ram) zur zeit.
ich habs bei mir so eingerichtet, das wenn ich das notebook schließe das /etc/acpid/lid.sh aufgerufen wird, welches lediglich mit einer verzögerung das sleep.sh script aufruft.
Code: Alles auswählen
#!/bin/bash
#===================================================================================
#
# FILE: lid.sh
#
# USAGE: ./lid.sh
#
# SYNOPSIS:
#
# DESCRIPTION:
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Michel Pelzer (), michel@pelzernet.de
# COMPANY: ATecoM GmbH
# VERSION: 1.0
# CREATED: 11.08.2004 08:49:53 CEST
# REVISION: ---
#===================================================================================
sleep 1m && /usr/local/bin/sleep.sh 3
Gruß Michel
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
installier mal acpid
apt-get install acpid
erstell dann die datei /etc/acpi/events/lidbtn
mit folgendem inhalt.
Jetzt /etc/init.d/acpid start
tail -f /var/log/acpid
und dann lid drücken und hoffen das im log was erscheint
apt-get install acpid
erstell dann die datei /etc/acpi/events/lidbtn
mit folgendem inhalt.
Code: Alles auswählen
event=button[ /]lid
action=/etc/acpi/lid.sh
tail -f /var/log/acpid
und dann lid drücken und hoffen das im log was erscheint
Gruß Michel
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
klar, also bei dauert es ca 5 sekunden bis er einschläft, wenn es bei dir länger dauert, dann meinst du warscheinlich die verzögerung die ich eingebaut habe, 1 minute nachdem der lid gedrückt wird, wird das sleep script ausgeführt. das kannst du rausnehmen indem die den inhalt der /etc/acpid/lid.sh fogendermaßer änderst.
die module die du entladen willst, gibst du im sleep.sh script ein.
Zeile 36
MODULES="ehci_hcd sg blamod blamod usw."
Code: Alles auswählen
#!/bin/bash
/usr/local/bin/sleep.sh 3
Zeile 36
MODULES="ehci_hcd sg blamod blamod usw."
Gruß Michel
- Voyager_MP
- Beiträge: 628
- Registriert: 22.06.2004 10:04:07
- Wohnort: Aachen
Ich habe folgendes Problem, wenn ich die lid taste drücke wird mein lid.sh 2 mal ausgeführt, wenn ich das lid.sh einfach so starte, läufts nur einmal
lid.sh
und hier das sleep.sh
Hab ich schon gesagt das ich scripten liebe
lid.sh
Code: Alles auswählen
#!/bin/bash
/usr/local/bin/ask &
sleep 1m && /usr/local/bin/sleep.sh 3
Code: Alles auswählen
#!/bin/bash
#\
exec wish "$0"
# ---------------------------------------------------------------------------------
global env
set global_var(titel) "ACPI - Sleep"
proc stop_sleep { } {
#eval exec /usr/bin/X11/xclock
eval exec xterm -e "killall -9 lid.sh sleep"
}
# Now, the Main-Window
frame .menuFrame -borderwidth 1 -relief raised
frame .mittlererRahmen -borderwidth 1 -relief raised
frame .controlFrame -borderwidth 1 -relief raised
pack .menuFrame -side top -fill x
pack .mittlererRahmen -side top -fill x
pack .controlFrame -side top -fill x
# Buttons (DV-Grab)
button .sleep -text "Sleep" -default active -command exit
button .bexit -text "Stop Sleep" -state active -command stop_sleep
pack .sleep -in .controlFrame -side left -fill x -expand yes
pack .bexit -in .controlFrame -side left -fill x -expand yes
# Labels, left side
label .lsource -text "Lid wurde gedrückt, bitte wählen sie wie sie weiter fortfahren wollen"
grid .lsource -in .mittlererRahmen -row 1 -column 0 -sticky sw
# Window-Settings
wm title . $global_var(titel)
wm minsize . 380 150
Code: Alles auswählen
#!/bin/bash
#===================================================================================
#
# FILE: sleep.sh
#
# USAGE: ./sleep.sh
#
# SYNOPSIS:
#
# DESCRIPTION:
# OPTIONS: ---
# REQUIREMENTS: ---
# BUGS: ---
# NOTES: ---
# AUTHOR: Michel Pelzer (), michel@pelzernet.de
# COMPANY: ATecoM GmbH
# VERSION: 1.0
# CREATED: 08/09/04 14:18:39 CEST
# REVISION: ---
#===================================================================================
COL="\\033[20G"
CS="\\033[1;32m"
CF="\\033[1;31m"
CW="\\033[1;33m"
CN="\\033[0;39m"
if [ $EUID -ne 0 ]; then
echo "You must be root, sorry"
exit
fi
SERVICES=""
MODULES="ehci_hcd sg"
UNLOADED=""
STATE=$1
echo
echo "-------------------------------------------------------------"
echo "ACPI: Setting System to \"Suspent to RAM\""
echo "-------------------------------------------------------------"
echo
for i in $SERVICES; do
/etc/init.d/$i stop
done
for i in $MODULES; do
if /sbin/lsmod | grep -q $i; then
UNLOADED="$UNLOADED $i"
fi
done
echo -n "Entferne Module: "
for i in $UNLOADED; do
/sbin/modprobe -r $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
echo
sleep 2
echo $STATE > /proc/acpi/sleep
#after resume
echo -n "Lade Module: "
sleep 20 && killall -9 sleep
for i in $UNLOADED; do
modprobe $i
if [ $? -eq 0 ]; then
echo -n -e $CS "$i "$CN
else
echo -n -e $CF "$i "$CN
fi
done
for i in $SERVICES; do
/etc/init.d/$i start
done
echo
echo "-------------------------------------------------------------"
echo
Gruß Michel