Lirc

Un article de Wiki de la communauté Mandriva.

Jump to: navigation, search
Lirc est le serveur de gestion des signaux infrarouges des systèmes Linux. Il permet au noyau du système de traduire les signaux qu'il reçoit d'un périphérique infrarouge et d'y associer les touches d'une télécommande. Mais ce n'est pas un exécuteur : il fonctionne donc en association avec Irkick, Irexevent ou Irexec.

Sommaire

[modifier] LIRC : gérer sa Mandriva avec une télécommande

Avant tout, il est recommandé à l'utilisateur de maîtriser quelques commandes de base en console comme se rendre dans un répertoire, éditer modifier et enregistrer un fichier texte.

Lirc est un programme qui permet de gérer vos périphériques infrarouge. Il est utile pour gérer les applications KDE (Amarok, Kaffeine etc.) depuis une télécommande de carte TV/TNT et donc...depuis votre fauteuil ! L'ensemble devient très utile pour l'installation d'un « Multimédia Center » fonctionnant sous Linux.

Attention !
Les divers « multimédias center's » (Freevo, MythTV, My Media Systeme etc.) ont tous leur propre fichier de configuration pour utiliser lirc donc la gestion infrarouge. Ici nous ne traitons que de la partie installation fonctionnant avec irkick, le gestionnaire infrarouge de KDE. C'est ce dernier qui lance les applications KDE ou des applications « étrangères » et qui permet de configurer votre télécommande avec les actions à y associer (uniquement pour le paramétrage des applications KDE et le lancement d'applications « étrangères », je me répète mais c'est important !)

Par principe, on a donc toujours : une touche enfoncée sur la télécommande = une action exercée sur un programme KDE.

Pour résumer :

Lirc -> irkick -> Applications KDE.

Lirc-> irkick-> Lancement d'application non-KDE (ex :Média Center.)-> Gestion interne par le média center.

[modifier] Installation

Avant tout, votre carte TV/TNT doit être reconnue par le système et correctement installée. Le site de linuxtv.org vous donnera toutes les informations nécessaires pour l'installation.

Pour les cartes usb, on le vérifie en console en tapant : cat /proc/bus/input/devices

Votre carte doit apparaître dans la liste :

...
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"
P: Phys=usb-0000:00:02.2-2/input0S: Sysfs=/class/input/input5
H: Handlers=kbd event4
B: EV=100003
B: KEY=108fc210 204300000000 0 8000 208000000001 9e168000000000 ffc...

Ici il s'agit d'une carte TNT de chez Terratec modèle Cinergy T2.

Pour les cartes PCI, on tape :

Image:Konsole.png
[utilisateur@ordi ~]$ lspci

(pour savoir si votre carte est reconnue)

Pour les deux types de carte, on tape:

Image:Konsole.png
[root@ordi ~]# lsmod

(pour vérifier que les modules du noyau pour votre carte sont chargés)

Vous vérifierez que vous avez les fichiers demux0, dvr0, frontend0, net0 dans le répertoire /dev/dvb/adapter0. Si oui, votre carte est installée.

Les paquets suivants doivent être installés. On part du principe que tous ces paquets sont nécessaires, les dkms étant des paquets spécifiques pour le noyau. ( à préciser...)

lirc-0.8.1
lirc-remote 
dkms-lirc 
dkms-lirc-gpio 

lirc-remote est un paquet contenant les fichiers de configurations des télécommandes reconnues par Lirc. dkms-lirc-gpio est un paquet optionnel en fonction de votre carte TV. (à préciser...)

[modifier] Configuration

LIRC installé, vous devez avoir accès à trois fichiers de configuration:

/etc/lircd.conf

/home/XXXX/.lircrc (fichier caché dans votre home à créer par vous même)

/etc/sysconfig/lircd

lircd.conf permet à lirc de reconnaître votre télécommande avec ses touches respectives. Vous devez y copier le fichier de votre télécommande que vous trouverez dans /usr/share/lirc-remotes/.

Voici un exemple de fichier /etc/lircd.conf :

begin remote

name terratec_cinergy_T2 
bits 16 
eps 30 
aeps 100 
one 0 0 
zero 0 0 
pre_data_bits 16 
pre_data 0x8001 
gap 199695
toggle_bit 0 
begin codes 
 1 0x0002 
 2 0x0003 
 3 0x0004 
 4 0x0005 
 5 0x0006 
 6 0x0007 
 7 0x0008 
 8 0x0009 
 9 0x000a 
 0 0x000b 
 UP 0x0067 
 LEFT 0x0069 
 RIGHT 0x006a 
 DOWN 0x006c 
 MUTE 0x0071 
 VOLUMEDOWN 0x0072 
 VOLUMEUP 0x0073 
 POWER 0x0074 
 PAUSE 0x0077 
 STOP 0x0080 
 RECORD 0x00a7 
 REFRESH 0x00ad 
 PLAY 0x00cf 
 OK 0x0160 
 OSD 0x0161 
 INFO 0x0166 
 EPG 0x016d 
 TEXT 0x0184 
 VIDEO 0x0189 
 RED 0x018e 
 GREEN 0x018f 
 YELLOW 0x0190 
 BLUE 0x0191 
 CHANNELUP 0x0192 
 CHANNELDOWN 0x0193 
 NEXT 0x0197 
 PREVIOUS 0x019c 
 end codes 
 end remote 

Le fichier .lircrc de votre home vous permet de personnaliser votre télécommande pour chaque application. Cependant ici il ne nous sert pas car c'est irkick qui fera ce travail. Vous pouvez trouver des exemples de fichiers lircrc sur le net.

Enfin, et c'est le plus délicat, il vous reste à configurer le fichier /etc/sysconfig/lircd. Voici un exemple, toujours pour la carte usb Cinergy T2:

# Customized setings for lirc daemon
# The hardware driver to use, run lircd --driver=? for a list
DRIVER=dev/input
# Hardware driver module to load
HWMOD=evdev
# The device node that communicates with the IR device.
# if you are using lirc_serial, set DEVICE to /dev/ttyS[0-9]
# where 0-9 is the serial port your IR receiver is plugged
# with devfs enabled
DEVICE=/dev/input/event4
#DEVICE=/dev/lirc/serial
# without devfs 
#DEVICE=/dev/lirc
# Serial port for the receiver (for serial driver)
# COM1 (/dev/ttyS0)
#COM_PORT=/dev/ttyS0
#DRIVER_OPTS="irq=4 io=0x3f8"

Dans ce fichier, vous devrez compléter les variables suivantes :

- le DRIVER (dossier périphérique de votre carte) ici /dev/input.

- le HWMOD (le nom du module ou « pilote » utilisé par lirc pour reconnaître votre carte TV/TNT : et c'est le plus délicat !) ici evdev (pour l'usb notamment).

- le DEVICE est celui qui apparaît sur la ligne H lorsque vous avez taper cat /proc/bus/input/devices pour vérifier la présence de votre carte TV/TNT,ici c'est donc event4.(voir chapitre Installation)

N'oubliez pas d'enregistrer les modifications du fichier !

Le site de LIRC, contenant la dernière version du programme et de nombreuses informations d'installations et de configuration de votre télécommande, peut vous être utile:

http://www.lirc.org


[modifier] Démarrage

On tape en console et en root:

Image:Konsole.png
[root@ordi ~]# /etc/init.d/lircd restart

Si cela ne fonctionne pas, il y a une erreur de configuration.


[modifier] Gestion

Vous pouvez choisir d'utiliser Irkick. Rendez-vous dans le Centre de configuration de KDE menu périphériques > contrôleur distant (il s'agit d'irkick). Votre télécommande doit apparaître dans la colonne de droite. Il ne vous reste plus qu'à ajouter une application, touche par touche. Si vous ne trouvez pas irkick, vérifiez bien que le paquetage kdeutils-common est bien installé.

Ou alors, vous pouvez choisir d'utiliser Irexec pour démarrer et exploiter vos applications à l'aide de votre télécommande:

Enfin, vous pouvez utiliser Lirc pour simuler une souris à l'aide de votre télécommande en utilisant le programme Lircmd, compris dans Lirc.

[modifier] Problème à chaque démarrage : Udev et lirc

Pour résoudre le problème des changements d'entrée du périphérique infrarouge sur /dev/input/eventX qui empêche le bon fonctionnement de lirc et oblige à modifier à chaque démarrage le fichier /etc/sysconfig/lird, on se propose d'ajouter une règle udev au démarrage de Mandriva.

[modifier] Détermination de /input/event

En console on tape :

Image:Konsole.png
[utilisateur@ordi ~]$ cat /proc/bus/input/devices

Résultat :


I: Bus=0003 Vendor=0ccd Product=0038 Version=0001

N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"

P: Phys=usb-0000:00:1d.7-2/input0

S: Sysfs=/class/input/input4

U: Uniq=

H: Handlers=kbd event4 

B: EV=100003

B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc

Notre périphérique apparaît sur le port /event4. Le vôtre est peut-être sur un « event » différent.

Par conséquent, on va rechercher (vous adapterez l' « event » au vôtre), l'attribution physique du récepteur infrarouge, on tape, en root :

Image:Konsole.png
[root@ordi ~]# udevinfo -a -p $(udevinfo -q path -n /dev/input/event4)

Résultat:

KERNELS=="input4"

    SUBSYSTEMS=="input"

    DRIVERS==""

    ATTRS{name}=="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"

    ATTRS{phys}=="usb-0000:00:1d.7-2/input0"

    ATTRS{uniq}==""

    ATTRS{modalias}=="input:b0003v0CCDp0038e0001-e0,1,14,k71,72,73,74,77,80,A7,AD,CF,160,161,166,16D,184,189,18E,18F,190,191,192,193,197,19C,ramlsfw"

On utilisera ensuite l'attribution ATTRS{phys} pour créer notre règle.

Attention !
Bien entendu, vous avez adapté votre propre "event" en fonction du résultat que vous propose la commande cat.

[modifier] Création de la règle udev

On ajoute la nouvelle règle udev. En console, avec votre éditeur de texte préféré,ici kwrite:


Image:Konsole.png
[root@ordi ~]# cd /etc/udev/rules.d
Image:Konsole.png
[root@ordi ~]# kwrite rules.d/50-udev-default.rules

On ajoute une ligne dans la partie « # input » du fichier en collant et copiant ceci:

KERNEL=="event*", ATTRS{phys}=="usb-0000:00:1d.7-2/input0", SYMLINK+="input/terratec", MODE="0666"
Attention !
En fonction du résulat de la commande udevinfo précedénte, vous remplacerez le contenu de l'argument ATTRS{phys} par le vôtre. Vous donnerez ensuite un nom à votre périphérique dans l'argument SYMLINK, ici il s'agit du nom de « terratec ».

On enregistre et on ferme l'éditeur.

La règle est créer !

[modifier] Modification du fichier lircd

Le nouveau nom du périphérique infrarouge étant « terratec », on le précise dans le fichier /etc/sysconfig/lircd.conf, dans l'argument DEVICE, soit :

# Customized setings for lirc daemon



# The hardware driver to use, run lircd --driver=? for a list



DRIVER=dev/input



# Hardware driver module to load

HWMOD=evdev



# The device node that communicates with the IR device.

# if you are using lirc_serial, set DEVICE to /dev/ttyS[0-9]

# where 0-9 is the serial port your IR receiver is plugged



# with devfs enabled

DEVICE=/dev/input/terratec

#DEVICE=/dev/lirc/serial

On enregistre et on ferme l'éditeur.

[modifier] Redémarrage

Après avoir redémarrer votre Mandriva, vous testerez en console la reconnaissance de votre périphérique infrarouge à l'aide de la commande irw.

Attention !
Si irw n'arrive pas à se connecter, c'est que la règle udev n'est pas correcte ou ne correspond pas tout à fait à votre périphérique.

On peut voir si udev a bien fait son travail en tapant en console :

Image:Konsole.png
[utilisateur@ordi ~]$ ls -l /dev/input

Résulat:

drwxr-xr-x 2 root root     80 2008-08-28 14:03 by-id/

drwxr-xr-x 2 root root    140 2008-08-28 14:03 by-path/

crw-r----- 1 root root 13, 64 2008-08-28 14:03 event0

crw-r----- 1 root root 13, 65 2008-08-28 14:03 event1

crw-r----- 1 root root 13, 66 2008-08-28 14:03 event2

crw-r----- 1 root root 13, 67 2008-08-28 14:03 event3

crw------- 1 arno root 13, 68 2008-08-28 14:03 event4

crw------- 1 arno root 13, 69 2008-08-28 14:03 event5

crw-r----- 1 root root 13, 63 2008-08-28 16:03 mice

crw-r----- 1 root root 13, 32 2008-08-28 14:03 mouse0

lrwxrwxrwx 1 root root      6 2008-08-28 14:03 terratec -> event4

La dernière ligne nous montre bien que udev a créé une entrée spéciale pour notre périphérique.

Pour conclure, Mandriva donnera à chaque démarrage l'attribution physique de notre périphérique à la même entrée, ici, /dev/input/terratec. Ce chemin peut-être différent si vous utilisez un périphérique en carte pci et non en usb.


[modifier] Remarques

Le fichier lircd.conf proposé dans les remotes de Lirc ne fonctionnait pas pour moi. Je l'ai récupéré sur le site de mandrivaitalia.org ci-dessous.

Le paramétrage du fichier /etc/sysconfig/lircd dépend entièrement de l'installation et du modèle de votre carte TV/TNT. Ici il s'agissait d'une carte usb mais vous détenez peut-être une carte pci. Pour les configurations pci, des fichiers lircd peuvent se trouver sur le net.

Je tiens à remercier le site de www.mandrivaitalia.org pour ce tutoriel qui m'a en partie inspiré :

Enfin, l'installation reste un peu délicate ayez de la patience et du temps !

Récupérée de « http://wiki.mandriva.com/fr/Lirc »