Wiki

Outils pour utilisateurs

Outils du site


telecommandes

Télécommandes sous linux

Cette page concerne ....

Comment piloter votre mythbox depuis votre canapé? même si plusieurs solutions existent (écrans tactiles, clavier, souris), la télécommande est certainement le choix privilégié par la plupart.

Coté matériel

Une fois ce choix validé, il va vous falloir 2 éléments : une télécommande et un récepteur qui utilise le même protocole de communication. C'est évident mais c'est aussi bien de le dire.

Il existe 2 modes de communication pour les télécommandes: l'infrarouge (IR) portée 5 mètres environ et la radio-fréquence (RF) portée 10 mètres et passe à travers les murs.

Il y a très peu de télécommandes RF: dommage car c'est bien pratique: plus besoin de visée, ni d'ouvrir le meuble qui abrite la box. En IR, vous avez l'embarras du choix. Choisissez une télécommande MCE, nous verrons pourquoi par la suite.

La majorité des télécommandes émettent dans un seul protocole cependant on peut trouver des télécommandes (Logitec par exemple) qui émettent dans 2 protocoles simultanément.

Par contre, les récepteurs sont souvent capable de recevoir plusieurs protocoles. Attention il ne faut pas confondre les récepteurs infrarouges pour télécommande et les récepteurs irda 1); ceux-ci sont destinés à l’échange de données au travers de la communication infra-rouge entre 2 appareils, ils ne sont pas fait pour la réception des signaux des télécommandes 2).

Chaque constructeur de matériel a son protocole : Sony, Nec, ….. Toutefois les protocoles Philips RC5 et RC6 sont les plus répandus et sont devenus quasi-universels.

Chaque touche de votre télécommande emet un signal binaire spécifique qui peut être différent de celle de la même touche d'une autre télécommande; ce qui fait le bonheur des télécommande universelles.

Coté logiciel

Partie récepteur

Depuis quelques années, tout est fait pour que les télécommandes IR soient nativement reconnues par le noyau linux. 3) Ainsi la plupart des récepteurs “populaires” fonctionnent directement sans intervention comme pour votre clavier ou votre souris.

Si vous avez fabriqué vous-même votre récepteur ou qu’il s’agit de matériel non pris en charge par le noyau, vous devez utiliser les drivers fournis par Lirc ou ir-trans 4) par exemple pour que votre récepteur soit reconnu.

Télécommande

Les télécommandes possèdent des touches qui ne sont pas disponible sur le clavier comme les touches multimédia: play, stop, pause, enregistrement, avance rapide, etc… ou les touches de couleur …. Longtemps ça a été l’anarchie dans le codage de ces touches jusqu’à ce que les développeurs de DVB-API définissent un standard universel de codage que vous retrouvez sur cette page.

Ces codes viennent s’ajouter à la liste des codes du clavier mais contrairement aux codes du clavier, les touches ne changent pas de signification quand on les utilise en combinaison avec une autre touche comme maj, alt, ctrl … c’est pour cela que des nouveaux codes ont été attribués aux touches numériques (1,2,3,…..) par exemple.

Les ennuis commencent quand on veut utiliser les codes des touches des télécommandes dans un serveur X. En effet, le codage des touches est effectué sur 1 octet de 8 bits ce qui donnent 256 possibilités et ces 256 possibilités sont toutes utilisées pour le clavier. Ce qui signifie que le serveur X en l’état à savoir X11, ne reconnaît pas les codes des télécommandes qui sont au delà de 256: c’est à dire la plupart. Il faut donc soit «remapper» la télécommande, soit utiliser un logiciel tiers comme lirc ou it-trans pour envoyer les ordres au serveur X. Tout cela devrait changer avec X12 qui devrait prendre en compte tous les codes.

En résumé voici les différents cas de figure:

  • Votre récepteur est reconnu pas le noyau: parfait mais si vous voulez l’utiliser sous X, il faut
    • soit remapper les codes
    • soit utiliser lirc ou ir-trans
  • Votre récepteur n’est pas reconnu par le noyau, regardez du coté de lirc si un driver est disponible pour votre matériel.

Comment savoir si mon récepteur est reconnu par le noyau linux ?

Il existe un outil «ir-keytable» qui permet de savoir rapidement si votre récepteur est reconnu ou pas. Lancez la commande sous root.

  #  ir-keytable 
      Found /sys/class/rc/rc2/ (/dev/input/event17) with:
    Driver mceusb, table rc-rc6-mce
    Supported protocols: NEC RC-5 RC-6 JVC SONY LIRC other 
    Enabled protocols: NEC RC-5 RC-6 JVC SONY LIRC other 
    Repeat delay = 500 ms, repeat period = 125 ms

il suffit de lire ces informations pour connaitre les capacités de votre récepteur.

Cet outil est disponible sous forme de paquet soit directement, soit sous le nom de v4L-utils. Il est disponible depuis les noyaux 2.6.38. Avant ce noyau, il faut utiliser lirc. 5)

Vous obtenez ce résultat:

  #  ir-keytable 
   Couldn’t find any node at /sys/class/rc/rc*

Cela signifie que votre récepteur n'est pas reconnu par le noyau, mais tout n'est pas perdu pour autant. Il faut aller voir du coté de Lirc, ir-trans ou autre s'il existe un driver pour votre matériel. Google est votre ami.

La commande ir-keytable ne fonctionne pas si lirc est opérationnel. Arrêtez ce service ou dé-installez lirc pour faire ce test.

Comment savoir si ma télécommande est comptatible avec mon récepteur ?

Utilisez la même commande avec l'option -t –test et appuyez sur les touches de votre télécommande

  #  ir-keytable -t
  Testing events. Please, press CTRL-C to abort.
  1354296032.293542: event MSC: scancode = 800f0402
  1354296032.293550: event key down: KEY_NUMERIC_2 (0x0202)
  1354296032.293552: event sync
  1354296032.400534: event MSC: scancode = 800f0402
  1354296032.400537: event sync

Si vous obtenez une réaction, votre télécommande est reconnue. Dans le cas contraire, désolé mais vous ne pouvez pas l'utiliser. Il faut en trouver une autre.

Si vous utilisez une télécommande universelle, essayez avec une autre code. Les codes pour les appareils Philips ou Sony ou Nec devraient faire l'affaire

http://linuxtv.org/downloads/v4l-dvb-apis/remote_controllers.html

http://linhes.org/projects/linhes/wiki/Architecture_and_Customization

1)
InfraRed Data Interface
2)
bien qu’il y a un projet
3)
cela a commencé avec le noyau 2.6.36 et l'on peut considérer que les noyaux 3.xx fonctionnent sur ce mode.
4)
ir-trans est l'équivalent de lirc pour les matériels developpés et vendus par ir-trans.
5)
voir cette page pour connaitre l'évolution du projet
telecommandes.txt · Dernière modification: 30/11/2012 par gilles74