Proyecto Fin de Grado -...

41
Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación Intensificación en Sonido e Imagen Curso 2013-2014 SUSTITUCIÓN DE SISTEMAS STBs PROPIETARIOS POR RASPBERRY PIs EN LA RED DE PANTALLAS DIGITALES DE LA ESI DE SEVILLA Autor: David Morales Asegurado Tutor: Ramón Cerquides Bueno Dep. Teoría de la Señal y Comunicaciones Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2014

Transcript of Proyecto Fin de Grado -...

Page 1: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Intensificación en Sonido e Imagen

Curso 2013-2014

SUSTITUCIÓN DE SISTEMAS STBs

PROPIETARIOS POR RASPBERRY PIs EN LA

RED DE PANTALLAS DIGITALES DE LA ESI

DE SEVILLA

Autor: David Morales Asegurado

Tutor: Ramón Cerquides Bueno

Dep. Teoría de la Señal y Comunicaciones

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2014

Page 2: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación
Page 3: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Proyecto Fin de Grado

Grado en Ingeniería de las Tecnologías de Telecomunicación

SUSTITUCIÓN DE SISTEMAS STBs

PROPIETARIOS POR RASPBERRY PIs EN LA

RED DE PANTALLAS DIGITALES DE LA ESI

DE SEVILLA

Autor:

David Morales Asegurado

Tutor:

Ramón Cerquides Bueno

Dep. de Teoría de la Señal y Comunicaciones

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2014

Page 4: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Proyecto Fin de Grado: SUSTITUCIÓN DE SISTEMAS STBs PROPIETARIOS POR RASPBERRY PIs EN

LA RED DE PANTALLAS DIGITALES DE LA ESI DE SEVILLA

Autor: David Morales Asegurado Tutor: Ramón Cerquides Bueno

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2014

El Secretario del Tribunal

Page 5: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 5

TRABAJO FIN DE GRADO

SUSTITUCIÓN DE SISTEMAS STBs

PROPIETARIOS POR RASPBERRY PIs

EN LA RED DE PANTALLAS

DIGITALES DE LA ESI DE SEVILLA

David Morales Asegurado

Tutor: D. Ramón Cerquides Bueno

Departamento: Teoría de la Señal y Comunicaciones

Escuela Técnica Superior de Ingenieros – Universidad de Sevilla

Grado Ingeniería de las Tecnologías de Telecomunicación

Intensificación: Sonido e Imagen

Curso 2013-14

Page 6: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

6 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

ÍNDICE:

1. Introducción

2. Detalle de los dispositivos y esquema del montaje

3. Configuración de las Raspberrys

4. Configuración del servidor

5. Funcionamiento habitual

6. Pensando en el futuro

7. Conclusiones

8. Bibliografía y referencias. Copyrights de las marcas

ANEXO 1: Detalle de conexiones de las Raspberrys

ANEXO 2: Glosario

ANEXO 3: Códigos de las aplicaciones

Page 7: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 7

1. INTRODUCCIÓN

Nadie duda hoy en día que la información es fundamental. Y no sólo eso, es

también importante la forma en la que se presenta. Con esa idea en mente

se desarrolló en su día un sistema de visualización de información mediante

pantallas de última generación en nuestra Escuela de Ingenieros de Sevilla.

Los años pasan, los equipos se averían, pero la idea se mantiene.

La problemática existente en la red de visualización de la Escuela es que los

clientes reproductores de vídeo (STBs: Set Top Boxes) se están averiando y

no hay repuestos para arreglarlos o sustituirlos. Los modelos en concreto

son unos productos de la marca ViewSonic que ya no cuentan con soporte,

pero que han venido hasta el momento funcionado correctamente. Estos

STBs se encargan de recibir del servidor el vídeo a mostrar y enviarlo a la

pantalla cuando se les indique.

Pensando en la compatibilidad, se ha considerado sustituirlos por mini-PCs

ARM Raspberry Pi, que proporcionen similares características y permitan

reutilizar lo máximo posible los medios actualmente instalados y ofrezcan la

máxima calidad de imagen en los monitores, mejorando en funcionalidad y

calidad el servicio ofrecido.

El objetivo de este proyecto es, pues, dotar de un nuevo equipamiento final

de reproducción de contenidos compatible con el existente y con

aspiraciones a durar muchos años más y dar utilidad a la infraestructura

actual. Además, es perfectamente adaptable a otros escenarios nuevos en los

que no haya ninguna solución de base, salvo que, en este caso, requerirá

más trabajo de instalación física y de programación del servidor.

Estos nuevos dispositivos son realmente económicos y poseen unas

prestaciones suficientes para nuestro propósito. Además, se basan en un

software principalmente libre y permiten adaptarse a casi todos las

ampliaciones posibles en un futuro, gracias a una solución basada en el SO

Linux Debian. Con éste, combinamos la potencia, estabilidad y soporte de un

sistema reconocido con un amplio catálogo de paquetes disponibles.

El proyecto realizado pretende dar una solución a esta situación actual y a

otros entornos diferentes. Por ello se ha diseñado para funcionar con una

gran escalabilidad y adaptarse a escenarios diversos con mínimas o ninguna

modificación.

Page 8: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

8 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Este trabajo realizado va a permitir disfrutar de este útil servicio de

información, a la vez que queda fácilmente modificable previendo una

ampliación de características del mismo en un futuro.

ESTRUCTURA DEL DOCUMENTO

La memoria de este proyecto se divide en varios bloques diferenciados:

Para empezar, esta introducción sirve para entender de manera rápida el

objeto y el alcance del proyecto. Posteriormente se realiza una descripción

de cada uno de los componentes involucrados para, a continuación, entrar

en profundidad en la configuración tanto de los clientes como del servidor.

Hemos considerado oportuno incluir también un apartado en el que se den

indicaciones sobre cómo ampliar o reaprovechar el proyecto en futuros

escenarios.

Por último, se prueba todo el equipamiento y se obtienen las conclusiones.

Page 9: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 9

2. DETALLES DE LOS DISPOSITIVOS Y ESQUEMA DEL

MONTAJE

En este montaje se intentará reutilizar la infraestructura existente a fin de

reducir al mínimo el coste derivado del proceso de migración. La idea

original del proyecto es ir cambiando los STBs que estén inutilizables por

estos dispositivos a medida que se averíen, manteniendo durante un tiempo

en convivencia ambos sistemas. A continuación se detallarán las

características técnicas de cada componente empleado en el proyecto.

Además, se hace necesario incluir en este análisis también el servidor y las

aplicaciones que funcionan sobre él; así como la red empleada, ya que es

importante conocer su funcionamiento con cada tipo de dispositivo cliente

(STB o Raspberry).

2.1 Raspberry Pi

Estos dispositivos son unos pequeños

ordenadores de arquitectura ARM

multipropósito. Sus características nos

parecen que son suficientemente

potentes para la labor a desempeñar.

Además, su bajo coste justifica su

adquisición sin que sean una gran

inversión.

Dentro de las diferentes versiones, nos hemos decantado por la versión B, la

más potente en el momento de su compra, para asegurarnos contar con un

ciclo de vida largo y sin demasiados contratiempos.

Para una mayor compatibilidad con el software existente, se decida emplear

un SO Linux derivado de Debian, específico para esta dispositivo, llamado

Raspbian. Sus repositorios de software contienen lo necesario para nuestro

propósito y se ha probado robusta y ligera.

Aunque esta distribución cuenta con interfaz gráfica, para nuestro fin no

será necesario, empleándose en todo momento el modo consola (texto).

Además, con este modo de funcionamiento se reduce al mínimo la carga

computacional para evitar sobrecargar a los dispositivos en exceso

Page 10: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

10 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Las conexiones disponibles son variadas. Entre ellas se destaca:

2 puertos USB para conexión de teclado, ratón o pendrive (para su

instalación o mantenimiento)

Conexión de red

Puerto HDMI para conexión con pantallas de última generación, se

ha probado hasta 1080p

Conexión de vídeo compuesto, para televisores más antiguos o sin

puerto HDMI.

Además, para su funcionamiento se deben adquirir:

Adaptador de corriente Micro-USB de la suficiente potencia.

Tarjeta SD de alta velocidad. La de pruebas tiene 8GB de capacidad,

se considera adecuada para este uso.

Cable HDMI de suficiente velocidad como para soportar la resolución

usada en cada monitor. En su defecto, cable de video compuesto RCA.

Funda protectora. No es obligatorio se uso, pero sí altamente

recomendable para proteger el equipo.

Durante las pruebas de las Raspberry Pi’s se observa un determinado

calentamiento. Consideramos importante la incorporación de un sistema de

refrigeración añadido suficiente y compatible.

2.2 Pantallas

En la Escuela se encuentran instaladas varias decenas de pantallas de

diferentes características. Son todas de tecnología de pantalla plana (LED,

LCD o PLASMA) en color. La estrategia de conexionado de la Raspberry a las

pantallas será mediante cable HDMI preferiblemente, ajustado a una

resolución lo más alta posible o, en su defecto, de 720p.

Como alternativa al cable

HDMI se propone usar la

conexión de vídeo compuesto

con clavija RCA incorporada

en la Raspberry. Esta última

alternativa sólo debe ser

utilizada en caso de problemas

con el HDMI, ya que su

calidad es mucho más baja.

Rasp

berry

HDMI 720p 1080i 1080p

RCA 576i

Page 11: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 11

Cuando se configuren las pantallas para funcionar con las nuevas Raspberry

se aconseja configurar el modo de imagen para evitar el overscan (recorte de

los bordes). Esta opción se llama de diferentes formas en cada fabricante,

por lo que se debe consultar el manual de uso del monitor.

2.3 Interfaz de red y ficheros intercambiados

El cableado de red a emplear será reutilizado de la instalación anterior, por

lo que en este punto no es necesario realizar ninguna intervención.

Para la transmisión de ficheros entre el servidor y los clientes Raspberrys se

empleará un modelo de comunicación basado en el protocolo TFTP

La justificación del protocolo usado es liberar lo máximo posible de carga de

trabajo a las Raspberrys debido a su corta CPU. En las Raspberry se

configurará un servidor a la escucha por el puerto 69, que escribirá el

fichero en un directorio específico para automatizar la tarea de refresco de

vídeos.

Se empleará un códec de alta eficiencia basado en el compresor MPEG-4

para reducir al mínimo el ancho de banda utilizado y evitar adquirir una

licencia de pago para el códec MPEG-2 empleado hasta ahora en los STBs.

En concreto, el códec será H.264 AVC (Advanced Video Coding)

empaquetado en un contenedor MKV (Matroska Video). El bitrate empleado

no deberá ser demasiado alto para evitar saturar la red. Además este tipo de

vídeo hecho a partir de diapositivas es un tipo de contenido llamado

“material blando” a la hora de comprimir, debido a la alta similitud (o

igualdad) entre cuadros consecutivos dentro de una misma secuencia.

En el direccionamiento, se ha mantenido la configuración que había hasta

ahora con el fin de maximizar la compatibilidad. En concreto, la red tiene

una dirección 192.168.13.0 con una máscara de subred de 255.255.255.0, en

la que el servidor es la dirección 192.168.13.1. Con esta configuración se

podría llegar teóricamente hasta 254 pantallas diferentes, más que

suficiente para nuestro propósito.

Page 12: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

12 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

2.4 Servidor

Se reutilizará el mismo servidor empleado en el montaje existente, pero el

código se modificará para adaptarlo a los nuevos dispositivos. En concreto,

se ha introducido un método de detección de dispositivo y se ha

implementado un modelo cliente-servidor TFTP para enviar los ficheros.

En el capítulo 4 de la memoria se describen en detalle los procedimientos

mencionados.

2.5 Esquema de montaje

A continuación se proporciona un gráfico sencillo resumen de la instalación:

BB.DD.

ScrPln

ScreenMan:

(Servidor)

Rasp.

STB

Es el programa

encargado de gestionar

las programaciones y

proporcionar un

entorno web para la

gestión de las mismas.

En este proyecto no se

modificará.

Entre otras tareas,

crea el vídeo a partir

de los datos de

entrada de ScrPln y lo

distribuye a los

dispositivos finales de

visualización. Los dispositivos finales muestran los vídeos

recibidos por los monitores. Los STBs se

conectan a los monitores mediante RCA. Las

Raspberrys pueden ser conectadas por

HDMI (preferible) o RCA.

Red

Cable Ethernet

Page 13: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 13

3. CONFIGURACIÓN DE LAS RASPBERRYS

Una parte importante del proyecto ha consistido en conocer, instalar y

programar el software de las Raspberrys. En las decisiones que se han

tomado se han tenido en cuenta principalmente la economía de recursos y de

costes, así como la reutilización del código en aplicaciones posteriores.

3.1 Sistema operativo Raspbian

De la oferta de Sistemas Operativos oficiales para instalar en estos

dispositivos se ha escogido una versión de la conocida distribución Linux

Debian llamada “Raspbian”, especialmente optimizada para estos pequeños

ordenadores. Entre sus virtudes destacan una amplia comunidad, con foros

de consulta, página web, etcétera; una gran selección de paquetes

disponibles para cubrir nuestras necesidades, y una probada estabilidad y

relativa sencillez de uso.

Además, se ha optado por instalarla mediante el programa autoarrancable

NOOBS, que permite realizar una restauración de fábrica manteniendo

pulsada la tecla SHIFT del teclado durante el arranque de la Raspberry.

Posteriormente a una restauración o instalación en limpio del sistema se

debe copiar la carpeta “ficheros” suministrada como parte del proyecto en la

ruta del Escritorio: /home/pi/Desktop y ejecutar el script

“configuracioninicial.sh” que prepara el dispositivo para su uso en este

proyecto. Este script debe ejecutarse con una conexión a internet con

asignación de direcciones IP por medio de DHCP. Este y otros códigos se

encuentran detallados en el apartado ANEXO al final de esta memoria.

A continuación paso a describir las acciones que realiza el script

“configuracioninicial.sh”

3.2 Configuración de red

Las Raspberrys deben tener una dirección IP estática dentro de la red. Para

poder configurarla, se ejecuta un programa interactivo que solicita la

dirección IP a usar. Posteriormente se copia el fichero generado a la carpeta

“network” para que se aplique en el siguiente reinicio.

Page 14: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

14 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

3.3 Instalación de paquetes

Se necesitan descargar e instalar varios paquetes para el uso y

mantenimiento de la Raspberry en su función. Los paquetes son:

gedit: es un editor de texto más completo que el integrado, para

tareas de mantenimiento

x11-xserver-utils: soluciona un problema de refresco de pantalla tras

la reproducción de un vídeo

tftpd-hpa: servidor de tftp

3.4 Ajuste de pantalla

El underscan es un mecanismo utilizado que limita la superficie de pantalla

empleada. Se emplea porque algunos televisores no son capaces de mostrar

la imagen completa (pierden los bordes).

Por defecto, la Raspberry viene con una “underscan” bastante fuerte.

Mediante la modificación de ciertos ficheros se elimina este efecto. Este

proceso se realiza automáticamente con la ejecución del script de inicio y el

usuario no tiene que realizar nada.

Con “underscan” Sin “underscan”

3.5 Configuración de tftpd-hpa

Se configura el servidor tftp para especificar usuario, permisos y directorio.

Además se le da permiso para escribir ficheros (por defecto sólo lee).

Además se configura el modo IPv4 (de fábrica viene en versión 6). El fichero

creado se copia en el directorio de tftpd-hpa para su lectura en la siguiente

ejecución.

Page 15: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 15

3.6 Creación del bucle de arranque

Se crea un script de arranque que se ejecutará indefinidamente y que realiza

dos tareas principales:

1. Reproducción en bucle del vídeo

2. Comprobación de nuevo vídeo descargado. En tal caso, sustituye al

antiguo.

Para que se ejecute este programa al arranque se debe añadir la línea de ejecución del script al archivo del sistema /etc/rc.local. Este fichero modificado ya se encuentra en la carpeta “ficheros”, luego se reemplaza el que viene por defecto.

3.7 Reinicio y funcionamiento

Por último, se reinicia la Raspberry para aplicar algunos cambios. Si todo ha funcionado como debiera, ahora debe empezar la reproducción de vídeo y el mecanismo de comprobación como un funcionamiento habitual. Si por algún motivo ha fallado la configuración inicial, se puede ejecutar de nuevo el script para volver a intentarlo.

3.8 Fallo grave

Si por algún motivo el sistema tiene un error grave y no puede llegar a iniciarse, se debe restaurar. Para ello se propone conectar un teclado USB y mantener pulsada la tecla “Mayúsculas” durante el inicio para restaurar el sistema operativo Raspbian. Posteriormente se deberá copiar de nuevo la carpeta “ficheros” al escritorio insertando la tarjeta SD en un ordenador compatible con el sistema de archivos (no usar pendrive en la Raspberry) y proceder otra vez como en el primer apartado de esta guía (3.1).

Page 16: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

16 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

4. CONFIGURACIÓN DEL SERVIDOR

Por servidor se entiende el conjunto de dispositivos que proporcionan los

vídeos a mostrar a las Raspberrys. Puede comprender varios aparatos

físicos o varios programas instanciados corriendo sobre la misma

máquina.

En este análisis vamos a abstraer el concepto y, ante la gran diversidad

de campos y escenarios posibles, daremos unas indicaciones sobre la

configuración del servidor, tomando como guía las indicaciones

proporcionadas por el personal del Centro de Cálculo de la Escuela que

será el que, llegado el caso, configure el servidor.

4.1 Sistema operativo:

Para este caso, vamos a elegir el sistema operativo Debian en su versión

“stable”. Como justificación de esta elección, decir que no necesitamos

las últimas versiones de los paquetes, que sí vienen en otras ramas de la

distribución (veáse referencias); si no gran estabilidad a largo plazo

conseguida mediante la prueba extensiva durante gran periodo de tiempo

y de usuarios.

Además, Debian es un sistema operativo de gran renombre y amplio

soporte. En los repositorios podemos encontrar una grandísima cantidad

de paquetes para casi cualquier proyecto o idea que queramos

desarrollar. La comunidad proporciona una gran ayuda ante cualquier

problema. Es un sistema operativo tan versátil que sirve como base a

distribuciones tan populares como Ubuntu o Linux Mint.

Por último, y aunque sea una justificación exclusiva del escenario de la

Escuela, decir que es el sistema operativo que se encuentra actualmente

instalado en el servidor de vídeo, por lo que esta elección no supondrá

ningún trastorno para el personal del Centro de Cálculo que es el que lo

gestiona.

Page 17: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 17

4.2 Paquetes a instalar:

Si partimos de la base en la que ya se encuentra programado y

funcionando el o los programas de ordenación de contenidos y creación

de vídeos (como es el caso de nuestra Escuela), habría que instalar los

siguientes paquetes (para más información, consultar las referencias):

4.2.1 Codificador H.264

Necesitamos un transcodificador de vídeo que transforme un vídeo

en formato MPEG-2 a H.264. Sugerimos usar el codificador x264,

ampliamente extendido y con numerosas opciones de configuración.

Para instalarlo, usar la orden apt-get install x264 con permisos

de administrador.

4.2.2 Cliente tftp: tftp-hpa

Para nuestro propósito, y tras habernos documentado y probado

diferentes alternativas, nos hemos decantado por el sistema servidor-

cliente tftp del proyecto hpa. Son dos componentes principales: el

servidor tftpd-hpa (que se encuentra instalado en las Raspberrys), y

el cliente tftp-hpa (instalado en el servidor). Éste último se instala

mediante la orden apt-get install tftp-hpa con permisos de

administrador.

4.3 Órdenes en línea de comandos:

Para realizar las dos nuevas tareas (codificar y enviar) hay que

programar las siguientes órdenes en línea de comandos.

Posteriormente habrá que incluir estas órdenes en el trozo de código

que corresponda.

Page 18: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

18 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

4.3.1 Codificación de vídeo

Usar la orden:

x264 --crf 30 –o /.../video.mkv <nombre_fichero_entrada>

La explicación de las opciones es la siguiente:

--crf 30: Constant Rate Factor: Factor de calidad

constante. Es decir, el bitrate podrá variar en función de la escena

comprimida, pero siempre se ajustará para conseguir una calidad

similar en todo el vídeo. Muy recomendable en nuestro caso para

ahorrar ancho de banda, ya que fotogramas consecutivos serán muy

similares, por lo que el bitrate final será muy bajo. El valor 30 nos

parece adecuado, aunque se podría diminuir si se requiere menor

tamaño de archivo.

-o: output: salida. Indica que a continuación se colocará el

nombre del fichero de salida y, por último, el fichero de entrada. Es

importante y muy recomendable que se indiquen rutas absolutas en

los nombres de fichero para evitar archivos perdidos.

Ejemplo:

x264 --crf 30 –o /home/usuario/videos/video.mkv

/home/usuario/videos/video_mpeg2.m2ts

4.3.2 Envío de vídeo mediante tftp

Una vez creado el vídeo en el formato H.264 y empaquetado en el

fichero .mkv se debe enviar a las Raspberrys mediante la orden

siguiente:

ftp 192.168.13.xxx –c put /.../video.mkv

La opción –c indica modo no interactivo (-c: command)

En la orden habría que indicar la ruta del fichero a enviar y

sustituir la dirección xxx por la de la Raspberry. Si hay varias

instaladas, habrá que ejecutar una orden por cada dispositivo.

Ejemplo:

ftp 192.168.13.2 –c put /home/usuario/videos/video.mkv

Page 19: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 19

4.4 Aplicación en el servidor de la Escuela de Ingenieros:

En el caso concreto de la Escuela de Ingenieros, aparte de lo

anteriormente explicado, se pueden concretar los cambios a realizar

en el código del servidor.

Aunque pensamos que está correcto, no nos ha sido posible

probarlo sobre el hardware real por problemas de disponibilidad del

Centro de Cálculo. Se recomienda testear en el escenario real antes

de implementarlo definitivamente.

1º) Modificar la lista pantallas del fichero “fileconf”, borrando

las que correspondan a Raspberrys, ya que estas se ejecutarán

en una parte diferente del código.

2º) Añadir una nueva línea por cada pantalla en el fichero

“Raspberry.sh”, con las direcciones IP de las Raspberrys.

3º) Una vez creado el video en MPEG2, llamar al fichero de envío a

Raspberrys. Consideramos adecuado colocar esta orden en el

fichero creavideo.py justo inmediatamente después de que se

termine de generar el vídeo:

subprocess.Popen(‘Raspberry.sh’, shell=True)

Fichero Raspberry.sh

x264 --crf 30 –o /home/usuario/videos/video.mkv

/home/usuario/videos/video_mpeg2.m2ts

ftp 192.168.13.”IP1” –c put /home/usuario/videos/video.mkv

ftp 192.168.13.”IP2” –c put /home/usuario/videos/video.mkv

ftp 192.168.13.”IP3” –c put /home/usuario/videos/video.mkv

Page 20: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

20 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

5. FUNCIONAMIENTO HABITUAL

A continuación se procederá a describir de forma gráfica y con

imágenes reales el funcionamiento estándar del proyecto durante un

día habitual.

Encendido: Para encender la Raspberry, simplemente conecte en

este orden: cable de red, HDMI y cable

de alimentación Micro-USB.

Asegurarse de que se dispone de

infraestructura de red operativa en el

momento del arranque pues, en caso

contrario, no arrancaría el servidor

tftp. Tras esperar unos segundos

aparecerá una pantalla con la gama de

colores.

A continuación iniciará el arranque de Linux mediante una serie de

instrucciones. Este proceso es automático y sólo debería tardar un

minuto y medio aproximadamente.

Carga de Linux

Arranque

Page 21: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 21

A partir de este momento se encuentran redirigidas a la salida vacía

muchas de las órdenes que se siguen, con el fin de proporcionar una

estética más limpia al usuario final. Si se desean mostrar, deberán

cambiarse la redirección de las órdenes editando el fichero

bucle1.sh. Sólo haga esto si necesita testear algún componente.

Si se vieran las salidas de las órdenes (modo de prueba), el próximo

punto interesante sería el siguiente:

Se realiza un primer arranque del tftp, tftpd-hpa que indica la

dirección IP del dispositivo. Esta línea es muy importante pues puede

ayudar a conocer la dirección de la Raspberry sin tener que mirar los

ficheros de configuración. Se le han colocado una series de “sleep” en

los bucles para ayudar a su lectura. Después se inicia la versión final

del servidor tftp, que se usará durante la sesión.

Antes de reproducir el vídeo se pueden observar datos sobre él,

como la resolución o el códec.

Información del vídeo

Page 22: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

22 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Por último y arranca el bucle de reproducción y comprobación.

CASOS PUNTUALES:

Al iniciar el dispositivo se reproduce por defecto un vídeo en negro. Se ha

implementado así para evitar que se reproduzcan contenidos desfasados de

días anteriores al iniciar la máquina, por ejemplo, horas de exámenes que no

se corresponden con el día que se están emitiendo.

Además, se proporciona un método de reinicio y parada por si fuera

necesario en algún momento. Si se ha mandado un vídeo indeseado o,

simplemente se desea que se dejen de emitir contenidos, basta con enviar el

fichero “fin” mediante tftp. Esta acción provocará que la Raspberry haga un

reinicio y se quede a la espera de nuevos contenidos a emitir.

Page 23: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 23

6. PENSANDO EN EL FUTURO

Durante la realización del proyecto siempre se ha tenido muy en cuenta

las posibilidades de futuro del sistema, ya que consideramos que un buen

proyecto debe ser aquel que pueda servir de base para el futuro.

Por ese motivo, vamos a dar algunas indicaciones sobre cómo actuar el

día de mañana cuando se quiera ampliar la funcionalidad del sistema.

Siempre realizar todo el proceso sobre un equipo de pruebas antes de

llevar el código a una máquina en funcionamiento.

PASO 1: Disponer de todos los códigos fuente sin errores. Es importante

que, si se han redactado en otro sistema diferente al de las Raspberrys,

se realice un “copiar y pegar” del contenido del fichero en un archivo de

texto nuevo en blanco usando el propio editor de texto de las Raspberrys.

Esto debe hacerse así para evitar errores entre los juegos de caracteres

de las diferentes máquinas.

PASO 2: Compilar todos los códigos en la máquina Raspberry. No sirve

compilar en un ordenador estándar y llevar el ejecutable a la Raspberry.

Se debe compilar en el mismo dispositivo en el que se vaya a ejecutar.

PASO 3: Depurar y probar los ejecutables generados.

PASO 4: Modificar el script de configuración inicial. Incluir en este

fichero los cambios oportunos para las nuevas funcionalidades. Cuidado

de respetar el orden de configuración (ver apartado 3 de esta memoria).

Si fuera necesario, modificar también el script de inicio para ejecutar

algún proceso al iniciar la Raspberry. Los ficheros que se pueden

modificar son:

- red.c: encargado de la configuración de la red y del servidor tftpd-hpa

- bucle1.sh: script de inicio al arranque

- config.txt / inittab: configuración de parámetros de arranque

Recompilar si fuera necesario (pasos 2 y 3) PASO 5: Volver a ejecutar el script de configuración inicial y esperar al

reinicio que todo vaya bien.

Page 24: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

24 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

7. CONCLUSIONES

Como en todas las cosas de la vida, siempre se aprende. Además de haber realizado un proyecto aprovechable con aplicación práctica inmediata en una situación real concreta, este trabajo ha servido para poder aprender y consolidar conceptos. En concreto, he aprendido a gestionar en profundidad sistemas operativos Linux tipo Debian desde línea de comandos y desde la interfaz gráfica. Además, este proyecto me ha permitido descubrir en el mundo real varios conceptos de imagen e informática aprendidos durante varias asignaturas de la carrera, desde redes de ordenadores hasta propiedades de pantallas. Como inconveniente a destacar está el problema de la temperatura. La ausencia de refrigeración forzada en las Raspberrys hace que su temperatura aumente tras un tiempo prolongado de funcionamiento. Por eso, se considera la posibilidad de adquirir un sistema de ventilación para extraer el calor del interior de estos dispositivos. Como conclusión global, y a pesar de la duda sobre la posibilidad de que este proyecto sea realmente llevado a cabo e instalado, es satisfactorio poder contar con la reutilización de éste para un futuro uso. Es, por tanto, una experiencia siempre positiva.

Page 25: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 25

8. BIBLIOGRAFÍAS Y REFERENCIAS. COPYRIGHTS DE

LAS MARCAS

Debian GNU/Linux. Guía práctica. Justo Pérez Agudín. Editorial Anaya Memoria Proyecto “Screeman” Características de Raspberry Pi modelo B: Página web oficial: http://www.raspberrypi.org/ Wikipedia: http://es.wikipedia.org/wiki/Raspberry_Pi Sistema Operativo Debian Página web del proyecto: https://www.debian.org/index.es.html Lista de paquetes: https://www.debian.org/distrib/packages Sistema Operativo Raspbian

Página oficial: http://www.raspbian.org/

Programa NOOBS Descarga: http://www.raspberrypi.org/downloads/ Información: http://www.raspberrypi.org/introducing-the-new-out-of-

box-software-noobs/

Códec H.264: http://es.wikipedia.org/wiki/H.264/MPEG-4_AVC Acceso a la recomendación de la ITU: https://www.itu.int/rec/T-REC-H.264/es

Codificador x264: Información general: http://es.wikipedia.org/wiki/X264 Página oficial: http://www.videolan.org/developers/x264.html

Contenedor MKV (Matroska): Página del proyecto: http://www.matroska.org/

Page 26: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

26 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

PAQUETES DE SOFTWARE gedit: editor de texto del proyecto GNOME x11-xserver-utils: utilidades para el servidor gráfico. Usado en este proyecto para solucionar problemas de refresco de pantalla tras reproducir vídeo tftp(d)-hpa: cliente / servidor (d) de tftp desarrollado por hpa x264: codificador de vídeo para el códec H.264 Numerosas dudas solucionadas a través de los foros de Raspberry Pi.

¡Gracias!

Gracias también al personal del Centro de Cálculo de la Escuela de

Ingenieros de Sevilla por su tiempo y ayuda.

Todas las marcas nombradas en esta memoria son propiedad de sus dueños.

Page 27: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 27

ANEXO 1: DETALLE DE CONEXIONES DE LAS RASPBERRYS

1. Salida mini-jack de audio

2. Salida RCA de vídeo compuesto

3. Salida HDMI

4. Ranura tarjeta SD

5. Entrada Micro-USB para adaptador de corriente

6. Clavija RJ-45 para conexión de red

7. Dos puertos USB

Page 28: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

28 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

ANEXO 2: GLOSARIO

- Alta definición: En televisión, se entiende por alta definición todas aquellas resoluciones de pantalla que superen al sistema convencional de 625 líneas (PAL) o 525 líneas (NTSC). En digital se ofrecen tres modalidades principales: 720 líneas progresivas (1280x720p); y 1080 líneas en entrelazado o progresivo (1920x1080i/p)

- ARM: Arquitectura de procesador de tipo RISC (Conjunto de

instrucciones reducidas) usada principalmente en dispositivos móviles debido a su bajo consumo de energía.

- Compilar: Proceso por el que se pasa de un fichero de texto plano que contiene órdenes de un programa en un determinado lenguaje, a un fichero ejecutable entendible por la máquina

- Contenedor audiovisual: Fichero informático que almacena flujos de vídeo, audio, datos y la información de tiempo necesaria para sincronizarlos.

- Entrelazado: Formato de transmisión de vídeo que envía alternativamente en cada imagen las líneas pares y las impares, con el fin de ahorrar en ancho de banda. En el receptor se debe implementar algún tipo de mecanismo para que se forme una imagen completa a partir de las dos semi-imágenes.

- HDMI: High Definition Multimedia Interface: Estándar empleado para la transmisión de vídeo y audio de alta definición, a la vez que tiene la capacidad para transmitir datos y proteger las señales contra copia (HDCP: High Definition Copy Protection)

- Micro-USB: Variante del conocidísimo USB (Universal Serial Bus) que tiene dimensiones aún más pequeñas que el Mini-USB

- Minijack: Conexión normalizada de audio derivada de la anterior, el jack. Existen varias versiones, la habitual es la conexión de 3.5mm estéreo.

- Overscan: Mecanismo utilizado en televisión para no mostrar los bordes de la imagen. Herencia de los antiguos televisores de CRT que no podían mostrar la imagen completa.

Page 29: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 29

- Paquete (Linux): Fragmento de software instalable

- Progresivo (TV): Formato de transmisión de vídeo en el que se envía un fotograma completo cada vez, en contraposición al entrelazado.

- Raspbian: Sistema operativo Linux derivado de Debian y optimizado para su uso en las Raspberry Pi.

- RCA: Cable estándar coaxial que permite transmitir audio o vídeo analógico. En el caso de vídeo, transmite vídeo compuesto a una resolución de 576i (PAL) o 480i (NTSC).

- Repositorio: Almacén informático de programas en forma de paquetes. Normalmente accesibles mediante internet, proporcionan una forma rápida de encontrar e instalar un programa en una distribución Linux.

- RJ-45: Conexión estandarizada para cables de red de tipo Ethernet

- Script: fichero de texto con instrucciones ejecutables legibles por un ordenador

- STB: Set Top Box: Dispositivo encargado de recibir y procesar una

señal de vídeo y enviarla a un televisor. Normalmente aplicable a clientes de vídeo en red o receptores de TV.

- Tarjeta SD (Secure Digital): Dispositivo físico de almacenamiento de datos en formato memoria flash. En el momento de escritura de este documento es el formato de memoria externa en tarjeta más habitual

- TFTP: Protocolo de transferencias de ficheros basado en ftp, pero con la ventaja de resultar mucho más ligero al prescindir de varias funciones de éste.

- Transcodificador: Programa que transforma un fichero de vídeo comprimido en cierto formato a otro fichero con otro tipo de compresión.

Page 30: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

30 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

ANEXO 3: CÓDIGOS DE LAS APLICACIONES

Fichero bucle1.sh

# Fichero bucle1.sh # Bucle de reproducción de vídeos y comprobación nuevo fichero # David Morales Asegurado. Trabajo Fin de Grado Curso 2013-2014

# Universidad de Sevilla

# Inicio del programa

cambio=0 pkill omxplayer cd /home/pi/Desktop/ficheros/tftp rm video.mkv # por si se fue la luz y no se termino de transmitir rm fin cp /home/pi/Desktop/ficheros/tftp/negro.mkv /home/pi/Desktop/ficheros/video1.mkv # el programa inicia con un vídeo en negro # para terminar el inicio sleep 10 sudo service tftpd-hpa start sleep 5 clear # Bucle reproduccion until [ "$cambio" -eq 2 ] do # Se reproduce el fichero a pantalla completa omxplayer /home/pi/Desktop/ficheros/video1.mkv > /dev/null cambio=`/home/pi/Desktop/ficheros/tftp/comprobar` > /dev/null # las comillas ` ` redirigen hacia la variable # la salida estándar

Page 31: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 31

if [ "$cambio" -eq 1 ] then # Si hay cambio renombro el fichero mv -f /home/pi/Desktop/ficheros/tftp/video.mkv /home/pi/Desktop/ficheros/video1.mkv > /dev/null # la opcion -f no consulta la sobreescritura cambio=0 fi sleep 5 done # Si se solicita, se reinicia y se queda en negro (modo off) pkill omxplayer sudo shutdown -r 0

Page 32: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

32 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Fichero configuracioninicial.sh

# Fichero configuracioninicial.sh # Configura una Rasberry que venga de fábrica para nuestro propósito # David Morales Asegurado. Trabajo Fin de Grado Curso 2013-2014

# Universidad de Sevilla

echo Script de configuración del dispositivo echo Este script necesita conexión a internet echo Para continuar espere, para salir presione Control-C antes de 10 segundos sleep 10 # configuración de red y del servidor tftpd-hpa sudo chmod +x /home/pi/Desktop/ficheros/red.c sudo /home/pi/Desktop/ficheros/red sudo cp /home/pi/Desktop/ficheros/interfaces /etc/network/interfaces sleep 5 clear # Para contar con las últimas versiones sudo apt-get update # Instalo ciertas utilidades. # gedit: editor textos # x11-xserver-utils: complemento a omxplayer para resolver # problema pantalla negra # tftpd-hpa: servidor tftp sudo apt-get install gedit -y sudo apt-get install x11-xserver-utils -y sudo apt-get install tftpd-hpa -y sleep 5 clear # modifico ficheros del sistema para evitar "underscan" # y habilitar autologin sudo cp /home/pi/Desktop/ficheros/config.txt /boot/config.txt sudo cp /home/pi/Desktop/ficheros/inittab /etc/inittab sleep 5 clear

Page 33: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 33

# configuración del servidor tftpd-hpa sudo cp /home/pi/Desktop/ficheros/tftpd-hpa /etc/default/tftpd-hpa sleep 5 clear # establecimiento de bucle en el arranque sudo chmod +x /home/pi/Desktop/ficheros/bucle1.sh sudo chmod +x /home/pi/Desktop/ficheros/rc.local sudo cp /home/pi/Desktop/ficheros/rc.local /etc/rc.local sleep 5 clear # reinicio del sistema sudo shutdown -r 0

Page 34: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

34 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Fichero comprobar.c

// Fichero comprobar.c // Comprueba la existencia de un nuevo fichero de vídeo // David Morales Asegurado. Trabajo Fin de Grado Curso 2013-2014

// Universidad de Sevilla

#include <stdio.h> int main() { FILE * fichero = NULL; FILE * final = NULL; final = fopen("fin", "r"); fichero = fopen("video.mkv", "r"); if (final != NULL) printf("2"); else if (fichero != NULL) printf("1"); else printf("0"); return 0; }

Page 35: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 35

Fichero interfaces

auto lo iface lo inet loopback iface eth0 inet static # la direccion es 192.168.13.xx address 192.168.13.2 netmask 255.255.255.0 gateway 192.168.13.1 allow-hotplug wlan0 iface wlan0 inet manual wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf iface default inet dhcp

Page 36: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

36 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

Fichero rc.local

#!/bin/sh -e # # rc.local # # This script is executed at the end of each multiuser runlevel. # Make sure that the script will "exit 0" on success or any other # value on error. # # In order to enable or disable this script just change the execution # bits. # # By default this script does nothing. # Print the IP address _IP=$(hostname -I) || true if [ "$_IP" ]; then printf "My IP address is %s\n" "$_IP" fi sudo /home/pi/Desktop/ficheros/bucle1.sh exit 0

Page 37: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 37

Fichero red.c

// Script de creacion del fichero interfaces para la configuracion de red // David Morales Asegurado. Trabajo Fin de Grado Curso 2013-2014 // Universidad de Sevilla #include <stdio.h> void conf_tftp(int direccion1[4], int provisional); int main() { FILE * fichero = NULL; // punteros a los ficheros: fichero es el objetivo a crear FILE * fichero1 = NULL; // fichero1 es interfaces1 FILE * fichero2 = NULL; // fichero2 es interfaces2 int direccion[4]; // para almacenar la direccion IP int error=0; // control de errores int comprobacion=0; // para comprobar si la IP es correcta int caracter; // almacenamiento temporal de caracteres leidos int caracter1; int provisional; fichero = fopen("interfaces", "w"); // modo "w": se borra el fichero y se empieza a escribir if (fichero == NULL) // si hay fallo no se continua el programa { fprintf(stderr, "Error de configuración de red.\nPor favor edite el fichero interfaces manualmente\n"); error = 1; } else { fichero1 = fopen("interfaces1", "r"); if (fichero1 == NULL) { fprintf(stderr, "Error de configuración de red.\nPor favor edite el fichero interfaces manualmente\n"); error = 1; } else {

Page 38: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

38 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

fichero2 = fopen("interfaces2", "r"); if (fichero2 == NULL) { fprintf(stderr, "Error de configuración de red.\nPor favor edite el fichero interfaces manualmente\n"); error = 1; } else { while (comprobacion != 1) { printf("Introduzca direccion IP completa del dispositivo en conjunto de numeros.\nCuando termine un conjunto de numeros pulse Intro:\n"); scanf("%d", &direccion[1]); // Cada trozo de la direccion IP scanf("%d", &direccion[2]); // se almacena en una posicion scanf("%d", &direccion[3]); // del vector direccion como scanf("%d", &direccion[4]); // un tipo entero printf("La direccion introducida es: %d.%d.%d.%d\nSi es correcta escriba 1, en caso contrario escriba otro numero\n", direccion[1], direccion[2], direccion[3], direccion[4]); scanf("%d", &comprobacion); } caracter1=(getc(fichero1)); provisional=direccion[4]; while ((caracter=(getc(fichero1)))!=EOF) // Esta estructura permite tener un bufer { // un caracter para evitar que se escriba if (caracter != EOF) // el caracter salto de linea al final { putc(caracter1, fichero); caracter1=caracter; } } fprintf(fichero, "%d.%d.%d.%d", direccion[1], direccion[2], direccion[3], provisional); // se escribe la direccion IP en el formato esperado while ((caracter=(getc(fichero2)))!=EOF) putc(caracter, fichero); // se completa el fichero

Page 39: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 39

fclose(fichero2); // se cierran los ficheros por seguridad fclose(fichero1); fclose(fichero); } } } conf_tftp(direccion, provisional); return 0; } void conf_tftp(int direccion1[4], int provisional) // configuracion de tftp { FILE * fichero = NULL; // punteros a los ficheros: fichero es el objetivo a crear FILE * fichero1 = NULL; // fichero1 es tftp-hpa1 FILE * fichero2 = NULL; // fichero2 es tftp-hpa2 int error=0; // control de errores int caracter; // almacenamiento temporal de caracteres leidos int caracter1; fichero = fopen("tftpd-hpa", "w"); // modo "w": se borra el fichero y se empieza a escribir if (fichero == NULL) // si hay fallo no se continua el programa { fprintf(stderr, "Error de configuración de tftp.\nPor favor edite el fichero tftpd-hpa manualmente\n"); error = 1; } else { fichero1 = fopen("tftpd-hpa1", "r"); if (fichero1 == NULL) { fprintf(stderr, "Error de configuración de tftp.\nPor favor edite el fichero tftpd-hpa manualmente\n"); error = 1; } else { fichero2 = fopen("tftpd-hpa2", "r"); if (fichero2 == NULL) {

Page 40: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

40 Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas de la ESI de Sevilla

David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno

fprintf(stderr, "Error de configuración de tftp.\nPor favor edite el fichero tftpd-hpa manualmente\n"); error = 1; } else { caracter1=(getc(fichero1)); while ((caracter=(getc(fichero1)))!=EOF) // Esta estructura permite tener un bufer { // un caracter para evitar que se escriba if (caracter != EOF) // el caracter salto de linea al final { putc(caracter1, fichero); caracter1=caracter; } } fprintf(fichero, "%d.%d.%d.%d", direccion1[1], direccion1[2], direccion1[3], provisional); // se escribe la direccion IP en el formato esperado while ((caracter=(getc(fichero2)))!=EOF) putc(caracter, fichero); // se completa el fichero fclose(fichero2); // se cierran los ficheros por seguridad fclose(fichero1); fclose(fichero); } } } }

Page 41: Proyecto Fin de Grado - bibing.us.esbibing.us.es/proyectos/abreproy/90003/fichero/David+Morales+A... · Proyecto Fin de Grado Grado en Ingeniería de la Tecnologías de Telecomunicación

Trabajo Fin de Grado: Sustitución de sistemas STBs propietarios por Raspberry Pi’s en la red de pantallas digitales de la ESI de Sevilla. David Morales Asegurado. Tutor: D. Ramón Cerquides Bueno 41

Fichero tftpd-hpa

# /etc/default/tftpd-hpa RUN_DAEMON="yes" TFTP_USERNAME="pi" TFTP_DIRECTORY="home/pi/Desktop/ficheros/tftp" TFTP_ADDRESS=192.168.13.2:69" TFTP_OPTIONS="--secure --ipv4 --create -vvvv -p"