acpid (mini-) howto – Linux-Systeme auf ACPI-events reagieren lassen

Dieses Howto widmet sich dem dem Dienst/Programm ‘acpid’ wie man es in aktuellen Linux-Distributionen findet.

ACPI steht für Advanced Configuration and Power Interface, acpid ist entsprechend ein Programm das auf die durch ACPI erzeugten events reagieren kann.

Einige Distributionen haben hier schon recht brauchbare ‘event-handler’ vorinstalliert, andere wiederum nicht – in beiden Fällen können Anpassungen nötig sein (Mein Gentoo-System bringt nur den handler für die Power-Taste mit).

  • Vorbereitungen – Der Linux-Kernel

Aktuelle Distributionen sollten Kernel mitbringen, die ACPI im Rahmen des aktuellen Standes der Hardwarekompatibilität unterstützen. Sollte das nicht der Fall sein sorgt dafür dass in der Kernel-Konfiguration folgende Optionen ausgewählt sind:


Power management and ACPI Options -> ACPI support

Mit einem so konfigurierten Kernel sollte acpid zusammenspielen.

  • Vorbereitung – Installation von acpid

Ihr könnt euch acpid von SF (Link) besorgen wenn es nicht in eurem Paket-Manager zu haben ist. Ich kenne allerdings keine Distribution in der es nicht verfügbar wäre. Falls Ihr acpid aus den Quellen übersetzen müsst und dabei hilfe braucht, konsultiert bitte die beiliegende README-Datei.

Ist der Kernel vorbereitet und acpid installiert, so ist der Rest einfach.

Das Standard-Verzeichnis für eventhandler ist /etc/acpi/events. Dort sind die Dateien abzulegen, die die Reaktion von acpid auf bestimmte events regeln.
Nach der installation sollte hier nur eine Datei namens ‘Default’ liegen, welche auf jeden event Reagiert. An diesem Beispiel sieht man schon den einfachen Aufbau der event-handler:

event=.*
action=/etc/acpi/default.sh %e

Diese Zeile entspricht etwa der Anweisung: Bei einem ACPI-Event dessen Event-String auf die regular expression .* passt, führe dass script ‘/etc/acpi/default.sh’ aus und übergebe diesem den Event-String als Argument.

Welche Knöpfe und Aktionen welchen ACPI-Event auslösen lässt sich mit dem Programm ‘acpi_listen’ herausfinden.

Auf den meisten Notebook-Systemen wird durch öffnen/schließen des Display-Deckels, ziehen/stecken des Netzsteckers, drücken des Power-Knopfes, schalten des RF-Kill-Switches usw. ein ACPI-Event ausgelöst. Je nach Hardwareunterstützung lösen auch die Fn-Kombinationen ACPI-Events aus (z.B. auf IBM/Lenovo Thinkpads mit dem kernel-modul ‘thinkpad-acpi’).

Beispiel:

Beim ziehen des Netzsteckers an meinem Notebook gibt ‘acpi_listen’ aus, dass der event “ac_adapter AC 00000080 00000000” ausgelöst wurde.
Beim einstecken des Netzsteckers wird “ac_adapter AC 00000080 00000001” ausgelöst. Damit können wir schon etwas anfangen ( Stromsparmechanismen aktivieren/deaktivieren, displayhelligkeit regeln, pi-berechnungen im hintergrund ein-/ausschalten etc. – es wird demnächst hier ein Stromspar-Howto geben, welches Tipps zusammenfasst welche hier sinnvoll einzusetzen sind)

Man legt nun für jeden event eine Datei an (muss nicht, ich mache das der Übersicht halber) in der nun folgendes steht:

event=ac_adapter AC 00000080 00000000
action=/etc/acpi/power_unplugged.sh

sowie (bei mir wie gesagt in einer anderen Datei)

event=ac_adapter AC 00000080 00000001
action=/etc/acpi/power_plugged.sh

Das sorgt dafür dass in Zukunft das Script /etc/acpi/power_unplugged.sh ausgeführt wird, wenn der Netzstecker gezogen wird. Was Ihr in dem Skript macht, bleibt euch überlassen.

Wie schon im Default-Beispiel zu sehen ist, kann man auch den jeweiligen event als String mit an das Script übergeben (%e).

Fragen, Kritik und Anregungen einfach in die Kommentare.

Bis demnächst.

0 thoughts on “acpid (mini-) howto – Linux-Systeme auf ACPI-events reagieren lassen”

Leave a Reply

Your email address will not be published. Required fields are marked *