Ce tutoriel s'adresse aux personnes sous debian ou une distribution qui se base dessus (ubuntu, xandros...). Sauf contre indication, les commandes qui suivent requièrent des droits administrateurs et doivent être lancées en root ou via un sudo.
Ce tutoriel a été réalisé avec une carte Winfast TV 2000 XP sous debian lenny et une télécommande Leadtek Y0400046.
Étape 1 : Installation de la carte
Le module
bttv
utilisé pour cette carte est directement fournit par le paquet linux-image. Il suffit de le configurer conformément au modèle de la carte TV. Pour cela on crée/corrige le fichier
/etc/modprobe.d/bttv.conf
et on met dedans :
options bttv radio=0 card=34 tuner=24 gbuffers=8
Attention : Ceci est spécifique à la carte TV et donc il faudra sans doute le corriger si vous utilisez un autre modèle de carte.
Afin que le module soit chargé au démarrage on corrige également
/etc/modules
en ajoutant à la fin de celui-ci la ligne
bttv
. On peut d'ores et déjà charger le module
bttv
en tapant :
sudo modprobe bttv
Une fois le module chargé, un device associé à la carte TV s'appelle (par exemple
/dev/video0
).
Étape 2 : Installation de tvtime
Il existe plusieurs logiciels pour regarder la télé sous linux.
J'ai essayé KdeTV mais malheureusement, avec ma carte, une bande verte apparaît sur le bord droit de l'image en mode plein écran pour une raison assez obscure.
Sous
tvtime
, pas de problème, tout marche impeccable.
Pour l'installer :
sudo apt update
sudo apt install tvtime
Il ne reste plus qu'à lancer TV Time et à scanner les chaînes avec TV time (tout peut se faire à la souris). Si le tuner et la carte sont correctement configurés au moment de charger le module bttv ça ne devrait pas poser de problème. Dans mon cas
source vidéo : télévision
mode sonore : pal-i
norme de réception : secam
Si vous n'avez pas de son dans tvtime et que vous ne pouvez le régler
C'est probablement que vous utilisez un noyau récent OSS, n'est pas forcément directement supporté. Vous pouvez pouvez retrouver le numéro de version de votre noyau avec la commande :
uname -r
Si vous utilisez un noyau => 3.0.0, installez
oss-compat
et redémarrez :
apt install oss-compat
Pour les noyaux antérieurs, essayez d'installer oss4-dkms, et redémarrez.
Étape 3 : Configuration de la télécommande
Pour que la télécommande soit prise en charge, il faut installer et configurer
lirc
.
L'utilisation de lirc est assez complexe pour le néophytes et les tutoriels sont souvent obsolètes (en particulier ceux qui évoquent le module
lirc_gpio
, qui n'existe plus) ou complexes à comprendre.
Installation
On commence par installer le module qui va permette la prise en charge de la télécommande. Il est recommandé de passer par module-assistant, car les archives disponibles sur le site de lirc ont peu de chance de compiler à moins d'avoir compilé soi-même son propre noyau.
Il est important de relever le device auquel est associé la télécommande, qui peut différer en fonction de votre installation (dans cet exemple,
event6
). On lance LIRC on lui passant le device adéquat :
lircd -d /dev/input/event6 -H dev/input
Cette commande crée le device
/dev/lircd
qui sera utilisé par le démon
lircd
pour recevoir les signaux émis par la télécommande.
Ensuite, on corrige le fichier
/etc/lirc/hardware.conf
de sorte à avoir :
#Chosen Remote Control REMOTE="Winfast TV2000/XP (card=34)"
# Arguments which will be used when launching lircd LIRCD_ARGS=""
#Don't start lircmd even if there seems to be a good config file #START_LIRCMD=false
#Try to load appropriate kernel modules LOAD_MODULES=true
# Run "lircd --driver=help" for a list of supported drivers. DRIVER="dev/input" # If DEVICE is set to /dev/lirc and devfs is in use /dev/lirc/0 will be # automatically used instead DEVICE="/dev/input/event6" MODULES=""
# Default configuration files for your hardware if any LIRCD_CONF="/etc/lirc/lircd.conf" LIRCMD_CONF=""
Attention à corriger les variables
DEVICE
et
REMOTE
conformément à votre matériel ! Ensuite on (re)lance
lirc
:
sudo service lirc restart
Remarque : si suite à une mise à jour noyau
lirc
ne fonctionne plus, il est possible que le device associé à
lirc
ait changé. Cela se vérifie facilement avec irw, qui ne parviendra bien entendu plus à se connecter (que ce soit en utilisateur ou en root puisque lirc ne pointe pas sur le bon device !)
Dans ce cas, il suffit de reprendre l'étape "Installation de lirc" en corrigeant les différents fichiers de configuration, puis de relancer le service
lirc
.
Premiers tests
À ce stade, on doit pouvoir récupérer les signaux de la télécommande avec
irw
. Ce programme peut être lancé en utilisateur. Pendant qu'il tourne, appuyez sur les touches de la télécommande pour récupérer les identifiants de touches correspondant (en gras ci-dessous), qui seront par la suite utilisés dans les fichiers de configuration
lirc
. Ces identifiants dépendent de la télécommande.
Exemple : voici ce qui est apparu dans mon cas en appuyant sur les touches "channel +", "finetune +", "8", "6" et "5" :
pour récupérer des codes touches. En ce qui me concerne ce device n'existe plus et la commande
mode2
ne marche donc plus.
Configurer lirc
On peut récupérer sur le site de lirc une map de télécommande à peu près utilisable. On peut télécharger cette archive qui contient de très nombreux fichiers pouvant servir à remplir
/etc/lirc/lircd.conf
Dans mon cas, j'ai utilisé celui de la télécommande
Y0400052
car je n'avais pas trop le courage d'en reconstruire un. Voici à quoi ressemble mon fichier
/etc/lirc/lircd.conf
:
#/etc/lirc/lircd.conf # Please make this file available to others # by sending it to <lirc@bartelmus.de> # # this config file was automatically generated # using lirc-0.8.3-CVS(dev/input) on Sat Jan 12 17:04:54 2008 # # contributed by: Mike Treichler # # brand: LeadTek # model no. of remote control: Y0400046 (bundled with Winfast 2000XP Deluxe) # devices being controlled by this remote: LeadTek Winfast 2000XP Deluxe
# brand: Leadtek # model: Y0400052 (bundeled with Winfast PVR2000 TV-card) # # Note: Only CH_UP, CH_DOWN, VOL_UP and VOL_DOWN will repeat. This # seems to be a limitation of the remote control.
begin remote
name Leadtek-RM0010 bits 16 eps 30 aeps 100
one 0 0 zero 0 0 pre_data_bits 16 pre_data 0x8001 gap 423871 toggle_bit_mask 0x0
begin codes POWER 0x0074 MTS 0x0188 TV/FM 0x0182 VIDEO 0x0189 DISPLAY 0x0166 CH_UP 0x0192 CH_DOWN 0x0193 VOL_DOWN 0x0072 VOL_UP 0x0073 FULLSCREEN 0x0174 TELETEXT 0x0184 SLEEP 0x008E BOSSKEY 0x0163 MUTE 0x0071 RED 0x018E GREEN 0x018F YELLOW 0x0190 BLUE 0x0191 1 0x0002 2 0x0003
3 0x0004 4 0x0005 5 0x0006 6 0x0007 7 0x0008 8 0x0009 9 0x000A 0 0x000B . 0x0034 FINETUNE+ 0x004E FINETUNE- 0x004A PIP 0x00E2 ENTER 0x001C RECALL 0x0195 BACK 0x019C PLAY 0x00A4 NEXT 0x0197 TIMESHIFTING 0x0169 STOP 0x0080 REC 0x00A7 SNAPSHOT 0x00EA end codes end remote
Si vous utilisez la même télécommande les touches BOSS KEY, PIP, colorées (vert, rouge, bleue, jaune), ZZ et les touches de magnétoscope seront mal reconnues (mais de toutes façon elles sont peu utiles !). Pour les plus courageux, on peut arranger cela avec les commandes irw et irrecord...
Exemple :
0000000080010192 00 CH_UP Leadtek-RM0010
correspond à la ligne
CH_UP 0x0192
.
Configurer le comportement des touches
À ce stade les codes touches sont correctement associées à des identifiants, mais ça ne rend pas
lirc
utilisable pour autant (ce serait trop simple...).
Il faut maintenant intercepter ces évènements soit avec
irexec
, soit avec
irxevent
et les transmettre vers les différents logiciels lancés. Ceci se fait à l'aide de règles. Elles définissent ce qui va se passer quand on appuie sur telle ou telle touche. Ce qu'il faut retenir :
irexec
permet de lancer une commande shell
irxevent
permet de lancer l'équivalent d'une action sur le clavier (éventuellement vers une application particulière).
Ce qui n'est pas forcément intuitif, c'est que les deux logiciels sont susceptibles de lire le même fichier de configuration (par défaut
~/.lircrc
). Ils doivent tourner en tâche de fond (démons) pour fonctionner. Chacun d'eux retrouve ses billes à l'aide du tag "prog" (voir ci-dessous).
Exemple : ces deux règles sont équivalentes : sous
tvtime
, la touche
f
permet de passer en mode plein écran.
a) avec
irxevent
:
begin prog = irxevent button = FULLSCREEN config = Key f tvtime end
b) avec
irexec
:
begin prog = irexec button = FULLSCREEN config = tvtime-command TOGGLE_FULLSCREEN end
Ces règles sont configurées dans
~/.lircrc
. On peut au besoin partager cette configuration entre plusieurs utilisateurs en la déportant dans
/etc/lirc/lircrc
, puis chaque utilisateur désirant l'utiliser n'a plus qu'à créer un lien symbolique :
ln -s /etc/lirc/lircrc ~/.lircrc
Attention : les identifiants touches figurant dans ~/.lircrc et dans /etc/lirc/lircd.conf doivent concorder sinon il ne se passera rien !
Voici par exemple à quoi ressemble un fichier
~/.lircrc
cohérent avec l'exemple que j'ai présenté pour piloter
tvtime
:
begin prog = irexec button = CH_DOWN config = tvtime-command CHANNEL_DOWN end
begin prog = irexec button = CH_UP config = tvtime-command CHANNEL_UP end
begin prog = irexec button = VOL_DOWN config = tvtime-command MIXER_DOWN end
begin prog = irexec button = VOL_UP config = tvtime-command MIXER_UP end
begin prog = irexec button = FULLSCREEN config = tvtime-command TOGGLE_FULLSCREEN end
begin prog = irexec button = 1 config = tvtime-command CHANNEL_1 end
begin prog = irexec button = 2 config = tvtime-command CHANNEL_2 end
begin prog = irexec button = 3 config = tvtime-command CHANNEL_3 end
begin prog = irexec button = 4 config = tvtime-command CHANNEL_4 end
begin prog = irexec button = 5 config = tvtime-command CHANNEL_5 end
begin prog = irexec button = 6 config = tvtime-command CHANNEL_6 end
begin prog = irexec button = 7 config = tvtime-command CHANNEL_7 end
begin prog = irexec button = 8 config = tvtime-command CHANNEL_8 end
begin prog = irexec button = 9 config = tvtime-command CHANNEL_9 end
begin prog = irexec button = 0 config = tvtime-command CHANNEL_0 end
À chaque fois que ce fichier est modifié, il faut relancer irexec et irxevent en tâche de fond afin de prendre en compte les modifications :
à chaque redémarrage, on peut les lancer automatiquement. Par exemple, sous KDE, il suffit de créer le script ~/.kde/Autostart/remote.sh et de mettre dedans :
#!/bin/sh
#CONF=/etc/lirc/lircrc
CONF="$HOME/.lircrc"
if [ "'ps -eo cmd | grep -c ^irxevent'" -eq 0 ]
then
echo "Starting irxevent..."
irxevent -d $CONF
fi
if [ "'ps -eo cmd | grep -c ^irexec'" -eq 0 ]
then
echo "Starting irexec..."
irexec -d $CONF
fi
Puis on transforme ce script en exécutable :
chmod u+x ~/.kde/Autostart/remote.sh
Un exemple plus complet
On peut trouver un exemple assez détaillé dans la documentation Ubuntu pour piloter d'autres logiciels.
Dans le lien ci-dessus, la télécommande propose 4 modes. Un mode est délimité par un bloc (par exemple "begin totem" et "end totem" pour le logiciel "totem"). Typiquement, le contenu de
~/.lircrc.tvtime
n'est pris en compte que lorsque la télécommande est en mode "tvtime", c'est-à-dire après avoir appuyé sur le bouton tv.