Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
utilisateurs:quent57:lirc_avancee [Le 25/12/2010, 03:05] – quent57 | utilisateurs:quent57:lirc_avancee [Le 25/12/2010, 03:11] (Version actuelle) – quent57 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | |||
+ | ====== LIRC, dans le vif du sujet ! ====== | ||
+ | |||
+ | < | ||
+ | |||
+ | < | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | LIRC est une excellente suite logicielle visant à utiliser des télécommandes avec GNU/Linux. Sa compatibilité avec tout et n’importe quoi et sa versatilité en font un incontournable de tout PC orienté Home Cinema. | ||
+ | Concrètement, | ||
+ | |||
+ | |||
+ | LIRC permet d' | ||
+ | |||
+ | Par défaut, Les scripts d' | ||
+ | |||
+ | |||
+ | ===== Ce qui a changé ===== | ||
+ | Résumer ce que l'on trouve ici : http:// | ||
+ | FIXME | ||
+ | |||
+ | |||
+ | ===== Trouver des infos correspondant à notre périphérique ===== | ||
+ | |||
+ | ==== Liste des périphériques d' | ||
+ | |||
+ | cat / | ||
+ | Puis trouver le bloc correspondant à votre récepteur infrarouge. | ||
+ | |||
+ | Si vous voyez dans ce bloc | ||
+ | H: Handlers=kdb event8 | ||
+ | Cela signifie que votre télécommande sera reconnu comme un clavier par Xorg (kdb = keyboard = clavier). | ||
+ | |||
+ | ==== Journal de Xorg ==== | ||
+ | |||
+ | Brancher le récepteur et lancer : | ||
+ | tail / | ||
+ | Les dernières lignes donneront des infos sur votre récepteur infrarouge. | ||
+ | |||
+ | ==== Sortie du noyau ==== | ||
+ | Brancher le récepteur et lancer : | ||
+ | dmesg | tail -20 | ||
+ | Les dernières lignes donneront des infos sur votre récepteur infrarouge. | ||
+ | |||
+ | ==== Nom de l' | ||
+ | |||
+ | Vous pouvez aller voir ici | ||
+ | ls -l / | ||
+ | On repère la ligne qui contient ir (infra rouge). Si vous avez un doute, débranchez et rebranchez votre récepteur infrarouge, pour voir quelle ligne apparait. | ||
+ | |||
+ | On remarque qu'il s'agit juste d'un lien symbolique sur un évènement, | ||
+ | Udev peut décider d' | ||
+ | |||
+ | Vous devez donc retenir un chemin de la forme "/// | ||
+ | |||
+ | |||
+ | |||
+ | ==== Récupérer les signaux émis par la télécommande ==== | ||
+ | |||
+ | === Signaux attrapés par Xorg : === | ||
+ | Si xorg arrive à attraper les signaux de la télécommande, | ||
+ | |||
+ | Si le périphérique est considéré comme un clavier par xorg, | ||
+ | on peut savoir ce qui sa passe sur ce périphérique (les évènements " | ||
+ | sudo evtest votre_periph | ||
+ | // | ||
+ | |||
+ | Penser a installer le paquet [[apt:// | ||
+ | |||
+ | |||
+ | === Signaux attrapés par LIRC === | ||
+ | Il faut configurer LIRC avec le fichier / | ||
+ | Ensuite il suffit de lancer | ||
+ | irw | ||
+ | Puis appuyez sur les touches de la télécommande, | ||
+ | |||
+ | |||
+ | ===== 2 systèmes de gestion de la télécommande, | ||
+ | ==== Garder juste la gestion xorg ==== | ||
+ | Utiliser xmodmap pour assigner les touches a des actions : http:// | ||
+ | Cependant c'est moins puissant que LIRC. | ||
+ | |||
+ | ==== Utiliser LIRC ==== | ||
+ | Pour cela voir plus bas. | ||
+ | |||
+ | ===== Configurer LIRC ===== | ||
+ | |||
+ | Pour commencer, il faut l' | ||
+ | FIXME donner les bon paramètres a l' | ||
+ | |||
+ | ==== Fichier de configuration matériel ou / | ||
+ | |||
+ | C’est ici qu’est défini le matériel. | ||
+ | Par contre, **il ne fait pas partie de LIRC** ! Ce fichier de configuration est une aide, laissée par les packageurs de votre distribution (Ubuntu dans notre cas) afin de simplifier l’utilisation des démons contrôlant LIRC. Il est donc nécessaire de faire attention à ce que vous lisez sur Internet, car en fonction de votre distribution les paramètres peuvent drastiquement changer. Le fichier peut même être totalement inutile. (Pour l’anecdote, | ||
+ | Concrètement, | ||
+ | |||
+ | Il y a plusieurs paramètre a regler dans ce fichier : | ||
+ | === REMOTE === | ||
+ | Vous pouvez entrer ici le nom de votre télécommande, | ||
+ | |||
+ | === REMOTE_DRIVER === | ||
+ | |||
+ | Ceci indique à LIRC quel pilote utiliser pour dialoguer. Cette notion de pilote est fois interne à LIRC : Il ne s’agit pas de périphérique noyau mais juste de définir comment LIRC va dialoguer avec votre périphérique / | ||
+ | Vous aurez la liste des drivers supportés en lançant : | ||
+ | lircd -H help | ||
+ | | ||
+ | Si vote récepteur IR est reconnu comme clavier, vous pouvez utiliser **devinput**. | ||
+ | |||
+ | === REMOTE_DEVICE === | ||
+ | C’est le fichier périphérique qui a été créé par le module noyau que vous avez chargé. Ceci indique au démon LIRC avec qui il va devoir dialoguer. | ||
+ | |||
+ | Entrer ici le chemin du récepteur IR trouvé plus haut ou quelque chose de la forme : LIRC_DEVICE=" | ||
+ | |||
+ | === REMOTE_LIRCD_CONF === | ||
+ | L’emplacement du fichier de configuration des télécommandes (habituellement **/ | ||
+ | |||
+ | |||
+ | === Pour aller plus loin (non nécessaire) === | ||
+ | Comme décrit plus haut, ces informations servent juste à lancer le démon lircd. | ||
+ | Une fois ces informations en main, vous pouvez donc le lancer manuellement avec : | ||
+ | sudo lircd -H REMOTE_DRIVER -d REMOTE_DEVICE -n | ||
+ | Les autres options vus plus haut étant facultative, | ||
+ | |||
+ | -n permet de lancer le programme en tant que démon, en tache de fond, ne pas le mettre si vous voulez voir les retours du programme : | ||
+ | sudo lircd -H REMOTE_DRIVER -d REMOTE_DEVICE | ||
+ | Vous pouvez ensuite tenter de lancer irw dans un autre terminal, et voir ce qu'il se passe. | ||
+ | |||
+ | |||
+ | Un exemple pour le boitier USBuirt : un passage de / | ||
+ | |||
+ | / | ||
+ | |||
+ | Tout ça pour ça, pourrait-on se dire… | ||
+ | Mais au moins, maintenant, à chaque fois que je lance LIRC par le script d’initialisation j’obtiens : des modules chargés, un périphérique bloc / | ||
+ | |||
+ | | ||
+ | |||
+ | ==== / | ||
+ | Jusqu’ici le démon lircd que vous pouvez maintenant lancer sait comment dialoguer avec votre périphérique émetteur ou récepteur. Mais il ne sait pas vraiment ce qu’il va trouver pendant son dialogue, qu’est ce qu’il doit garder et qu’est ce qu’il doit jeter. Ce fichier lircd.conf est là pour ça : c’est une sorte de « carte » de votre télécommande. A l’intérieur, | ||
+ | |||
+ | Deux cas peuvent se présenter : | ||
+ | |||
+ | === Vous utilisez le driver devinput === | ||
+ | |||
+ | Les codes seront directement envoyés par XOrg (je trompe-je ??). | ||
+ | Ils suivent une norme, le fichier est donc universel, vous pouvez le trouver | ||
+ | |||
+ | ici : [[http:// | ||
+ | |||
+ | source : [[http:// | ||
+ | |||
+ | Attention, ce fichier contient donc les correspondance de toute les touches que peuvent reconnaitre Xorg, il contient donc de touches que votre télécommande ne possède pas, je ne sais pas si cela a une influence. | ||
+ | |||
+ | === Vous n' | ||
+ | |||
+ | |||
+ | Où trouver ce fichier de configuration? | ||
+ | Mais si il ne s’y trouve pas, vous pouvez le faire vous même. Vous allez devoir utiliser irrecord pour ça. C’est un exécutable livré ordinairement avec LIRC. Il prend grosso modo les même paramètres que le démon « lircd », donc si vous êtes capables de configurer le fichier hardware.conf et que celui ci vous génère à chaque lancement de / | ||
+ | Exemple : | ||
+ | |||
+ | irrecord --driver=usb_uirt_raw --device=/ | ||
+ | |||
+ | Comme irrecord dialogue directement avec le bloc périphérique, | ||
+ | Coté utilisation, | ||
+ | |||
+ | |||
+ | A ajouter : Une partie des fichier est déjà présent par défaut, pour les visualiser naviguer dans ces fichiers : | ||
+ | ls -R / | ||
+ | Pour les inclure : ?? include ~/ | ||
+ | |||
+ | ==== Le point ==== | ||
+ | //Mais alors, comment mes applications savent jouer avec LIRC ?// | ||
+ | |||
+ | C’est simple, vous vous souvenez de la socket unix dont je parlais plus haut, celle qui est préparée par le démon LIRC? Et bien les applications | ||
+ | Cette socket est nommée /dev/lircd le plus souvent. Si vous souhaitez donner son chemin vous même (par exemple si vous en avez plusieurs), il est défini par le paramètre –output du démon lircd. La plupart des application vont se connecter à /dev/lircd, mais certaines d’entre elles peuvent être configurées pour se connecter au chemin de votre choix (c’est le cas par exemple de mon cher mythtv qui possède ce paramètre dans un coin de la configuration du frontend). Je vous conseille de tout laisser par défaut, c’est suffisant pour 90% des cas. | ||
+ | |||
+ | Vous l’avez compris, mais je me permets de le rappeler : pour qu’une application fonctionne avec LIRC, il faut qu’elle se branche sur la socket unix, et donc qu’elle ait été codée pour çà ! Cela semble évident au premier abord mais c’est pourtant loin d’être automatique si l’on se réfère aux questions qu’on trouve souvent sur les forums. | ||
+ | |||
+ | Et la configuration de ces applications, | ||
+ | |||
+ | ==== / | ||
+ | |||
+ | === Qu' | ||
+ | |||
+ | Les applications se connectent à la socket lircd, OK. Mais comment l’application sait quoi faire selon la touche pressée? C’est ici qu’intervient le fichier .lircrc. | ||
+ | Contrairement à une autre idée fréquemment répandue, ce n’est pas un fichier de configuration de LIRC. C’est un fichier de configuration de vos applications finales ! | ||
+ | En effet, celles ci parcourent immanquablement le fichier ~/.lircrc (et les éventuels sous fichier inclus avec la directive include), y repèrent leur propre marqueur (c’est le rôle de l’attribut " prog " ), et enregistre la carte des événements déclenchés en fonction des touches appuyées. Exemple : | ||
+ | |||
+ | begin | ||
+ | remote = NOVA-T500 | ||
+ | prog = mplayer | ||
+ | button = Play | ||
+ | config = pause | ||
+ | end | ||
+ | |||
+ | L’appui de la touche « Play » (touche nommée ainsi dans le fichier / | ||
+ | |||
+ | === Ou trouver ce fichier ? === | ||
+ | Plusieurs possibilités : des gens distribuent leur propre fichier, les application peuvent proposer leurs fichiers, ... | ||
+ | |||
+ | Sinon des programme peuvent éssayer de les générés comme celui ci : [[apt:// | ||
+ | |||
+ | === A savoir pour le faire soi-même === | ||
+ | |||
+ | [[: | ||
+ | |||
+ | La syntaxe basique pour l' | ||
+ | < | ||
+ | begin | ||
+ | prog = PROGRAMME | ||
+ | button = BOUTON | ||
+ | config = ACTION | ||
+ | end | ||
+ | </ | ||
+ | |||
+ | Où : | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | |||
+ | Un [[lircrc|tutoriel spécifique]] existe pour la création des fichiers lircrc (fichiers définissant l' | ||
+ | |||
+ | Vous pourrez trouver des fichiers d' | ||
+ | |||
+ | Pour des informations plus détaillées sur ce fichier, consultez [[http:// | ||
+ | |||
+ | |||
+ | == IRexec == | ||
+ | FIXME | ||
+ | IRexec permet de lancer une application sur la pression d'une touche. La syntaxe est la suivante : | ||
+ | |||
+ | begin | ||
+ | prog = irexec | ||
+ | button = BOUTONS | ||
+ | config = APPLICATION | ||
+ | end | ||
+ | |||
+ | Où APPLICATION est le chemin vers l' | ||
+ | |||
+ | == IRKick == | ||
+ | Pour kde.FIXME | ||
+ | |||
+ | ===== Lancer LIRC ===== | ||
+ | |||
+ | |||
+ | ==== Une petite synthèse ==== | ||
+ | lircd est un démon qui s’interface avec un périphérique / | ||
+ | Les programmes se connectent à cette belle socket, lisent un fichier de conf .lircrc dans le home de l’utilisateur, | ||
+ | |||
+ | |||
+ | ==== Lancer / redémarrer / arrêter LIRC (enfin !) : ==== | ||
+ | |||
+ | Voici les commandes correspondantes : | ||
+ | |||
+ | sudo service lirc start | ||
+ | sudo service lirc restart | ||
+ | sudo service lirc stop | ||
+ | |||
+ | ===== Problèmes ===== | ||
+ | ==== Chaque clics est interprétés 2 foix ==== | ||
+ | Chaque clics est interprétés 2 foix : une foix par le xorg, et une foix par LIRC (ce n'est pas pratique pour un bouton comme mute, car l' | ||
+ | |||
+ | Pour empêcher Xorg d' | ||
+ | et inscrire | ||
+ | |||
+ | Section " | ||
+ | | ||
+ | ## Eventuellement, | ||
+ | # | ||
+ | | ||
+ | | ||
+ | EndSection | ||
+ | |||
+ | ==== Je ne sais pas si ma télécommande marche (piles HS ?, télécommande morte ?) ==== | ||
+ | Si la transmission de fonctionne pas immédiatement, | ||
+ | |||
+ | |||
+ | |||
+ | ==== Je veux utiliser plusieurs télécommandes ==== | ||
+ | <note important> | ||
+ | === Modification des scripts d' | ||
+ | |||
+ | [[: | ||
+ | * Assurez-vous que tous vos modules figurent sur la ligne MODULES="", | ||
+ | * Modifiez les lignes du côté de LIRCD_ARGS="" | ||
+ | < | ||
+ | LIRCD_ARGS=" | ||
+ | LIRCD2_ARGS=" | ||
+ | </ | ||
+ | |||
+ | < | ||
+ | |||
+ | [[: | ||
+ | * Changez : | ||
+ | < | ||
+ | LIRCD_ARGS=`build_args $LIRCD_ARGS` | ||
+ | start-stop-daemon --start --quiet --exec / | ||
+ | < /dev/null | ||
+ | </ | ||
+ | en : | ||
+ | < | ||
+ | LIRCD_ARGS=`build_args $LIRCD_ARGS` | ||
+ | LIRCD2_ARGS=`build_args $LIRCD2_ARGS` | ||
+ | start-stop-daemon --start --quiet --exec / | ||
+ | < /dev/null | ||
+ | / | ||
+ | < /dev/null | ||
+ | </ | ||
+ | |||
+ | Faites les manipulations sur ''/ | ||
+ | |||
+ | |||
+ | === Essai === | ||
+ | |||
+ | Démarrez LIRC : | ||
+ | sudo / | ||
+ | |||
+ | Vous devriez avoir deux lircd actifs. Tout processus lirc qui tentera d' | ||
+ | |||
+ | ==== Je veux tester sans ma télécommande sous la main ==== | ||
+ | <note important> | ||
+ | |||
+ | La syntaxe pour la transmission est la suivante : | ||
+ | |||
+ | irsend -d $LIRCDPROCESS SEND_ONCE $REMOTE $BUTTON | ||
+ | |||
+ | où : | ||
+ | |||
+ | * $LIRCDPROCESS représente l' | ||
+ | * $REMOTE représente le nom de la télécommande, | ||
+ | * $BUTTON représente le bouton que vous essayez de transmettre. | ||
+ | |||
+ | 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. | ||
+ | |||
+ | ==== Mon récepteur Generic Mceusb ne marche pas ==== | ||
+ | Voir ce post : [[http:// | ||
+ | et celui la : [[http:// | ||
+ | |||
+ | ===== Aller plus loin ===== | ||
+ | |||
+ | Un logiciel de configuration automatique : http:// | ||
+ | |||
+ | Pour le fichier lircrc : voir | ||
+ | |||
+ | |||
+ | ---- | ||
+ | |||
+ | |||
+ | |||
+ | Sources : | ||
+ | * Merci à Gwendal Roulleau, http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | Documentation : | ||
+ | * Quelques aides pour le fichier lircrc : http:// | ||
+ | * http:// | ||
+ | * http:// | ||
+ | * .lircrc avec la notation devinput pour mythTV : http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * [[http:// | ||
+ | * http:// | ||
+ | |||
+ | Discussion intéressantes : | ||
+ | * http:// | ||
+ | * http:// | ||
+ | |||
+ | |||
+ | Contributeur : | ||
+ | * Quent57 | ||