En un post anterior, habia ideado una manera negrera de hacer funcionar un pseudo control remoto de la sintonizadora de TV Kozumi con chip BT878, via SSH.
Investigando un poco como maneja el kernel de Linux los infrarrojos, encontre la manera de hacerlo funcionar (luego de algunas recompilaciones del Kernel), y la verdad que funciona barbaro. Para empezar me base en la versión del kernel de Linux 2.6.31-2 al hacer lspci mi salida es la siguiente.
01:0a.0 Multimedia video controller: Brooktree Corporation Bt878 Video Capture (rev 11)
01:0a.1 Multimedia controller: Brooktree Corporation Bt878 Audio Capture (rev 11)
El control remoto funcionaba correctamente, pero el mapeo de teclas era totalmente incorrecto, por lo cual manejarlo mediante este medio se volvia imposible, asi que me pregunte ¿en que lugar del driver infrarrojo, estan mapeadas las teclas?. La respuesta fue muy simple, si usamos esta sintonizadora, se encuentra en el archivo ir-keymaps.c en el cual dentro de un arreglo, se le asigna un valor hexadecimal a cada tecla, por ejemplo [ 0x44 ] equivaldria a KEY_0 que representa al número 0 del control remoto.
Si nosotros levantamos la placa sintonizadora cargando el modulo bttv con las siguientes opciones:
bttv card=120 pll=1 tuner=38 radio=1 bttv_verbose=1 gbuffers=4
La misma es reconocida como una placa PiexelView (funciona barbaro) y carga los IR_CODES de esta misma, con lo cual el control remoto difiere considerablemente.
Para hacer funcionar este control remoto debemos editar el archivo drivers/media/common/ir-keymaps.c y sustituir los IR_CODES del arreglo ir_codes_pixelview por los siguientes:
/* ----------------------------------------------------------------------
Kozumi KTV-01C
For remote control of Kozumi KTV-01C card
------------------------------------------------------------------------*/
IR_KEYTAB_TYPE ir_codes_pixelview[IR_KEYTAB_SIZE] = {
[ 0x00 ] = KEY_0,
[ 0x01 ] = KEY_1,
[ 0x02 ] = KEY_2,
[ 0x03 ] = KEY_3,
[ 0x04 ] = KEY_4,
[ 0x05 ] = KEY_5,
[ 0x06 ] = KEY_6,
[ 0x07 ] = KEY_7,
[ 0x08 ] = KEY_8,
[ 0x09 ] = KEY_9,
[ 0x1c ] = KEY_RADIO,
[ 0x0a ] = KEY_BACKSPACE,
[ 0x12 ] = KEY_POWER, // KEY_ESC
[ 0x18 ] = KEY_LEFT, // VOL -
[ 0x0c ] = KEY_RIGHT, // VOL +
[ 0x16 ] = KEY_ENTER, // OK
[ 0x17 ] = KEY_D, // Plus
[ 0x10 ] = KEY_F, // Mode
[ 0x0b ] = KEY_UP, // Channel up
[ 0x0b ] = KEY_UP, // Channel up
[ 0x15 ] = KEY_DOWN, // Channel down
[ 0x14 ] = KEY_H, // OSD
[ 0x13 ] = KEY_MUTE, // Mute
[ 0x0f ] = KEY_BACKSPACE, // Prev
[ 0x0e ] = KEY_STOP, // Stop
[ 0x1f ] = KEY_PLAY, // Play
[ 0x1e ] = KEY_PAUSE, // Pause
[ 0x1d ] = KEY_RECORD, // Record
[ 0x1a ] = KEY_F7, // Next
[ 0x0f ] = KEY_A,
[ 0x1b ] = KEY_F5, // Time Shift
[ 0x19 ] = KEY_S, // Snapshot
[ 0x0f ] = KEY_F6, // Prev
[ 0x0d ] = KEY_E, // Stereo
[ 0x11 ] = KEY_I // Source
};
Guardamos los cambios y luego de esto, solo falta recompilar los módulos del Kernel, instalarlos, y volver a cargar el modulo con las mismas opciones que lo haciamos anteriormente. No olvides conectar tu sensor infrarrojo!.
Tags: bttv, kernel, Kozumi KTV, Remote Control

















