lirc
Table des matières
Retour à l'index
NOM
lirc — périphériques lirc
DESCRIPTION
Les périphériques caractères /dev/lirc* fournissent une interface
bidirectionnelle de bas niveau pour les télécommandes infrarouges (IR). La
plupart de ces périphériques peuvent recevoir et certains peuvent
émettre. Lors de la réception ou de l’émission de données, le pilote
fonctionne dans deux modes différents selon le matériel sous-jacent.
Certains matériels (typiquement les cartes TV) décodent le signal infrarouge
en interne et fournissent des décodages d’appui de bouton sous forme de code
d’analyse d’évènement du clavier (scancode). Les pilotes de cette sorte de
matériel fonctionnent dans le mode LIRC_MODE_SCANCODE. De tels matériels
habituellement ne gèrent pas l’émission de signaux infrarouges. De plus, de
tels matériels ne peuvent décoder seulement qu’un nombre limité de
protocoles, habituellement seulement le protocole de la télécommande
particulière fournie avec, par exemple, une carte TV.
D’autres matériels fournissent un flux d’impulsions/intervalles. De tels
pilotes fonctionnent dans le mode LIRC_MODE_MODE2. De tels matériels
peuvent être utilisés (presque) avec n’importe quelle sorte de
télécommande. Ce genre de matériel peut être aussi utilisé dans le mode
LIRC_MODE_SCANCODE, auquel cas les décodeurs IR du noyau décoderont les
signaux infrarouges. Ces décodeurs peuvent être écrits en BPF étendu
(consulter bpf(2)) et attachés au périphérique lirc. Quelquefois ce
genre de matériel gère l’émission de données par IR.
L’ioctl LIRC_GET_FEATURES (voir ci-après) permet de savoir si l’émission
et la réception sont prises en charge, et, entre autres caractéristiques,
dans quels modes.
Lecture de l’entrée avec le mode LIRC_MODE_MODE2
Dans le mode LIRC_MODE_MODE2, les données renvoyées par read(2)
fournissent des valeurs en 32 bits représentant une durée d’intervalle ou
d’impulsion. La durée (en microsecondes) est encodée dans les 24 bits de
plus faible poids. L’impulsion (pulse aussi appelée flash) indique une durée
de lumière infrarouge détectée et l’intervalle (space aussi appelé gap)
indique une durée sans infrarouges. Si la durée de l’intervalle excède la
temporisation (timeout) d’inactivité, un paquet spécial de temporisation est
émis 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 durée d’intervalle (microsecondes)
- LIRC_MODE2_PULSE
-
La valeur indique une durée d’impulsion (microsecondes)
- LIRC_MODE2_FREQUENCY
-
La valeur indique une fréquence (Hz); consulter l’ioctl
LIRC_SET_MEASURE_CARRIER_MODE.
- LIRC_MODE2_TIMEOUT
-
La valeur indique une durée d’intervalle (microsecondes). Le paquet indique
une temporisation ; consulter l’ioctl LIRC_SET_REC_TIMEOUT_REPORTS.
- LIRC_MODE2_OVERFLOW
-
Le récepteur IR est victime d’un débordement, et en conséquence des données
manquent (depuis Linux 5.18).
Lecture de l’entrée avec le mode LIRC_MODE_SCANCODE
Dans le mode LIRC_MODE_SCANCODE, les données renvoyées par read(2)
reflètent les décodages d’appui sur les boutons dans la structure
lirc_scancode. Le scancode est stocké dans le champ scancode, et le
protocole IR est stocké dans rc_proto. Ce champ a une des valeurs de
enum rc_proto.
Écriture de la sortie avec le mode LIRC_MODE_PULSE
Les données écrites sur le périphérique caractère en utilisant write(2)
sont une séquence d’impulsions/intervalles de valeurs entières. Les
impulsions et les intervalles sont marqués implicitement par leur
position. Les données doivent débuter et se terminer par une impulsion, par
conséquent elles doivent toujours inclurent un nombre impair
d’échantillons. La fonction write(2) bloque jusqu’à ce que les données
aient été transmises par l’appareil. Si plus de données sont fournies que ce
que l’appareil peut envoyer, l’appel write(2) échoue avec l’erreur
EINVAL.
Écriture de la sortie avec le mode LIRC_MODE_SCANCODE
Les données écrites sur le périphérique caractère doivent être en une seule
structure lirc_scancode. Les champs scancode et rc_proto doivent
renseigner, tous les autres champs doivent être être 0. Les encodeurs IR du
noyau convertiront le scancode en impulsions et intervalles. Le protocole ou
le scancode est non valable, ou le périphérique lirc ne peut pas
transmettre.
COMMANDES IOCTL
#include <linux/lirc.h> /* Mais voir BOGUES */
int ioctl(int fd, int cmd, int *val);
Les opérations d’ioctl(2) suivantes sont fournies par le périphérique
caractère lirc pour examiner ou modifier les réglages lirc du
matériel.
Commandes toujours prises en charge
Les périphériques /dev/lirc* gèrent toujours la commande suivante :
- LIRC_GET_FEATURES (void)
-
Renvoi d’un masque de bits des bits combinés de fonctionnalités ; consulter
FONCTIONNALITÉS.
Si un périphérique renvoie un code d’erreur pour LIRC_GET_FEATURES, il
est normal de présumer que ce n’est pas un périphérique lirc.
Commandes facultatives
Quelques périphériques lirc prennent en charge les commandes listées
ci-après. À moins d’être déclarées autrement, elles échouent avec l’erreur
ENOTTY si l’opération n’est pas gérée, ou avec l’erreur EINVAL si
l’opération échoue ou si des arguments non valables sont fournis. Si le
pilote n’annonce pas que certaines fonctionnalités ne sont pas gérées,
l’invocation des ioctls correspondants échouera avec l’erreur ENOTTY.
- LIRC_GET_REC_MODE (void)
-
Si le périphérique lirc n’a pas de récepteur, cette opération échouera
avec l’erreur ENOTTY. Sinon le mode de réception sera renvoyé et sera un
des suivants :
-
- LIRC_MODE_MODE2
-
le pilote renvoie une séquence de durées d’impulsion/intervalles ;
- LIRC_MODE_SCANCODE
-
le pilote renvoie les valeurs de la structure lirc_scancode, chacune
d’elles représentant le décodage d’appui d’un bouton.
- LIRC_SET_REC_MODE (int)
-
Réglage du mode de réception. val est soit LIRC_MODE_SCANCODE ou
LIRC_MODE_MODE2. Si le périphérique lirc n’a pas de récepteur, cette
opération échoue avec l’erreur ENOTTY.
- LIRC_GET_SEND_MODE (void)
-
Renvoi du mode d’émission. LIRC_MODE_PULSE ou LIRC_MODE_SCANCODE sont
gérées. Si le périphérique lirc ne peut pas émettre, cette opération
échoue avec l’erreur ENOTTY.
- LIRC_SET_SEND_MODE (int)
-
Réglage du mode d’émission. val est soit LIRC_MODE_SCANCODE ou
LIRC_MODE_PULSE. Si le périphérique lirc ne peut pas émettre, cette
opération échoue avec l’erreur ENOTTY.
- LIRC_SET_SEND_CARRIER (int)
-
Réglage de la fréquence de modulation. L’argument est la fréquence (Hz).
- LIRC_SET_SEND_DUTY_CYCLE (int)
-
Réglage du cycle opératoire de la porteuse. val est un nombre dans
l’intervalle [0,100] qui décrit la largeur d’impulsion comme un pourcentage
du cycle total. Actuellement, aucune signification spéciale n’est donnée à 0
ou 100, mais ces valeurs sont réservées pour une utilisation future.
- LIRC_GET_MIN_TIMEOUT(void)
-
LIRC_GET_MAX_TIMEOUT(void)
Certains périphériques ont des minuteurs internes qui peuvent être utilisés
pour détecter lorsqu’il n’y a pas eu d’activité IR depuis un long
moment. Cela peut aider lircd(8) dans la détection qu’un signal IR a
cessé, et peut accélérer le processus de décodage. Ces opérations renvoient
des valeurs entières avec une temporisation minimale ou maximale pouvant
être définie (microsecondes). Certains périphériques ont une temporisation
fixe. Pour de tels pilotes, LIRC_GET_MIN_TIMEOUT et
LIRC_GET_MAX_TIMEOUT échoueront avec l’erreur ENOTTY.
- LIRC_SET_REC_TIMEOUT (int)
-
Réglage de la valeur entière pour la temporisation d’inactivité IR
(microsecondes). Pour être acceptée la valeur doit être entre des limites
définies par LIRC_GET_MIN_TIMEOUT et LIRC_GET_MAX_TIMEOUT. Une valeur
de 0 (si acceptée par le matériel) désactive toutes les temporisations de
matériel et les données devraient être annoncées le plus tôt possible. Si la
valeur exacte ne peut être réglée, alors la valeur supérieure possible la
plus proche de la valeur donnée devrait être définie.
- 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 désactivation (val est 0) des paquets de
temporisation dans LIRC_MODE_MODE2. Le comportement de cette opération a
varié selon les versions du noyau :
-
- -
-
Depuis Linux 5.17 : les paquets de temporisation sont toujours activés et
cet ioctl ne produit aucun effet.
- -
-
Depuis Linux 4.16 : les paquets de temporisation sont activés par
défaut. Chaque fois que le périphérique lirc est ouvert, l’opération
LIRC_SET_REC_TIMEOUT peut être utilisée pour désactiver (et, si désiré,
réactiver ultérieurement) la temporisation sur le descripteur de fichier.
- -
-
Dans Linux 4.15 et précédents : les paquets de temporisation sont
désactivés par défaut et leur activation (à l’aide de
LIRC_SET_REC_TIMEOUT) sur n’importe quel descripteur de fichier associé
avec le périphérique lirc a pour effet d’activer les temporisations pour
tous les descripteurs de fichier référant à ce périphérique (jusqu’à ce que
les temporisations soient désactivés de nouveau).
- LIRC_SET_REC_CARRIER (int)
-
Réglage de la limite supérieure de la fréquence de la porteuse de réception
(Hz). Consulter LIRC_SET_REC_CARRIER_RANGE.
- LIRC_SET_REC_CARRIER_RANGE (int)
-
Réglage de la limite inférieure de la fréquence de la porteuse de réception
(Hz). Pour que ces réglages soient effectifs, il faut régler la limite
inférieure en utilisant l’ioctl LIRC_SET_REC_CARRIER_RANGE, puis la
limite supérieure en utilisant l’ioctl LIRC_SET_REC_CARRIER.
- LIRC_SET_MEASURE_CARRIER_MODE (int)
-
Activation (val vaut 1) ou désactivation (val vaut 0) du mode de
mesure. Si activé, lors du prochain appui de touche, le pilote enverra des
paquets LIRC_MODE2_FREQUENCY. Par défaut, cela devrait être désactivé.
- LIRC_GET_REC_RESOLUTION (void)
-
Renvoi de la résolution du pilote (microsecondes).
- LIRC_SET_TRANSMITTER_MASK (int)
-
Activation de l’ensemble des émetteurs indiqués dans val, qui contient un
masque de bits ou chaque émetteur activé est un 1. Le premier émetteur est
encodé par le bit de poids le plus faible, etc. Quand un masque de bits non
valable est fourni, par exemple un bit est défini bien que le périphérique
n’ait pas autant d’émetteurs, cette opération renvoie le nombre d’émetteurs
disponibles et ne fait rien d’autre autrement.
- LIRC_SET_WIDEBAND_RECEIVER (int)
-
Certains périphériques sont équipés d’un récepteur large bande qui est prévu
pour découvrir la sortie d’une télécommande existante. Cet ioctl peut être
utilisé pour activer (val vaut 1) ou désactiver (val vaut 0) cette
fonctionnalité. Cela peut être utile pour des périphériques qui autrement
ont des récepteurs à bande étroite pour empêcher une utilisation avec
certaines télécommandes. Les récepteurs à large bande peuvent être aussi
plus précis. D’un autre côté, leur désavantage est en général une réduction
de la bande de réception.
-
Remarque : le récepteur large bande peut être implicitement activé si les
annonces de porteuse sont activées. Dans ce cas, il sera désactivé aussitôt
que les annonces de porteuse seront désactivées. Essayer de déactiver un
récepteur large bande alors que les annonces de porteuse sont activées est
sans effet.
FONCTIONNALITÉS
L’ioctl LIRC_GET_FEATURES renvoie un masque de bits décrivant les
fonctionnalités du pilote. Les bits suivants peuvent être renvoyés 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 gère la modification de la fréquence de modulation en utilisant
LIRC_SET_SEND_CARRIER.
- LIRC_CAN_SET_SEND_DUTY_CYCLE
-
Le pilote gère la modification du cycle opératoire en utilisant
LIRC_SET_SEND_DUTY_CYCLE.
- LIRC_CAN_SET_TRANSMITTER_MASK
-
Le pilot gère les émetteurs actifs en utilisant
LIRC_SET_TRANSMITTER_MASK.
- LIRC_CAN_SET_REC_CARRIER
-
Le pilote gère le réglage de la fréquence de la porteuse en utilisant
LIRC_SET_REC_CARRIER. N’importe quel périphérique lirc depuis que les
pilotes ont été intégrés dans Linux 2.6.36 peut avoir
LIRC_CAN_SET_REC_CARRIER_RANGE déclaré si la fonctionnalité
LIRC_CAN_SET_REC_CARRIER est activée.
- LIRC_CAN_SET_REC_CARRIER_RANGE
-
Le pilote gère LIRC_SET_REC_CARRIER_RANGE. La limite basse de la porteuse
doit être d’abord définie en utilisant l’ioctl
LIRC_SET_REC_CARRIER_RANGE, avant d’utiliser l’ioctl
LIRC_SET_REC_CARRIER pour définir la limite supérieure.
- LIRC_CAN_GET_REC_RESOLUTION
-
Le pilote gère LIRC_GET_REC_RESOLUTION.
- LIRC_CAN_SET_REC_TIMEOUT
-
Le pilote gère LIRC_SET_REC_TIMEOUT.
- LIRC_CAN_MEASURE_CARRIER
-
Le pilote gère la mesure de la fréquence de modulation en utilisant
LIRC_SET_MEASURE_CARRIER_MODE.
- LIRC_CAN_USE_WIDEBAND_RECEIVER
-
Le pilote gère le mode d’apprentissage en utilisant
LIRC_SET_WIDEBAND_RECEIVER.
- LIRC_CAN_SEND_PULSE
-
Le pilote gère l’émission en utilisant LIRC_MODE_PULSE ou
LIRC_MODE_SCANCODE
BOGUES
L’utilisation de ces périphériques nécessite le fichier source d’en-tête du
noyau lirc.h. Ce fichier n’était pas disponible avant Linux 4.6. Les
utilisateurs de noyaux plus anciens peuvent utiliser le fichier disponible
dans
VOIR AUSSI
ir-ctl(1), lircd(8), bpf(2)
TRADUCTION
La traduction française de cette page de manuel a été créée par
Christophe Blaess <https://www.blaess.fr/christophe/>,
Stéphan Rafin <stephan.rafin@laposte.net>,
Thierry Vignaud <tvignaud@mandriva.com>,
François Micaux,
Alain Portal <aportal@univ-montp2.fr>,
Jean-Philippe Guérard <fevrier@tigreraye.org>,
Jean-Luc Coulon (f5ibh) <jean-luc.coulon@wanadoo.fr>,
Julien Cristau <jcristau@debian.org>,
Thomas Huriaux <thomas.huriaux@gmail.com>,
Nicolas François <nicolas.francois@centraliens.net>,
Florentin Duneau <fduneau@gmail.com>,
Simon Paillard <simon.paillard@resel.enst-bretagne.fr>,
Denis Barbier <barbier@debian.org>,
David Prévot <david@tilapin.org>
et
Jean-Paul Guillonneau <guillonneau.jeanpaul@free.fr>
Cette traduction est une documentation libre ; veuillez vous reporter à la
GNU General Public License version 3
concernant les conditions de copie et
de distribution. Il n'y a aucune RESPONSABILITÉ LÉGALE.
Si vous découvrez un bogue dans la traduction de cette page de manuel,
veuillez envoyer un message à
Index
- NOM
-
- DESCRIPTION
-
- Lecture de l’entrée avec le mode LIRC_MODE_MODE2
-
- Lecture de l’entrée avec le mode LIRC_MODE_SCANCODE
-
- Écriture de la sortie avec le mode LIRC_MODE_PULSE
-
- Écriture de la sortie avec le mode LIRC_MODE_SCANCODE
-
- COMMANDES IOCTL
-
- Commandes toujours prises en charge
-
- Commandes facultatives
-
- FONCTIONNALITÉS
-
- BOGUES
-
- VOIR AUSSI
-
- TRADUCTION
-
This document was created by
man2html,
using the manual pages.
Time: 05:06:32 GMT, September 19, 2025