lirc(4) Device Drivers Manual lirc(4) NOM lirc -- peripheriques lirc DESCRIPTION Les peripheriques caracteres /dev/lirc* fournissent une interface bidirectionnelle de bas niveau pour les telecommandes infrarouges (IR). La plupart de ces peripheriques peuvent recevoir et certains peuvent emettre. Lors de la reception ou de l'emission de donnees, le pilote fonctionne dans deux modes differents selon le materiel sous-jacent. Certains materiels (typiquement les cartes TV) decodent le signal infrarouge en interne et fournissent des decodages d'appui de bouton sous forme de code d'analyse d'evenement du clavier (scancode). Les pilotes de cette sorte de materiel fonctionnent dans le mode LIRC_MODE_SCANCODE. De tels materiels habituellement ne gerent pas l'emission de signaux infrarouges. De plus, de tels materiels ne peuvent decoder seulement qu'un nombre limite de protocoles, habituellement seulement le protocole de la telecommande particuliere fournie avec, par exemple, une carte TV. D'autres materiels fournissent un flux d'impulsions/intervalles. De tels pilotes fonctionnent dans le mode LIRC_MODE_MODE2. De tels materiels peuvent etre utilises (presque) avec n'importe quelle sorte de telecommande. Ce genre de materiel peut etre aussi utilise dans le mode LIRC_MODE_SCANCODE, auquel cas les decodeurs IR du noyau decoderont les signaux infrarouges. Ces decodeurs peuvent etre ecrits en BPF etendu (consulter bpf(2)) et attaches au peripherique lirc. Quelquefois ce genre de materiel gere l'emission de donnees par IR. L'ioctl LIRC_GET_FEATURES (voir ci-apres) permet de savoir si l'emission et la reception sont prises en charge, et, entre autres caracteristiques, dans quels modes. Lecture de l'entree avec le mode LIRC_MODE_MODE2 Dans le mode LIRC_MODE_MODE2, les donnees renvoyees par read(2) fournissent des valeurs en 32 bits representant une duree d'intervalle ou d'impulsion. La duree (en microsecondes) est encodee dans les 24 bits de plus faible poids. L'impulsion (pulse aussi appelee flash) indique une duree de lumiere infrarouge detectee et l'intervalle (space aussi appele gap) indique une duree sans infrarouges. Si la duree de l'intervalle excede la temporisation (timeout) d'inactivite, un paquet special de temporisation est emis qui marque la fin du message. Les 8 bits de poids le plus fort indiquent le type de paquet : LIRC_MODE2_SPACE La valeur indique une duree d'intervalle (microsecondes) LIRC_MODE2_PULSE La valeur indique une duree d'impulsion (microsecondes) LIRC_MODE2_FREQUENCY La valeur indique une frequence (Hz); consulter l'ioctl LIRC_SET_MEASURE_CARRIER_MODE. LIRC_MODE2_TIMEOUT La valeur indique une duree d'intervalle (microsecondes). Le paquet indique une temporisation ; consulter l'ioctl LIRC_SET_REC_TIMEOUT_REPORTS. LIRC_MODE2_OVERFLOW Le recepteur IR est victime d'un debordement, et en consequence des donnees manquent (depuis Linux 5.18). Lecture de l'entree avec le mode LIRC_MODE_SCANCODE Dans le mode LIRC_MODE_SCANCODE, les donnees renvoyees par read(2) refletent les decodages d'appui sur les boutons dans la structure lirc_scancode. Le scancode est stocke dans le champ scancode, et le protocole IR est stocke dans rc_proto. Ce champ a une des valeurs de enum rc_proto. Ecriture de la sortie avec le mode LIRC_MODE_PULSE Les donnees ecrites sur le peripherique caractere en utilisant write(2) sont une sequence d'impulsions/intervalles de valeurs entieres. Les impulsions et les intervalles sont marques implicitement par leur position. Les donnees doivent debuter et se terminer par une impulsion, par consequent elles doivent toujours inclurent un nombre impair d'echantillons. La fonction write(2) bloque jusqu'a ce que les donnees aient ete transmises par l'appareil. Si plus de donnees sont fournies que ce que l'appareil peut envoyer, l'appel write(2) echoue avec l'erreur EINVAL. Ecriture de la sortie avec le mode LIRC_MODE_SCANCODE Les donnees ecrites sur le peripherique caractere doivent etre en une seule structure lirc_scancode. Les champs scancode et rc_proto doivent etre renseignes, tous les autres champs doivent etre 0. Les encodeurs IR du noyau convertiront le scancode en impulsions et intervalles. Le protocole ou le scancode est non valable, ou le peripherique lirc ne peut pas transmettre. COMMANDES IOCTL #include /* Mais voir BOGUES */ int ioctl(int fd, int cmd, int *val); Les operations d'ioctl(2) suivantes sont fournies par le peripherique caractere lirc pour examiner ou modifier les reglages lirc du materiel. Commandes toujours prises en charge Les peripheriques /dev/lirc* gerent toujours la commande suivante : LIRC_GET_FEATURES (void) Renvoi d'un masque de bits des bits combines de fonctionnalites ; consulter FONCTIONNALITES. Si un peripherique renvoie un code d'erreur pour LIRC_GET_FEATURES, il est normal de presumer que ce n'est pas un peripherique lirc. Commandes facultatives Quelques peripheriques lirc prennent en charge les commandes listees ci-apres. A moins d'etre declarees autrement, elles echouent avec l'erreur ENOTTY si l'operation n'est pas geree, ou avec l'erreur EINVAL si l'operation echoue ou si des arguments non valables sont fournis. Si le pilote n'annonce pas que certaines fonctionnalites ne sont pas gerees, l'invocation des ioctls correspondants echouera avec l'erreur ENOTTY. LIRC_GET_REC_MODE (void) Si le peripherique lirc n'a pas de recepteur, cette operation echouera avec l'erreur ENOTTY. Sinon le mode de reception sera renvoye et sera un des suivants : LIRC_MODE_MODE2 le pilote renvoie une sequence de durees d'impulsion/intervalles ; LIRC_MODE_SCANCODE le pilote renvoie les valeurs de la structure lirc_scancode, chacune d'elles representant le decodage d'appui d'un bouton. LIRC_SET_REC_MODE (int) Reglage du mode de reception. val est soit LIRC_MODE_SCANCODE ou LIRC_MODE_MODE2. Si le peripherique lirc n'a pas de recepteur, cette operation echoue avec l'erreur ENOTTY. LIRC_GET_SEND_MODE (void) Renvoi du mode d'emission. LIRC_MODE_PULSE ou LIRC_MODE_SCANCODE sont gerees. Si le peripherique lirc ne peut pas emettre, cette operation echoue avec l'erreur ENOTTY. LIRC_SET_SEND_MODE (int) Reglage du mode d'emission. val est soit LIRC_MODE_SCANCODE ou LIRC_MODE_PULSE. Si le peripherique lirc ne peut pas emettre, cette operation echoue avec l'erreur ENOTTY. LIRC_SET_SEND_CARRIER (int) Reglage de la frequence de modulation. L'argument est la frequence (Hz). LIRC_SET_SEND_DUTY_CYCLE (int) Reglage du cycle operatoire de la porteuse. val est un nombre dans l'intervalle [0,100] qui decrit la largeur d'impulsion comme un pourcentage du cycle total. Actuellement, aucune signification speciale n'est donnee a 0 ou 100, mais ces valeurs sont reservees pour une utilisation future. LIRC_GET_MIN_TIMEOUT(void) LIRC_GET_MAX_TIMEOUT(void) Certains peripheriques ont des minuteurs internes qui peuvent etre utilises pour detecter lorsqu'il n'y a pas eu d'activite IR depuis un long moment. Cela peut aider lircd(8) dans la detection qu'un signal IR a cesse, et peut accelerer le processus de decodage. Ces operations renvoient des valeurs entieres avec une temporisation minimale ou maximale pouvant etre definie (microsecondes). Certains peripheriques ont une temporisation fixe. Pour de tels pilotes, LIRC_GET_MIN_TIMEOUT et LIRC_GET_MAX_TIMEOUT echoueront avec l'erreur ENOTTY. LIRC_SET_REC_TIMEOUT (int) Reglage de la valeur entiere pour la temporisation d'inactivite IR (microsecondes). Pour etre acceptee la valeur doit etre entre des limites definies par LIRC_GET_MIN_TIMEOUT et LIRC_GET_MAX_TIMEOUT. Une valeur de 0 (si acceptee par le materiel) desactive toutes les temporisations de materiel et les donnees devraient etre annoncees le plus tot possible. Si la valeur exacte ne peut etre reglee, alors la valeur superieure possible la plus proche de la valeur donnee devrait etre definie. LIRC_GET_REC_TIMEOUT (void) Renvoi de la temporisation actuelle (microsecondes). Depuis Linux 4.18. LIRC_SET_REC_TIMEOUT_REPORTS (int) Activation (val est 1) ou desactivation (val est 0) des paquets de temporisation dans LIRC_MODE_MODE2. Le comportement de cette operation a varie selon les versions du noyau : - Depuis Linux 5.17 : les paquets de temporisation sont toujours actives et cet ioctl ne produit aucun effet. - Depuis Linux 4.16 : les paquets de temporisation sont actives par defaut. Chaque fois que le peripherique lirc est ouvert, l'operation LIRC_SET_REC_TIMEOUT peut etre utilisee pour desactiver (et, si desire, reactiver ulterieurement) la temporisation sur le descripteur de fichier. - Dans Linux 4.15 et precedents : les paquets de temporisation sont desactives par defaut et leur activation (a l'aide de LIRC_SET_REC_TIMEOUT) sur n'importe quel descripteur de fichier associe avec le peripherique lirc a pour effet d'activer les temporisations pour tous les descripteurs de fichier referant a ce peripherique (jusqu'a ce que les temporisations soient desactives de nouveau). LIRC_SET_REC_CARRIER (int) Reglage de la limite superieure de la frequence de la porteuse de reception (Hz). Consulter LIRC_SET_REC_CARRIER_RANGE. LIRC_SET_REC_CARRIER_RANGE (int) Reglage de la limite inferieure de la frequence de la porteuse de reception (Hz). Pour que ces reglages soient effectifs, il faut regler la limite inferieure en utilisant l'ioctl LIRC_SET_REC_CARRIER_RANGE, puis la limite superieure en utilisant l'ioctl LIRC_SET_REC_CARRIER. LIRC_SET_MEASURE_CARRIER_MODE (int) Activation (val vaut 1) ou desactivation (val vaut 0) du mode de mesure. Si active, lors du prochain appui de touche, le pilote enverra des paquets LIRC_MODE2_FREQUENCY. Par defaut, cela devrait etre desactive. LIRC_GET_REC_RESOLUTION (void) Renvoi de la resolution du pilote (microsecondes). LIRC_SET_TRANSMITTER_MASK (int) Activation de l'ensemble des emetteurs indiques dans val, qui contient un masque de bits ou chaque emetteur active est un 1. Le premier emetteur est encode par le bit de poids le plus faible, etc. Quand un masque de bits non valable est fourni, par exemple un bit est defini bien que le peripherique n'ait pas autant d'emetteurs, cette operation renvoie le nombre d'emetteurs disponibles et ne fait rien d'autre autrement. LIRC_SET_WIDEBAND_RECEIVER (int) Certains peripheriques sont equipes d'un recepteur large bande qui est prevu pour decouvrir la sortie d'une telecommande existante. Cet ioctl peut etre utilise pour activer (val vaut 1) ou desactiver (val vaut 0) cette fonctionnalite. Cela peut etre utile pour des peripheriques qui autrement ont des recepteurs a bande etroite pour empecher une utilisation avec certaines telecommandes. Les recepteurs a large bande peuvent etre aussi plus precis. D'un autre cote, leur desavantage est en general une reduction de la bande de reception. Remarque : le recepteur large bande peut etre implicitement active si les annonces de porteuse sont activees. Dans ce cas, il sera desactive aussitot que les annonces de porteuse seront desactivees. Essayer de deactiver un recepteur large bande alors que les annonces de porteuse sont activees est sans effet. FONCTIONNALITES L'ioctl LIRC_GET_FEATURES renvoie un masque de bits decrivant les fonctionnalites du pilote. Les bits suivants peuvent etre renvoyes dans le masque : LIRC_CAN_REC_MODE2 Le pilote peut recevoir en utilisant LIRC_MODE_MODE2. LIRC_CAN_REC_SCANCODE Le pilote peut recevoir en utilisant LIRC_MODE_SCANCODE. LIRC_CAN_SET_SEND_CARRIER Le pilote gere la modification de la frequence de modulation en utilisant LIRC_SET_SEND_CARRIER. LIRC_CAN_SET_SEND_DUTY_CYCLE Le pilote gere la modification du cycle operatoire en utilisant LIRC_SET_SEND_DUTY_CYCLE. LIRC_CAN_SET_TRANSMITTER_MASK Le pilot gere les emetteurs actifs en utilisant LIRC_SET_TRANSMITTER_MASK. LIRC_CAN_SET_REC_CARRIER Le pilote gere le reglage de la frequence de la porteuse en utilisant LIRC_SET_REC_CARRIER. N'importe quel peripherique lirc depuis que les pilotes ont ete integres dans Linux 2.6.36 peut avoir LIRC_CAN_SET_REC_CARRIER_RANGE declare si la fonctionnalite LIRC_CAN_SET_REC_CARRIER est activee. LIRC_CAN_SET_REC_CARRIER_RANGE Le pilote gere LIRC_SET_REC_CARRIER_RANGE. La limite basse de la porteuse doit etre d'abord definie en utilisant l'ioctl LIRC_SET_REC_CARRIER_RANGE, avant d'utiliser l'ioctl LIRC_SET_REC_CARRIER pour definir la limite superieure. LIRC_CAN_GET_REC_RESOLUTION Le pilote gere LIRC_GET_REC_RESOLUTION. LIRC_CAN_SET_REC_TIMEOUT Le pilote gere LIRC_SET_REC_TIMEOUT. LIRC_CAN_MEASURE_CARRIER Le pilote gere la mesure de la frequence de modulation en utilisant LIRC_SET_MEASURE_CARRIER_MODE. LIRC_CAN_USE_WIDEBAND_RECEIVER Le pilote gere le mode d'apprentissage en utilisant LIRC_SET_WIDEBAND_RECEIVER. LIRC_CAN_SEND_PULSE Le pilote gere l'emission en utilisant LIRC_MODE_PULSE ou LIRC_MODE_SCANCODE BOGUES Using these devices requires the kernel source header file lirc.h. This file is not available before Linux 4.6. Users of older kernels could use the file bundled in . VOIR AUSSI ir-ctl(1), lircd(8), bpf(2) TRADUCTION La traduction francaise de cette page de manuel a ete creee par Christophe Blaess , Stephan Rafin , Thierry Vignaud , Francois Micaux, Alain Portal , Jean-Philippe Guerard , Jean-Luc Coulon (f5ibh) , Julien Cristau , Thomas Huriaux , Nicolas Francois , Florentin Duneau , Simon Paillard , Denis Barbier , David Prevot et Jean-Paul Guillonneau Cette traduction est une documentation libre ; veuillez vous reporter a la GNU General Public License version 3 concernant les conditions de copie et de distribution. Il n'y a aucune RESPONSABILITE LEGALE. Si vous decouvrez un bogue dans la traduction de cette page de manuel, veuillez envoyer un message a . Pages du manuel de Linux 6.18 8 fevrier 2026 lirc(4)