LIRC permet d'utiliser une télécommande infrarouge. Presque toutes (mais pas toutes) sont compatibles.
Par défaut, Les scripts d'initialisation de LIRC sont correctement configurés pour la gestion d'un seul appareil, mais en réalité les scripts du pilote peuvent en gérer plusieurs. Si vous cherchez à configurer un transmetteur infrarouge et un récepteur, plusieurs transmetteurs, ou plusieurs récepteurs, commencez d'abord par configurer un seul appareil et vérifiez son bon fonctionnement. Après cela seulement, vous pourrez vous intéresser à la section traitant la configuration de multiples appareils.
Cette page explique comment configurer LIRC avec le pilote « lirc_mceusb ». C'est un exemple. Si vous souhaitez utiliser LIRC avec un autre type de récepteur, vous pouvez le compiler directement avec un autre pilote (pour certains récepteurs vous trouverez des informations complémentaires).
Le dépôt universe doit être activé.
Avec keytable (fonctionne très bien avec ubuntu 14.04) :
Avec keytable, les touches de votre télécomande se comporteront comme des touches de clavier.
Installez les paquets apt://ir-keytable (il est préférable de désinstaller LIRC auparavant si vous l'aviez installé).
Pour savoir si votre récepteur est reconnue tapez dans la console :
sudo ir-keytable
Si votre récepteur est reconnue vous obtenez quelque chose de la sorte :
Found /sys/class/rc/rc2/ (/dev/input/event14) with: Driver (null), table rc-dib0700-rc5 Supported protocols: NEC RC-5 RC-6 Enabled protocols: RC-5 Name: IR-receiver inside an USB DVB re bus: 3, vendor/product: 2040:7050, version: 0x0598 Repeat delay = 500 ms, repeat period = 125 ms
Dans cet exemple le récepteur est le rc2 et il gère les protocoles NEC, RC-5 et RC-6. Si votre récepteur est reconnue, il faut maintenant vérifier que votre télécommande est reconnue. Tapez :
ir-keytable -t --sysdev rc2
Remplacer rc2 par votre récepteur (rc0, rc1, …).
Appuyez sur les touches de votre télécommande. Si votre télécommande est reconnue, à chaque appuie sur une touche, une où des lignes apparaîtront :
1446572211.444184: event type EV_MSC(0x04): scancode = 0x1f32 1446572211.444184: event type EV_SYN(0x00). 1446572211.558001: event type EV_MSC(0x04): scancode = 0x0d
Chaque touche à un scancode même s'il est très probable que toutes les touches ne soient pas reconnues.
Maintenant il faut pouvoir associer chaque touche à une lettre.
En utilisant un fichier de paramétrage existant :
Des fichiers situés dans /lib/udev/rc_keymaps existent et contiennent déjà des paramètres (ce qui vous évitera de créer vous même votre fichier).
Pour cela, en remplaçant 0x0d par votre scancode, tapez la ligne ci-dessous qui affichera les fichiers contenant ce scancode :
grep -iH 0x0d /lib/udev/rc_keymaps/*
Vous obtenez quelque chose de la sorte :
/lib/udev/rc_keymaps/apac_viewcomp:0x0d KEY_STOP /lib/udev/rc_keymaps/ati_tv_wonder_hd_600:0x0d KEY_UP /lib/udev/rc_keymaps/ati_x10:0x0d KEY_1 /lib/udev/rc_keymaps/avermedia_cardbus:0x0d KEY_7 /lib/udev/rc_keymaps/behold_columbus:0x0D KEY_SETUP /lib/udev/rc_keymaps/budget_ci_old:0x0d KEY_MUTE /lib/udev/rc_keymaps/cinergy:0x0d KEY_CHANNELUP ...
Dans cet exemple j'obtenais le scancode 0x0d lorsque j’appuyais sur le bouton “Couper le son” de ma télécommande. Grâce à la commande précédente je me rend compte que le fichier budget_ci_old contient le bon scancode.
Pour avoir le bon fichier, répéter l'opération avec différents scancodes.
En créant votre fichier de paramétrage :
Vous pouvez créer votre fichier (avec gedit par exemple).
La première ligne doit être la suivante :
# table nomdevotretable, type: letypedelatélécommande
Le type de la télécommande correspond à RC5, RC6, NEC, UNKNOWN, …
Et ensuite les affectations de touches sous la forme :
scancode latouche
Exemple :
# table telecommandetv, type: RC5 0x00 KEY_SPACE 0x01 KEY_N 0x02 KEY_BRIGHTNESSUP 0x0d KEY_MUTE ...
Finalement il faut associer le fichier (un récupéré ou celui que vous avec créé) à un récepteur. Tapez la commande ci-dessous :
sudo ir-keytable -c -w /etc/rc_keymaps/budget_ci_old --sysdev rc2
Dans cet exemple, j'utilise le fichier budget_ci_old pour le récepteur rc2. (Dans la ligne le -c permet de nettoyer la table de rc2 et -w permet écrire la nouvelle table à partir du fichier sélectionné).
Maintenant chaque touche de votre télécommande agit comme une touche du clavier.
Pour VLC, par exemple, vous pouvez associer dans Outils–>Configuration–>Raccourcies chaque touche de votre télécommande à une action (changer de chaîne, mettre en plein écran, pause, …).
Avec LIRC :
Installez les paquets apt://lirc, apt://lirc-modules-source et apt://module-assistant.
Durant la configuration des modules LIRC vous devrez sélectionner le type de récepteur infrarouge que vous allez utiliser.
sudo dpkg-reconfigure lirc-modules-source
ou pour les versions récentes sans lirc-modules-sources
sudo dpkg-reconfigure lirc
Informations diverses sur les périphériques IR supportés. (Flèches haut et bas pour faire défiler). Notez le (les) nom(s) du (des) module(s) que vous voulez utiliser. Sélectionnez « OK » grâce à la touche de tabulation (→). | |
Sélectionnez le (les) module(s) que vous souhaitez configurer. Pour certains modules, consultez la partie pilotes_demandant_un_effort_supplementaire. (Utilisez les flèches haut et bas pour naviguer et la barre d'espace pour sélectionner ; tabulation pour aller sur le bouton <OK>) | |
Le script vous propose de compiler automatiquement les modules. Sélectionnez <non>. | |
Vous avez maintenant différentes options pour remplacer le fichier lirc-modules-source.conf . Sélectionnez « Installer la version du responsable du paquet ». |
Éditez le fichier /etc/lirc/hardware.conf
avec les droits administrateurs. S'il n'existe pas, créez-le. Ensuite, faites les modifications suivantes :
LOAD_MODULES=false
en LOAD_MODULES=true
.MODULES
» avec le nom de votre module entre guillemets, préfixé de l'acronyme « lirc_
» (par exemple pour le pilote mceusb
, mettez « lirc_mceusb
»).
MODULES
vierge.
La page lirc - exemples "hardware.conf" de la documentation donne des exemples de fichiers hardware.conf
.
Nettoyez le système ancienne version du module LIRC :
sudo rm /usr/src/lirc*deb sudo m-a clean lirc
Préparez votre système à une compilation de nouveaux modules noyau (cette étape lui fait préparer les bons headers) :
sudo m-a update,prepare
Compilez et installez les modules du noyau :
sudo m-a a-i lirc
Mettez à jour la liste des modules :
sudo depmod -a
Redémarrez LIRC :
sudo /etc/init.d/lirc restart
Le fichier lircd.conf
liste les correspondances entre le signal IR et la fonction de la touche. Il existe deux façons de l'obtenir :
irrecord
).
Vous pouvez chercher le fichier de configuration pour votre télécommande ici.
Éditez le fichier /etc/lirc/lircd.conf
et remplacez son contenu par celui trouvé précédemment.
Si vous souhaitez créer votre propre fichier ou que vous n'avez pas trouvé de fichier déjà fait pour votre télécommande. Vous pouvez utilisez irrecord
.
Reportez-vous au tutoriel existant sur le sujet.
Les modules seront chargés au démarrage de LIRC. Démarrez LIRC puis irw
(l'utilitaire de test) :
sudo service lirc start irw
Le terminal doit se mettre en « attente » (on ne peut plus taper de commande). Appuyez sur les touches de votre télécommande. Elles devraient s'afficher dans le terminal. Pour quitter, pressez <ctrl> + 'C'.
Si irw
se termine immédiatement (vous pouvez taper une commande après le lancement de celui-ci), c'est que le module ne s'est pas chargé correctement. Essayez de redémarrer votre ordinateur. Si ça ne fonctionne toujours pas, regardez si le module s'est bien chargé grâce à la commande
dmesg | grep lirc
Si au lancement de LIRC vous avez ceci :
$ sudo service lirc start ################################################## ## LIRC IS NOT CONFIGURED ## ## ## ## read /usr/share/doc/lirc/html/configure.html ## ##################################################
c'est que vous n'avez pas bien créé votre fichier lircd.conf
. Retournez à la section “Le fichier lircd.conf”.
Pour la création des fichiers lircrc, il faut se reporter à ce tutoriel.
Une boîte de dialogue supplémentaire s'affichera au moment de la configuration des modules.
Depuis le noyau 2.6.22, on ne peut plus utiliser le pilote lirc_gpio de LIRC. À la place, les périphériques GPIO seront gérés par le pilote native /dev/input
de LIRC. Lors de la configuration des modules, on vous demandera quel périphérique d'événement vous voulez utiliser pour votre télécommande. Cette information peut être trouvée à l'aide de la commande suivante :
cat /proc/bus/input/devices
Il faut trouver le périphérique d'événement dans /dev/
et le renseigner dans le paramètre DEVICE
dans le fichier /etc/lirc/hardware.conf
.
Une fois que LIRC fonctionne avec une télécommande, vous pouvez modifier la configuration pour supporter des télécommandes supplémentaires. La première chose à faire sera de vous assurer que votre noyau contient tous les pilotes nécessaires pour faire fonctionner ce matériel supplémentaire. Si, lors de la configuration pour un seul appareil, vous aviez construit les modules dont vous pensiez avoir besoin pour les autres, vous pouvez sauter l'étape suivante.
Nettoyez les vieux modules :
sudo rm /usr/src/lirc*deb sudo m-a clean lirc
Arrêtez LIRC et déchargez tous les modules correspondants :
sudo /etc/init.d/lirc stop sudo rmmod LOADED_LIRC_MODULES
Remplacez LOADED_LIRC_MODULES par les noms des modules LIRC que vous aviez chargés.
Reconfigurez lirc-modules-source. Choisissez tous les modules dont vous aurez besoin, y compris ceux d'avant :
sudo dpkg-reconfigure lirc-modules-source
Compilez et installez tout ça :
sudo m-a a-i lirc
Si vous avez un message qui dit qu'il n'arrive pas à installer, vous pouvez forcer ceci :
sudo dpkg -i /usr/src/lirc*deb
Éditez le fichier '/etc/lirc/hardware.conf' :
LIRCD_ARGS="--device=/dev/lirc0 --output=/dev/lircd1 --pidfile=/var/run/lircd1.pid --listen" LIRCD2_ARGS="--device=/dev/lirc1 --output=/dev/lircd --pidfile=/var/run/lircd.pid --connect=localhost:8765"
device
à votre configuration.
Éditez le fichier /etc/init.d/lirc
:
LIRCD_ARGS=`build_args $LIRCD_ARGS` start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $LIRCD_ARGS < /dev/null
en :
LIRCD_ARGS=`build_args $LIRCD_ARGS` LIRCD2_ARGS=`build_args $LIRCD2_ARGS` start-stop-daemon --start --quiet --exec /usr/sbin/lircd -- $LIRCD_ARGS < /dev/null /usr/sbin/lircd $LIRCD2_ARGS < /dev/null
Faites les manipulations sur /etc/lirc/hardware.conf
et /etc/init.d/lirc
pour chaque nouvel appareil.
Démarrez LIRC :
sudo /etc/init.d/lirc start
Vous devriez avoir deux lircd actifs. Tout processus lirc qui tentera d'interagir avec lircd devra se faire spécifier un paramètre lui indiquant à quelle instance il s'adresse.
Les périphériques suivants ont un support pour la transmission infrarouge :
Les émetteurs utilisant i2c ont une configuration spécifique car n'utilisant plus LIRC.
Cette partie va donc décrire les configurations spécifiques à différents types d'émetteurs infrarouge. Après avoir préparé les configurations spécifiques à un matériel, il faut passer à la partie sur la configuration générale de la transmission infrarouge.
Les paquets de Hardy vont vous poser des questions relatives au port série que vous utilisez. Suivez les boîtes de dialogues et le port série sera configuré correctement.
Le site de CommandIR (en anglais) indique comment installer ce matériel. Il suffit de lancer gnome-lirc-properties
(dans un bureau Gnome) et de sélectionner le bon matériel.
Les paquets de Hardy possèdent le support pour les transmetteur MCEUSB2.
Sous la version 8.04 d'Ubuntu, il faut faire les manipulations suivantes décrites dans les paragraphes suivants.
Téléchargez le micrologiciel Hauppauge et ajoutez le jeu de codes approprié à votre fichier lircd.conf pour le périphérique que vous voulez contrôler.
Le micrologiciel peut être trouvé ici. Téléchargez-le et placez-le dans le répertoire /lib/firmware/
.
Les jeux de codes sont ici. Ce fichier contient les jeux de codes de tous les périphériques de la base de données. Extrayez-en l'information de votre périphérique et insérez-la dans le fichier /etc/lirc/lircd.conf
– en prenant soin de sauvegarder l'original dans un lieu sûr.
Une fois ces deux étapes effectuées, redémarrez l'ordinateur avant de continuer.
Il vous faut déterminer le code de votre appareil. Pour le trouver, consultez la liste ici. Il n'est pas toujours aisé de trouver le bon code pour votre appareil. Cependant, la liste principale permet généralement de le trouver par élimination.
Une fois que vous avez déterminé votre code, il faut extraire le jeu de codes correspondant dans le fichier principal. Il faut ensuite les ajouter au fichier /etc/lirc/lircd.conf
comme pour une autre télécommande.
À titre d'exemple, pour blaster un bouton de marche pour un récepteur de câble Motorola DCT6200, il faut utiliser le code pour le bouton correspondant avec le code 85 (correspondant au récepteur). Dans ce cas, on obtient le code 0_85_KEY_POWER où :
Si vous voulez le lier à un bouton de votre télécommande, il faut changer KEY_POWER
(correspondant au bouton de marche) par le nom de la clé donnée par irw
.
Pour commencer la partie du fichier /etc/lircd.conf
pour l'émetteur, il faut utiliser cet en-tête :
begin remote name blaster bits 32 flags RAW_CODES eps 0 aeps 0 plead 0 gap 333333 repeat_bit 0 begin raw_codes
Il faut ensuite trouver le bouton de marche dans le jeu de codes 85. Comme on regarde pour un récepteur de câble, il faut utiliser le préfixe 0. On trouve donc la partie suivante dans le fichier principal :
name 0_85_KEY_POWER 5570570
Ensuite, rendez le conforme à ce que renvoie irw
quand vous appuyer sur le bouton. Dans ce cas, irw
renvoie POWER
. Il faut donc modifier le nom de la manière suivante :
name POWER 5570570
Il faut faire de même pour les autres boutons voulus.
Quand vous avez terminé de renseigner les boutons, ajouter ce qui suit :
end raw_codes end remote
Cela permet de terminer la définition de la télécommande. Dans cet exemple, la définition entière de la télécommande (avec un seul bouton) est la suivante :
begin remote name blaster bits 32 flags RAW_CODES eps 0 aeps 0 plead 0 gap 333333 repeat_bit 0 begin raw_codes name 0_85_KEY_POWER 5570570 end raw_codes end remote
Après avoir sauvegardé le nouveau fichier lircd.conf
, redémarrez LIRC :
sudo /etc/init.d/lirc restart
Ensuite, essayez-le. Vous pouvez, par exemple, utiliser la commande suivante :
irsend SEND_ONCE blaster POWEROFF
Elle allume et éteint le récepteur DCT6200. Même si elle ne contrôle pas l'appareil comme prévu, vous devriez voir l'émetteur émettre des signaux lumineux.
Les problèmes avec la sélection des codes, le positionnement de l'émetteur et autres vont au-delà de l'objectif de cette page. Vous pouvez faire de plus amples recherches sur Internet qui possède des informations sur ces sujets.
Ubuntu Edgy a introduit directement dans son noyau la gestion de quelques télécommandes via le bus i2c. Pour ces télécommandes, il est déconseillé d'utiliser LIRC. Quand vous appuyez sur des boutons de votre télécommande, ils devraient être reconnus directement comme des touches ordinaires du clavier. Si les comportements de ces touches ne vous plaisent pas, voyez la page Créer et utiliser un agencement de clavier personnalisé.
Si vous vous entêtez à vouloir garder lirc, il existe un tutoriel en anglais pour adapter votre noyau à cet usage : HOWTO: Lirc in Edgy.
Sous Intrepid, on peut parvenir au même résultat en indiquant simplement à HAL d'ignorer le périphérique, ce qui permet à lirc de le détecter et de l'utiliser. Pour cela, éditez le fichier /usr/share/hal/fdi/preprobe/20thirdparty/lirc.fdi
, à la ligne :
<match key="info.product" contains_ncase="saa7134 ir">
remplacez saa7134 ir
par l'info.product
de votre télécommande, que l'on peut trouver à l'aide de la commande lshal
. Après redémarrage, la télécommande devrait être accessible pour LIRC avec le pilote dev/input
.
Il faut trouver ou bien créer un fichier lircd.conf
représentant la télécommande à la place de laquelle le transmetteur va être utilisé. Pour créer ce fichier, vous pouvez vous reporter à la partie Le fichier lircd.conf en prenant en compte les précisions qui suivent. Vous pouvez enregistrer le fichier lircd.conf où bon vous semble. Il faut cependant ajouter une ligne include
à votre fichier principal /etc/lirc/lircd.conf
. Par exemple, si le fichier lircd.conf de votre émetteur est ~/émetteur/lircd.conf
, il faut ajouter la ligne suivante :
include ~/émetteur/lircd.conf
Pour prendre en compte les modifications sur les fichiers lircd.conf, il faut redémarrer LIRC avec la commande suivante :
sudo /etc/init.d/lirc restart
La syntaxe pour la transmission est la suivante :
irsend -d $LIRCDPROCESS SEND_ONCE $REMOTE $BUTTON
où :
/dev/
utilisé pour la transmission ;/etc/lirc/lircd.conf
;Voici un exemple :
irsend -d /dev/lircd SEND_ONCE my_favorite_remote power
Ceci va transmettre le bouton de marche pour la télécommande « my_favourite_remote » en utilisant le processus lircd primaire.
Si la transmission de fonctionne pas immédiatement, la meilleure méthode pour commencer un diagnostic est d'utiliser un appareil photo numérique. Allumez l'appareil photo et regardez la DÉL infrarouge de laquelle vous essayez de transmettre à travers l'objectif. Vous devriez voir des flashs violets venant de la DÉL infrarouge quand vous essayez de transmettre. Si vous ne voyez rien, votre appareil ne transmet rien.