LinuxPedia

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

Outils pour utilisateurs

Outils du site


frugalware:lirc

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

frugalware:lirc [2018/11/17 13:53] (Version actuelle)
Ligne 1: Ligne 1:
 +====== Utilisation d'une télécommande multimédia avec Lirc ======
 +
 +Cet article est inspiré de [[http://​ubuntuforums.org/​showthread.php?​t=183545&​highlight=lirc+nova-t|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 :
 +
 +<​php> ​ 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}==""​
 +</​php>​
 +
 +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é [[http://​lirc.sourceforge.net/​remotes/​|ici]] pour la plupart des télécommandes. Pour la mienne :
 +
 +<​php>#​ 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</​php>​
 +
 +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.
 +
 +<​php>##​~/​.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</​php>​
 +
 +<​php>#​~/​.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</​php>​
 +
  
frugalware/lirc.txt · Dernière modification: 2018/11/17 13:53 (modification externe)