Forums

ericc is dreaming :: Forums :: Support :: Linux
 
<< Sujet précédent | Sujet suivant >>
Telecommande infrarouge
Modérateurs:ericc, toxxic, mich_belge
Auteur Message
ericc
lun. avril 15 2013, 21:20
ericc

Membre enregistré #1
Inscrit(e) le: ven. avril 06 2007, 20:31
Messages: 2265
Dans le fond d'un de mes tiroirs, j'ai retrouvé une "vieille" télécommande infrarouge qui était fournie avec mon précédent PC (un Packard Bell) qui contenait une carte tuner TV.

Le récepteur se connectant en USB, je me suis dis "Tient cela serait amusant de voir si je peux l'utiliser sur mon Linux !!" (j'ai de drôles d'idées parfois )
Aussitôt dit, aussitôt fait ...

Voici le résumé de 5 jours de galère et de recherche sur le net pour finalement faire fonctionner cette télécommande comme je le souhaitais, au cas ou cela servirait à quelqu'un d'autre .

Avant toute chose, je dois dire que, après avoir connecté le récepteur (et changé les piles dans la télécommande) j'ai eu la bonne surprise de constater que les 3/4 des boutons fonctionnaient .
Je pouvais réglé le son, le couper complètement, dans VLC et Banshee, je pouvais lancer un morceau, le mettre en pause, avancer, etc.
Dans le terminal, quand j'appuyais sur les chiffres, j'obtenais des "&é"'(." ce qui s'explique par mon clavier AZERTY, et le fait que l'on doivent appuyé sur "SHIFT" pour obtenir les chiffres (ce qui n'est pas le cas sur un QWERTY). Je pouvais aussi déplacer le curseur avec les flèches de la molette circulaire, et valider avec le bouton "OK".
En résumé, c'était mieux qu'un "bon" départ.
Mais le diable se cache dans les détails
Je voulais pouvoir utiliser les boutons colorés qui se trouve en haut de la télécommande, pour pouvoir lancer des applications.
Inutile de précisé que l'association dans Gnome ne fonctionnais pas, les touches semblaient ne pas être reconnues.

Premières recherches sur Google m’amènent vers un logiciel LIRC (Linux Infrared Remote Control) puis un conseil sur le site de StackExchange, m’envoie dans la même direction.

Puisque tout le monde le dit, j'installe LIRC. Première mauvaise surprise, alors que tout le monde dit que sous Debian, il y a une auto-configuration, chez moi cela ne fonctionne pas et la télécommande n'est pas reconnue
Après quelques heures, j'arrive malgré tout à faire fonctionné le tout.
Banshee propose un plugin pour LIRC, que j'active immédiatement ... et là déception !
Plus rien ne fonctionne, même plus le réglage du volume sonore
En fait, la télécommande envoi des codes (keycode, numérique) que LIRC intercepte et traduit en action (volume up) ou en touches (1,2,3,OK, ...), c'est la première étape que j'avais fait.
Mais ensuite pour chaque application, il faut écrire un fichier de paramètres que convertit les actions de LIRC, en actions compréhensible pour l'application ... inutile de préciser que chaque application utilise ses propres actions avec des mots clés différents (Vol+ ou volumeup ou VolumeUp ou ...) et que trouver cette liste de mots clés pour chaque application est très compliqué.
Certaines applications comme XMBC les fournissent assez facilement, d'autres comme Banshee ou Totem ne fournissent rien.

C'est un travail qui me paraissait titanesque, surtout que, comme je l'ai déjà dit, sans LIRC les 3/4 fonctionnaient bien

J'ai donc cherché une autre solution, et cela ne fut pas simple (alors que manifestement, c'est la méthode correcte avec les kernels les plus récents) car la majorité des articles/tutoriels me ramenaient vers LIRC.

Tout d'abord, les informations de mon système actuel :
  1. ericc@predator:~$ uname -a
  2. Linux predator 3.2.0-4-amd64 #1 SMP Debian 3.2.32-1 x86_64 GNU/Linux


L'information importante (que tout le monde semble avoir négligé) c'est que depuis la version 2.6.36 du kernel, les drivers de LIRC ont été inclus dans celui-ci !!!
C'est la raison pour laquelle ma télécommande fonctionne sans LIRC ...

Ce qu'il reste à faire, c'est de "remapper" les keycodes qui ne sont pas reconnu en quelque chose de plus "standard"

Ici il semble y avoir deux méthode, selon le protocole infrarouge que votre télécommande utilise.

La première méthode, que je reproduis ici ne fonctionne pas pour moi ! Donc c'est sans garantie.

Tout d'abord, il faut installer le package "ir-keytable", puis on démarre le module "rc-imon-mce"
  1. sudo modprobe rc-imon-mce

Ensuite, grâce à ir-keytable, on va généré un fichier "keymap" qui sera utilisé par votre télécommande, comme celui qu'utilise votre clavier.
  1. sudo ir-keytable -s rc0 -p rc-6 -c -w /lib/udev/rc_keymaps/imon_mce
  2. Read imon_mce table
  3. Old keytable cleared
  4. Wrote 77 keycode(s) to driver
  5. Protocols changed to RC-6

va créer le fichier keymap "imon_mce" dans '/lib/udev/rc_keymaps/'
Pour rendre les modifications permanentes, il faut ajouter le module "rc-imon-mce" dans "/etc/modules" et créer le fichier "/etc/udev/rules.d/90-imon.rules" avec le contenu :
  1. # Override the keytable for iMON
  2. ACTION=="add|change", SUBSYSTEM=="rc", DRV_NAME="imon", \
  3.    RUN+="/usr/bin/ir-keytable -s $name -p rc-6 -c -w /lib/udev/rc_keymaps/imon_mce"
  4.  


Chez moi, "ir-keytable" ne fonctionne pas ! Quand je le lance il me dit :
  1. $ ir-keytable
  2. Couldn't find any node at /sys/class/rc/rc*.

Donc passons au plan B

Méthode n°2
Toutes les actions suivantes doivent se faire en tant que 'root' donc commencez par faire un :
  1. $ su
si vous connaissez le password root ou
  1. $ sudo su
sinon

En premier lieu, il faut trouver quel "event" (événement) retourne les code de votre télécommande.
On commence par identifier celle-ci:
  1. # lsusb
  2. Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  3. Bus 002 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
  4. Bus 003 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  5. Bus 004 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  6. Bus 005 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  7. Bus 006 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  8. Bus 007 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  9. Bus 008 Device 001: ID 1d6b:0001 Linux Foundation 1.1 root hub
  10. Bus 001 Device 002: ID 046d:0809 Logitech, Inc. Webcam Pro 9000
  11. Bus 001 Device 003: ID 0bda:0151 Realtek Semiconductor Corp. Mass Storage Device (Multicard Reader)
  12. Bus 002 Device 003: ID 0409:005a NEC Corp. HighSpeed Hub
  13. Bus 006 Device 002: ID 13ec:0006 Zydacron HID Remote Control
  14. Bus 002 Device 004: ID 046d:c049 Logitech, Inc. G5 Laser Mouse
  15. Bus 002 Device 005: ID 0557:8021 ATEN International Co., Ltd
  16. Bus 002 Device 006: ID 046d:c221 Logitech, Inc. G11/G15 Keyboard / Keyboard
  17.  
chez moi, elle est reconnue en tant que "Zydacron HID Remote Control", vous notez l'ID qui se trouve devant le nom : "13ec:0006".
Ensuite, on liste le contenu de "/dev/input/by-id/" en mode long c'est important, tout les fichiers dans ce répertoire étant des liens symboliques (soft-link) vers l'event correspondant:
  1. # ls -l /dev/input/by-id/
  2. total 0
  3. lrwxrwxrwx 1 root root 10 Apr 15 19:27 usb-046d_0809_CAAE60BE-event-if00 -> ../event11
  4. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-event-if01 -> ../event2
  5. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-event-kbd -> ../event1
  6. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-event-mouse -> ../event3
  7. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-if02-event-mouse -> ../event3
  8. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-if02-mouse -> ../mouse1
  9. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-046d_Gaming_Keyboard-mouse -> ../mouse1
  10. lrwxrwxrwx 1 root root 10 Apr 15 19:27 usb-13ec_0006-event-kbd -> ../event10
  11. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-Logitech_USB_Gaming_Mouse-event-mouse -> ../event0
  12. lrwxrwxrwx 1 root root  9 Apr 15 19:27 usb-Logitech_USB_Gaming_Mouse-mouse -> ../mouse0
  13.  
Grâce à l'ID que nous avons noté précédemment, on repère la bonne ligne :
usb-13ec_0006-event-kbd -> ../event10
ce qui nous informe que l'event 10 est celui correspondant à notre télécommande.

Maintenant, on va utiliser le programme "keymap" pour lire les codes envoyé par la télécommande et créer un fichier de conversion.
Personnellement, j'ai ouvert 2 terminaux, l'un avec "keymap" et l'autre avec "vi" pour créer le fichier de conversion.
Ma télécommande étant identifié comme "Zydacron", j'ai appelé mon fichier "zydacron" (histoire d'être cohérent)
1er terminal (root)
  1. #/lib/udev/keymap -i input/event10

2eme terminal (root)
  1. vi  /lib/udev/keymaps/zydacron

Dans le premier terminal, quand j'appuis sur le touche de la télécommande, je vois :
  1. Press ESC to finish, or Control-C if this device is not your primary keyboard
  2. scan code: 0x70027   key code: 0
  3. scan code: 0x7001E   key code: 1
  4. scan code: 0x7001F   key code: 2
  5. driver did not send SYN event in between key events; previous event:
  6. scan code: 0xC00CD   key code: playpause
  7. driver did not send SYN event in between key events; previous event:
  8. scan code: 0xC00B3   key code: fastforward
  9. driver did not send SYN event in between key events; previous event:
  10. (no scan code received)  key code: screen
  11. driver did not send SYN event in between key events; previous event:
  12. (no scan code received)  key code: 7
  13. driver did not send SYN event in between key events; previous event:
  14. scan code: 0xC0047   key code: audio
  15. driver did not send SYN event in between key events; previous event:
  16. scan code: 0xC0049   key code: aux
  17.  

Ici, on note que ma télécommande n'est pas de "bonne qualité" ! Il y a des touches qui donnent des erreurs (mais qui fonctionnent quand même) et d'autre qui ne retourne aucun code voir même qui "pourrissent" le code de la touche suivante. Cela ne concerne que 3 touches, je vais vivre sans
(je n'ai coller qu'un nombre limité de touches, pour donner un exemple du résultat)
Je traduis dans le fichier par :
  1. 0x70027 kp0
  2. 0x7001E kp1
  3. 0x7001F kp2
  4. ...
  5. 0xC00CD playpause
  6. 0xC00B3 fastforward
  7. 0xC0047 f13 # music
  8. 0xC0049 f14 # photo
  9.  
  10.  
J'ai entré dans le fichier toutes les touches, même celles qui retournaient un code correct, ce n'est peut être pas nécessaire !
Les touches supérieures de couleur, qui ne fonctionnaient pas, je les ai "remapper" en touche de fonctions, mon clavier disposant de 12 touches de fonctions, j'ai commencé à 13 pour éviter les conflits.
Les touches 0,1,2,3 ... qui retournaient des symboles et autres caractères accentués, je les remapper sur les touches du pavé numérique (kp = keypad)
La liste complète des actions validesAttention cependant car toutes les actions ne sont pas forcemment reconnues par votre système ! Ainsi dans la liste, vous retrouvez "audio" et "aux" qui sont par défaut sur ma télécommande mais ne sont pas reconnues par Gnome, d'où l'intéret de remapper sur des touches de fonctions.

Quand le fichier est complet, sauvegardez le et sortez de "keymap".
Maintenant on peux tester :
  1. #  /lib/udev/keymap input/event10 /lib/udev/keymaps/zydacron
  2. Remapped scancode 0x70027 to 0x52 (prior: 0x0b)
  3. Remapped scancode 0x7001e to 0x4f (prior: 0x02)
  4. Remapped scancode 0x7001f to 0x50 (prior: 0x03)
  5. Remapped scancode 0x70020 to 0x51 (prior: 0x04)
  6. Remapped scancode 0x70021 to 0x4b (prior: 0x05)
  7. Remapped scancode 0x70022 to 0x4c (prior: 0x06)
  8. Remapped scancode 0x70023 to 0x4d (prior: 0x07)
  9. Remapped scancode 0x70024 to 0x47 (prior: 0x08)
  10. Remapped scancode 0x70025 to 0x48 (prior: 0x09)
  11. Remapped scancode 0x70026 to 0x49 (prior: 0x0a)
  12. Remapped scancode 0xc000d to 0x0f (prior: 0x16e)
  13. ...
  14.  

Directement dans le terminal, vous pouvez déjà tester les chiffres, et autres actions (Ok, backspace, les flèches de directions)
Dans (Gnome3) System Tools -> System Settings -> Keyboard -> Shortcuts , vous pouvez créer un nouveau shortcut (dans "Custom Shortcut") et essayer de l'associer avec une touche de fonction.

Si quelque chose de fonctionne pas, retour à la case départ "1er terminal" et essayez de corriger. Éventuellement, vous pouvez essayé de comparer le code retourné par votre clavier (chez moi "event1") mais j'ai eu des choses assez bizarre (plein de lignes vides comme si le clavier envoyait des codes fantôme même si je n'appuyais pas sur une touche).

Quand tout est correct (ou plutôt comme vous le souhaitez), il faut rendre ces changements permanent en ajoutant une règle à udev qui va associer la télécommande à votre fichier.
  1. # vi /lib/udev/rules.d/95-keymap.rules

Dans la première partie du fichier, après LABEL="keyboard_usbcheck" mais avant GOTO="keyboard_end", ajoutez :
  1. ENV{ID_VENDOR_ID}=="13ec", ENV{ID_MODEL_ID}=="0006", RUN+="keymap $name zydacron"

le "VENDOR_ID" et "MODEL_ID" correspondent, si vous avez bien suivi, au code ID retourné par lsusb et que je vous avais demandé de noter.

Redémarrez udev :
  1. # service udev restart
ou rebootez
Voilà, maintenant à chaque fois que je connecte sur USB mon récepteur (peu importe le port), UDEV va associer le fichier de keymap que je viens de créer.

A noter:
Maintenant je peux lancer Banshee à partir de ma télécommande et naviguer dans l'application sans soucis. Pour que cela fonctionne correctement, j'ai mapper une des touches sur "Tab", ce qui me permet de me déplacer dans les différentes fenètres.
Dans l'entrefait, j'ai trouvé la page officiel du plugin banshee-lirc et qui donc donne les commandes supportés ... je faisais mieux sans reconfigurer ma télécommande
The list banshee commands supported by the extension is:
* play
* pause
* stop
* previous
* next
* volume-up
* volume-down
* toggle-mute

Je suis content de mettre pris la tête

En esperant que cela serve à quelqu'un

ericc

[ Édité lun. avril 15 2013, 22:01 ]
Retour en haut
Site Internet
toxxic
mar. avril 16 2013, 00:30
toxxic

Membre enregistré #3
Inscrit(e) le: dim. oct. 01 2006, 08:54
Messages: 1421
Merci pour ton retour de prise de tête
Très intéressant pour qui se monte un PC média avec du matos de réccup (PC et télécommande)

Edit : moi je me fait plus chier , j'ai une clef USB 32Gio je mets mes films dessus et je branche sur la playstation... ayant la télécommande et les branchements qui vont bien
Pour le son le PC est branché sur l'ampli , ma sourie passe depuis le canapé , et maximisé sur le 2eme écran je vois bien !

[ Édité mar. avril 16 2013, 00:41 ]
Retour en haut
ericc
mar. avril 16 2013, 10:55
ericc

Membre enregistré #1
Inscrit(e) le: ven. avril 06 2007, 20:31
Messages: 2265
toxxic a écrit ...
Merci pour ton retour de prise de tête
Très intéressant pour qui se monte un PC média avec du matos de réccup (PC et télécommande)
C'est un peu l'idée, si jamais je décide de m'acheter un rasberryPi pour installer XBMC.
Mais c'est valide aussi pour les télécommandes récentes ... car il s'avère que celle ci serait un peu "légère" peut être

toxxic a écrit ...
Edit : moi je me fait plus chier , j'ai une clef USB 32Gio je mets mes films dessus et je branche sur la playstation... ayant la télécommande et les branchements qui vont bien
Pour le son le PC est branché sur l'ampli , ma sourie passe depuis le canapé , et maximisé sur le 2eme écran je vois bien !

Actuellement, je fais à peu près la même chose. Mon lecteur de DVD dispose d'une prise USB et lit les DivX (avec sous-titre).
Seul soucis, assez récent, même si le lecteur lit les DVD HD, il ne supporte pas ce format en DivX. Dès que la résolution dépasse les 720x576, il me dit "format video inconnu" et ne passe que le son. Il faut dire que le lecteur a quelques années, et à l'époque on ne parlait pas de DivX HD.
Je dois donc soit convertir, soit downloader une autre version.
D’où l'idée de mettre un RasPi. Ceci dit, d'après mes calculs, ce n'est pas si bon marché que cela ! Car si le RasPi lui même ne coute "que" 35$ (42€ chez un revendeur) il faut rajouter pas mal d'équipement pour que cela soit utilisable (hub USB alimenté, disque dur externe, dongle Wifi, une boite, tout les cables ... etc)

ericc
Retour en haut
Site Internet
toxxic
mar. avril 16 2013, 12:42
toxxic

Membre enregistré #3
Inscrit(e) le: dim. oct. 01 2006, 08:54
Messages: 1421
Sur la Playstation , souvent (voir tout le temps) en section "vidéo" elle ne reconnaît pas le format et m'annonce qu'il n'y a pas de vidéos sur la clef...
En appuyant sur le triangle (manette ou télécommande) ça affiche tous les fichiers et dossiers quel qu'ils soit et là magique ça les lit

J'ai apporté quelques logiciels (codecs) supplémentaires a la playstation , du coup elle lit beaucoup plus de format que ma freebox sur laquelle parfois j'ai l'image mais pas le son et même l'image est moins bien décodée (ça bave et les noirs profonds pixelisent grisés)
Bon, c'est sur si le film a été compressé a la masse quelque soit le lecteur ça reste pourri !!!
Retour en haut
 

Allez à:     Retour en haut

Fil d’informations pour ce sujet: RSS 0.92 Fil d’informations pour ce sujet: RSS 2.0 Fil d’informations pour ce sujet: RDF
Powered by e107 Forum System
Temps d'exécution:0.1012s, dont0.0131de celui des requêtes.Requêtes BdD:28. Utilisation mémoire:1,576ko