Wiki

Outils pour utilisateurs

Outils du site


lirc

LIRC

Cette page concerne kernel ≥ 2.6.35.

LIRC est un ensemble de logiciel qui permettent de recevoir et d'émettre des signaux infrarouges de nombreuses télécommandes. Ceci permet de commander certaines applications (comme MythTV) avec une télécommande infrarouge (IR).

Préambule

Le processus d'intégration du lirc dans le noyau a commencé avec la version 2.6.35. Certaines modifications sont apparues dans les versions précédentes, mais le gros des modifications sont introduites avec ce noyau.

A terme, lirc va disparaitre ou plutôt va être intégré au noyau. Le principe de fonctionnement sera complétement différent de celui que l'on connait aujourd'hui puisque les télécommandes seront vues comme des périphériques d'entrée et assimilés à des claviers. Cela aura une conséquence directe sur nos installations car sitôt la télécommande reconnut par le noyau, elle sera opérationnelle dans les applications comme un clavier actuellement. Voir ici pour plus de détails

La première étape de ce processus a été engagée avec le noyau 2.6.35, la détection de nombreuses télécommandes a été intégrée dans le noyau et cette détection conduit à voir les télécommandes comme des claviers. Néanmoins faute d'accord sur l'emplacement (entre autre) des fichiers d'interprétation des ordres communiqués par les télécommandes, ces fameux fichiers n'ont pas été générés, ni introduits dans le noyau, ce qui conduit à une mauvaise reconnaissance des ordres données par les télécommandes (peu de touches reconnues et donc inutilisable en l'état). LIRC a donc été maintenu mais modifié pour tenir compte de ce nouveau mode de fonctionnement. Le module ir-core a été totalement ré-écrit et un module intermédiaire lirc_dev a été créé pour faire fonctionner les anciens drivers comme des claviers. Ceci correspond à la version lirc 0.8.7 de sept 2010 et au delà.

  Chainage pour les anciens drivers  :  ancien driver matériel ==> module intermédiaire (lirc_dev) ==> ir-core  
   
  Chainage pour les nouveaux drivers  :  nouveau driver matériel ==> ir-core
   

Dans le même temps, la plupart des drivers les plus populaires (imon, mceusb, …) ont été ré-écrit avant d'être introduit dans le noyau. Les drivers lirc_i2c et atiusb ont déjà été modifiés. Au passage, ils ont tous changé de nom (pas très cool pour si retrouver).

Quelle conséquence cela a pour nos installations ?

Tout d'abord tous les tutoriels ou résultats de recherche sur le net qui sont antérieur à juillet 2010, sont probablement erronés.

Tous ceux qui ont une télécommande qui se comporte comme un clavier, vont configurer lirc de la même façon. En revanche ceux qui ne sont pas dans ce mode de fonctionnement vont galérer pour faire fonctionner leur télécommande. (voir Lirc devinput)

Il est impératif de ne plus charger les anciens drivers fournis sous forme de paquet par les distributions, sinon ceux-ci vont entrer en conflit avec les drivers du noyau et interdire le fonctionnement de votre télécommande.

Généralités

Principe de fonctionnement

Il faut que votre récepteur de signaux infrarouge (IR) soit reconnu par votre système. Si votre récepteur est reconnu par le noyau (voir préambule), vous n'aurez rien à faire dans cette étape. Dans le cas contraire, il faut trouver le bon driver (module) pour votre récepteur.

Ensuite, il faut interprété les signaux brutes reçus. Chaque télécommande a sa propre “signature” du signal qu'elle émet (nombre de bits transmis, durée d'une trame, contenu de chaque trame,etc ….). C'est le rôle du fichier /etc/lirc/lircd.conf de faire cette intreprétation.

Enfin, vous devez “mapper” les touches de votre télécommande pour qu'elles exécutent les actions souhaitées dans votre logiciel. Il faut créer un fichier lircrc.

Il ne reste plus qu'à rendre le fonctionnement de lirc automatique en lançant un “deamon”(ou service) au démarrage de votre système. Ce “daemon” est fourni et installé en même temps que lirc mais il faut le configurer avec le fichier /etc/conf.d/lircd.conf

ATTENTION : ne pas confondre le fichier /etc/lirc/lircd.conf qui contient les codes de votre télécommande et le fichier /etc/conf.d/lircd.conf qui définit les paramètres de lancement du daemon.

Processus d'installation

Pour faire fonctionner votre télécommande, vous allez être obligé de respecter certaines étapes :

  1. Installer lirc et ses outils : cette étape ne pose pas de problème particuliers, installez le paquet lirc selon les modalités de votre distribution

Dans certaines distributions, les Outils fournis avec lirc sont dans un autre paquet.

  1. configurer lirc : il faut dire à lirc quel périphérique (votre récepteur IR) utilisé et comment décoder les signaux bruts reçus par votre périphérique

Certaines distributions comme Ubuntu, fournissent un utilitaire pour configurer votre télécommande qui s'éxécute au moment de l'installation.

  1. tester votre télécommande : il convient de savoir si votre récepteur reçoit quelque chose puis de tester votre configuration,
  2. piloter votre application à la télécommande : pour chaque application (mythtv dans notre cas), il faut définir l'action à exécuter pour chaque touche de votre télécommande.

Outils fournis avec lirc

Voici une liste non exhaustive des outils fournis avec lirc

  • mode2 : permet de savoir si votre récepteur reçoit les informations de votre télécommande (ATTENTION : ne fonctionne pas avec certains drivers de récepteur comme dev_input),
  • irw : permet de tester votre configuration de lirc
  • irrecord : permet de générer votre propre fichier de configuration
  • irexec : permet de lancer des fonctions complexes comme l'allumage ou l'extinction de votre PC
  • irsend : permet d'envoyer des ordres vers d'autres équipements (à condition de disposer d'un émetteur IR)

Retrouver tous ces outils sur la page de lirc

Installation

Son installation varie d'une distribution à l'autre (version de LIRC, degré d'automatisation de la distribution, options de compilation) vous pouvez vous référer à la documentation de votre distribution.

Installer la dernière version de LIRC (supérieur à 0.8.7) pour pouvoir appliquer la suite de ce tutoriel. Vous pouvez également avoir besoin du paquet lirc-remotes (base de données de beaucoup de télécommandes) et de pulseaudio-module-lirc (assure le bon fonctionnement de Lirc avec le son).

Sauf cas exceptionnel ou vous devez utiliser un ancien driver de récepteur IR non fourni avec lirc 0.8.7, vous n'avez pas besoin de compiler lirc à partir des sources, c'est même non recommandé et il y a très peu de chance que cela fonctionne (voir préambule)

Configuration

Il existe 2 façons de configurer lirc

  • soit automatiquement avec l'outil gnome-lirc-properties disponible sur toutes les distributions. Il permet de configurer votre récepteur, votre télécommande et lirc sans connaissance approfondie.
  • soit la façon manuelle, à utiliser si vous ne souhaitez pas utiliser gnome-lirc-properties ou qu'il ne donne pas satisfaction. Chaque cas étant un cas particuliers, il est impossible de reporter ici toutes les configurations de toutes les télécommandes. Vous trouverez ci-après un exemple et quelques notions générales qui devraient vous permettre de comprendre les étapes d'installation et de configuration de lirc.

Configuration assistée

Devant la complexité de la configuration de lirc, le projet gnome-lirc-properties a vu le jour. Il vous permet de détecter automatiquement votre récepteur IR, puis vous déclarez votre modèle de télécommande (et de récepteur si la détection a échouée) et le programme se change de mettre à jour les fichiers de configuration afin que votre télécommande soit opérationnelle. Il ne vous restera plus qu'à trouver ou créer votre fichier de mappage lircrc pour votre application. FIXME créer le tuto gnome_lirc-properties

Configuration manuelle

Ce mode de configuration nécessite de bien connaitre le fonctionnement du noyau et de lirc pour être entreprise. Elle est bien sûr inutile si la procédure assistée a fonctionné.

Identifier le driver de votre récepteur

La première chose à faire est de savoir si votre récepteur infrarouge (IR) est reconnu par votre installation. Tapez dans une console en root

 cat /proc/bus/input/devices

Si voyez votre télécommande dans la liste qui vous est proposé, cela veut très certainement dir eque votre télécommande est reconnue par le noyau comme un clavier, reportez vous sur Lirc devinput qui traite de ce cas particuliers.

Dans ce cas, seules les touches de direction fonctionnent dans votre application et dans un traitement de texte ou éditeur, les touches 1,2,3 ….. permettent d'écrire des symboles. Ce mode de fonctionnement est même disponible si lirc n'est pas installé. Voir Préambule

Dans le cas contraire, essaye de trouver votre télécommande avec les commandes suivantes:

dmesg | grep input ou grep ir  ou grep hauppauge ou grep "ma télécommande"

ou

lspci ou lsusb

Si votre télécommande n'apparait dans aucune des recherches ci-dessus, reportez-vous sur cette page pour connaitre le(s) driver(s) dont vous avez besoin et faites son installation en suivant les instructions du site lirc

Installer le fichier lircd.conf

Le fichier lircd.conf liste les correspondances entre le signal IR brut sous forme de trame et le nom de la touche exemple de fichier lircd.conf. Il existe deux façon d'obtenir son fichier lircd.conf.

Utiliser un fichier lircd.conf existant

Recherchez le fichier de configuration de votre télécommande sur le site de lirc ou sur cette autre page et copier son contenu dans '/etc/lirc/lircd.conf'.

Pour chaque télécommande, il peut exister plusieurs fichiers de configuration. Pour savoir celui qui vous convient, vous pouvez tous les tester les uns après les autres ou mettre le contenu de tous les fichiers dans un seul. Comme chaque fichier possède un nom unique de télécommande, lors du test avec irw, vous saurez la télécommande qui est décodée et vous pourrez ainsi mettre votre fichier lircd.conf au propre.

Créer votre propre fichier

Si vous ne trouvez pas de fichier de votre télécommande, vous pouvez le votre et enregistrer les touches de votre télécommande

gnome_lirc_properties est également capable de créer votre propre fichier de configuration. Il génére automatiquement l'entête et les codes des touches.

irrecord -d "votre_récepteur_IR" lircd.conf  # exemple irrecord -d /dev/lirc0 lircd.conf

Déplacez le fichier créer dans /etc/lirc

mv lircd.conf /etc/lirc

Après avoir créer un début de fichier, vous pouvez vérifier que celui-ci n'existe pas sur le site de lirc ou sur cette autre page

Vérification de votre configuration

Vous pouvez tester si votre récepteur IR est reconnu par votre installation en tapant dans une console en root: (nota : lirc doit être à l'arrêt)

mode2             # puis en appuyer sur les touches de votre télécommande, vous devriez avoir 
                  # l'affichage des trames brutes reçues par votre récepteur.

Si les actions sur votre télécommande ne donnent rien, reportez vous Identifier le driver de votre récepteur pour installer un autre driver de récepteur.

Mode2 ne fonctionne pas avec le driver devinput. Il faut utiliser evtest pour tester au même niveau

Ensuite vous pouvez tester la bonne interprétation des touches de votre télécommande en faisant ceci dans une console en root

/etc/rc.d/lircd stop                                              # à adapter selon votre distribution
lircd -H "driver" -d "votre_récepteur_IR" -n /etc/lirc/lircd.conf # tapez lircd --help pour plus de détails
# exemple lircd -H lirc_serial -d /dev/lirc -n /etc/lirc/lircd.conf

Cette commande lance lirc manuellement avec les bonnes options sans utiliser les fichiers de configuration qui ne sont pas encore correctement renseignés. Si vous obtenez un résultat correct vous pourrez passer à l'étape suivante.

Vous devriez voir ceci

lircd-0.8.7-CVS[17443]: garbage after 'name' token in line 9 ignored
lircd-0.8.7-CVS[17443]: lircd(XXXXXXX) ready, using /var/run/lirc/lircd

Ouvrir une autre console en root et tapez

irw   # puis tapez sur les touches de votre télécommande

Les codes de votre télécommande devraient s'afficher dans la console sinon essaye de remplacer le fichier /etc/lirc/lircd.conf par un autre (si vous en avez un).

configurer le daemon lircd

Il faut maintenant renseigner le fichier de configuration du daemon de lirc (lircd) pour qu'il utilise le bon driver et le bon périphérique. Modifiez le fichier /etc/conf.d/lircd.conf comme suit ( à adapter selon votre distribution, il peut s'agir de /etc/lirc/hardware.conf ou de /etc/sysconf/lircd):

#
# Parameters for lirc deamon
#

LIRC_DEVICE=xxxxxx                   # mettre /dev/lircX ou /dev/input/eventX selon le cas 
LIRC_DRIVER="devinput"               # lancer "lircd --driver=help" pour connaitre les drivers supportés
                                     # remplacer devinput par le nom du driver trouver sur [[http://www.lirc.org/html/table.html|cette page]] 
LIRC_EXTRAOPTS=""
LIRC_CONFIGFILE="/etc/lirc/lircd.conf"

Pour Ubuntu, le fichier de configuration doit ressembler à ceci

# /etc/lirc/hardware.conf
#
# Arguments which will be used when launching lircd
LIRCD_ARGS=""

#Don't start lircmd even if there seems to be a good config file
#START_LIRCMD=false

#Try to load appropriate kernel modules
LOAD_MODULES=true                   # l'option true permet d'utiliser le module de votre installation

# Run "lircd --driver=help" for a list of supported drivers.
DRIVER="lirc_serial"                  # remplacer par le driver supporté compatible avec votre télécommande
# If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be
# automatically used instead

DEVICE="/dev/lirc/0"                # remplacer par le chemin d'accès à votre récepteur
MODULES=""

# Default configuration files for your hardware if any
LIRCD_CONF="/etc/lirc/lircd.conf"
LIRCMD_CONF=""

Si vous avez des rubriques “Remote” et “Transmitter”, utilisez ceci

#Chosen Remote Control
REMOTE="Linux input layer (/dev/input/eventX)"  
REMOTE_MODULES=""
REMOTE_DRIVER="lirc_serial"   # remplacer par le driver supporté compatible avec votre télécommande
REMOTE_DEVICE="/dev/lirc/0"   # remplacer par le chemin d'accès à votre récepteur
REMOTE_SOCKET=""
REMOTE_LIRCD_CONF="/etc/lirc/lircd.conf"
REMOTE_LIRCD_ARGS=""

#Chosen IR Transmitter
TRANSMITTER=""
TRANSMITTER_MODULES=""
TRANSMITTER_DRIVER=""
TRANSMITTER_DEVICE=""
TRANSMITTER_SOCKET=""
TRANSMITTER_LIRCD_CONF=""
TRANSMITTER_LIRCD_ARGS=""
  

Relancez lircd

  /etc/rc.d/lircd restart                 # à adapter selon votre distribution  

et testez les réactions de votre télécommande en tapant irw dans une console.

Le fichier lircrc

Le fichier lircrc contient la correspondance entre les touches et les actions. Il se place généralement dans /home/user/.lircrc

A cet emplacement, ce fichier est valable pour utilisateur courant et pourra convenir à tous les programmes. Si vous souhaitez que ce fichier soit uniquement valable pour Mythv, il faut le mettre dans /home/user/.mythtv

Pour chaque touche, vous devez défini l'action à exécuter de la façon suivante

begin
   prog = mythtv                    # le programme concerné
   remote = Hauppauge_Gray          # la télécommande concerné
   button = Power                   # le bouton de la télécommande
   repeat = 3                       # optionnel, si vous voulez que l'action demande 3 appuis
   config = CTRL+Escape             # l'action à exécuter
end

Toutes les actions possibles sont listées dans ce document

Vous pouvez vous inspirer du fichier proposé dans ce tutoriel.

Il existe un script python qui permet de générer le fichier lircrc pour Mythtv

Exemple de fichiers lircrc et lircd.conf de quelques membres optimisés pour MythTV :

Télécommande Utilisateur Fichier lircrc Commentaire
Hauppauge classé par nom de carte avec laquelle la télécommande a été fournie.
Nova-TD, HVR 1110 SnouF snouf.tar.gz Détails1)
Terratec
Cinercy 1400 DVB-t Morphinux morphinux_lirc.tar.gz Détails2)

Pour plus d'informations

Debian

Ubuntu

  • Documentation ubuntu, en anglais, mais l'installation à partir de Hardy peut se faire sans l'aide d'un tutoriel.

Fedora

Mandriva

Pages en rapport avec LIRC sur ce wiki (installation de LIRC dans des cas spécifique, etc.)

1)
Demande une personnalisation de raccourcis clavier pour l'accès direct aux sections TV, vidéos, musique … . l'archive contient aussi un fichier de configuration pour mplayer utile pour mythvideo. Le fichier lircd.conf provient du site de lirc seule la partie concerant la télécomande “Hauppauge 350” a été conservés.
2)
le fichier contient les fichiers lircrc pour mythtv, mplayer, vlc, totem, xine et bien d'autres ainsi que le fichier lircd.conf indispensable à la télécommande terratec
lirc.txt · Dernière modification: 09/10/2011 par SnouF