Raspberry Pi 3 + KODI 16 + Tvheadend
Nota: Este post es una especie de actualización de este otro que correspondía a la versión 6.0.3 de OpenELEC (Kodi 15). Si estás usando esa versión, utiliza el post anterior en lugar de éste.
A continuación se describe el montaje de un media center ejecutándose sobre Raspberry Pi 3 basado en la distribución OpenELEC que implementa de forma muy ligera el software media center Kodi (anteriormente llamado XBMC). Se incorpora un decodificador TDT gestionado con el software Tvheadend.
En caso de tener el router cerca y poder llevar un cable ethernet hasta la Raspberry Pi se recomienda, ya que será habitual consumir contenidos pesados por red.
Para el airmouse o teclado/ratón inalámbrico hay alternativas:
- Aplicaciones para el móvil: Kore o Yatse
- Mando a distancia del TV: Si nuestro TV soporta el protocolo CEC, puede comandar Kodi a través del cable HDMI
Elementos necesarios¶
Empezamos con la lista de piezas que vamos a necesitar.
Hardware¶
- Raspberry Pi 3: En Raspipc.es o en Pccomponentes.com
- Tarjeta microSD: En Raspipc.es o en Amazon.es
- Sintonizador TDT USB: En Pccomponentes.com o en Amazon.es
- Cable HDMI. Vamos a suponer que el televisor donde se va a instalar posee una entrada HDMI de tamaño estándar. En caso contrario necesitaremos el adaptador correspondiente.
- Airmouse o teclado/ratón inalámbricos: En Amazon.es
Software¶
- OpenELEC para Raspberry Pi 2
- Licencia MPEG-2: Necesaria para reproducir la señal TDT.
Instalación¶
A continuación se indica el proceso de montaje paso a paso. Vamos a dividirlo en cuatro bloques.
Instalación OpenELEC¶
Las instrucciones que siguen se corresponden con una instalación desde un equipo con Linux. En caso de utilizar Windows o MacOSX habrá que buscar las alternativas. Por ejemplo en las instrucciones oficiales de instalación de OpenELEC sí que se dan instrucciones específicas para cada sistema. La web oficial de Raspberry Pi también tiene una guía bastante buena.
- Abrimos un terminal.
-
Bajamos la imagen de OpenELEC para Raspberry Pi 2:
1
$ wget http://releases.openelec.tv/OpenELEC-RPi2.arm-7.0.1.img.gz
-
Insertamos la tarjeta microSD en el lector de tarjetas del ordenador.
-
Averiguamos la ruta del dispositivo de la tarjeta:
1 2 3 4 5 6 7 8 9 10 11
$ df -h S.ficheros Tamaño Usados Disp Uso% Montado en /dev/sda3 61G 44G 14G 76% / none 4,0K 0 4,0K 0% /sys/fs/cgroup udev 1,9G 12K 1,9G 1% /dev tmpfs 390M 1,3M 389M 1% /run none 5,0M 0 5,0M 0% /run/lock none 2,0G 27M 1,9G 2% /run/shm none 100M 84K 100M 1% /run/user /dev/mmcblk0p2 3,4G 1,6M 3,4G 1% /media/edumoreno/3f46971c-8bb7-4f8a-9095-2862537e6191 /dev/mmcblk0p1 256M 104M 153M 41% /media/edumoreno/1765-7DD1
-
La mejor forma de averiguar los dispositivos correctos es ejecutar
df -h
antes y después de insertar la tarjeta. En mi caso aparecen dos particiones sobre el dispositivo/dev/mmcblk0
(p1 y p2 son el sufijo de las particiones; en algunos lectores de tarjetas nos podría aparecer/dev/sdb1
y/dev/sdb2
por ejemplo, lo que indicaría que el dispositivo es/dev/sdb
). -
Desmontamos las particiones montadas de la tarjeta (en el ejemplo son dos, pero en una tarjeta nueva lo normal es que sólo sea una):
1 2
$ sudo umount /dev/mmcblk0p1 $ sudo umount /dev/mmcblk0p2
-
Copiamos a la tarjeta la imagen de OpenELEC bajada en el paso 2:
1 2
$ gunzip OpenELEC-RPi2.arm-7.0.1.img.gz -c | sudo dd of=/dev/mmcblk0 bs=2M $ sudo sync
Conexión de piezas¶
Cuando termine el último punto de la sección anterior (tardará más o menos dependiendo de la velocidad de la tarjeta), sacaremos la tarjeta microSD del lector y la insertaremos en la ranura de la Raspberry. Conectamos el cable HDMI entre el televisor y la Raspberry. Conectamos el adaptador TDT a uno de los puertos USB de la Raspberry Pi y el cable de antena al propio adaptador. Finalmente alimentamos la Raspberry el típico alimentador microUSB. El primer arranque de OpenELEC sirve para redimensionar las particiones de la tarjeta microSD para aprovechar toda su capacidad. Al terminar el proceso se reiniciará automáticamente y esta vez sí, terminará apareciendo el interfaz de Kodi.
A partir de ahora trabajaremos con Kodi para configurar una serie de cosas.
Configuración Kodi¶
El primer arranque muestra un asistente en el que entre otras cosas se selecciona el idioma de los menús, la conexión a internet y si queremos activar los servicios SSH y Samba. Necesitamos activar el primero para poder averiguar más adelante el número de serie de la Raspberry para contratar la licencia MPEG-2.
Si vamos a conectar por Wifi y no lo hemos hecho durante el asistente inicial, hay que acudir a la siguiente ruta para conectar a nuestro punto de acceso:
1 |
|
Instalación de TVheadend¶
Lo siguientes pasos nos permiten activar el sistema de gestión del TDT:
1 2 3 4 |
|
Configuración de Tvheadend¶
Tvheadend tiene arquitectura cliente/servidor. Lo que manipulamos a través de Kodi es la parte cliente. El servicio se sirve por TCP/IP a través de los puertos 9981 y 9982. El segundo puerto ofrece una API que utilizan los clientes gráficos como el de Kodi o las aplicaciones para dispositivos móviles. Así pues en las configuraciones de estos programas habrá que indicar el puerto 9982. El primero ofrece un interfaz web al que podemos pues entrar con un navegador accediendo a la dirección http://ip-de-raspberry:9981
La IP de la raspberry la podremos averiguar acudiendo a la ruta:
1 |
|
Por cierto que ya que estamos en esta ruta, se recomienda editar la conexión y poner una IP fija en el apartado IPv4, ya que como veremos, el interfaz web de Tvheadend es muy potente y nos convendrá utilizarlo para algunas tareas. También nos conviene tener una IP fija si vamos a consumir el servicio de televisor desde otros dispositivos como un ordenador (en ese caso utilizaremos el interfaz web) o un dispositivo móvil.
Antes de continuar, comentar que me he encontrado con varios chips dentro del mismo adaptador Conceptronic. En concreto los dos siguientes identificadores:
- Realtek RTL2832
- Siano Mobile Digital MDTV Receiver
El primero funcionó directamente, pero en el segundo fue necesario modificar un parámetro de uno de los módulos que lo controlan. Para ello tuve que añadir el fichero /etc/modprobe.d/smsmdtv.conf
con el siguiente contenido:
1 |
|
Una vez dentro de la consola web de Tvheadend seguimos los siguientes pasos para activar el decodificador de TDT y añadir los canales:
1 2 3 4 5 6 7 |
|
Los muxes o multiplexes son las frecuencias sobre las que viajan empaquetadas los canales y una serie de parámetros de codificación. La tecnología TDT (o DVB-T más propiamente) permite codificar varios canales en una misma frecuencia. Algunos decodificadores de TDT permiten sintonización automática como hacen los televisores, pero el que he elegido para este montaje no. Así, hay que introducir la lista de muxes manualmente. Las frecuencias dependen de la provincia en la que nos encontremos. Aquí por ejemplo podemos encontrarlas. Los muxes que utilizo en Zaragoza son los siguientes:
Todos ellos se han introducido con los siguientes parámetros:
- Bandwidth: 8MHz
- Constellation: QAM/64
- Transmission Mode: 8k
- Resto de parámetros: AUTO
Una vez introducidos los muxes, hay que esperar a que el sistema los escanee. El proceso suele tardar un buen rato y se observa su evolución en las columnas Scan Status
y Scan Result
del pantallazo anterior. Una vez que veamos que todos los muxes han sido analizados, tenemos que indicar a Tvheadend que mapee los servicios encontrados con canales. Esto lo haremos pulsando el botón Map All
que se encuentra en la ruta:
1 |
|
Para ordenar la lista de canales, hay que acudir a la siguiente ruta y asignar números correlativos a la columna Number
:
1 |
|
Cuando hayamos terminado de numerar los canales pulsaremos el botón Save
.
Instalación licencia MPEG-2¶
Aunque por la arquitectura cliente/servidor de Tvheadend podremos visualizar la señal TDT desde otros dispositivos que tengamos en la misma red (como por ejemplo con nuestro teléfono Android con esta aplicación instalada), si queremos ver la televisión en el propio Kodi, vamos a necesitar adquirir la licencia para utilizar el hardware de decodificación MPEG-2 que hay incluido en el procesador Broadcom 2836 de la Raspberry Pi 2. La licencia tiene un coste de £2.40 Para ello necesitamos primero averiguar el número de serie de la Raspberry siguiendo estos pasos:
-
Conectamos por SSH con la Raspberry (password =
openelec
):1
$ ssh root@ip-de-raspberry
-
Obtenemos el número de serie:
1 2
OpenELEC:~ # cat /proc/cpuinfo | fgrep Serial Serial : 0000000029bcaeeb
-
Adquirimos la licencia acudiendo a la Raspberry Pi Store.
- Aproximadamente un día después recibiremos por correo un código que ahora tendremos que instalar en la Raspberry.
- Apagamos Kodi/OpenELEC desde menú.
- Cuando se termine de apagar la Raspberry, quitamos la alimentación y sacamos la tarjeta microSD.
- Insertamos la tarjeta en el lector del ordenador. Se montarán las dos nuevas particiones que contiene la distribución OpenELEC. La partición más pequeña es la de arranque donde está el kernel Linux y una serie de ficheros de configuración de Raspberry Pi que actúan a modo de BIOS. Entre esos ficheros vamos a modificar el
config.txt
. Casi al final hay una serie de claves que comienzan pordecode_
. La primera de ellas esdecode_MPG2
. Descomentaremos la línea quitando la almohadilla que hay al principio y sustituiremos el valor por el que hemos obtenido por correo al adquirir la licencia. Guardamos el fichero, extraemos la tarjeta microSD y la volvemos a insertar en la Raspberry.
FIN