{{tag>matériel télécommande VÉTUSTE}}
----
====== Télécommande ATI SAPPHIRE REMOTE WONDER Version 1 ======
Le module pour utiliser cette télécommande est déjà présent dans le noyaux mais nécessite quelques modifications, mais le plus simple est l'utilisation de [[:lirc]].
Cette méthode fonctionne aussi pour la ATI remote wonder (ID: B4SUR84A)
==== Configuration et modification du pilote ====
gedit linux-source-2.6.35/drivers/input/misc/ati_remote.c
voici la partie intéressante du code dans le ficher ati_remote.c
les keycodes sont placés dans l'avant dernière colonne
/* Directional control pad axes */
{KIND_ACCEL, 0x35, 0x70, EV_REL, REL_X, -1}, /* left */
{KIND_ACCEL, 0x36, 0x71, EV_REL, REL_X, 1}, /* right */
{KIND_ACCEL, 0x37, 0x72, EV_REL, REL_Y, -1}, /* up */
{KIND_ACCEL, 0x38, 0x73, EV_REL, REL_Y, 1}, /* down */
/* Directional control pad diagonals */
{KIND_LU, 0x39, 0x74, EV_REL, 0, 0}, /* left up */
{KIND_RU, 0x3a, 0x75, EV_REL, 0, 0}, /* right up */
{KIND_LD, 0x3c, 0x77, EV_REL, 0, 0}, /* left down */
{KIND_RD, 0x3b, 0x76, EV_REL, 0, 0}, /* right down */
/* "Mouse button" buttons */
{KIND_LITERAL, 0x3d, 0x78, EV_KEY, BTN_LEFT, 1}, /* left btn down */
{KIND_LITERAL, 0x3e, 0x79, EV_KEY, BTN_LEFT, 0}, /* left btn up */
{KIND_LITERAL, 0x41, 0x7c, EV_KEY, BTN_RIGHT, 1},/* right btn down */
{KIND_LITERAL, 0x42, 0x7d, EV_KEY, BTN_RIGHT, 0},/* right btn up */
/* Artificial "doubleclick" events are generated by the hardware.
* They are mapped to the "side" and "extra" mouse buttons here. */
{KIND_FILTERED, 0x3f, 0x7a, EV_KEY, BTN_SIDE, 1}, /* left dblclick */
{KIND_FILTERED, 0x43, 0x7e, EV_KEY, BTN_EXTRA, 1},/* right dblclick */
/* keyboard. */
{KIND_FILTERED, 0xd2, 0x0d, EV_KEY, KEY_KP1, 1},
{KIND_FILTERED, 0xd3, 0x0e, EV_KEY, KEY_KP2, 1},
{KIND_FILTERED, 0xd4, 0x0f, EV_KEY, KEY_KP3, 1},
{KIND_FILTERED, 0xd5, 0x10, EV_KEY, KEY_KP4, 1},
{KIND_FILTERED, 0xd6, 0x11, EV_KEY, KEY_KP5, 1},
{KIND_FILTERED, 0xd7, 0x12, EV_KEY, KEY_KP6, 1},
{KIND_FILTERED, 0xd8, 0x13, EV_KEY, KEY_KP7, 1},
{KIND_FILTERED, 0xd9, 0x14, EV_KEY, KEY_KP8, 1},
{KIND_FILTERED, 0xda, 0x15, EV_KEY, KEY_KP9, 1},
{KIND_FILTERED, 0xdc, 0x17, EV_KEY, KEY_KP0, 1},
{KIND_FILTERED, 0xc5, 0x00, EV_KEY, KEY_Q, 1},
{KIND_FILTERED, 0xc6, 0x01, EV_KEY, KEY_B, 1},
{KIND_FILTERED, 0xde, 0x19, EV_KEY, KEY_C, 1},
{KIND_FILTERED, 0xe0, 0x1b, EV_KEY, KEY_D, 1},
{KIND_FILTERED, 0xe6, 0x21, EV_KEY, KEY_E, 1},
{KIND_FILTERED, 0xe8, 0x23, EV_KEY, KEY_F, 1},
/* "special" keys */
{KIND_FILTERED, 0xdd, 0x18, EV_KEY, KEY_KPENTER, 1}, /* "check" */
{KIND_FILTERED, 0xdb, 0x16, EV_KEY, KEY_MENU, 1}, /* "menu" */
{KIND_FILTERED, 0xc7, 0x02, EV_KEY, KEY_POWER, 1}, /* Power */
{KIND_FILTERED, 0xc8, 0x03, EV_KEY, KEY_TV, 1}, /* TV */
{KIND_FILTERED, 0xc9, 0x04, EV_KEY, KEY_DVD, 1}, /* DVD */
{KIND_FILTERED, 0xca, 0x05, EV_KEY, KEY_WWW, 1}, /* WEB */
{KIND_FILTERED, 0xcb, 0x06, EV_KEY, KEY_BOOKMARKS, 1}, /* "book" */
{KIND_FILTERED, 0xcc, 0x07, EV_KEY, KEY_EDIT, 1}, /* "hand" */
{KIND_FILTERED, 0xe1, 0x1c, EV_KEY, KEY_COFFEE, 1}, /* "timer" */
{KIND_FILTERED, 0xe5, 0x20, EV_KEY, KEY_FRONT, 1}, /* "max" */
{KIND_FILTERED, 0xe2, 0x1d, EV_KEY, KEY_LEFT, 1}, /* left */
{KIND_FILTERED, 0xe4, 0x1f, EV_KEY, KEY_RIGHT, 1}, /* right */
{KIND_FILTERED, 0xe7, 0x22, EV_KEY, KEY_DOWN, 1}, /* down */
{KIND_FILTERED, 0xdf, 0x1a, EV_KEY, KEY_UP, 1}, /* up */
{KIND_FILTERED, 0xe3, 0x1e, EV_KEY, KEY_OK, 1}, /* "OK" */
{KIND_FILTERED, 0xce, 0x09, EV_KEY, KEY_VOLUMEDOWN, 1}, /* VOL + */
{KIND_FILTERED, 0xcd, 0x08, EV_KEY, KEY_VOLUMEUP, 1}, /* VOL - */
{KIND_FILTERED, 0xcf, 0x0a, EV_KEY, KEY_MUTE, 1}, /* MUTE */
{KIND_FILTERED, 0xd0, 0x0b, EV_KEY, KEY_CHANNELUP, 1}, /* CH + */
{KIND_FILTERED, 0xd1, 0x0c, EV_KEY, KEY_CHANNELDOWN, 1},/* CH - */
{KIND_FILTERED, 0xec, 0x27, EV_KEY, KEY_RECORD, 1}, /* ( o) red */
{KIND_FILTERED, 0xea, 0x25, EV_KEY, KEY_PLAY, 1}, /* ( >) */
{KIND_FILTERED, 0xe9, 0x24, EV_KEY, KEY_REWIND, 1}, /* (<<) */
{KIND_FILTERED, 0xeb, 0x26, EV_KEY, KEY_FORWARD, 1}, /* (>>) */
{KIND_FILTERED, 0xed, 0x28, EV_KEY, KEY_STOP, 1}, /* ([]) */
{KIND_FILTERED, 0xee, 0x29, EV_KEY, KEY_PAUSE, 1}, /* ('') */
{KIND_FILTERED, 0xf0, 0x2b, EV_KEY, KEY_PREVIOUS, 1}, /* (<-) */
{KIND_FILTERED, 0xef, 0x2a, EV_KEY, KEY_NEXT, 1}, /* (>+) */
{KIND_FILTERED, 0xf2, 0x2D, EV_KEY, KEY_INFO, 1}, /* PLAYING */
{KIND_FILTERED, 0xf3, 0x2E, EV_KEY, KEY_HOME, 1}, /* TOP */
{KIND_FILTERED, 0xf4, 0x2F, EV_KEY, KEY_END, 1}, /* END */
{KIND_FILTERED, 0xf5, 0x30, EV_KEY, KEY_SELECT, 1}, /* SELECT */
{KIND_END, 0x00, 0x00, EV_MAX + 1, 0, 0}
Pour ma part j'ai changé les touches 0 à 9 parles touches du pavé numérique
et la touche A parla touche Q
ex KEY_1 parKEY_KP1
pour obtenir les codes attribués à chaque touche
gedit /usr/src/linux-headers-`uname -r`/include/linux/input.h
mais pour aller plus loin et configurer les touches TV; DVD; stop ; enregistrement etc ... j'utilise xev et Préférences/raccourcis claviers.
Or les keycodes du input.h du noyau et ceux indiqués parxev, ne sont pas forcément les mêmes:
pour le noyau 2.6.35-22 :
* pour la touche 1 du clavier numérique le input.h donne 79 comme keycode et xev donne 87!
* de même pour la touche "windows" ou "super_L" le input.h donne 125(KEY_LEFTMETA) et xev donne 133
Il y a donc un décalage dans le cas de ce noyau de 8 codes!
Petite astuce si la touche Windows ne fonctionne pas:
gconftool-2 --set /apps/metacity/global_keybindings/panel_main_menu --type string "Super_L"
rétablis la touche windows.
Donc pour attribuer les bons codes aux touches:
* __Votre clavier multimédia a des touches multimédia non configurées__
Exemple:
xev renvoie pour la touche FN + F5:
" state 0x2010, keycode 156 (keysym 0x1008ff41, XF86Launch1), same_screen YES "
donc le keycode associé dans le fichier input.h est 156-8=148 donc KEY_PROG1 pour le noyau 2.6.35-22
Il suffit alors de remplacer dans ati_remote.c :
{KIND_FILTERED, 0xc9, 0x04, EV_KEY, KEY_DVD, 1}, /* DVD */
par
{KIND_FILTERED, 0xc9, 0x04, EV_KEY, KEY_PROG1, 1}, /* DVD */
Enfin , nous voulons utiliser notre lecteur multimédia préféré:( vlc dans mon cas) pour la touche DVD de la télécommande
Il suffit d'aller dans Préférences/raccourcis claviers et ajouter le lancement de vlc avec comme touche de raccourcis le keysym XF86Launch1
et le tour est joué !
* __Votre clavier multimédia est parfaitement configuré:__
Il faut donc chercher donc connaitre le keycode de la touche et keysim associé.
La commande : $ xmodmap -pke
vous donne la relation keycode-keysim; sinon xev fait normalement bien le travail
On cherche alors la correspondance du keycode dans le fichier input.h (en retirant 8 dans le cas du noyau 2.6.35-22)
Voir l'exemple prédent pour la fin de la modification du ficher ati_remote.c
une fois le fichier modifié, il n'y a plus qu'à compiler le pilote
gedit linux-source-2.6.17/drivers/usb/input/Makefile
version intrepid et suivante:
gedit linux-source-2.6.35/drivers/input/misc/Makefile
voici le Makefile :
VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 35
EXTRAVERSION = .13-ubuntu1
NAME=Crazed Snow-Weasel
ifneq ($(KERNELRELEASE),)
#
# Make rules for use from within 2.6 kbuild system
#
obj-m += ati_remote.o
else # We were called from command line
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
all:
$(MAKE) -C $(KDIR) M=$(PWD) modules
install: all
$(MAKE) -C $(KDIR) M=$(PWD) modules_install
clean:
rm -f *.mod.c *.ko *.o *~ core *.i
endif
cd linux-source-2.6.17/drivers/usb/input/
make
version intrepid et suivantes:
cd linux-source-2.6.35/drivers/input/misc
make
le pilote compilé est le fichier ati_remote.ko
Pour le tester dans un premier temps:
- enlever le pilote actuel déjà chargé
sudo rmmod ati_remote
la télécommande ne répond plus à présent.
==== Installation du nouveau module ====
sudo insmod ati_remote.ko
la commande se fait toujours dans le répertoire ou se situe le fichier ati_remote.ko
normalement la télécommande réagit avec les nouvelles touches assignées
Maintenant pour l'installer définitivement
sudo cp ati_remote.ko /lib/modules/`uname -r`/kernel/drivers/usb/input/ati_remote.ko
version intrepid et suivantes:
sudo cp ati_remote.ko /lib/modules/`uname -r`/kernel/drivers/input/misc/ati_remote.ko
Cette méthode n'est pas très élégante puisqu'elle écrase le module actuel
Mais elle évite tout conflit avec l'ancien pilote puisqu'il n'existe plus
de plus le pilote est chargé directement au démarrage
Si écraser le fichier vous fait hérisser les poils, il est possible de faire un backup du fichier avant de l'écraser.
==== Changer le canal de communication ====
Si votre voisin a eu la bonne idée d'acheter la même télécommande que vous, il se peux qu'il arrive à prendre le contrôle de votre ordinateur (et vous le contrôle du sien). Pour remédier à ce problème assez embêtant, il faut changer le canal de communication de la télécommande pour se distinguer de celle du voisin.
=== Configuration de la télécommande ===
Pour cela, on appuie quelques secondes sur le bouton "main" de la télécommande jusqu'à ce que la LED de contrôle se mette à clignoter. Elle clignote autant de fois que le numéro du canal sur lequel est configuré la télécommande. Une fois que la LED cesse de clignoter, on rentre un nouveau canal (différent du voisin bien sûr) à l'aide des touches numériques (les canaux vont de 1 à 16, ne pas oublier de mettre le 0 si on choisi un canal de 1 à 9, ex : 07). On confirme le numéro en ré-appuyant sur le bouton "main". La LED clignote le nombre de fois correspondant au canal sélectionné pour confirmer.
=== Configuration du module ===
Il faut ensuite procéder à la configuration du module. A partir de là, 2 choix s'offre a nous : soit on masque le canal du voisin, soit on autorise que le nôtre, tout dépend si on connaît le canal du voisin :p
== Masquer un seul canal ==
Le calcul du masque est assez simple : 2^canal_voisin
Retenez ensuite la valeur, on va en avoir besoin pour la configuration
== Autoriser un seul canal ==
Là aussi le calcul n'est pas beaucoup plus compliqué : 65535-(2^canal)
== Tests et enregistrement du masque ==
Une fois le masque trouvé, on va le tester avant de l'enregistrer. Pour cela, commencez pardécharger le module à l'aide de la commande
sudo rmmod ati_remote
Puis rechargez le en passant en paramètre le masque calculé via la commande
sudo modprobe ati_remote channel_mask=masque
Remplacez masque parle masque calculé juste au dessus.
Il vous reste à tester maintenant si l'ordinateur répond toujours aux commandes de la télécommande :)
Si tout est ok, il ne reste plus qu'à enregistrer le masque pour que le module soit chargé avec celui-ci au démarrage. Pour cela, éditer le fichier /etc/modprobe.d/options
Sur ubuntu :
gksudo gedit /etc/modprobe.d/options
Sur kubuntu :
kdesu kate /etc/modprobe.d/options
A la fin du fichier, rajouter ceci
# Set channel for ATI Remote Wonder
options ati_remote channel_mask=masque
En remplaçant toujours masque parle masque calculé
== Et si ça ne marche pas ? ==
Il est possible d'activer un mode debug pour voir les signaux capturés et ceux masqués à l'aide de la commande
sudo modprobe channel_mask=masque debug=1
Tout sera alors loggué dans le fichier /var/log/syslog, pour l'afficher en temps réel, exécutez
tail -f /var/log/syslog
===== Utiliser sa télécommande avec le programme LIRC =====
Lirc est un programme permettant de contrôler à l'aide d'une télécommande votre ordinateur.
L'avantage de ce programme est qu'il peut s'adapter à presque toute vos envies. Son principal défaut est une installation complexe, voici la méthode la plus simple pour installer et configurer Lirc sur votre ordinateur.
Vous trouverez sur le wiki d'autres pages traitant de la configuration de lirc et notamment une page présentant les fichiers lircrc permettant de personnaliser l'utilisation de votre télécommande.
Remarque d'un lecteur : Vous trouverez [[http://blog.roozeec.fr/2007/04/18/telecommande-ati-remote-wonder-sous-ubuntu/|ici]] une page de blog qui m'a été très utile, testé avec succès sous festy.
==== Prérequis ====
On installe LIRC et ce qu'il faut pour compiler le module de notre télécommande :
sudo apt-get install lirc lirc-modules-source module-assistant
Ou parle protocole **apt**
* [[apt://lirc|lirc]]
* [[apt://lirc-modules-source|lirc-modules-source]]
* [[apt://module-assistant|module-assistant]]
==== Configuration à partir des sources ====
puis on reconfigure à partir des sources :
sudo dpkg-reconfigure lirc-modules-source
Sur l'écran qui apparaît, cliquez sur **Ok**
Dans l'ecran proposant de choisir le module lirc choisir : **atiusb** puis **Ok**
Répondre **No** sur l'écran suivant puis **Install the package maintener version** et **Ok**
gksudo gedit /etc/lirc/hardware.conf
Rajoutez :
MODULES="lirc_atiusb"
==== Finalisation ====
Puis copier les lignes suivantes dans un terminal :
sudo m-a update,prepare
sudo rm /usr/src/lirc*deb
sudo m-a clean lirc
sudo m-a a-i lirc
sudo depmod -a
==== Suppression du module ati_remote ====
On empêche le chargement du module (pilote) ati_remote :
gksudo gedit /etc/modprobe.d/blacklist
On rajoute ceci à la fin :
# Télécommande ATI
blacklist ati_remote
==== Configurer sa télécommande ====
gksudo gedit /etc/lirc/lircd.conf
LE contenu du fichier doit reprendre le fichier de configuration de votre télécommande. Voir http://lirc.sourceforge.net/remotes/atiusb/lircd.conf.atiusb
Pour lancer lirc au démarrage de Gnome :
**Système** >> **Préférences** >> **Sessions** >> **Programmes au démarrage**
et ajouter irexec
Ensuite reste le plus "facile" configurer les programmes pour utiliser notre télécommande.
gedit ~/.lircrc
Vous trouverez des exemples de fichiers de configuration pour Lirc sur le wiki : [[:tutoriel:lircrc|Création de fichiers lircrc]].
Pour finaliser l'installation redémarrez votre ordinateur.
Si vous avez des doutes sur la réussite de votre installation, lancez un Terminal et tapez le commande :
irw
Lors de l'appui sur une des touche de votre télécommande le Terminal doit vous signaler un evenement.
Bon courage !!
=====Voir aussi=====
* [[http://blog.roozeec.fr/2007/04/18/telecommande-ati-remote-wonder-sous-ubuntu/|Tutoriel très utile pour paramétrer les touches]]