Telecommande carte Terratec Cinergy 1400 DVB-T
De MicElectroLinGenMet.
Détection du récepteur IR de la carte Terratec sous Linux
Avec le noyau 2.6.14, le récepteur IR de la carte Terratec 1400 DVB-T apparait comme un "imput device" comme le clavier ou la souris.
Liste des "input devices"
(Il faut le module evdev pour que les /dev/input/eventx soient créés.)
# cat /proc/bus/input/devices ... I: Bus=0001 Vendor=153b Product=1166 Version=0001 N: Name="cx88 IR (</nowiki>TerraTec Cinergy 1400 " P: Phys=pci-0000:00:0c.2/ir0 H: Handlers=kbd event3 B: EV=100003 B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc
La télécommande sera accessible depuis le device /dev/input/event3
Un utilitaire fourni avec le packet dvb-utils, evtest permet de tester ce phérifique d'entrée:
La liste des noms et le codes des touches apparait et chaque appuie d'une touche de la télécommande retourne son code.
La télécommande est donc fonctionnelle.
# evtest /dev/input/event3
Input driver version is 1.0.0
Input device ID: bus 0x1 vendor 0x153b product 0x1166 version 0x1
Input device name: "cx88 IR (TerraTec Cinergy 1400 "
Supported events:
Event type 0 (Sync)
Event type 1 (Key)
Event code 2 (1)
Event code 3 (2)
Event code 4 (3)
Event code 5 (4)
Event code 6 (5)
Event code 7 (6)
Event code 8 (7)
Event code 9 (8)
Event code 10 (9)
Event code 11 (0)
Event code 103 (Up)
Event code 105 (Left)
Event code 106 (Right)
Event code 108 (Down)
Event code 113 (Mute)
Event code 114 (VolumeDown)
Event code 115 (VolumeUp)
Event code 116 (Power)
Event code 119 (Pause)
Event code 128 (Stop)
Event code 167 (Record)
Event code 173 (Refresh)
Event code 207 (Play)
Event code 352 (Ok)
Event code 353 (Select)
Event code 358 (Info)
Event code 365 (EPG)
Event code 388 (Text)
Event code 393 (Video)
Event code 398 (Red)
Event code 399 (Green)
Event code 400 (Yellow)
Event code 401 (Blue)
Event code 402 (ChannelUp)
Event code 403 (ChannelDown)
Event code 407 (Next)
Event code 412 (Previous)
Event type 20 (Repeat)
Testing ... (interrupt to exit)
Event: time 1154187003.412816, type 1 (Key), code 352 (Ok), value 1
Event: time 1154187003.412818, -------------- Report Sync ------------
Event: time 1154187003.590886, type 1 (Key), code 352 (Ok), value 0
Event: time 1154187003.590888, -------------- Report Sync ------------
Event: time 1154187008.992387, type 1 (Key), code 353 (Select), value 1
Event: time 1154187008.992389, -------------- Report Sync ------------
Event: time 1154187009.170451, type 1 (Key), code 353 (Select), value 0
Event: time 1154187009.170453, -------------- Report Sync ------------
Utilisation sous LIRC
Compilation avec choix "setup.sh" (Other / Linux Input Layer)
Lancement du daemon:
# ./lircd --device=/dev/input/event3
Vérification sous syslog:
Jul 29 18:00:07 vesta lircd-0.8.0-CVS[12529]: lircd(devinput) ready
Possibilité d'utiliser une régle udev pour nommer le device (à rajouter dans /etc/udev/rules.d):
# cat /etc/udev/rules.d/75-terratec.rules
KERNEL=="event[0-9]*", ATTRS{vendor}=="0x14f1", SYMLINK+="input/irterratec"
Un lien sera créé au boot sur le bon input/device (les devices peuvent être numérotés dans un ordre différent à chaque reboot).
# l /dev/input/irterratec lrwxrwxrwx 1 root root 6 mar 25 15:41 /dev/input/irterratec -> event3
Test avec l'utilitaire irw
# irw
Comme il n'y a pas de lircd.conf, irw ne me retourne rien, normal mais la log m'indique le code des touches appuyées:
Syslog lors appuie touche: Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: time 1154188985.752697 type 1 code 352 value 1 Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: code 80010160 Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: devinput_decode Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: devinput_rec Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: time 1154188985.752699 type 0 code 0 value 0 Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: code 00000000 Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: devinput_decode Jul 29 18:03:05 vesta lircd-0.8.0-CVS[12529]: devinput_rec
Création du fichier lircd.conf avec irrecord
Malheureusement, impossiblité de créer ce fichier, irrecord me retourne l'erreur ci-dessous:
irrecord -H dev/input -d /dev/input/event3 lircd-terratec.conf irrecord: gap not found, can't continue
En fouillant sur Internet, j'ai pu trouver un "lircd.conf" tout fait concernant concernant la Terratec CinergyT2.
Lien: http://www.pro-linux.de/news/2006/9118.html
Et celui-ci fonctionne aussi avec la télécommande de la Terratec 1400 DVB-T.
begin remote
name TerraTec_Cinergy_1400
bits 16
eps 30
aeps 100
pre_data_bits 16
pre_data 0x1
gap 199695
toggle_bit 3
begin codes
1 0x0002
2 0x0003
3 0x0004
4 0x0005
5 0x0006
6 0x0007
7 0x0008
8 0x0009
9 0x000a
0 0x000b
Up 0x0067
Left 0x0069
Right 0x006a
Down 0x006c
Mute 0x0071
VolumeDown 0x0072
VolumeUp 0x0073
Power 0x0074
Pause 0x0077
Stop 0x0080
Record 0x00a7
Refresh 0x00ad
Play 0x00cf
Ok 0x0160
OSD 0x0161
Info 0x0166
EPG 0x016d
Text 0x0184
Video 0x0189
RED 0x018e
GREEN 0x018f
YELLOW 0x0190
BLUE 0x0191
ChannelUp 0x0192
ChannelDown 0x0193
Next 0x0197
Previous 0x019c
end
end remote
Avec lineakd: autre méthode utilisée lorsque lirc ne fonctionnait pas
Les devices /dev/input/eventx fonctionnant comme un clavier, j'ai repris les keycodes de la télécommande renvoyées par l'utilitaire xev et je les ai rajouté dans le fichier de config. de lineakd
/etc/lineakkb.def
[LAB-UFK]
brandname = "Labtec"
modelname = "Ultra-Flat Keyboard"
[KEYS]
Home = 178
Stop = 164
Play|Pause = 162
Next = 153
Previous = 144
VolumeDown = 174
VolumeUp = 176
Mute = 160
Mail = 236
TerratecPause = 110
TerratecPlay = 179
TerratecRec = 50
TerratecStop = 232
TerratecMute = 160
[END KEYS]
[END LAB-UFK]
Codes rajoutés avec ceux du clavier labtec Ultra Flat que j'utilise.
Ensuite rajouter les noms dans ~/.lineak/lineakd.conf comme pour un clavier multimédia.
Problème, certaines touches ne sont pas visibles par xev (rien dans dmesg ni syslog) De même, l'utilitaire qui renvoi les scancode des touches, showkey ne retourne rien avec ces touches muettes !, à voir
Sinon, la télécommande fonctionne comme avec n'importe clavier mutimédia associé avec lineakd.
