Guía VDR en Genoo Linux Norman Golisz Dimitry Bradt Matthias Schwarzott Joshua Saddler José María Alonso Esta guía muestra como preparar Gentoo Linux para DVB y VDR. 1.5 2007-11-13 Información general de DVB
¿Qué es DVB?

DVB es el acrónimo de Digital Video Broadcasting (Difusión de Vídeo Digital). DVB describe métodos para transferir información digital de TV, radio, servicios interactivos como MHP, EPG y teletexto. Usando compresión de datos MPEG-2 o H.264 para HDTV, es posible transferir varios canales en la misma frecuencia. A mayor compresión de datos, mayor número de canales que pueden ser transferidos, pagando por ello una pérdida en la calidad.

DVB puede transferirse de varias formas. La última letra identifica el método de transferencia, p.e. DVB-T para transmisiones terrestres. Existen otros tipos:

  • DVB-S para transmisión vía satélite
  • DVB-C para transmisión por cable
  • DVB-H para transmisión a dispositivos móviles (terrestres)
  • DVB-IPI para transmisión sobre redes IP, p.e. internet
  • DVB-RC(S/C/T) canal de retorno para la transmisión de servicios de datos, p.e. internet de banda ancha
Tipos y requisitos de las tarjetas DVB

Aparte de los diferentes métodos existentes para recibir un stream DVB, las tarjetas son clasificadas por el tipo de the salida producida. Hay tarjetas con decodificador implementado que ofrece acceso directo al stream por medio del dispositivo /dev/video. Estas tarjetas son tarjetas completas (full featured). Otras tarjetas no tienen decodificador, requieren un software instalado en el ordenador y son de bajo coste. Esto implica mayores requisitos del sistema. La CPU de su ordenador debe funcionar al menos a 600 MHz y disponer de al menos de 256MB de RAM.Esta lista puede ser útil para identificar su tarjeta.

Preparando el sistema
Configurando el núcleo

En primer lugar, debemos asegurarnos de que su núcleo soporta DVB y el dispositivo DVB instalado. Desde la versión 2.6 los controladores necesarios están incluidos. Compruebe la configuración de su núcleo y asegúrese de seleccionar las siguientes opciones como controladores estáticos o como módulos.

Input Device Support --->
* Event Interface
Device Drivers --->
Multimedia Devices --->
Digital Video Broadcasting Devices --->
    [*] DVB For Linux
     *  DVB Core Support
   M  [Your driver]

Igualmente debemos seleccionar el controlador adecuado para su hardware. Para localizar el módulo correcto para su tarjeta, deberá marcar cada controlador como módulo. Si posee una tarjeta PCI, instale pciutils si no lo ha hecho ya. Si quiere los controladores ya instalados o no posee una tarjeta PCI, sáltese este paso y continúe con Comprobando la salida del núcleo.

# emerge pciutils

Despues de arrancar el nuevo núcleo, ejecutaremos pcimodules para listar los módulos requeridos.

# pcimodules
ohci-hcd
ehci-hcd
sis900
snd-emu10k1
b2c2-flexcop-pci
nvidia
nvidiafb

En este caso tendremos que cargar el módulo b2c2-flexcop-pci.Añadiremos el nombre a /etc/modules.autoload.d/kernel-2.6.

# echo b2c2-flexcop-pci >> /etc/modules.autoload.d/kernel-2.6
Comprobando la salida del núcleo

Se recomienda marcar cada controlador como módulo, de esta forma podrá añadir el módulo requerido dinámicamente, especialmente si no conoce el nombre del módulo. Si ya sabe el nombre de módulo, marque el controlador para ser compilado en el núcleo. Compile el núcleo, instale los módulos y arránquelo. Puede comprobar si su núcleo ha detectado correctamente su tarjeta usando dmesg.

# dmesg | grep DVB
(Si tiene una TerraTec Cinergy T2, la salida puede ser como ésta:)
DVB: registering new adaptor (TerraTec/qanu USB2.0 Highspeed DVB-T Receiver).
input: TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control as /class/input/input2
Instalando VDR

Para instalar VDR, simplemente hacemos emerge.

# emerge vdr

Ahora puede continuar con Instalando el Mando a Distancia.

Instalando el Mando a Distancia

Hay al menos dos formas de controlar VDR usando un mando a distancia infrarrojo. Si su tarjeta de televisión tiene un receptor IR integrado, puede usarvdr-remote. De lo contrario casi seguro que necesitará usar LIRC.

Instalando vdr-remote

Primero instalaremos el plugin usando emerge:

# emerge vdr-remote
# emerge --config vdr-remote

Cuando use el plugin para el puerto IR en su tarjeta DVB todo debería funcionar correctamente con la configuración por defecto. Este plugin utiliza automáticamente el dispositivo de entrada que contiene "dvb" en su nombre. Para usos más avanzados eche un vistazo a /etc/conf.d/vdr.remote.

Ahora, continúe con Métodos de Salida de Vídeo.

Alternativa: instalando LIRC

Si su tarjeta puede ser controlada remotamente (pero no puede o no quiere usar vdr-remote), puede configurar LIRC. LIRC interpreta las teclas pulsadas y devuelve un nombre para cada una. Un programa que soporte LIRC esperará por los eventos y ejecutará la acción configurada en el fichero de configuración, casi siempre almacenado en el directorio de configuración del programa que se está ejecutando (p.e. mplayer carga el fichero ~/.mplayer/lircrc). Antes de instalar LIRC, deberá añadir lirc a los indicadores USE y añadir una entrada adicional a /etc/make.conf: LIRC_DEVICES. Use esta lista para encontrar los argumentos apropiados para la opción.

# nano -w /etc/make.conf
(Reemplace "devinput" por el controlador adecuado)
LIRC_DEVICES="devinput"
USE="lirc"
# emerge lirc

Al comienzo, deberemos definir cada código de tecla con un nombre. La mayoría de los mandos a distancia soportados ya están configurados, eche un vistazo a la lista de mandos. Descargue el fichero necesario y guárdelo como /etc/lircd.conf. Ahora deberemos encontrar donde se encuentra el mando a distancia. Ejecute el siguiente comando para obtener una lista de los dispositivos de entrada actuales (asegúrate de que su dispositivo se está ejecutando).

# cat /proc/bus/input/devices
I: Bus=0000 Vendor=0000 Product=0000 Version=0000
N: Name="TerraTec/qanu USB2.0 Highspeed DVB-T Receiver remote control"
P: Phys=usb-0000:00:1d.7-1/input0
S: Sysfs=/class/input/input2
H: Handlers=kbd event1
B: EV=100003
B: KEY=108fc210 2043 0 0 0 0 8000 2080 1 9e1680 0 0 ffc

En este caso tenemos el dispositivo Terratec Cinergy T2 conectado, por lo tanto podemos acceder al dispositivo en /dev/input/event1. Reemplace event1 por el dispositivo correspondiente en su salida.

lircd necesita saber qué dispositivo usar. Añada la siguiente línea a /etc/conf.d/lirc.conf. Recuerde reemplazar devinput por el nombre de su controlador y event1 por el controlador en sí.

LIRCD_OPTS="-H devinput -d /dev/input/event1"

Es el momento de arrancar lircd:

# /etc/init.d/lircd start

Ahora debería ser posible observar lircd capturando y decodificando pulsaciones de teclas. Simplemente ejecute el comando irw. Párelo presionando Ctrl+C cuando se canse.

# irw
0000000000001aa2 00 Exit Technisat_TTS35AI.conf
0000000000001a8d 00 Mute Technisat_TTS35AI.conf
0000000000000a97 00 OK Technisat_TTS35AI.conf
0000000000000a97 01 OK Technisat_TTS35AI.conf
0000000000000a92 00 Menu Technisat_TTS35AI.conf

Lo siguiente es añadirlo al nivel de ejecución predeterminado para que comience automáticamente en el arranque.

# rc-update add lircd default

Para poder usar su mando a distancia, debe habilitar el soporte LIRC en VDR. Añada la siguiente línea a /etc/conf.d/vdr:

# nano -w /etc/conf.d/vdr
IR_CTRL="lirc"
Métodos de Salida de Vídeo

Ahora debe decidir uno (¡y sólo uno!) de los siguientes dispositivos de salida de vídeo que muestra la imagen y el On Screen Display (OSD) superpuesto

Decodificación Hardware: Tarjetas DVB completas (full featured)

Los usuarios de estas caras tarjetas no necesitan instalar nada más, por lo que pueden continuar con configurando su lista de canales.

Decodificación Hardware: Tarjetas DXR3/Hollywood+

Para usar una tarjeta DXR3 para salida VDR necesitamos el plugin vdr-dxr3.

# emerge vdr-dxr3
# echo em8300 >> /etc/modules.autoload.d/kernel-2.6

El módulo em8300 necesita alguna configuración que depende de la revisión exacta de la tarjeta.

Continúe con Configurando su lista de canales.

Decodificación Hardware: Tarjetas PVR350

Debido a que las tarjetas PVR350 incorporan un chip dedocificador MPEG-Decoder querremos hacer uso de él. Necesitamos instalar el plugin vdr-pvr350. plugin. Si ivtv-driver no está aún instalado, emerge lo instalará automáticamente. Para tener el módule ivtv cargado al arrancar, lo añadiremos a /etc/modules.autoload.d/kernel-2.6:

# emerge vdr-pvr350
# echo ivtv >> /etc/modules.autoload.d/kernel-2.6

Continúe con Configurando su lista de canales.

Decodificación Software: vdr-softdevice

Para instalarlo, tenemos que hacer emerge de vdr-softdevice. No olvide habilitar el plugin

# emerge vdr-softdevice
# emerge --config vdr-softdevice

Para seleccionar las salidas de vídeo y audio adecuadas, edite/etc/conf.d/vdr.softdevice.

Por ahora, únicamente describiremos el método shm ("shared memory"). Es el que está habilitado por defecto en el fichero de configuración (Entrada SOFTDEVICE_VIDEO_OUT). Más tarde necesitará arrancar ShmClient para obtener una ventana mostrando la imagen.

Si no quiere preocuparte de una plantilla de teclado aparte para controlar VDR, existen ficheros de configuración remota disponibles en devspace de Matthias Schwarzott. Hay ficheros para softdevice/shm y xineliboutput (habrá más). Necesitará el fichero adecuado para /etc/vdr/remote.conf y ejecutar chown vdr:vdr sobre el fichero para hacerlo funcionar.

Continúe con Configurando su lista de canales.

Decodificación Software: vdr-xineliboutput

Algunas personas prefieren usar vdr-xineliboutput, porque también puede funcionar remotamente. Ahora le enseñaremos cómo configurar vdr-xineliboutput en su servidor y cliente. Primero, la parte del servidor:

# emerge vdr-xineliboutput
# emerge --config vdr-xineliboutput

Añadiendo opciones de línea de comandos en este punto, es crucial para que xineliboutput funcione. Para ver más opciones, usar vdr --help.

_EXTRAOPTS="--local=none --remote=37890"

El siguiente paso es editar /etc/vdr/svdrphosts.conf. Este fichero describe un número de direcciones de servidor a las cuales está permitido conectarse la puerto SVDRP del grabador de vídeo disco corriendo en el sistema servidor.

(La sintáxis adecuada es: Dirección-IP[/Máscara-Red])
127.0.0.1             (siempre acepta localhost)
192.168.1.0/24        (cualquier servidor en la red local)
#204.152.189.113      (un servidor específico)
#0.0.0.0/0            (cualquier servidor en cualquier red - ¡USELO CON CUIDADO!)

Si sólo quiere usar vdr-xineliboutput para ver la imagen en el mismo ordenador que el que está corriendo VDR puede continuar con Configurando su lista de canales.

De lo contrario simplemente emerge media-plugins/vdr-xineliboutput en su cliente:

# emerge vdr-xineliboutput

Después (habiendo arrancado VDR) puede usar el comando vdr-sxfe xvdr://hostname para conectarse a VDR y ver su imagen y OSD.

Continúe con Configurando su lista de canales.

Existe también un plugin que simplemente simula la existencia de un dispositivo real de salida (vdr-dummydevice) para algunos usos imaginativos como servidores sólo grabación, pero es más avanzado que una configuración normal VDR.
Creando una lista de Canales

Para hacer VDR realmente útil, necesita crear una lista apropiada de canales. Hay más de una forma de conseguir una lista de canales que funcione (Aparte de descargarse una). La lista de canales instalada por defecto es para la recepción DVB-S en Astra en 19.2°E.

Usando dvbscan desde linuxtv-dvb-apps
# emerge linuxtv-dvb-apps

Encuentre la frecuencia correcta para su región y tipo de recepción. Estos ficheros están ordenados bajo /usr/share/dvb/scan. Para recepción con DVB-T en Alemania, Región Nuernberg necesita usar /usr/share/dvb/scan/dvb-t/de-Nuernberg.

$ dvbscan -o vdr /usr/share/dvb/scan/dvb-t/de-Nuernberg > /etc/vdr/channels.conf
Usando vdr-reelchannelscan

Primero borre el contenido de la lista existente de canales.

# rm /etc/vdr/channels.conf
# emerge vdr-reelchannelscan
# emerge --config vdr-reelchannelscan
Canales para sistemas usando using vdr-analogtv

Probablemente querrá configurar sus canales en este punto. El proyecto VDR proporciona algunos ejemplos que puede encontrar en /usr/share/doc/vdr-analogtv-$version/examples/, siempre que haya instalado >=media-plugins/vdr-analogtv-1.0.00-r1.

Arrancando VDR

Después de tener todas las partes básicas de software preparadas en su sistema, necesitará configurar VDR con su OSD.

Si usó un decodificador hardware para salida de imagen, deberá en este momento encender la televisión conectada. Si usó salida software, el cliente debe ser arrancado después de VDR.

Primero, debe aprender sus definiciones de teclas; esto es, conectando las teclas de su mando a distancia a los comandos internos de VDR.

En caso de que necesite editar la configuración de teclado, o (mejor) quiere borrarla para volver a memorizar las teclas: VDR almacena sus definiciones de teclas en /etc/vdr/remote.conf.

Comenzamos arrancando VDR:

# /etc/init.d/vdr start
* Preparing start of vdr:
*   config files ...                                        [ ok ]
*   Waiting for prerequisites (devices nodes etc.) ...      [ ok ]
* Starting vdr ...                                          [ ok ]
* First start of vdr: No check for running vdr possible
* until control device (remote/keyboard) keys are learnt!
Los usuarios de decodificadores software deben ahora arrancar el programa cliente que abre la ventana para mostrar la imagen de TV y el OSD.
(Para usuarios de vdr-softdevice)
# ShmClient
(Para usuarios de vdr-xineliboutput)
# vdr-sxfe xvdr://hostname

Las teclas más útiles para VDR son:

  • Teclas del cursor (Izquierda/Derecha/Arriba/Abajo)
  • Menu/Salir/Ok
  • Colores (Rojo/Verde/Amarillo/Azul)
  • Teclas numéricas (0-9)
Si no tiene muchas teclas, asegúrese de asignar éstas. (Algunos mandos tienen las teclas Play/Pause/etc. en las mismas teclas que los colores, por lo que deberá usarlas para los colores).

Ahora que la instalación básica ha terminado, necesitará configurar VDR. Cambie a su pantalla de salida y sigua las instrucciones en pantalla. VDR le pedirá que presione varias teclas en su mando a distancia para aprender los códigos correctos de las teclas. Si no tiene un mando a distancia puede usar el teclado.

Ahora puede añadir el script de inicio al nivel de ejecución predeterminado para ejecutarlo cada vez que arranque el ordenador.

# rc-update add vdr default
Solución de Problemas
Si necesita ayuda, puede preguntar en #gentoo-vdr, o echar un vistazo en nuestros forums.