ACPI + gkrellmACPI-1.0

Címkék

ACPI: Advanced Configuration and Power Interface

Az ACPI nagyon jó dolog. Eddig nem nagyon foglalkoztam vele a kernel konfigurálások során, most azonban jobban szemügyre vettem. Az ACPI segítségével a gépünket egy gombnyomásra ki tudjuk kapcsolni, le tudjuk kérdezni a notebook akkumulátorának töltöttségi állapotát, a hátralevő üzemidejét, a processzor hőmérsékletét, a processzor órajelét, hibernációba tudjuk kényszeríteni a laptopot, be tudod állítani, hogy a CPU-d kevesebb energiát használjon, stb. Nem csak notebookokhoz használhatjuk, hanem gombnyomásra ki tudjuk vele kapcsolni az asztali gépünket is. Már ha az hardveresen képes erre.

Az ACPI része a 2.4.20-as kernelnek (azt hiszem, hogy a 2.4.18-tól jelent meg) de sajnos nem nagyon működik minden géppel. Sebaj, mert a Sourceforge-n megtaláljuk az eredeti projectet, és az nekem szépen működik a 2.4.20-szal.

A legfrissebb kernelpatchet szedjük le innen:

http://sourceforge.net/projects/acpi

Patcheljük meg vele a kernelt. Fordítsuk bele a kernelbe fixen az ACPI funkciókat. Az APM-et *ne* használjuk, mert nem kompatibilisek egymással! Ha ez kész, bootoljunk a friss kernellel. Az ACPI funkciók elérhetőek lesznek a /proc/acpi alatt.

Az ACPI daemon telepítése szükséges mondjuk a sleep gomb működtetéséhez. Telepítsük fel:

apt-get install acpid

Mire is tudjuk használni? Nézzünk egy konkrét példát:Számítógép kikapcsolása egy gombnyomásra:

Ki akarom kapcsolni a gépemet a sleep gombbal. Az acpid figyeli a sleep gomb által generált eseményt, és a hozzá rendelt scriptet lefuttatja. Hogy is működik? Nézzünk be a /etc/acpi/events könyvtárba. Itt találunk egy "esemény" filet, amelyben a figyelendő esemény, és az eseményhez rendelt végrehajtandó script nevét találjuk:

[...]

event=button[ /]sleep

action=/etc/acpi/powerbtn.sh

[...]

a /etc/acpi/powerbtn.sh script tartalma:

#!/bin/sh

# /etc/acpi/poweroff.sh

# Initiates a shutdown when the power putton has been

# pressed.

/sbin/init 0

csak így egyszerűen. A folyamat pedig a következő. Megnyomom a sleep gombot, az acpi daemon "elkapja" az eseményt, megnézi, hogy mi van hozzátársítva, és végrehajtja a scriptet, ami jelen esetben leállítja a számítógépet.

Akkumulátor töltöttség figyelése notebookon:

Kényelmetlen lenne állandóan a

cat /proc/acpi/battery/BAT1/state

parancsot kiadva nézegetni az akku állapotát, ezért keresni kezdtem hozzá valamilyen "lekérdezőkét". Találtam is kettő plugint a gkrellm-hez (apt-get install gkrellm), de sajnos egyik sem működött hibátlanul (egyik speciálisan a Dell laptopokhoz készült, a másik meg a gkrellm2-höz). Ja és a legutolsó ACPI patchben megváltozott az elnevezési séma is ;-) Sebaj, az egyiket átírtam, és az eredményt megnézheted:

táplálás hálózatról használat akkuról akku töltése akku fullon

Működik a processzor hőmérséklet kijelzés is. Az általam hackelt plugin forráskódját le tudod szedni innen: gkrellmACPI-1.0.tar.gz

Tervbe van még véve a hibernálási funkció megvalósítása is. Az ACPI nagyon jó dolog lesz ha elkészül. Egyelőre experimental, de nagyon jól működik.

Hozzászólások

Jo kis plugin csak az a baja hogy ha az nemtalalja battary-t akkor egybol kilep, pedig a homersekletet kijelezhetne, nem baj egy kis hack es megy is.

Én is próbálkoztam már az ACPI-vel, de nem sokra jutottam. Két kérdésem lenne, hátha tudtok rá valamit. 1: honnan lehet tudni, hogy milyen események vannak. 2: hogyan lehet elaltatni a gépet ( stanby, sleep, stb. az init 0 nekem túl mély alvás :-) ). Van szép holdacskás gomb a billentyűzetemen, arra szivesen belőnék egy ilyen funkciót.

1. Honnan lehet tudni, hogy milyen események vannak?

tail -f /var/log/acpid

Lenyomod a gombot (nekem is ilyen holdacskas van ;)) es figyeled mit ir a logba.

>2: hogyan lehet elaltatni a gépet ( stanby, sleep, stb. az init 0 nekem túl mély alvás :-) )

Egyszeru. Kell egy swsusp patch az ACPI-hez Megtalalod itt. En eddig azert nem alltam neki mert journalig FS-en asszem nem mukodik.

Sziasztok !!!

Nekem is nagyon tetszik a ACPI csak az lenne a kerdesem hogyan lehetne ravenni hogy lekacsolja a konzola (DPMS off vagy valami ilyesmi)

Ami kimaradt:

.bashrc -be:

PROMPT_COMMAND="TEMP=`/bin/cat /proc/acpi/thermal_zone/THRM/temperature | /usr/bin/awk '{ print $2 }'` &&

BAT=`/bin/cat /proc/acpi/battery/BAT1/state | /usr/bin/awk '/remaining/ { print $3

}'` &&

PS1='$TEMP $BAT u@h:w$ '"

Az eredmeny: kiirja a promptba a cpu homersekletet es az aktualis hatralevo akku powert. Valahogy igy:

52 2880 trey@gmicsko03:~$

Nu en 1 Compaq Presarion 2800-on hasznalom (2805EA assz'em) es igy qrvara nem kepes semmit se kezdeni a batteryvel. Nincs a /proc/acpi/....ban 1 battery sem :( Probaltam 2.4.20-szal, most 2.5.56ot hasznalok eppen es assz'em meg is maradok a 2.5os szeria mellett... De igy baromira nemmux. Nemtommer. Ha vki tud ra vmit, pls irja meg. Thx. Vudumen

Hurrá! :)

Most már Linuxon is elérhető az, ami eddig csak Windows alatt őrjített meg! :))) Lenyomom véletlenül az új "csodabillentyűzetek" egyikén a kurzorgombok fölé bepréselt kikapcsoló/altató/stb. gombok valamelyikét és máris 2 mp-en belül lekapcsol a gépem! :))))

Mi lesz a következő lépés, umount nélkül kapcsol le 1 mp-en belül? :))))

Hat nem hurka ujjakkal kell nyomkodni a gepet. Egyebkent az ACPI lenyeget en ott latom, hogy le tudod kerdezni az akku allapotat, vagy kisebb orajelre tudod kenyszeriteni a CPU-t. Azert valljuk be, hogy notebook eseten jo latni, hogy mikor fog a gepunk kikapcsolni, mert elfogy a nafta velole.....

Ugyan már. Ez Linux, ha nem kell, úgy konfigurálod, hogy ne használja és kész.

Egyébként én icewm keybindingot kötöttem a sleepre (xscreensaver -lock), és az jó nekem. Kényelmes.

Igaz, ami igaz, néha én is lenyomom, mikor nem akarom, nekem is ott vannak ezek a gombok a kurzorbillentyûk felett. Hát majd ha ez a billentyûzet is kap narancslevet, akkor majd erre is figyelek a következõ vásárlásnál :)

Sikerült véletlenül olyan billentyűzetre szert tennem, amin van sleep gomb..., és bár nincsenek hurka ujaim, mivel ott van, ahol eddig más volt, ki is próbáltam véletlenül!
Tetszk! :)

Viszont normalis dolog az, hogy megnyomására még a tápban levő ventillátorok is leállnak?
Mert én ennek örülök ugyan, de mivel a power gomb hatására aztán mégis pillanatok alatt folytathatom munkámat, gondolom a memória folyamatosan kapot alvás közben is áramot.
Ez így rendben? (táp hűtés nélkül, vagy kezdjek aggódni...?!)