El objetivo de este howto es intentar explicar el proceso de instalación de un media center en Linux, desde la instalación del propio sistema operativo, hasta una breve explicación del software que se puede instalar. Este howto lo desarrollaré desde la experiencia en la instalación de un media center que hice recientemente y explicando los problemas con los que me encontré, así cuando alguien intente lo mismo pueda tener un referente a posibles problemas que se pueda encontrar. Aunque trabajo profesionalmente con Linux y la mayoría de las cosas las hago con la consola, intentaré hacer el howto lo mas sencillo posible sin tener que usar demasiado la misma.
HARDWARE
El hardware usado en este howto es el siguiente:
- Caja NOX Media + mando a distancia IMON.
- Placa base Asus M4N78-PRO.
- Procesador Athlon II X2 250 3.0Ghz
- Disco duro 1 Tb
La placa base dispone de audio 7.1 canales, tarjeta gráfica integrada Gforce 8300 con salida HDMI y DVI (aparte de vga) y Tarjeta de red gigabit. La elección de la placa no fue casual, sino que busqué alguna que dispusiera de gráfica Nvidia 8200 en adelante, ya que Nvidia hoy por hoy es la única que tiene desarrollados unos drivers para linux (VDPAU) para poder hacer uso de la aceleración gráfica en la reproducción de contenido en alta definición. Quizás Ati desarrolle lo mismo en un futuro, pero hoy por hoy Nvidia es lo que toca.
El procesador lo elegí porque tiene un consumo de 60 watios, no siendo necesario grandes requisitos en la refrigeración.
De todos modos este hardware es a modo orientativo. Queda a merced del presupuesto de cada uno el elegir distintos componentes, teniendo en cuenta unicamente que si queremos aceleración gráfica en full hd necesitaremos una Nvidia 8200 o posterior.
INSTALANDO DEL SISTEMA OPERATIVO
He elegido la distribución de Ubuntu 9.10, que a día de hoy es la última estable. Su instalación no tiene ningún misterio, únicamente puedo aconsejar una cosilla en cuanto a las particiones. El usuario de trabajo en Linux se encuentra dentro de /home, es decir, todo lo que grabemos y configuremos como usuario va a colgar de ese subdirectorio. Si prevemos que en un futuro queramos actualizar la distribución a una posterior, es recomendable hacer una partición exclusiva para /home, ya que así únicamente tendríamos que instalar el sistema operativo manteniendo nuestros datos (películas, musica, etc...) y la configuración de los programas.
Yo en mi disco duro he hecho 3 particiones:
- Una partición de 50 Gb montada en el raiz (/)
- Una partición de aprox. 900 Gb montada en /home
- Una partición de 4 Gb para el área de intercambio (swap).
De raíz (/)colgará todo el sistema operativo incluidas las aplicaciones que instalemos, y de /home colgará mi usuario incluyendo mis archivos y configuraciones. Si el día de mañana quiero actualizar a ubuntu 10.04, únicamente tengo que formatear el raiz (/) dejando el /home intacto.
Recomiendo también instalar el S.O con conexión a Internet, es decir, con el cable de red conectado al router, ya que en el proceso de instalación se instalarán las actualizaciones críticas que pudiera haber en ese momento, cosa que es recomendable sobre todo si se quiere instalar un raid por software, ya que entre otras cosas no es posible usar grub2 con dicha configuración de discos porque directamente no arrancaría el equipo.
En la creación del usuario es recomendable activar la casilla de entrada automática, ya que como estamos montando un media center, no nos vamos a levantar a meter el usuario y contraseña con u teclado, sería absurdo.
Otra cosa que recomiendo es poner una IP fija al equipo y así saber la dirección para cuando queramos acceder a él.
INSTALANDO CODECS MULTIMEDIA
Primeramente vamos a activar ciertos repositorios que nos van a hacer falta. Para ello vamos a Sistema -> Administración -> Orígenes del Software, y activamos el repositorio multiverse. Cuando demos a cerrar recargará la lista de paquetes y probablemente nos salte el cuadro de diálogo para instalar actualizaciones. Es recomendable hacerlo.
Probablemente también a estas alturas nos habrá salido una notificación en la barra de tareas diciendo que existen controladores adicionales privativos para nuestra tarjeta Nvidia. Si es así hacemos clic, y activamos el controlador que nos dé como recomendado. Si no nos sale esta notificación, nos vamos directamente a sistema -> administración -> controladores de hardware, y lo activamos. Nos hará reiniciar para cargar el nuevo controlador.
Vamos a instalar un metapaquete que de un plumazo nos instalará un montón de plugins y codecs de vídeo y audio entre otras cosas necesarias. Abrimos una consola, y tecleamos:
| Código: |
sudo apt-get install ubuntu-restricted-extras
|
Con esto instalamos codecs, plugins (flash por ejemplo), fuentes de letras típicas de msoft (arial, times new roman, ...).
Para completar la instalación multimedia nos harían falta los codecs propietarios de microsoft (wmv,wma,asf ...) y la librería para reproducir dvds de video. Estos paquetes son w32codecs y libdvdcss2, pero como no se encuentran en los repositorios de ubuntu, vamos a añadir los repositorios de medibuntu. Para ello nos vamos a
help.ubuntu.com/community/Medibuntu y seguimos las instrucciones para añadir el repositorio, que no es otra que ejecutar en un terminal lo siguiente:
| Código: |
sudo wget http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list --output-document=/etc/apt/sources.list.d/medibuntu.list && sudo apt-get -q update && sudo apt-get --yes -q --allow-unauthenticated install medibuntu-keyring && sudo apt-get -q update
|
Ya podemos instalar los paquetes anteriores bien mediante el administrador de paquetes synaptic, o en consola con:
| Código: |
sudo apt-get install w32codecs libdvdcss2
|
PROBANDO VDPAU
Aunque los mediacenter xbmc y mythtv tienen sus propios reproductores internos con soporte para VDPAU, no está de mas instalarse el mplayer y su gui smplayer y comprobar como se comporta nuestra tarjeta con los vídeos 1080p. Para instalar mplayer y smplayer con soporte VDPAU, vamos a activar un repositorio ppa que han creado para este menester.
Para ello nos vamos a
https://launchpad.net/~nvidia-vdpau/+archive/ppa y seguimos las instrucciones para añadirlos que hay en el enlace "Technical details about this PPA". Una vez añadido y actualizada la lista de paquetes, instalamos mplayer y smplayer.
| Código: |
sudo apt-get install mplayer smplayer
|
Para hacer uso de VDPAU hay que configurar smplayer y decirle que use esto como salida de vídeo predeterminado. Si cargamos cualquier vídeo en alta definición, veremos un rendimiento espectacular aún si no tenemos un procesador potente.
INSTALANDO SOPORTE PARA MANDO A DISTANCIA
Vamos a instalar nuestro mando Imon Pad. Si te fijas, sin instalar ningún driver el mando actúa como un ratón y un teclado, es decir, podemos mover el puntero del ratón con la rueda central del mando y hacer clics con los botones a los lados. Si abrimos un editor de textos y pulsamos sobre los números, veremos que se escriben en pantalla e incluso podemos borrar con el botón del backspace.
Esto es así porque Ubuntu lo interpreta como un ratón cargando el módulo usbhid. Esto nos va a resultar un problema como veremos mas adelante.
Vamos a instalar "lirc", que es el soporte que tiene Linux para manejar los mandos a distancia. Para ello:
| Código: |
sudo apt-get install lirc
|
En el proceso de instalación nos va a preguntar que tipo de mando que tenemos instalado en nuestro equipo. Para ello, en la lista tenemos que decir que es del tipo USB, y posteriormente tenemos que elegir el modelo soundgraph imon pad. También nos preguntará si tenemos un transmisor de infrarrojos, pero en este caso dejamos none como respuesta.
Este proceso nos dejará "casi" completamente configurado nuestro mando, y digo "casi" porque ubuntu sigue empeñándose en que eso es solo un ratón y no un mando a distancia. Vamos a comprobarlo. Como ubuntu ya no carga por defecto el usbfs, vamos a cargarlo a mano escribiendo en la consola:
| Código: |
sudo mount -t usbfs none /proc/bus/usb
|
Ahora visualizamos los dispositivos usb conectados haciendo:
| Código: |
cat /proc/bus/usb/devices
|
Nos encontraremos algo parecido a esto (entre otros dispositivos):
T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=15c2 ProdID=003c Rev= 0.01
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=02 Driver=usbhid
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=usbhid
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
Como vemos, para el dispositivo 15c2:003c tiene cargado el módulo usbhid, que es el que no nos interesa.
(nota adicional: Para saber el id del nuestro mando, podemos teclear en consola lsusb. Los receptores de mando Imon empiezan todos por 15c2, pero el productid puede variar según la época en que los haya comprado. La última versión de lirc, soporta desde el productid 0034 hasta el 0046, en solo mandos, y tambien soporta una amplia gama de productos combinados de mandos y pantallas LCD de caja.)
El módulo que necesitamos para nuestro mando es el lirc-imon, y para forzar que cargue este módulo vamos a usar el siguiente truquillo.
Añadimos la linea "blacklist usbhid" al final del archivo /etc/modprobe.d/blacklist.conf. Podemos editar dicho archivo con el comando:
| Código: |
sudo nano /etc/modprobe.d/blacklist.conf
|
Salimos y grabamos pulsando ctrl-x
Añadiendo esa línea impedimos que se cargue el módulo usbhid en el arranque del equipo, pero claro, tampoco es lo que queremos porque sino no podrían funcionar los ratones y teclados usb ni los pendrives. Lo que hacemos para solucionar esto, es forzar la carga de módulos, pero en el orden que a nosotros nos interesa.
Para hacer esto, editamos el archivo /etc/modules. Si no hemos tocado previamente nada, veremos que el único módulo que aparece es "lp". Así que añadimos lirc-imon y usbhid en este orden:
lirc-imon
lp
usbhid
Guardamos con ctrl-x y salimos. Con este cambio forzamos a que primero se cargue el módulo lirc-imon, y posteriormente el usbhid, con lo cual nos aseguramos que nuestro mando Imon cargue el módulo correcto. Reiniciamos el equipo y lo comprobamos con:
| Código: |
sudo mount -t usbfs none /proc/bus/usb
cat /proc/bus/usb/devices
|
Ahora nos deberíamos encontrar con algo como esto:
T: Bus=04 Lev=01 Prnt=01 Port=01 Cnt=01 Dev#= 2 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=15c2 ProdID=003c Rev= 0.01
C:* #Ifs= 2 Cfg#= 1 Atr=80 MxPwr=100mA
I:* If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=02 Driver=lirc_imon
E: Ad=81(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
I:* If#= 1 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=00 Prot=00 Driver=lirc_imon
E: Ad=82(I) Atr=03(Int.) MxPS= 8 Ivl=10ms
Como podemos comprobar, ahora está cargado el módulo que nos interesa. Para ver como responde nuestro mando, abrimos un terminal y tecleamos "irw". A cada pulsación de las teclas del mando, comprobaremos como sale el código asociado y la descripción. Esta descripción viene definida en el archivo /usr/share/lirc/remotes/imon/lircd.conf.imon-pad. Si quieres puedes retocar el archivo y adaptarlo a tu gusto (yo lo he hecho) o si lo prefieres puedes crear uno nuevo mediante la utilidad irrecord que posee lirc. Si quieres hacer esto ultimo, tendrías que seguir estos pasos:
| Código: |
sudo /etc/init.d/lirc stop
irrecord -d /dev/lirc0 archivo_donde_se_guardará_configuración
|
y seguir las instrucciones para grabar los botones del mando.
Una vez creado el archivo, tendrías que editar el archivo /etc/lirc/hardware.conf y modificar la linea que recoge el archivo con las especificaciones de los botones del mando.
SOFTWARE MEDIA CENTER QUE SE PUEDE INSTALAR.
Bueno, aquí hay una variedad adaptada a todos los gustos y colores, pero me voy a centrar en 3:
-Moovida
-Mythtv
-Xbmc
Excepto mythtv, que viene en los repositorios de Ubuntu, los otros dos para instalarlos hay que añadir repositorios ppa que tienen los paquetes compilados para la distribución. Estos grupos ppa son:
https://launchpad.net/~team-xbmc
https://launchpad.net/~moovida-packagers
No voy a explicar la instalación porque a estas alturas creo conocido por todos el como se hace. Tampoco voy a entrar en la configuración pormenorizada de cada mediacenter, porque habría que dedicar un howto a cada uno de ellos, y especialmente a mythtv cuya configuración es extensa y quizás algo compleja
Únicamente comentaré por encima como configurar el mando a distancia para cada uno de ellos, ya que es la parte mas manual de cada uno de ellos.
El más sencillo de configurar es moovida, ya que dispone de una utilidad para ello. Para ejecutar esta utilidad, abrimos un terminal y hacemos:
| Código: |
cd /usr/share/pyshared/elisa/plugins/lirc
python setup_lirc.py /home/usuario/
|
La utilidad nos pedirá que vayamos pulsando ciertas teclas, y al final nos generará un archivo remote.map. Editamos el archivo de configuración de moovida, que se encuentra dentro de ~/.moovida y en el apartado de lirc especificamos la ruta del archivo .map
Para xbmc tampoco es muy complicado, ya que existe un archivo con una configuración previa para el mando Imon que se encuentra en /home/usuario/.xbmc/userdata/Lircmap.xml. Si editamos dicho archivo, nos vamos al apartado del Imon y especificamos para cada acción el botón que queremos asignar. Recuerda que el nombre de los botones lo puedes sacar con la utilidad "irw".
El mas rollo quizá de configurar es el mythtv, ya que no posee un archivo propio para la configuración del mando, sino que lo saca del lircrc. Este archivo, que hay que ubicarlo en /home/usuario/.lircrc, es un archivo que recoge pulsaciones de botones, y las asigna a una acción concreta de cada programa. Se puede consultar la documentación en la página oficial de lirc en
www.lirc.org/html/configure.html#lircrc_format para aprender a configurar este archivo.
Al final de este documento pegaré el mío como muestra. En él recojo las acciones para mythtv, mplayer, lanzamiento de aplicaciones y apagado del sistema.
TRUQUILLOS Y DEMÁS COSAS A CONFIGURAR EN NUESTRO MEDIA CENTER
HDMI
Ubuntu 9.10 nos permite activar el audio por la salida hdmi de una forma muy cómoda. Nos vamos a sistema -> preferencias -> sonido, y en la solapa hardware seleccionamos el perfil de salida de audio por hdmi. No obstante haciendo esto solo veremos que por la tele no suena nada, y es porque el canal de audio digital está silenciado. Abrimos una consola y ejecutamos alsamixer. Al final del todo a la derecha veremos ciertos canales del tipo IEC que están en MM, osea, silenciados. Para quitarles el silencio, nos dirigimos a ellos y pulsamos la tecla M del teclado, y ya podremos reproducir sonido por la conexión hdmi.
(nota adicional: Aunque activemos la salida hdmi de audio, a algunas aplicaciones es necesario especificarles que quieres usar esa salida, siendo necesario ir a la configuración de audio para hacerlo. Esto pasa por ejemplo con mythtv y algún otro mas)
CARGA DE CONTENIDO
Bueno, aunque ya tenemos nuestro media center funcionando, habría que cargarlo de contenido. Esto o bien lo hacemos desde el propio media center, o desde otro equipo en la red. Si disponemos de otros sistemas Linux en nuestra red, podemos compartir el subdirectorio del usuario mediante NFS. Para ello en el htpc tenemos que instalar el servidor nfs, y en el resto el cliente nfs. En el htpc hacemos:
| Código: |
sudo apt-get install nfs-kernel-server
|
Posteriormente editamos el archivo /etc/exports, y añadimos una linea para compartir nuestro home así:
/home/usuario 192.168.0.0/24(rw,sync,no_subtree_check)
(Suponemos que el htpc tiene la IP 192.168.0.10)
Esta línea lo que viene a decir, es que comparte el directorio /home/usuario mediante lectura/escritura a todo ordenador que tenga una IP entre 192.168.0.1 y 192.168.0.254.
Reiniciamos el servidor NFS para que tome los cambios escribiendo en el terminal:
| Código: |
sudo /etc/init.d/nfs-kernel-server restart
|
Luego en el/los cliente/s, instalamos el cliente:
| Código: |
sudo apt-get install nfs-common
|
Creamos dentro de /media un directorio que se llame mediacenter.
Editamos el archivo /etc/fstab y metemos al final una línea como esta:
192.168.0.10:/home/usuario /media/mediacenter nfs rw,user,noauto 0 0
Si nos vamos ahora a "Lugares" veremos que hay un nuevo elemento llamado mediacenter, y si hacemos clic veremos todo el contenido de nuestro htpc, pudiendo meter y sacar archivos. (para distribuciones anteriores a la 9.10 haría falta reiniciar el equipo o remontar el fstab.
Si queremos compartir el htpc con güindos, entonces habría que instalar samba en el htpc y compartir el directorio tal y como se hace en güindos (botón derecho sobre carpeta, compartir, etc etc)
ENCENDIDO Y APAGADO DEL HTPC A TRAVÉS DEL MANDO
Para encender el htpc basta con pulsar el botón power del mando, ya que en modo de espera, éste lanza la señal de encendido a la fuente de alimentación. Sin embargo el apagado no lo hace, debiendo montarlo por nuestra cuenta. Para apagar el equipo se utiliza el comando "shutdown -h now", pero inicialmente es necesario ser superusuario para poder hacer esto. Como irexec (comando para ejecutar comandos desde el mando) se ejecuta como usuario normal, en principio no tendría permisos para apagar el equipo, pero podemos usar un truquillo muy fácil, que consiste en activar el setuid del archivo shutdown. El setuid indica que ese comando se ejecute con el usuario que tiene definido, que en este caso es root. Para hacer esto escribimos en el terminal:
| Código: |
sudo chmod +s /sbin/shutdown
|
y rematamos el tema metiendo una entrada en .lircrc para apagar el equipo tal como esta:
begin
button = Power
prog = irexec
config = shutdown -h now
end
VALORACION DE LOS DISTINTOS MEDIA CENTER
Bajo mi punto de vista, entre los 3 mediacenter mencionados aquí, no existe ninguno ni mejor ni peor que otro, simplemente cada uno está bien para una cosa distinta. Yo tengo instalados los tres, y lanzo en cada momento el que mejor me convenga para hacer la tarea que sea.
Para ver y grabar de la tdt uso mythtv, ya que es lo mejor que hay para hacer esto.
Para reproducir películas, fotos o música del disco duro, uso indistintamente moovida o xbmc. La diferencia sustancial entre ellos es la relación de plugins que hay diseñados para ellos. Por ejemplo para xbmc hay un par de plugins excelentes para ver películas online y tv a la carta, desarrollado por Jesús en su página
blog.tvalacarta.info/ . Para moovida hay otra serie de plugins que también están bien, como por ejemplo ver fotos alojadas en tu cuenta flickr, youtube, trailers de películas, lastfm, radio online shoutcast... etc. En fin, que la versatilidad está en la variedad.
CONCLUSIÓN FINAL
Como se puede apreciar no es complicado instalarse un media center bajo Linux. Espero que con este howto alguien se anime, y espero no haberme dejado nada en el tintero. Si me dejo algo, avisad y vamos editando y puliendo este howto.
Quedaría pendiente el tema de una tarjeta sintonizadora de TDT, pero como hay tantas en el mercado sería absurdo ceñirme a una en concreto. No obstante no tiene la mayor dificultad el instalar una bajo Linux, y sino aquí está el foro para resolver dudas.
Como comenté antes, os dejo una copia de mi .lircrc
Hendrix.
.lircrc
| Código: |
# Apagado del equipo
begin
button = Power
prog = irexec
config = shutdown -h now
end
# Lanzamos moovida con el boton rojo
begin
button = Videos
prog = irexec
config = moovida &
end
# Lanzamos xbmc con el boton verde
begin
button = Music
prog = irexec
config = xbmc &
end
# Lanzamos mythtv con el boton amarillo
begin
button = TV
prog = irexec
config = mythfrontend &
end
# Inicio de configuracion de mythtv
begin
prog = mythtv
button = Up
repeat = 2
config = Up
end
begin
prog = mythtv
button = Down
repeat = 2
config = Down
end
# Not yet defined
begin
prog = mythtv
button = Left
repeat = 2
config = Left
end
# Given another function for now, I don't use mythgallery
begin
prog = mythtv
button = Right
repeat = 2
config = Right
end
begin
prog = mythtv
button = Enter
config = Enter
end
begin
prog = mythtv
button = Play
config = P
end
begin
prog = mythtv
button = Backspace
config = D
end
begin
prog = mythtv
button = RightMenu
config = I
end
begin
prog = mythtv
button = Escape
config = ESC
end
begin
prog = mythtv
button = MultiMon
config = M
end
begin
prog = mythtv
button = Bookmark
config = K
end
begin
prog = mythtv
button = LeftClick
config = J
end
begin
prog = mythtv
button = RightClick
config = U
end
begin
prog = mythtv
button = Zoom
config = W
end
begin
prog = mythtv
button = FullScreen
config = Ctrl-W
end
begin
prog = mythtv
button = TaskSwitcher
config = S
end
begin
prog = mythtv
button = Mute
config = |
end
begin
prog = mythtv
button = Vol+
repeat = 3
config = ]
end
begin
prog = mythtv
button = Vol-
repeat = 3
config = [
end
# Fast forward (30 sec default)
begin
prog = mythtv
button = Rewind
config = <
end
# Rewind (10 sec default)
begin
prog = mythtv
button = FastForward
config = >
end
# Skip forward (10 min default)
begin
prog = mythtv
button = NextChapter
config = End
end
# Skip backward (10 min default)
begin
prog = mythtv
button = PrevChapter
config = Home
end
# Record
begin
prog = mythtv
button = Record
config = R
end
# Numbers 0-9
begin
prog = mythtv
button = 0
config = 0
end
begin
prog = mythtv
button = 1
config = 1
end
begin
prog = mythtv
button = 2
config = 2
end
begin
prog = mythtv
button = 3
config = 3
end
begin
prog = mythtv
button = 4
config = 4
end
begin
prog = mythtv
button = 5
config = 5
end
begin
prog = mythtv
button = 6
config = 6
end
begin
prog = mythtv
button = 7
config = 7
end
begin
prog = mythtv
button = 8
config = 8
end
begin
prog = mythtv
button = 9
config = 9
end
### Inicio de configuracion de mplayer
begin
prog = mplayer
button = MultiMon
config = osd
end
begin
prog = mplayer
button = Pause
config = pause
end
# Si pulsamos en reproduccion, avanza 1 minuto
# Si estaba pausado, reanuda la reproduccion
begin
prog = mplayer
button = Play
config = seek +1
end
begin
prog = mplayer
button = Stop
config = quit
end
begin
prog = mplayer
button = Mute
config = mute
end
begin
prog = mplayer
button = Rewind
config = seek -10
end
begin
prog = mplayer
button = FastForward
config = seek +30
end
begin
prog = mplayer
button = Escape
config = quit
end
begin
prog = mplayer
button = NextChapter
config = seek +600
end
begin
prog = mplayer
button = PrevChapter
config = seek -600
end
begin
prog = mplayer
button = FullScreen
config = vo_fullscreen
end
begin
prog = mplayer
button = Vol+
config = volume +1
repeat = 3
end
begin
prog = mplayer
button = Vol-
config = volume -1
repeat = 3
end
|