Raspberry Pi como servidor de impresión... ¿con XBMC para tv? (y III)

Índice

Configurando XBMC con TV

El objetivo ahora es instalar XMBC y conectarlo a un dispositivo usb para ver y grabar TV.

Recuerdo que la RaspberryPi viene sin códecs MPEG y VC-1 necesarios para ver la televisión o vídeos con determinados formatos privativos.Raspberry Pi En Introducción, instalación en usb y primer arranque
expliqué donde comprarlos y como instalarlos.
 
Se recomienda antes de instalar xbmc, tener python-qt3:
$ sudo su
# apt-get update
# apt-get install python-qt3
# apt-get install xbmc

Confirmo en que el usuario 'pi' está incluido en los grupos
audio video input dialout plugdev

$ groups pi
pi : pi adm dialout cdrom sudo audio video plugdev
games users netdev input lpadmin indiecity

Igualmente, confirmo

# cat /etc/udev/rules.d/99-input.rules
SUBSYSTEM=="input", GROUP="input", MODE="0660"

Para que arranque el XBMC siempre

# nano /etc/default/xbmc
# Set this to 1 to enable startup
ENABLED=1
# useradd xbmc

Edito el servicio XBMC para que se active en el arranque

# nano /etc/init.d/xbmc
ENABLED=1
# reboot

(...)

Sin embargo no arranca automáticamente, así que lo dejo como tarea. Arranco xbmc (la primera vez tarda bastante, conviene dejarlo bastante tiempo):

$ xbmc-standalone

Las primeras impresiones dentro de XBMC es que funciona bastante lento aunque relativamente bien.

Instalando el driver de mi dvb-usb

Comprubeo si se cargan los controladores (drivers) de mi tarjeta dvb-usb:

$ dmesg | grep dvb
dvb-usb: found a 'Pinnacle PCTV 73e' in cold state, will try to load a firmware
dvb-usb: did not find the firmware file. (dvb-usb-dib0700-1.20.fw) 
Please see linux/Documentation/dvb/ for more details on firmware-problems. (-2)
usbcore: registered new interface driver dvb_usb_dib0700
$ sudo su
# lsusb
Bus 001 Device 008: ID 2304:0237 Pinnacle Systems, Inc. PCTV 73e [DiBcom DiB7000PC]
# cd /lib/firmware

No está el driver para mi dvb-usb, debería ser dvb-usb-dib0700-1.20.fw

$ sudo su
# cd /lib/frimware
# wget http://www.linuxtv.org/downloads/firmware/dvb-usb-dib0700-1.20.fw
# reboot

Al reiniciar compruebo que la luz del dvb-usb se enciende y que 'dmesg' lo muestra activado:

$ dmesg | grep dvb
...
dvb-usb: Pinnacle PCTV 73e successfully initialized and connected.
...

Configurando la TV con tvheadend

Preparando la instalación de tvheadend:

# aptitude install git openssl libssl-dev libavcodec-extra-53 \
 libavcodec-dev libavformat-extra-53 libavformat53 libavformat-dev \
 libavahi-client-dev libcurl3-dev libdvbcsa1 libdvbcsa-dev
# exit
$ cd /tmp
$ git clone https://github.com/tvheadend/tvheadend
$ cd tvheadend
$ ./configure --enable-dvbcsa
$ make
$ sudo make install

(hay conflictos de dependencias, se elimina libavcodec53)

Sigo de cerca esta entrada de Coder36:

$ sudo groupadd tvheadend
$ sudo useradd -g tvheadend -G video -m tvheadend
$ sudo nano /etc/init.d/tvheadend 

en donde incluyo como contenido:

#!/bin/bash
### BEGIN INIT INFO
# Provides:          Servicio tvheadend
# Required-Start:    $syslog
# Required-Stop:     $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Para servir streamings de una DVB-T
# Description:    Televisión, radio.
#
### END INIT INFO
 
TVHNAME="tvheadend"
TVHBIN="/usr/local/bin/tvheadend"
TVHUSER="tvheadend"
TVHGROUP="tvheadend"
 
case "$1" in
  start)
    echo "Starting tvheadend"
    start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
                -u ${TVHUSER} -g ${TVHGROUP} -f -C
  ;;
  stop)
    echo "Stopping tvheadend"
    start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
  ;;
  restart)
    echo "Restarting tvheadend"
 
    start-stop-daemon --stop --quiet --name ${TVHNAME} --signal 2
 
 
    start-stop-daemon --start --user ${TVHUSER} --exec ${TVHBIN} -- \
                -u ${TVHUSER} -g ${TVHGROUP} -f -C
 
  ;;
  *)
    echo "Usage: tvheadend {start|stop|restart}"
    exit 1
esac
exit 0

Lo hago ejecutable:

$ sudo chmod 755 /etc/init.d/tvheadend

Activo su arranque

$ sudo update-rc.d tvheadend defaults
$ sudo update-rc.d xbmc defaults 
Reinicio y...
$ sudo service xbmc start
$ xbmxc-standalone  (demora un tiempo)

En XBMC

  1. Sistema > Ajustes hago ajustes generales, especialmente los de internacionalización, sistemas-video, sistemas-audio
  2. Sistema > Ajustes > TV en directo > General: selecciono 'Activado'. Saldrá un popup avisando que no hay ningún PVR activado. Ok. Elijo TVHeadend HTSP Client. 
  3. Configuración -  TVHeadend HTSP Client
  4. IP (pongo la IP fija que le asigné en mi red, p.ej., 192.168.1.20), creo un usuario., le pongo contraseña. Ok.
  5. Activar TVHeadend HTSP Client (he de hacerlo un par de veces porque cuesta activarse...)
  6. En remoto abro un navegador con la url: http://192.168.1.20:9981

En el navegador sigo configurando la TV para XBMC con las detalladas instrucciones de este foro en raspberrypi.org (punto 14º) o gráficamente lo que se señala en el foro de Ztreambox.

Básicamente consiste en:

  1. Configuration > General, cambio el idioma y guardo los cambios.
  2. Configuration > TV Adapters, selecciono mi dvb-usb
  3. Asegúrate que estén activados "Autodetect muxes" y "Idle scanning"
  4. Introducir manualmente las frecuencias porque buscando por localizaciones no me funionó :-/
  5. Instalo w-scan
# aptitude install w-scan

Escaneo frecuencias con servicios

$ mkdir ~/soft/tv
$ cd ~/soft/tv
$ w_scan -a 0 -f t -t 2 -x -c ES

=== Nota ===
Para formato me-tv, xine... sería:

$ w_scan -a 0 -f t -t 2 -X -c ES > channels.conf

=== fin Nota ==

...
dumping lists (57 services)
...

Copio su salida a un fichero externo, observo las frecuencias con servicios para pasarlas luego a la interfaz web de TVHeadend. Y sigo,

  • Configuration > TV Adapters, selecciono mi dvb-usb
  • Configuration > TV Adapters > pestaña Multiplexes

En Frequency (kHz): 554000  
En Bandwidth: 8 Mhz
Todo lo demás va como 'Auto'.
Añado esa frecuencia pulsando en 'Add'.

¡Sin cerrar! repito lo mismo para todas las demás frecuencias con canales.
Importante: guarda los cambios en esta pestaña antes de abandonarla.

  • Paso a la siguiente pestaña "Services" para confiramr que están allí todos los canales y emisoras de radio (servicios).
  • Paso a la primera pestaña "General" y en el recuadro "Tools" añado los servicios a los canales "Map DVB Services to channels". Guardo en el recuadro central, "Save".
  • En Configuration > Channels están ahora todos los canales. Se pueden ir editando tanto sus nombre como su número para ordenarlos.
  • Ahora sí, en XBMC > Sistema > Ajustes > TV en directo > General: selecciono 'Activado'.
  • En esa misma parte, más abajo selecciono "Reiniciar la base de datos de PVR".

Y, ¡por fin!, en el menú principal de XBMC ya se puede ver la TV :)

Conclusiones

Mi rp (el hostname que he seleccionado para la Raspberry Pi) va bien como servidor de impresión e incluso para ver videos desde dispositivos conectados por usb pero para ver la TV... como que no. Se queda muy corta.

La versión rasbmc pensada para Raspberry Pi + XBMC es aún muy inestable y para ver TV aún más.

Por tanto, mi rp se queda de momento como servidor de impresión. Ya lleva más de un mes, fiable y dejándome todo bajo control.

Roberto Brenlla
Logo TEGNIX pequeno