LinuxPedia

Wiki libre et indépendant dédié à GNU-Linux et BSD.

Outils pour utilisateurs

Outils du site


frugalware:lirc

Utilisation d'une télécommande multimédia avec Lirc

Cet article est inspiré de celui-ci et va vous présenter comment installer votre télécommande sous Frugalware. L'exemple donné est pour une télécommande fournie avec la carte tuner TNT Hauppauge Nova-t, vous pourrez l'adapter à la votre.

  • Pré-requis

Avant de commencer, il va vous falloir ajouter un module au démarrage. Pour le charger manuellement, en root faites :

#  modprobe evdev

Dans votre /etc/sysconfig/modules, ajouter le module evdev pour qu'il se lance automatiquement au démarrage :

#  nano /etc/sysconfig/modules

Installer ensuite lirc qui va vous permettre de contrôler votre télécommande :

#  pacman-g2 -S lirc

(cela va vous installer lirc_modules par la même occasion). Pour que le service lirc se lance automatiquement au démarrage, tapez la commande :

#service lirc add
  • Création d'une règle Udev

Dans certains cas, l'identifiant de notre télécommande peut changer au démarrage. Pour éviter cela, nous allons créer une règle Udev. Nous allons avoir besoin de quelques informations. D'abord, tapez :

cat /proc/bus/input/devices

Cela va vous donner la liste de vos périphériques de saisie. Repérez-y votre télécommande. Dans mon cas :

I: Bus=0001 Vendor=0070 Product=9002 Version=0001 
N: Name="cx88 IR (Hauppauge Nova-T DVB-T" 
P: Phys=pci-0000:00:0b.0/ir0 
S: Sysfs=/class/input/input2 
U: Uniq= 
H: Handlers=kbd event2
B: EV=100003 
B: KEY=100fc312 214a80200000000 0 18000 41a800004801 9e168000000000 10000ffc''

Ce dont nous avons besoin ici est le numéro de l'event (ici 2).

Taper ensuite :

udevinfo -a -p $(udevinfo -q path -n /dev/input/event2)

En adaptant bien sûr le numéro de l'event retourné lors de la commande précèdente. Vous allez obtenir un certain nombre d'informations concernant votre técommande :

Udevinfo starts with the device specified by the devpath and then walks up the chain of parent devices. It prints for every device found, all possible attributes in the udev rules key format. A rule to match, can be composed by the attributes of the device and the attributes from one single parent device.   looking at device '/class/input/input2/event2': KERNEL=="event2" SUBSYSTEM=="input" DRIVER=="" ATTR{dev}=="13:66"   looking at parent device '/class/input/input2': KERNELS=="input2" SUBSYSTEMS=="input" DRIVERS=="" ATTRS{modalias}=="input:b0001v0070p9002e0001-e0,1,14,k71,72,73,74,77,80,8B,8E,A3,A5,A7,A8,AE,CF,D0,161,16B,16D,16F,172,174,179,181,184,188,189,18E,18F,190,191,192,193,19C,ramlsfw" ATTRS{uniq}=="" ATTRS{phys}=="pci-0000:00:0b.0/ir0" ATTRS{name}=="cx88 IR _Hauppauge Nova-T DVB-T"   looking at parent device '/devices/pci0000:00/0000:00:0b.0': KERNELS=="0000:00:0b.0" SUBSYSTEMS=="pci" DRIVERS=="cx8800" ATTRS{msi_bus}=="" ATTRS{broken_parity_status}=="0" ATTRS{modalias}=="pci:v000014F1d00008800sv00000070sd00009002bc04sc00i00" ATTRS{local_cpus}=="ff" ATTRS{irq}=="19" ATTRS{class}=="0x040000" ATTRS{subsystem_device}=="0x9002" ATTRS{subsystem_vendor}=="0x0070" ATTRS{device}=="0x8800" ATTRS{vendor}=="0x14f1"   looking at parent device '/devices/pci0000:00': KERNELS=="pci0000:00" SUBSYSTEMS=="" DRIVERS=="" ATTRS{uevent}==""

L'objectif est de trouver une information qui va identifier votre télécommande de manière unique sur votre système pour créer notre règle Udev. On va par exemple pouvoir utiliser le ATTRS{vendor}, ici 0x14f1. Maintenant que nous avons l'information nécessaire, nous allons pouvoir créer notre règle.

#  nano /etc/udev/rules.d/10-local.rules

et ajoutez-y :

KERNEL=="event*", ATTRS{vendor}=="0x14f1", SYMLINK="input/irremote"

L'idée est que l'on va créer un lien symbolique du périphérique ayant le ATTRS{vendor}==“0x14f1” quel que soit son numéro d'event. Ainsi notre télécommande sera toujours reconnue de la même façon. Il vous faut maintenant redémarrer udev pour que cette nouvelle règle soit prise en compte. La commande service udev restart ne fonctionnant pas chez moi (Le service rc.udev n'est pas pris en charge par chkconfig), un redémarrage est nécessaire. Vous pourrez alors taper :

ls -l /dev/input

pour vérifier que votre lien symbolique a bien été mis en place.

  • Configuration de Lirc.

Nous allons maintenant passer à la configuration de lirc. Tout d'abord, éditez le fichier de configuration :

#  nano /etc/sysconfig/lirc

Vous allez devoir modifier la ligne LIRCD_OPTIONS pour la faire correspondre au changement précèdent :

LIRCD_OPTIONS="-H dev/input --device=/dev/input/irremote"

Le -H dev/input (notez qu'il n'y a pas de faute de frappe ici) défini le driver qui sera utilisé. Vous devrez l'adapter en conséquence pour d'autres télécommandes. La commande :

#  lircd --driver=help

va vous afficher la liste des drivers possibles (par exemple pour les télécommandes Pinnacle, il s'agit du driver pinsys).

Il va ensuite vous falloir créer un fichier /etc/lircd.conf qui va servir à faire la correspondance entre le nom de vos touches et leur code hexadécimal. Ce fichier peut être trouvé ici pour la plupart des télécommandes. Pour la mienne :

# Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.7.1pre2(any) on Sat Sep 17 01:00:56 2005 # # contributed by # # brand: lircd.conf.kernel-2.6.13.1.conf # model no. of remote control: # devices being controlled by this remote: # begin remote   name hauppauge_nova_t_uk bits 16 eps 30 aeps 100   one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 135803 toggle_bit 0     begin codes Power 0x0074 Go 0x0161 TV 0x0179 Videos 0x0189 Music 0x0188 Pictures 0x016F Guide 0x016D Radio 0x0181 Up 0x0067 Left 0x0069 Right 0x006A Down 0x006C OK 0x001C Back 0x00AE Menu 0x008B VolumeUp 0x0073 VolumeDown 0x0072 PreviousChannel 0x019C Mute 0x0071 ChannelUp 0x0192 ChannelDown 0x0193 Record 0x00A7 Stop 0x0080 Replay 0x00A8 Play 0x00CF Skip 0x00D0 PreviousTrack 0x00A5 Pause 0x0077 NextTrack 0x00A3 1 0x004F 2 0x0050 3 0x0051 4 0x004B 5 0x004C 6 0x004D 7 0x0047 8 0x0048 9 0x0049 0 0x0052 Text 0x0184 Subtitles 0x0172 Red 0x018E Green 0x018F Yellow 0x0190 Blue 0x0191 end codes   end remote

Maintenant que la configuration de Lirc est terminée, redémarrons-le :

#service lirc restart

et testons son bon fonctionnement avec la commande :

irw

Appuyez sur les touches de votre télécommande et vous devriez voir des sorties correspondantes dans votre terminal. Si c'est le cas, c'est que votre configuration est fonctionnelle et vous pouvez passer à la suite.

  • Configurer Lirc pour vos applications

Voici une partie assez délicate car elle va dépendre des applications que vous allez contrôler avec votre télécommande. Je vais donner quelques pistes, mais il vous faudra sans doute faire quelques recherches pour vos applications.

Note : sous KDE, il existe une applications, IRKick (qui fait partie du paquet kdeutils) qui permet de configurer tout ça de manière graphique. L'inconvénient c'est que cela est limité à certaines applications KDE.

Donc sous Gnome ou si vous souhaitez avoir plus de possibilités, il va falloir le faire à la main.

Voici la méthode que j'utilise. Tout d'abord, dans votre home, créez un fichier .lircrc. Dans celui-ci, on va spécifier un fichier par application que l'on souhaite utiliser. Il est possible de tout mettre dans le fichier .lircrc, mais on perd en lisibilité. Voici par exemple mon fichier .lircrc (je sépare suivant l'environnement que j'utilise) :

##KDE
include ~/.lirc/.lircrc-kaffeine
include ~/.lirc/.lircrc-amarok
##GNOME
include ~/.lirc/.lircrc-mplayer
#include ~/.lirc/.lircrc-exaile
#include ~/.lirc/.lircrc-vlc
#include ~/.lirc/.lircrc-rhythmbox
##Communs
include ~/.lirc/.lircrc-xdtv</php>

Les modifications dans ce fichier nécessitent un redémarrage de lirc pour être prises en compte. Et donc vous l'avez compris, on va créer ensuite dans le répertoire ~/.lirc/ les fichiers correspondants.

Il existe plusieurs façons pour faire ces fichiers, et vous trouverez des exemples sur le net pour beaucoup d'applications. Voici deux exemples, une application KDE (Amarok) où on va utiliser dcop et une application Gnome (Rhythmbox). Notez qu'on utilise irexec, fourni avec lirc, qu'il faudra prendre soin de lancer au démarrage de votre environnement. La ligne button est à adapter aux noms des touches définis dans votre /etc/lircd.conf.

##~/.lirc/.lircrc-amarok begin prog = irexec button = Music config = amarok end   begin prog = irexec button = Play config = dcop amarok player play end   begin prog = irexec button = Stop config = dcop amarok player stop end   begin prog = irexec button = Pause config = dcop amarok player playPause end   begin prog = irexec button = VolumeDown repeat = 2 config = dcop amarok player volumeDown end   begin prog = irexec button = VolumeUp repeat = 2 config = dcop amarok player volumeUp end   begin prog = irexec button = Skip repeat = 3 config = dcop amarok player seekRelative 5 end   begin prog = irexec button = NextTrack repeat = 3 config = dcop amarok player next end   begin prog = irexec button = Replay repeat = 3 config = dcop amarok player seekRelative -5 end   begin prog = irexec button = Mute config = dcop amarok player mute end   begin prog = irexec button = Menu repeat = 3 config = dcop amarok player showOSD end

#~/.lirc/.lircrc-rhythmbox begin prog = irexec button = Music config = rhythmbox-client --play & rhythmbox-client --hide end   begin prog = irexec button = Play config = rhythmbox-client --play-pause end begin prog = irexec button = Pause config = rhythmbox-client --play-pause end begin prog = irexec button = Stop config = rhythmbox-client --pause end begin prog = irexec button = NextTrack config = rhythmbox-client --next end begin prog = irexec button = PreviousTrack config = rhythmbox-client --previous end begin prog = irexec button = Red config = shuffle end begin prog = irexec button = Replay config = seek_backward end begin prog = irexec button = Skip config = seek_forward end begin prog = irexec button = VolumeDown config = volume_down end begin prog = irexec button = VolumeUp config = volume_up end begin prog = irexec button = Mute config = mute end begin prog = irexec button = Menu config = rhythmbox-client --notify end begin prog = irexec button = Power config = rhythmbox-client --quit end

frugalware/lirc.txt · Dernière modification: 2018/11/17 13:53 (modification externe)