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).
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.
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
Pour faire fonctionner votre télécommande, vous allez être obligé de respecter certaines étapes :
Voici une liste non exhaustive des outils fournis avec lirc
Retrouver tous ces outils sur la page de lirc
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.
Il existe 2 façons de configurer lirc
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. créer le tuto gnome_lirc-properties
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é.
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 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
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.
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'.
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
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
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.
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
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).
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 contient la correspondance entre les touches et les actions. Il se place généralement dans /home/user/.lircrc
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) |
Pages en rapport avec LIRC sur ce wiki (installation de LIRC dans des cas spécifique, etc.)