Advanced Configuration and Power Interface (ACPI) désigne une norme qui a pour but
d'implémenter le contrôle de la consommation d'énergie d'un ordinateur. Le principe consiste donner le moyen d'activer ou désactiver les élements qui sont consommateurs en fonction des besoins du
système ou de l'utilisateur.
La transmission de l'ordre s'effectue au moyen de signaux qui sont interprétés par le système exploitation. Le dialogue avec le matériel s'effectue donc dynamiquement.
Dans cet article nous verrons comment effectuer le raccordement des touches programmables et de contrôle des périphériques de notre EeePC ( wifi, son, luminosité, ... )
La gestion des événements
C'est le démon acpid qui est à l'écoute des événements de l'EeePC.
Un moyen simple pour récupérer les codes événements de l'interface acpi et d'utiliser l'outil acpi_listen.
Une fois lancé, il suffit d'appuyer sur la touche de fonction pour obtenir son code sous la forme
hotkey ATKD 0000001a 00000000
Voici la liste des codes événements pour un 901 :
Touches programmables
Touche user 1 :hotkey ATKD 0000001a
Touche user 2 : hotkey ATKD 0000001b
Touche user 3 : hotkey ATKD 0000001c
Touche user 4 : hotkey ATKD 0000001d
Touches de contrôle
Contrôle Wifi actif : hotkey ATKD 00000010
Contrôle Wifi inactif : hotkey ATKD 00000011
Gestionaire de tâches (Bouton AP): hotkey ATKD 00000012
Mode silence actif/inactif : hotkey ATKD 00000013
Contrôle du volume (diminution) : hotkey ATKD 00000014
Contrôle du volume (augmentation) : hotkey ATKD 00000015
Contrôle luminosité (diminution) : hotkey ATKD 00000027
Contrôle luminosité (augmentation) : hotkey ATKD 00000028
Contrôle sélection écran LCD/Externe : hotkey ATKD 00000030
Evénements spéciaux
Mise en veille : button/sleep SLPB 00000080
lid ( fermeture du laptop ) : button/lid LID
power ( extinction du laptop) : button/power
Alimentation secteur : hotkey ATKD 00000050 00000000
Alimentation batterie : hotkey ATKD 00000051 00000000
Les informations matérielles
C'est le module eeepc_laptop ( anciennement asus_eee ) qui est chargé d'entretenir un pseudo système de fichiers pour les équipements managés via l'acpi.
Initialement les fichiers étaient situés dans /proc/acpi/asus. Depuis la version 2.6.26-rc1 du kernel, les fichiers ont été déplacés dans /sys/devices/platfom/eeepc.
L'interface avec l'utilisateur
Le complément naturel du démon acpid est le module asus_osd qui permet l'affichage à l'écran de l'état d'une option matérielle suite à une action sur les touches de contrôle.
Il existe déjà un certain nombre de scripts qui assurent le couplage des événements et des actions correspondantes. Il est intéressant de comprendre comment s'effectue l'implémentation.
Chaque événement est intercepté dans le pseudo système de fichiers /proc/acpi/event.
La définition de chaque événement s'effectue dans un fichier situé dans le répertoire /etc/acpi/event.
Chaque fichier de définition contient deux lignes :
- une ligne event qui contient le code de l'événement
- une ligne action qui contient la commande a exécuter
Voici par exemple la définition du fichier button-ap qui intercepte l'appui sur la touche AP (Fn+F6)
event=hotkey ATKD 00000012 .*
action=/etc/acpi/eee-event-ap.sh
Par convention les scripts actions se situent dans le répertoire /etc/acpi mais il est possible d'exécuter une ou plusieurs actions sans passer par un script. Les commandes à exécuter sont séparées par le caractère ";" directement après le paramètre action.
Références :
Le projet démon acpi : http://acpid.sourceforge.net
Le projet scripts acpi-eeepc-generic : http://code.google.com/p/acpi-eeepc-generic/
Le projet scripts d'elmurato : http://forum.eeeuser.com/viewtopic.php?id=49081
Le site du projet est simple mais très clair et j'ai pu parvenir à compiler le programme
et ses dépendances sans souci particulier. Loin du bling bling de certaines interfaces, Twinkle offre une présentation simple mais complète. La configuration s'effectue au travers d'un assistant
dès le premier lancement du programme, le multi-profil étant bien sûr supporté.
inux modulaire.