Page 1 sur 1
[acpi] les ajouts à handler.sh ne fonctionnent pas (résolu)
Publié : dim. 17 avr. 2011, 02:35
par hansi
J'essaye de configurer l'auto rotation de l'écran sur un thinkpad Tablet, c'est très bien expliqué
dans le wiki, les codes des events acpi et des touches correspondent aussi à ce modèle et le daemon acpid fonctionne correctement.
Mais le code ci-dessous qui permet d'ajouter 2 actions sur 2 nouveaux évènements au fichier handler.sh qui contient ceux par défaut ne semble pas pris en compte.
Rien ne se passe quand je tourne l'écran, alors qu'on voit bien avec la capture xev qu'ils ont lieu... Quand je lance les 2 fichiers d'actions directement ils font le job.
Je vois vraiment pas ce qui coince, peut être une erreur de syntaxe ?
L'ajout au events par défaut :
Code : Tout sélectionner
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00005009)
#Swiveling down
/bin/sh /etc/acpi/actions/swivel-down
;;
0000500a)
#Swiveling up
/bin/sh /etc/acpi/actions/swivel-up
;;
esac
;;
esac
;;
Le fichier
handler.sh complet :
Code : Tout sélectionner
#!/bin/sh
# Default acpi script that takes an entry for all actions
# NOTE: This is a 2.6-centric script. If you use 2.4.x, you'll have to
# modify it to not use /sys
minspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_min_freq`
maxspeed=`cat /sys/devices/system/cpu/cpu0/cpufreq/cpuinfo_max_freq`
setspeed="/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed"
set $*
case "$1" in
button/power)
#echo "PowerButton pressed!">/dev/tty5
case "$2" in
PWRF) logger "PowerButton pressed: $2" ;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
button/sleep)
case "$2" in
SLPB) echo -n mem >/sys/power/state ;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
ac_adapter)
case "$2" in
AC)
case "$4" in
00000000)
echo -n $minspeed >$setspeed
#/etc/laptop-mode/laptop-mode start
;;
00000001)
echo -n $maxspeed >$setspeed
#/etc/laptop-mode/laptop-mode stop
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
battery)
case "$2" in
BAT0)
case "$4" in
00000000) #echo "offline" >/dev/tty5
;;
00000001) #echo "online" >/dev/tty5
;;
esac
;;
CPU0)
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
button/lid)
#echo "LID switched!">/dev/tty5
;;
*)
logger "ACPI group/action undefined: $1 / $2"
;;
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00005009)
/bin/sh /etc/acpi/actions/swivel-down
;;
0000500a)
/bin/sh /etc/acpi/actions/swivel-up
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
esac
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 10:44
par benjarobin
Tu peux déjà vérifier que ton code est bien exécuté.
Tu peux rajouter par exemple :
Tu devrais aussi logguer la sortie de /etc/acpi/actions/swivel-* dans le même ou un autre fichier de log en pensant à bien rediriger la sortie standard et d'erreur. Ce qui donne
Code : Tout sélectionner
bash /etc/acpi/actions/swivel-* &>> /chemin/vers/fichier/de/log2
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 12:07
par hansi
Je n'arrive pas à utiliser ta deuxième commande... Quand je la met dans un fichier swivel-* que j'exécute ça donne permission non accordée sur la ligne ajoutée (l'écran switche bien), idem quand je la fait en root dans le term.
Le passage du fichier handler.sh maintenant modifié avec ta première commande :
Code : Tout sélectionner
ibm/hotkey)
case "$2" in
HKEY)
case "$4" in
00005009)
echo "event swivel-down received 1" >> /var/log/acpid.log
/bin/sh /etc/acpi/actions/swivel-down
;;
0000500a)
echo "event swivel-up received 1" >> /var/log/acpid.log
/bin/sh /etc/acpi/actions/swivel-up
;;
esac
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
Et rien n'apparaît dans le fichier de log /var/log/acpid.log
Code : Tout sélectionner
Apr 16 17:26:52 localhost acpid: starting up
Apr 16 17:26:52 localhost acpid: 1 rule loaded
Apr 16 17:26:52 localhost acpid: waiting for events: event logging is off
Apr 16 17:27:56 localhost acpid: client connected from 29436[1000:1000]
Apr 16 17:27:56 localhost acpid: 1 client rule loaded
Apr 16 17:30:15 localhost acpid: client 29436[1000:1000] has disconnected
Apr 16 17:30:15 localhost acpid: client connected from 29480[1000:1000]
Apr 16 17:30:15 localhost acpid: 1 client rule loaded
Apr 16 17:41:48 localhost acpid: client 29480[1000:1000] has disconnected
Apr 16 17:58:12 localhost acpid: exiting
Apr 16 17:59:22 localhost acpid: starting up
Apr 16 17:59:22 localhost acpid: 1 rule loaded
Apr 16 17:59:22 localhost acpid: waiting for events: event logging is off
Apr 16 17:59:32 localhost acpid: client connected from 3190[0:1000]
Apr 16 17:59:32 localhost acpid: 1 client rule loaded
Apr 16 18:01:38 localhost acpid: exiting
Apr 16 18:01:41 localhost acpid: starting up
Apr 16 18:01:41 localhost acpid: 1 rule loaded
Apr 16 18:01:41 localhost acpid: waiting for events: event logging is off
Apr 16 18:01:42 localhost acpid: client connected from 3190[0:1000]
Apr 16 18:01:42 localhost acpid: 1 client rule loaded
Apr 16 18:01:48 localhost acpid: exiting
Apr 16 18:01:48 localhost acpid: starting up
Apr 16 18:01:48 localhost acpid: 1 rule loaded
Apr 16 18:01:48 localhost acpid: waiting for events: event logging is off
Apr 16 18:01:49 localhost acpid: client connected from 3190[0:1000]
Apr 16 18:01:49 localhost acpid: 1 client rule loaded
Apr 16 18:02:02 localhost acpid: exiting
Apr 16 18:02:42 localhost acpid: starting up
Apr 16 18:02:42 localhost acpid: 1 rule loaded
Apr 16 18:02:42 localhost acpid: waiting for events: event logging is off
Apr 16 18:02:49 localhost acpid: client connected from 3347[0:1000]
Apr 16 18:02:49 localhost acpid: 1 client rule loaded
Apr 16 18:22:44 localhost acpid: exiting
Apr 16 18:23:23 localhost acpid: starting up
Apr 16 18:23:23 localhost acpid: 1 rule loaded
Apr 16 18:23:23 localhost acpid: waiting for events: event logging is off
Apr 16 18:23:32 localhost acpid: client connected from 3507[0:1000]
Apr 16 18:23:32 localhost acpid: 1 client rule loaded
Apr 16 19:29:28 localhost acpid: exiting
Apr 16 19:33:26 localhost acpid: starting up
Apr 16 19:33:26 localhost acpid: 1 rule loaded
Apr 16 19:33:26 localhost acpid: waiting for events: event logging is off
Apr 16 19:33:41 localhost acpid: client connected from 3584[0:1000]
Apr 16 19:33:41 localhost acpid: 1 client rule loaded
Apr 16 20:31:00 localhost acpid: client 3584[0:1000] has disconnected
Apr 16 20:31:00 localhost acpid: client connected from 5569[0:1000]
Apr 16 20:31:00 localhost acpid: 1 client rule loaded
Apr 16 23:41:59 localhost acpid: exiting
Apr 16 23:42:43 localhost acpid: starting up
Apr 16 23:42:43 localhost acpid: 1 rule loaded
Apr 16 23:42:43 localhost acpid: waiting for events: event logging is off
Apr 16 23:42:51 localhost acpid: client connected from 3271[0:1000]
Apr 16 23:42:51 localhost acpid: 1 client rule loaded
Apr 16 23:46:08 localhost acpid: exiting
Apr 17 00:32:46 localhost acpid: starting up
Apr 17 00:32:46 localhost acpid: 1 rule loaded
Apr 17 00:32:46 localhost acpid: waiting for events: event logging is off
Apr 17 00:32:54 localhost acpid: client connected from 3448[0:1000]
Apr 17 00:32:54 localhost acpid: 1 client rule loaded
Apr 17 01:47:37 localhost acpid: exiting
Apr 17 02:26:00 localhost acpid: starting up
Apr 17 02:26:00 localhost acpid: 1 rule loaded
Apr 17 02:26:00 localhost acpid: waiting for events: event logging is off
Apr 17 02:26:11 localhost acpid: client connected from 3345[0:1000]
Apr 17 02:26:11 localhost acpid: 1 client rule loaded
Apr 17 02:44:30 localhost acpid: exiting
Apr 17 02:45:09 localhost acpid: starting up
Apr 17 02:45:09 localhost acpid: 1 rule loaded
Apr 17 02:45:09 localhost acpid: waiting for events: event logging is off
Apr 17 02:45:18 localhost acpid: client connected from 3180[0:1000]
Apr 17 02:45:18 localhost acpid: 1 client rule loaded
Apr 17 04:09:04 localhost acpid: exiting
Apr 17 04:09:44 localhost acpid: starting up
Apr 17 04:09:44 localhost acpid: 1 rule loaded
Apr 17 04:09:44 localhost acpid: waiting for events: event logging is off
Apr 17 04:09:56 localhost acpid: client connected from 3254[0:1000]
Apr 17 04:09:56 localhost acpid: 1 client rule loaded
Apr 17 04:13:13 localhost acpid: exiting
Apr 17 11:44:36 localhost acpid: starting up
Apr 17 11:44:36 localhost acpid: 1 rule loaded
Apr 17 11:44:36 localhost acpid: waiting for events: event logging is off
Apr 17 11:44:55 localhost acpid: client connected from 3623[0:1000]
Apr 17 11:44:55 localhost acpid: 1 client rule loaded
Apr 17 11:58:11 localhost acpid: exiting
Apr 17 11:58:51 localhost acpid: starting up
Apr 17 11:58:51 localhost acpid: 1 rule loaded
Apr 17 11:58:51 localhost acpid: waiting for events: event logging is off
Apr 17 11:58:59 localhost acpid: client connected from 3497[0:1000]
Apr 17 11:58:59 localhost acpid: 1 client rule loaded
Apr 17 12:00:32 localhost acpid: client connected from 4577[1000:1000]
Apr 17 12:00:32 localhost acpid: 1 client rule loaded
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 12:17
par benjarobin

Ce n'est pas réellement ce que j'ai demandé de faire... Il faut mettre un chemin ou le processus a les droits d’écrire... Par exemple tmp mais surtout pas un fichier de log existant, cela rend les choses assez difficile à lire. Tu ne devais pas toucher aux fichiers swivel-*
Code : Tout sélectionner
case "$4" in
00005009)
echo "event swivel-down received 1" >> /tmp/logHandler.log
bash /etc/acpi/actions/swivel-down &>> /tmp/logHandler2.log
;;
0000500a)
echo "event swivel-up received 1" >> /tmp/logHandler.log
bash /etc/acpi/actions/swivel-up &>> /tmp/logHandler3.log
;;
esac
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 12:27
par hansi
Ah d'accord.. Ok donc j'ai corrigé et rien n'apparaît dans /tmp
Dans le fichier acpid.log il y a écrit plusieurs fois
Code : Tout sélectionner
Apr 16 17:59:22 localhost acpid: waiting for events: event logging is off
Çà peut pas venir de là ?
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 12:46
par benjarobin
Je ne pense pas j'ai la même chose dans mes log.
Ton switch case doit donc être faut.
Déjà vérifions que le script est déjà appelé, ce qui est bizarre c'est qu'il n'y est rien dans les log.
Rajoute une ligne avant le case (après set $*)
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 12:59
par hansi
Yes il est appellé, le fichier logEventAll.log contient :
Code : Tout sélectionner
event ibm/hotkey/HKEY/00000080/00005009
event ibm/hotkey/HKEY/00000080/0000500a
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 13:34
par benjarobin
Tu peux donc mettre ce bloc
Code : Tout sélectionner
ibm/hotkey)
case "$2/$3/$4" in
HKEY/00000080/00005009)
bash /etc/acpi/actions/swivel-down
;;
HKEY/00000080/0000500a)
bash /etc/acpi/actions/swivel-up
;;
*) logger "ACPI action undefined: $2" ;;
esac
;;
Voir
http://pastebin.com/nscFJEcr pour le fichier complet
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 15:17
par hansi

Mince alors ça ne fonctionne pas, pourtant quand j'ajoute de quoi logger les events le fichier de log contient quelque chose...
Le passage de handler.sh :
Code : Tout sélectionner
ibm/hotkey)
case "$2/$3/$4" in
HKEY/00000080/00005009)
echo "event swivel-down received 1" >> /tmp/logHandler.log
bash /etc/acpi/actions/swivel-down
;;
HKEY/00000080/0000500a)
echo "event swivel-up received 1" >> /tmp/logHandler.log
bash /etc/acpi/actions/swivel-up
;;
*)
logger "ACPI action undefined: $2"
;;
esac
;;
*)
Le fichier de log /tmp/logandler.log :
Code : Tout sélectionner
event swivel-down received 1
event swivel-up received 1
event swivel-down received 1
event swivel-up received 1
wtf ?

Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 15:21
par benjarobin
Que donne
Code : Tout sélectionner
bash /etc/acpi/actions/swivel-down 2>> /tmp/logHandlerDown.log
Quel est le contenu de /etc/acpi/actions/swivel-down
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 15:28
par hansi
benjarobin a écrit :Que donne
Code : Tout sélectionner
bash /etc/acpi/actions/swivel-down 2>> /tmp/logHandlerDown.log
Ça fonctionne mais rien dans le fichier de log.
/etc/acpi/actions/swivel-up :
Code : Tout sélectionner
/usr/bin/xrandr -o normal
xsetwacom set "Serial Wacom Tablet eraser" Rotate none
xsetwacom set "Serial Wacom Tablet touch" Rotate none
xsetwacom set "Serial Wacom Tablet stylus" Rotate none
/etc/acpi/actions/swivel-down :
Code : Tout sélectionner
/usr/bin/xrandr -o inverted
xsetwacom set "Serial Wacom Tablet eraser" Rotate half
xsetwacom set "Serial Wacom Tablet touch" Rotate half
xsetwacom set "Serial Wacom Tablet stylus" Rotate half
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 15:46
par benjarobin
Il faudrait savoir cela fonctionne ou pas ?
La modification devait être apporté dans le fichier handler et non pas exécuté dans la console.
Mais je sens qu'il manque une voir plusieurs variables d'environnements comme DISPLAY ou XAUTHORITY
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 15:53
par hansi
Quand je lance les fichiers swivel-* directement depuis le term, ça fonctionne.
Mais handler.sh ne semble pas vouloir les lancer ces maudits fichiers, alors même que maintenant le switch case est bon et si je met une ligne pour logger l'event dans un fichier (juste après la ligne qui doit lancer le fichier swivel-*) il y a bien le fichier /tmp/logEvent.log rempli mais pas d'execution du fichier swivel-*...
Bizarre les options DISPLAY et XAUTHORITY ça ne peut pas fonctionner simplement avec bash /lefichier ?
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 16:03
par benjarobin
Non, ce n'est pas aussi simple... Mais pourquoi tu ne met pas
Code : Tout sélectionner
bash /etc/acpi/actions/swivel-down 2> /tmp/logHandlerDown.log
dans le fichier handler et que tu ne me donne pas le contenu du fichier, on serait fixé sur l'erreur.
Sinon dans la console donne moi la sortie de
Sinon tu devrai essayer (dans le fichier handler) mais je ne pense pas que cela résolve le problème du tout :
Code : Tout sélectionner
su tonuser -c "bash --login /etc/acpi/actions/swivel-down 2> /tmp/logHandlerDown.log"
Normalement si tu rajoute au début dans les fichiers swivel-* (A moins que tu utilise GDM, il faut que /home/tonuser/.Xauthority existe)
Code : Tout sélectionner
export DISPLAY=:0
export XAUTHORITY=/home/tonuser/.Xauthority
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 16:21
par hansi
Code : Tout sélectionner
[root@gaby-laptop gaby]# env | grep XAU
XAUTHORITY=/home/gaby/.Xauthority
[root@gaby-laptop gaby]# env | grep DISP
DISPLAY=:0.0
J'ai fait les modifs des fichiers et voilà le contenu du fichier handler.sh :
http://pastebin.com/Tbu3JhDi
Le fichier .Xauthority est bien présent.
Edit : Youhou !!! Ça fonctionne
MERCI BEAUCOUP t'as géré !
Les fichiers swivel-* :
down
Code : Tout sélectionner
#!/bin/sh
export DISPLAY=:0
export XAUTHORITY=/home/gaby/.Xauthority
/usr/bin/xrandr -o inverted
xsetwacom set "Serial Wacom Tablet eraser" Rotate half
xsetwacom set "Serial Wacom Tablet touch" Rotate half
xsetwacom set "Serial Wacom Tablet stylus" Rotate half
up
Code : Tout sélectionner
#!/bin/sh
export DISPLAY=:0
export XAUTHORITY=/home/gaby/.Xauthority
/usr/bin/xrandr -o normal
xsetwacom set "Serial Wacom Tablet eraser" Rotate none
xsetwacom set "Serial Wacom Tablet touch" Rotate none
xsetwacom set "Serial Wacom Tablet stylus" Rotate none
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas
Publié : dim. 17 avr. 2011, 16:26
par benjarobin
Donc rajoute au début dans les fichiers swivel-* ceci :
Et tout devrait fonctionner correctement.
Re: [acpi] les ajouts à handler.sh ne fonctionnent pas (réso
Publié : dim. 17 avr. 2011, 16:28
par hansi
Oui impec c'est terrible !

Merci !