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.