Todas las entradas de: admin

Saques perfectos en Blobby Volleyball 2

Blobby Volleyball 2 es de esos juegos sencillitos, pero adictivos. Perfectos para matar el rato o descargar un poco de tensión cuando tienes poco tiempo.

Hace tiempo que lo instalé y, de vez en cuando, me echo unas partiditas. Un día, me dio por comenzar a sacar hacia atrás. Sí, el juego deja sacar hacia atrás y que la pelota rebote en el borde de la pantalla, siempre y cuando luego entre en el otro campo. Descubrí una posición desde la que, al sacar, haces punto directo, todo el tiempo. Probé con los distintos oponentes (de grados de dificultad distintos) y todos “caían” en la misma trampa. Éste es el punto exacto donde tenéis que colocaros (yo soy el rojo):

Posición exacta de saque para ganar siempre en Blobby Volleyball 2

Y luego sólo os queda pulsar hacia arriba y ganar, ganar y ganar 🙂

Podéis descargaros una repetición de una partida mía para que veáis que no os miento. Para reproducir la partida, tenéis que guardar el fichero xml en la carpeta /home/usuario/.blobby/replays/ y una vez dentro del juego vais a Watch Replay y la seleccionáis.

Por cierto, yo juego en Debian, pero está disponible para Linux en general, MacOS X y Windows. Aunque sabiendo este “truco”, ya pierde la gracia 😛

Ubuntu 9.04 en MSI Wind U100

¿Cuántos tutoriales hay sobre esto mismo en la red? Aproximadamente… un montón. ¿Para qué, entonces, repetirse? Pues porque ésta es una receta a modo de recordatorio para cuando quiera volver a instalar Ubuntu en este ultra portátil y, de paso, si le sirve a algún otro usuario, matamos dos pájaros de un tiro 🙂

El portátil

Mucho se ha dicho ya de este portátil. Asus, con sus EeePC, abrió la veda del mercado de los portátiles de bajo costo, fundamentalmente orientados a la movilidad (por su escaso precio y reducido tamaño) y la conectividad (la mayoría vienen con adaptadores de Bluetooth, Wi-Fi, Ethernet y, pocos aún, GPRS). Pronto le saldría una dura competencia: el MSI Wind. De éste último han salido varias versiones y clones, siendo el más popular en España el Medion Akoya Mini. Aquí os hablaré del original, y en concreto del modelo MSI Wind U100-013ES, el MSI con batería de 6 celdas y teclado español.

Especificaciones técnicas destacables

  • Procesador: Intel® Atom® N270 1.6GHz
  • Chipsets: Intel® 945GSE+ICH7M
  • Memoria RAM: 1GB (DDR2 667)
  • Pantalla: LCD WSVGA de 10″ a una resolución de 1024×600.
  • Gráficos: Intel GMA 950 400 Mhz
  • Almacenamiento: disco duro SATA de 2.5″ de 160 GB de Western Digital a 5400 RPM
  • Batería: 6 celdas (más de tres horas usando la Wi-Fi).
  • Peso: 1.3 kg
  • Webcam: 1.3 Mpx
  • Lector de tarjetas: 5-in-1, SD/MMC/MS/MSpro/xD. También soporta SD-HC.
  • Bluetooth.
  • Wireless: 802.11b/g/n Ralink RT2700E.
  • 3 puertos USB
  • SO preinstalado: Windows XP Home con Service Pack 3. (esto más que destacable, es anecdótico…)

Ubuntu 9.04: Jaunty Jackalope

Antes de nada, debo decir que este artículo lo tenía casi completo, pero dedicado a la Ubuntu 8.10. Sin embargo, entre mi retraso y el haber empezado a escribirlo cerca del lanzamiento de la última Ubuntu, pues me pilló el toro. De todos modos, dejaré algunas notas hacia el final del artículo para aquellos que la quieran instalar o la tengan instalada y no les funcione todo o quieran optimizar algunos aspectos.

¿Que por qué Ubuntu? El portátil es de mi hermano y siempre se acostumbró a manejarse con esta distribución. Ah, y es Linux 😉

Preparativos

A la hora de instalar algún sistema operativo en este portátil nos preguntamos, ¿cómo hago para meter el CD/DVD si no tiene una unidad lectora? Amigos míos, la tecnología avanza y hay más maneras de hacer estas instalaciones: vía USB, a través de una tarjeta SD o incluso a través de red. Yo elegí el primer método: crear un USB arrancable con la Ubuntu 9.04. ¿Cómo es esto posible? Podríamos hacerlo a base de comandos (el amigo dd y compañía), pero hay programas que nos facilitan la vida, como es el caso de UNetbootin (Universal Netboot Installer), disponible tanto para Windows como Linux. Este programa nos permite grabar varias distribuciones de Linux/BSD en un dispositivo USB haciendo que el proceso de instalación sea el mismo, sólo que sin necesidad de usar un CD. El proceso es muy sencillo: Nos descargamos el programa desde su página web. Hay paquetes para Debian/Ubuntu, así que, una vez descargado (también puede añadirse el repositorio) será cuestión de hacer: # dpkg -i unetbootin_301-6_i386.deb (o la versión que te hayas descargado). Abrimos el programa como root (esto es importante, de otra manera, no se ejecutará) y veremos una ventana así:

UNetbootin

Lo ideal (por ser más rápido) es que hayamos descargado la ISO de Ubuntu previamente para indicarle que la queremos usar. Elegimos el dispositivo USB y dejamos que trabaje. Después de unos minutos, podremos retirar el pendrive o disco duro y llevárnoslo a nuestro MSI Wind.

Arrancando desde el USB

Debemos indicarle a la BIOS que queremos arrancar desde un dispositivo conectado al MSI Wind por USB. Tenemos dos formas de configurarlo. La primera es cambiar el orden de arranque en la BIOS (a la que accedemos pulsando la tecla Supr al encender el portátil, cuando aparece el logo de MSI). Vamos al menú Boot y donde pone Set Boot Priority ponemos de primero el USB (Boot Option #1 USB HardDisk). Esto se consigue pulsando Enter y eligiendo el dispositivo que queremos.

La otra forma es más conveniente si sólo vamos a arrancar de USB una vez o muy de vez en cuando. Pulsamos, también al encender el portátil, la tecla F11 y se nos presenta una pantalla que nos pregunta desde qué dispositivo queremos arrancar. Seleccionamos el pendrive USB.

Instalación de Ubuntu

Ubuntu se ejecutará en modo live y la instalación se realiza como viene siendo habitual. Pulsando el icono de Instalar que hay en el escritorio y siguiendo las instrucciones. No es el objetivo de este artículo el explicar con detalle la instalación de esta distribución. Lo único que hay que tener en cuenta es si queremos conservar la instalación de Windows (que viene por defecto) o mandarlo a paseo (total, sólo ocupa espacio :-P).

Lo que funciona tras la instalación

Cuando termina la instalación y nos pide reiniciar (acordaos de quitar el pendrive una vez que se encienda de nuevo el portátil) funcionan las siguientes cosas sin necesidad de configuración adicional:

  • Adaptador de red Ethernet
  • Adaptador Wi-Fi RT2700E
  • Bluetooth
  • Altavoces
  • Micrófono
  • Webcam
  • La mayoría de teclas de función especiales (Fn+F1, etc.), salvo la de modo Turbo
  • Lectores USB
  • Lector de tarjetas 5 en 1.
  • Aceleración gráfica (Ubuntu activa por defecto los llamados Efectos Visuales).
  • Suspensión
  • Hibernación
  • Salida VGA

Wicd: gestor de red

El gestor de red que trae por defecto Ubuntu (network-manager) no es muy completo y no siempre funciona bien. En Debian uso Wicd y es de lo mejor que he visto (¡y sencillo!), así que opté por ponerlo también en Ubuntu. Está incluido en los repositorios oficiale s (universe), así que bastará un # apt-get install wicd para instalarlo. Cuando se termina de instalar (ojo, eliminará el network-manager, no os asustéis), el demonio de Wicd queda corriendo. El cliente, que es el que nos permitirá seleccionar la red que queremos y demás configuraciones, se llama wicd-client, pero ya lo tendremos colocado como un applet más en la barra de tareas, próximo al reloj. Vayamos a configurarlo para que se encargue de manejar nuestra tarjeta wifi. Doble clic sobre su icono y botón Preferencias:

Wicd

En la pestaña General Settings seleccionamos wext como driver para el WPA Supplicant y en Wireless Interface ponemos ra0. Lo demás lo podemos dejar tal como muestra la captura:

Preferencias de Wicd

Optimizando la duración de la batería

Una de las mejores características de este modelo es su batería de 6 celdas que, en condiciones muy óptimas, permite una autonomía superior a 4 horas (en las especificaciones hablan de más de 5). No he hecho pruebas muy exhaustivas por falta de tiempo (el portátil no lleva mucho tiempo en mi poder), pero puedo asegurar que, a media batería, conectado a Internet mediante Wi-Fi, viendo algún que otro vídeo, instalando paquetes, actualizando el sistema y con los efectos visuales de Compiz activados, ha durado unas 2 horas. Ahora trataremos de configurar Ubuntu para que dé el mejor rendimiento en todo tipo de situación.

Escalado de frecuencia

Esta técnica consiste en, cuando el procesador lo permite, variar la velocidad del reloj a la que va la CPU. Si no necesitamos mucho procesador, podemos disminuirla y conseguiremos mayor duración de la batería. Por el contrario, si queremos la máxima potencia, podremos subir la velocidad hasta el máximo que permita.

Monitor de frecuencia de GNOME
Uno de los applets que incluye el GNOME que viene con Ubuntu es el de, precisamente, Monitor de frecuencia de la CPU. Para añadirlo al panel, pulsamos con el botón derecho del ratón sobre el panel y escojemos la opción Añadir al panelMonitor de frecuencia de la CPU. Su uso es muy sencillo, bastante autoexplicativo. Tenéis un buen manual en la Biblioteca de documentación de GNOME. Aquí sólo comentaré la existencia de los governors (gobernadores) que nos permiten escalar la frecuencia de modo dinámico, es decir, según las necesidades del equipo y/o usuario.

Los “gobernadores” son varios:

  • Performance: mantiene la CPU a la más alta frecuencia posible.
  • Powersave: mantiene la CPU a la más baja frecuencia posible.
  • Userspace: exporta la información sobre la frecuencia disponible a nivel de usuario y permite que la pueda cambiar.
  • Ondemand: escala la frecuencia atendiendo al uso de CPU (como lo hace el userspace, pero en el kernel)
  • Conservative: funciona como ondemand, pero incrementa la frecuencia paso a paso.

Veamos qué nos permite el MSI Wind:

$ more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies
1600000 1333000 1067000 800000

Con el anterior comando vemos las frecuencias a las que puede trabajar el procesador.

$ more /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_governors
convervative powersave ondemand userspace performance

Nos muestra los gobernadores disponibles.

Ahora que sabemos un poco más, ya se hace sencilla la configuración ideal para el Monitor de frecuencia de CPU del panel 🙂

Botón ECO-friendly

Se activa al pulsar Fn+F10 y sirve para optimizar la duración de la batería, ajustando el sistema para que consuma menos. Con el escalado de frecuencia tan manejable desde el escritorio de GNOME, no tiene sentido usarlo. No nos servirá ese botón, salvo en Windows.

Opciones de energía

Suspensión

En este modo, la memoria RAM es el único componente que se mantiene alimentado. De esta forma, dado que el estado de los programas se mantiene en memoria, el usuario puede volver a lo que estaba haciendo rápidamente. Suspender debe utilizarse cuando vamos a estar poco tiempo sin usar el PC. Cuando queramos “despertar” de nuevo el equipo, sólo tenemos que pulsar el botón de encendido.

Hibernación

En este modo el contenido de la memoria se guarda en el disco duro, tras lo que el ordenador se apaga completamente. Al volver a iniciar el ordenador, el usuario se encuentra con todas las aplicaciones que tenía abiertas en el estado en el que se encontraban antes de hibernar. Hibernar debería utilizarse para períodos largos de inactividad, para consumir menos energía y para asegurarnos de no perder nuestros datos por algún corte de luz o porque el equipo se quede sin batería en el caso de un portátil.

Ambas opciones están disponibles al pulsar sobre el botón para apagar el equipo:

Mejorando la legibilidad

Aunque la resolución nativa, 1024×600, es aceptable, podemos mejorar la experiencia de usuario reduciendo un poco el tamaño de las fuentes para que menús y ventanas no se hagan demasiado grandes. Os pongo un par de capturas para que veais cómo lo tengo yo:

Tamaño y suavizado de fuentes: SistemaPreferenciasTipografía.

Suavizado y tamaño de fuentes

Resolución de las fuentes de 96 a 83: SistemaPreferenciasTipografía, botón Detalles.

Resolución de las fuentes

Ubuntu 8.10

A continuación, tenéis detalles de la instalación de esta versión de Ubuntu en el portátil MSI Wind. Aunque, si podéis, metedle la 9.04 ya que el sistema arranca ¡tres veces más rápido!

Lo que funciona tras la instalación

Esto es todo lo que funciona sin necesidad de configuración adicional:

  • Adaptador de red Ethernet
  • Altavoces
  • Micrófono
  • Webcam
  • La mayoría de teclas de función especiales (Fn+F1, etc.), salvo la de modo Turbo
  • Lectores USB
  • Lector de tarjetas 5 en 1.
  • Aceleración gráfica (Ubuntu activa por defecto los llamados Efectos Visuales).
  • Suspensión
  • Hibernación
  • Salida VGA

Adaptador Wi-Fi RT2700E

La tarjeta Wi-Fi que incluye no está soportada por defecto por la versión 8.10 de Ubuntu, pero la solución es muy sencilla y un poquito de acción por nuestra parte nos vendrá bien porque si todo se configurase solito, qué aburrido sería 😛

Descargamos el driver para las RT2860 desde aquí (nos sirve para la RT2700E). El paquete nos hará la vida más fácil evitando que tengamos que compilar, cargar módulos, editar ficheros de configuración, etc. Pasad por la página del autor en Launchpad para estar al día. Nos aseguramos de tener instalado el programa dkms (nos evitará tener que compilar y configurar el módulo para distintos kernels que tengamos: # apt-get install dkms. Para instalar el driver, como cualquier paquete .deb: # dpkg -i rt2860-source_1.8.0.0-0ubuntu1~ppa2_all.deb. Esperamos que realice todas las tareas (puede tardar un poco, ¡pero no matéis el proceso!). Una vez finalizado, vamos a configurar el gestor de red.

Wicd

No está incluido en los repositorios oficiales de esta versión de Ubuntu, pero podemos añadirlo (aunque se trata del de Hardy, la 8.04) como viene bien explicado en su página web. Ya sabéis el proceso: añadir el repositorio al fichero /etc/apt/sources.list, hacer un # apt-get update y finalmente # apt-get install wicd para instalarlo.

El resto de instrucciones son compatibles con las de la versión 9.04.

Usando el Wiimote en Debian

Introducción

Utilizar el mando de la Wii, el Wiimote, para manejar el ordenador, como si de otro dispositivo se tratase, no es algo nuevo. Desde hace casi un par de años, los usuarios de Windows tenían el GlovePIE. Sin embargo, no tardó mucho en aparecer una alternativa para sistemas GNU/Linux. He esperado hasta que el proyecto ha adquirido un buen grado de madurez para poder ser usado sin demasiada complicación.

Wiimote es posible en Linux

Encontraréis un montón de tutoriales sobre esto mismo en la red. Sin embargo, he querido hacer uno donde recoja todo tipo de información y el usuario no tenga que navegar por más páginas cada vez que le asalte un nuevo problema.

No todo será tan fácil como instalar y usar, pero tampoco muy complicado para una persona atenta 🙂

WCiid: El Programa

WCiid es el responsable de esta “magia”. En realidad no se trata de un solo programa. WCiid son un conjunto de programas:

  • libcwiid: es la biblioteca (API) que contiene las funciones para poder interactuar con el mando de la Wii.
  • wminput: driver para controlar los eventos de Wiimote y usarlo para manejar el ratón, joystick, etc.
  • wmgui: programa para comprobar el funcionamiento del Wiimote.

Instalación

Quizás imaginas que ahora toca la parte de compilación y rompedura de cabeza. Pues no. Lo bueno es que tenemos todos estos programas disponibles en los repositorios unstable y testing (lenny) de Debian (en Ubuntu están disponibles en los repositorios desde la 7.10). Así que, para instalarlos, bastará un:

#apt-get install libcwiid1 wminput wmgui

Y se instalará todo lo necesario, junto con sus dependencias.

Configuración

Lo cierto es que no es todo tan simple, todavía hay que hacer un poquito más antes de ver cómo el puntero del ratón se mueve mediante el Wiimote, pero es muy sencillo, ya verás.

Módulo uinput

La rama 2.6.x del kernel de Linux incorpora el driver uinput, que ayuda a los usuarios a inyectar datos al propio kernel. Esto es muy útil a la hora de crear aplicaciones para personalizar la entrada de dispositivos inalámbricos como pueden ser joysticks, teclados o el propio Wiimote.

Uinput está configurado como módulo que se puede cargar en la mayoría de los kernel Linux. Así que para cargarlo tendremos que hacer, como root:

# modprobe uinput

Esto lo tendremos que hacer cada vez que queramos usarlo. ¿Que nos parece un coñazo? No hay problema, podemos indicar que el sistema lo cargue por nosotros cada vez que arranque. Para ello, hay que añadirlo en el fichero /etc/modules:

# /etc/modules: kernel modules to load at boot time.
#
# This file contains the names of kernel modules that should be loaded
# at boot time, one per line. Lines beginning with "#" are ignored.
# Parameters can be specified after the module name.

loop
sbp2
uinput # Aquí lo ponemos

Bluetooth

Adaptador USB de Bluetooth
Este paso es fundamental. La comunicación entre la Wii y el Wiimote se hace a través del protocolo Bluetooth, así que nuestro equipo debe estar equipado para entenderlo o comprar algún adaptador de Bluetooth por USB que no cuestan más de 5 euros. Precisamente, el de la imagen de la derecha, es el que tengo (un poco aparatoso, sí, pero tenéis adaptadores “mini”).

Instalamos las herramientas necesarias para que el Bluetooth pueda comunicarse con el resto de dispositivos Bluetooth:

# apt-get install bluez-utils

Si queremos hacer una comprobación de que nuestra interfaz de Bluetooth está funcionando, hacemos:

# hciconfig

Veremos algo similar a esto:

hci0:	Type: USB
	BD Address: 00:80:5A:46:9F:2D ACL MTU: 384:8 SCO MTU: 64:8
	UP RUNNING PSCAN ISCAN 
	RX bytes:1559579 acl:64293 sco:0 events:198 errors:0
	TX bytes:2114 acl:75 sco:0 commands:77 errors:0

Para este ejemplo, hci0 sería la interfaz de bluetooth.

Podemos seguir usando más programas incluidos en bluez-utils para, por ejemplo, buscar dispositivos que tengan activado el bluetooth:

tempwin@nzxt-trinity:~$ hcitool scan
Scanning ...
	00:1A:89:7B:86:F6	             paatRi...[!]
	00:1E:35:19:A0:72 	Nintendo RVL-CNT-01

¡Anda! Si ahí tenemos el mando de Wii 🙂 Bueno, y también podríamos mandarle cosillas a Patri 😛

wmgui

Wmgui nos permite comprobar el funcionamiento del Wiimote. No es más que una interfaz donde se muestran los controles del mando y se van encendiendo a medida que se pulsan y otras cosillas. Podemos lanzarlo desde un terminal simplemente tecleando $ wmgui. También lo tendréis en los menús de aplicaciones de vuestro gestor de escritorio favorito.

wmgui - Interfaz para comprobar el funcionamiento del Wiimote

Si vamos a FileConnect nos pedirá que pulsemos los botones 1 y 2 del mando para establecer la conexión entre el mando y el ordenador, igual que hacemos con la Wii. Sin soltarlos, pulsamos OK y, después de un rato, si todo va bien, podremos empezar a tocar botones del mando y ver cómo se iluminan en verde su correspondencia en la ventana del wmgui. Con este programa podemos hacer muchas más cosas: encender los LEDs azules del mando, hacer que vibre, etc. En el menú Settings podemos indicar de qué parte del mando queremos recibir información: Acc Data, IR Data, y Ext Data, para poder ver la información completa de los acelerómetros, del puntero y de las extensiones, respectivamente (por ejemplo, el Nunchuck). Y en el menú Controls, bueno, os lo dejo para que juguéis un poco 🙂

wminput

Venga, ahora voy a lo interesante, que seguro que después de tanta parrafada ya no os quedan uñas que comer 😛

Wminput es el programa que nos permitirá mover el ratón con el mando de Wii y que podamos usar sus botones para determinadas acciones. Es muy probable (aunque puede no ser necesario) que tengamos que dar los permisos necesarios para que un usuario del sistema pueda usar el driver uinput (¿te acuerdas de él?). Editamos el fichero, como root, /etc/udev/rules.d/91-permission.rules (lee el manual que puede que en tu distribución cambie el nombre del fichero) y añadimos al final:

KERNEL=="uinput", GROUP="nuestro-usuario"

Otra opción es escribir:

KERNEL=="uinput", MODE="0666"

Reiniciamos udev:

# /etc/init.d/udev restart

Y, ahora, vamos a hacer magia. En un terminal escribimos $ wminput -w. Hacemos lo que nos indica: pulsamos los botones 1 y 2 hasta que aparezca Ready. Si inclinamos el mando… ¡el puntero se mueve! Espera, pero esto es un timo, estarás pensando. Da igual a donde apunte, que no me hace caso. Efectivamente, sólo están funcionando los acelerómetros del mando, pero no los infrarrojos. Tranquilidad 🙂

Para que podamos usar los infrarrojos necesitamos la barra sensora de la Wii. Espera, ¿es que no hay más posibilidades? Por supuesto. Veamos, la barra sensora de la Wii no son más que dos grupos de LEDs situados a ambos lados que se iluminan y le dan una referencia al Wiimote y así poder saber dónde estamos apuntando. Esto lo podemos emular con dos puntos de luz que podemos conseguir comprando otros LEDs, con unas velas o mecheros, una linterna, etc. En mis experimentos he probado con la bombilla de la habitación (tiene que estar encendida, obviamente) y con un mechero. A diferencia de la barra sensora, el CWiid permite el uso de un sólo punto de luz, así que no tendréis que tener vuestro ordenador rodeado de velas como si de un santuario se tratase 😛

Cuando hayáis conseguido ese “punto de luz”, ejecutamos el wminput de esta otra manera:

$ wminput -w -c ir_ptr

Hacemos lo mismo de antes y cuando veamos Ready, empezad a mover el mando, ¿a que ahora sí es más preciso? Pues ya sabéis lo necesario para que el Wiimote funcione como en la Wii, pero con vuestra Debian.

Posibilidades del Wiimote

¡Qué bien! Soy capaz de mover el ratón con el Wiimote. Pero, ¿qué utilidad tiene esto?, pensarás. Quizás lo que no sabías es que se pueden configurar los botones del mando para que ejecuten una acción determinada. Imagínate, jugar al Half-Life con el Wiimote o usarlo de mando a distancia, cambiar los canales de televisión, reproducir música, etc. Parece ahora algo más útil, ¿verdad? 😉

Los archivos de configuración del wminput se guardan en /etc/cwiid/wminput/. Dentro de él podremos ver ejemplos de posibles configuraciones para los mandos de la Wii. Lo bueno de todo esto es que podemos crear nuestros propios ficheros de configuración para poder usar el Wiimote como nos dé la gana. Estos ficheros de configuración tienen el siguiente aspecto:

# Configuración para MPlayer

Wiimote.B       = KEY_ESC
Wiimote.A       = KEY_SPACE # Pausa
Wiimote.Up      = KEY_UP
Wiimote.Down    = KEY_DOWN
Wiimote.Left    = KEY_LEFT
Wiimote.Right   = KEY_RIGHT
Wiimote.Minus   = KEY_9 # Volume Down
Wiimote.Plus    = KEY_0 # Volume Up
Wiimote.Home    = KEY_F # Pantalla completa
Wiimote.1       = KEY_O # OSD

Como podemos ver, a la izquierda aparecen los nombres de los botones del Wiimote (descriptivos por sí mismos) y a la derecha la tecla que queremos emular. Por ejemplo, de acuerdo al fichero de arriba, si yo pulso el botón A del Wiimote, me pausará el vídeo que estoy reproduciendo con el MPlayer, que será lo mismo que pulsar la barra espaciadora del teclado.

Para usarlos, hay que llamar al wminput de esta otra manera:

$ wminput -w -c ruta/al/archivo/de/configuración

Para saber qué nombre tiene cada tecla o botón del ratón, podemos echar un vistazo al fichero /usr/include/linux/input.h, se entiende perfectamente qué nombre se le da a cada tecla o evento del ratón. Os voy a poner algunos ejemplos más, además del que uso para el MPlayer:

Para los emuladores de SNES, como snes9x y ZSNES:

# Configuración SNES

Wiimote.A       = KEY_X
Wiimote.B       = KEY_S
Wiimote.Up      = KEY_LEFT
Wiimote.Down    = KEY_RIGHT
Wiimote.Left    = KEY_DOWN
Wiimote.Right   = KEY_UP
Wiimote.Minus   = KEY_TAB
Wiimote.Plus    = KEY_ENTER
Wiimote.Home    = KEY_ESC
Wiimote.1       = KEY_C
Wiimote.2       = KEY_D

Para el emulador de recreativas por excelencia, MAME:

# Configuración xMAME

Wiimote.A       = KEY_P         # Pausa
Wiimote.B       = KEY_5         # Credit
Wiimote.Up      = KEY_LEFT
Wiimote.Down    = KEY_RIGHT
Wiimote.Left    = KEY_DOWN
Wiimote.Right   = KEY_UP
Wiimote.Minus   = KEY_2         # Player 2
Wiimote.Plus    = KEY_1         # Start
Wiimote.Home    = KEY_ESC       # Salir
Wiimote.1       = KEY_LEFTCTRL  # Ctrl
Wiimote.2       = KEY_LEFTALT   # Alt

Espero que se vaya entendiendo la idea. Por supuesto, no sólo estamos limitados al Wiimote, también podemos configurar el Nunchuck o el mando clásico de Wii. El límite es tu imaginación 🙂

Enlaces relacionados

DVD Backup Launcher para Wii

Hace muy poco, publicamos una guía sobre cómo usar el DVD Backup Loader de Waninkoko para cargar copias de seguridad en Wii sin chip. Hablábamos de que se trataba de una versión filtrada (supuestamente) sin el consentimiento del autor y que, debido a esto, el propio creador había abandonado el proyecto tras su enfado.

Bien, pues la buena noticia es que otro personaje llamado Wiigator se ha sacado de la manga ¡su propio cargador de DVDs para Wii! Y lo mejor de todo es que es código abierto, así que, si algún día le da por abandonar el proyecto, el código estará disponible para todo aquel que quiera retomarlo, mejorarlo, etc.

Esta guía es casi exacta a la del DVD Backup Loader, pues el método de instalación es casi igual. De todos modos, aquí queda escrita:

Instalar el Canal Homebrew

Para no repetirnos, es mejor que leais el tutorial sobre cómo instalarlo. Es muy importante también que aprendáis cómo meter y cargar aplicaciones en la Wii a través de dicho canal.

Instalar el wad del Custom IOS

Para ello necesitáis tener el cIOS (ojo, esta es una versión arreglada del antiguo cIOS) en la carpeta wad situada en la raíz de la tarjeta SD. A continuación cargamos el WAD Manager desde el Homebrew Channel de la manera habitual. Una vez dentro, aparecerá una pantalla con letras blancas en fondo negro. Pulsamos el botón A. Elegimos como dispositivo fuente el slot SD (pulsamos A). Si el cIOS está en el lugar correcto debería aparecernos debajo de 'Available files on the device'. Seleccionamos cios_fix.wad (probablemente ya está marcado) y pulsamos + para instalar y A para aceptar. Reiniciamos la consola con HOME.

Instalar el Custom IOS

Volvemos al Homebrew Channel y lanzamos esta vez el DVDX que tendríamos que haber copiado ya a la SD (remember: una subcarpeta dentro de la carpeta apps en la raíz de la SD y cambiándole el nombre a boot.dol). En el menú que aparece elegimos Advanced Install. A continuación en el apartado IOS elegimos (mediante la cruceta digital) IOS249 y le damos a Install. Reiniciamos la consola.

Modificar la ISO del juego

AVISO: Se está trabajando en una próxima versión que leerá ISOs sin necesidad de hacer este proceso, así que conservad también la copia “virgen”, por si acaso.

Este paso requiere la common-key de Wii que podéis descargar desde aquí y el programa Backup Creator. Wiigator tiene su propio programa, llamado ExtractPartition (para Windows, Mac y Linux), podéis usar los dos que sirven para lo mismo.

Vamos con el uso del Backup Creator en sistemas Windows:

La common-key (archivo key.bin), el Backup Creator (backup-creator.exe) y la ISO de Wii (con un nombre ‘normal’, i.e. sin caracteres raros ni espacios) han de estar en el mismo directorio. Hecho esto, abrimos una ventana de ‘DOS’ haciendo Inicio → Ejecutar → ‘cmd (sin las comillas) y nos movemos al directorio donde tengamos todo (mediante cd). Una vez dentro, escribimos backup-creator.exe [nombredelaiso], donde [nombredelaiso] es el nombre del fichero ISO en cuestión. Tras unos minutos, aparecerá en el mismo lugar una nueva ISO, llamada partition.iso que es la que tendremos que grabar.

En sistemas GNU/Linux:

Apoyándonos en el uso del WINE (y siguiendo las indicaciones de más arriba), tecleamos:

tempwin@nzxt-trinity:~/games/wii/$ wine backup-creator.exe nomoreheroes.iso
[+] Creating backup ISO, please wait...
    ISO size: 4219.625 MB

    Backup ISO created successfully!

[+] Press any key to exit...

Grabar partition.iso

Grabar la imagen resultante del paso anterior con vuestro programa favorito. Personalmente, he usado K3b y ha funcionado perfectamente, pero debería de valer cualquiera de los que uséis en vuestra plataforma (Alcohol, Nero, etc.). Un tema más delicado es qué medio de almacenamiento usar y a qué velocidad grabar. Arxel comenta que no es buena idea usar DVD+R (al parecer si cambias el booktype funciona) ya que el 100% de sus pruebas han fallado. Con DVD-R ninguno hemos tenido problemas. Yo uso Verbatim y puedo grabarlos a 8x.

Lanzar el DVD Backup Launcher

De nuevo en el Homebrew Channel, y tras haber copiado el archivo Backup Launcher a la SD, lanzamos el Backup Launcher. Aparecerá un menú bastante auto explicativo. No queda más que meter el DVD, tocar algunas opciones (si queremos), pulsamos A y empezará a cargar.

Jugar 😉

Hay que decir que este método hace que el lector funcione a velocidad 3x (cuando lo normal es 6x), por lo que los vídeos irán a saltos y más lentos de lo normal y las cargas serán algo más largas, lo cual no suele ser inconveniente para disfrutar de la mayoría de los títulos.

Como ya avisaba, se está trabajando en una versión 0.3 que promete leer ISOs tanto modificadas (con programas como Backup Creator) como sin modificar, además de mejorar la velocidad de lectura. Una muestra aquí (vídeo Flash). Estén atentos a sus pantallas 🙂

Lista de compatibilidad

A continuación podréis ver una tabla donde se muestran los resultados de nuestros experimentos. Las pruebas han sido realizadas con tres Wii, con versiones del firmware diferentes, para que veais que no depende.

Lista de compatibilidad del DVD Backup Loader/Launcher para Wii [ 26/10/2008 ]
Título Región ISO v.DBL Soporte/Software Comentarios
Bleach: The Shattered Battle PAL Filtrada Waninkoko DVD-R Fujifilm a 2x / Nero Jugable, pero adolece de gran cantidad de cargas de bastante duración.
Mario & Sonic En Los Juegos Olímpicos PAL Original Ciper Launcher 0.2 DVD-R TDK 1-16x a 2x / ImgBurn Perfectamente jugable aunque la primera carga y las que hay antes de cada evento se hacen bastante largas.
Mario Party 8 PAL Ciper Launcher 0.2 DVD-R TDK 1-16x a 4x / ImgBurn Perfectamente jugable, a pesar de algunas cargas lentas al iniciar y antes de cada minijuego
Mario Kart Wii PAL Original – Filtrada Waninkoko
– WiiGator Launcher 0.1 + Fixed cIOS
DVD-R TDK 1-16x a 2x / Nero – Se cuelga después de la primera carrera en el modo Grand Prix. Se cuelga después de elegir circuito en el modo Online. El resto de modos parecen funcionar.
– El modo Grand Prix funciona totalmente. El Online pierde la conexión antes de empezar. El resto sigue funcionando.
No More Heroes NTSC Scrubbed Filtrada Waninkoko DVD-R Verbatim a 2x / K3b Jugable. Cargas lentas e interrupciones en las escenas de vídeo a causa de la limitación de la velocidad de lectura.
Pro Evolution Soccer 2008 PAL Scrubbed Filtrada Waninkoko DVD-R TDK 1-16x a 2x / ImgBurn
DVD-R Verbatim a 8x / K3b
Perfectamente jugable; el vídeo de la intro va lento y a saltos.
Red Steel PAL Filtrada Waninkoko DVD-R DataMax a 2x / Nero Injugable. Se queda colgado en la primera pantalla al cargar.
Super Mario Galaxy PAL Wiigator Launcher 0.1 + fixed cIOS Funciona con los problemas típicos de los cargadores. Es necesario usar una partida guardada para saltarse la zona de la plaza del inicio del juego, donde se queda colgado.
The Legend of Zelda: The Twilight Princess PAL Filtrada Waninkoko DVD-R Verbatim a 8x / K3b Se juega perfectamente a pesar de los cortes en el audio y las cargas debidas a la baja velocidad de lectura

*More as it comes…*

Canal homebrew y Twilight Hack

Introducción

Desde hace pocos meses existe una forma relativamente sencilla de ejecutar aplicaciones caseras (homebrew), hechas por aficionados, en nuestra Wii, sin necesidad de ponerle chip alguno o modificarla. Nos bastará con tener una tarjeta SD, el juego de Wii The Legend of Zelda: Twilight Princess y, obviamente, una Wii 🙂

La fórmula de la felicidad

Twilight Hack

Así se conoce al aprovechamiento de un “fallo” en el juego de Wii The Legend of Zelda: Twilight Princess. Poniendo un nombre lo suficientemente largo al caballo Epona, se consigue un desbordamiento de búfer y esto ha permitido que ciertos hackers consiguiesen ejecutar código desde una tarjeta SD. De esta manera, podemos ejecutar software casero donde encontraremos desde un clon de Tetris hasta ¡el Monkey Island!

The Homebrew Channel

Hasta la aparición de este “canal”, si queríamos ejecutar programas caseros en la Wii necesitábamos realizar el Twilight Hack cada vez. Un fastidio. Eso se acabó 🙂 Gracias a este canal, sólo tendremos que hacer el hack una vez y devolver el juego del Zelda a nuestro amigo/videoclub 😛 El canal Homebrew se instala como un canal más en la Wii (como el del tiempo, el de opiniones, etc.) y desde él podemos acceder al contenido de la tarjeta SD y lanzar los programas contenidos en ella.

Manos a la obra

Necesitamos descargar:

Nos hace falta una tarjeta SD (no valen las SDHC, así que estamos limitados a las de 2GB como mucho). Hay que formatearlas en FAT. Muchas ya vienen así, pero si no es el caso, podemos usar el GParted (en GNU/Linux) o, en Windows, pulsar con el botón derecho sobre el icono de la tarjeta y seleccionar Formatear. En MacOS X podemos usar la Utilidad de discos (Aplicaciones → Utilidades → Utilidad de discos). ¿Algún sistema operativo más? 😛

En la raíz de la SD incluimos:

  • La carpeta private (contenida en el Twilight Hack)
  • El archivo boot.elf y la carpeta wiiload (contenidas en el archivo del Homebrew Channel)

Manos a la Wii

Importante: Si tenías una partida guardada del Zelda, querrás seguir conservándola, ¿verdad? Ya que al copiar el Twilight Hack la sobreescribirá. Para hacer copia de tu partida en la Wii a otra SD:

Introducir tarjeta SD en la Wii

  • Encender Wii
  • Opciones de Wii → Gestión de Datos → Datos guardados → Wii
  • Seleccionamos con el botón A nuestra partida
  • Copiar -> Sí
  • Volvemos al menú

Bien, ahora metemos la tarjeta SD en la que habíamos introducido los archivos de más arriba. Procedemos a copiar el Twilight Hack a la memoria de la Wii:

  • Opciones de Wii → Gestión de Datos → Datos guardados → Wii → Tarjeta SD
  • Seleccionamos con el botón A el archivo que necesitemos dependiendo de la versión del Twilight Princess que tengamos (europea, americana, japonesa).
  • Copiar → Sí
  • Volvemos al menú

Puede que sea necesario reiniciar la consola.

Con la SD insertada, metemos el Twilight Princess original (si tenéis la consola con chip, os vale también una copia del juego). Hay que asegurarse de tener enchufado el Nunchuk al Remote durante este proceso. Y lo lanzamos como si fuéramos a jugar. Seleccionamos un “diario de viaje”, el llamado “Twilight Hack”.

Bien, estamos en el juego. Tenemos a un hombre delante de nosotros. Para activar el hack tenemos dos opciones: hablar con ese hombre o caminar en dirección contraria (tardas menos en hacer esto último). Y… ¡magia! Aparecerá un texto que va pasando y finalmente nos pedirá confirmación para instalar el Homebrew Channel. Basta con pulsar el botón 1 del mando las veces necesarias para aceptar. Al terminar, y volver al menú de Wii, tendremos un nuevo canal: el Homebrew Channel. Ya no necesitaremos el Zelda nunca más 🙂

Ejecutar programas desde el Homebrew Channel

En esta web tenemos un montón de aplicaciones (emuladores, reproductores de audio y vídeo, juegos…). Sólo tenemos que meter cada aplicación dentro de la carpeta apps (que tenemos que crear dentro de la SD) y listo. Por ejemplo, si queremos instalar la aplicación MplayerWii, descargaremos el archivo, lo meteremos dentro de la carpeta apps dándole algún nombre, por ejemplo MPlayerWii, así tendríamos /apps/MPlayerWii/, y dentro de esta última carpeta tendremos los ejecutables, que son archivos *.dol o *.elf. Es importante que se llamen boot.dol o boot.elf, si no, el canal no lo verá. Al entrar de nuevo en el Homebrew Channel lo tendremos accesible.

¿Qué juegos/aplicaciones interesantes nos podemos encontrar? Una pequeña muestra:

  • Emulador de Mega Drive
  • Emulador de SNES
  • Emulador de NES
  • Reproductores de música y vídeo
  • Emulador de MAME (probadlo sólo si tenéis muuucha paciencia)
  • Servidor de FTP
  • Examinador de archivos
  • etc.

Hablaremos de aplicaciones interesantes en futuros artículos 🙂

Enlaces relacionados

nullDC en GNU/Linux con WINE

Dreamcast es una de las consolas a las que más cariño tengo. Todavía la conservo, pero el lector ya está en las últimas y cuesta un mundo que lea algún juego. Desde hace tiempo le sigo la pista a la emulación de Dreamcast, pero todo lo que salía era para Windows. Desde hace no mucho, tenemos un prometedor emulador para GNU/Linux, lxdream, pero está en fase muy temprana de desarrollo y la lista de compatibilidad es muy reducida.

Como estos días ando probando bastante WINE para poder abandonar Cedega a la hora de jugar a videojuegos de Windows en GNU/Linux, me pregunté: hey, ¿y si probamos nullDC con WINE? Pues lee, lee, que funciona 🙂

nullDC: El emulador

Se trata de un emulador gratuito para Windows que tiene poco más de un año de vida. La lista de compatibilidad es bastante grande, casi como la del Chankast (emulador de Dreamcast también para Windows) aunque la emulación parece más conseguida.

Podemos descargarlo desde su web oficial. Lo que está escrito en este artículo ha sido probado con la versión 1.0.0 beta 1.6.

Lo descomprimimos donde queramos (debemos tener instalado el paquete p7zip).

Necesitamos la bios de la Dreamcast que podéis descargar desde aquí [ ZIP – 1 MB ]. Debemos meter los dos archivos (dc_bios.bin y dc_flash.bin) en la carpeta Data.

Una copa de vino

La instalación de Wine desde repositorios es muy sencilla. Si tienes la suerte de tener instalada alguna distribución basada en Debian, te basta con escribir en un terminal: # apt-get install wine.

Ahora necesitaremos varias bibliotecas que usa nullDC. Las últimas de Visual C++ (msvcp80.dll y msvcr80.dll) y de DirectX 9 (d3dx9_35.dll). Podéis buscarlas por la red y luego colocarlas en ~/.wine/drive_c/windows/system32. Pero hay una forma más fácil y automática de hacer todo eso: winetricks. Se trata de un script que se ocupa de descargar y configurar las bibliotecas más populares necesarias para la ejecución de ciertos programas de Windows en GNU/Linux con WINE.

Nos colocamos en un directorio que queramos y, desde un terminal, descargamos el script mediante: $ wget http://www.kegel.com/wine/winetricks. Y ahora lo ejecutamos (hay que tener conexión a Internet, obviamente) pasándole los paquetes que necesitamos: $ sh winetricks directx9 vcrun2005. Lo próximo que hay que hacer es aceptar en las ventanas que se abran y listo, quedará todo instalado y configurado 🙂

WINE + nullDC

Abrimos un terminal y, en la carpeta donde hemos descomprimido nullDC, escribimos: $ wine nullDC_100b1_6.exe. ¿Esperabas algo más? 🙂

Puedes descargarte juegos para Dreamcast hechos por fans desde esta web. Para juegos comerciales, redes P2P. Que sí, que funcionan:

Daytona USA 2001

Soul Calibur

Sonic Adventure

Texturas de alta resolución en Mupen64Plus

Mupen64Plus es un emulador de la consola Nintendo64 para GNU/Linux. Basado en parte del código original de Mupen64 (otro emulador para Linux, pero sin actualizaciones desde 2005), pero con varias mejoras y buen ritmo de desarrollo. Entre las últimas características, destaca la posibilidad de cargar texturas de alta resolución con el plugin de vídeo de Rice (Rice’s video plugin).

Los packs de texturas de alta resolución son una colección de imágenes de mayor calidad que permite mejorar el aspecto del juego o incluso realizar cambios de aspecto en el juego original (como veremos a lo largo del artículo). Es una labor desinteresada de fans por lo que no esperéis encontrar siempre gran calidad, acabado o para todos los juegos.

El emulador lo podemos descargar desde su web oficial. Podemos bajar los binarios (ejecutables) o el código fuente para compilarlo, pero esto último será carne de un nuevo artículo. Probad con los binarios. Descomprimimos su contenido:
$unzip Mupen64Plus-1-4-bin-32.zip. Y obtendremos una carpeta con una serie de ficheros:

$ ls
config/  fonts/  install.sh  LICENCE.TXT  plugins/  RELEASE
doc/     icons/  lang/        mupen64plus  README   uninstall.sh

mupen64plus es el archivo ejecutable, el emulador en cuestión. Podemos ejecutarlo desde consola, en ese mismo directorio, con $ ./mupen64plus.

Configurando el plugin de vídeo de Rice

En la ventana del emulador, vamos a Options → Configure. En la ventana de configuración, vamos a la pestaña Plugins y en los plugins de vídeo (arriba del todo) elegimos Rice’s Video Plugin.

Ventana de configuración de plugins de Mupen64Plus

Luego pulsamos el botón Config y marcamos la opción Load hi-res textures if available. Y OK, OK.

Ventana de configuración del plugin de vídeo de Rice, en Mupen64Plus

Guardando las texturas

Buscando por internet encontraréis varios packs. Os pongo aquí una web (cortesía de Arxel) donde encontraréis unas cuantas. Mupen64Plus, al lanzarlo por primera vez, creará un directorio oculto llamado mupen64plus en el home del usuario donde se guarda la configuración de los plugins, emulador, capturas, etc. Aquí tenemos que crear un directorio llamado hires_texture ($mkdir ~/.mupen64plus/hires_texture/) y dentro de él crearemos un directorio por cada juego del que dispongamos el pack de texturas.

Seguro que os he liado, así que vamos con un caso concreto. Si ejecutamos el emulador desde la terminal y lanzamos alguna rom, veremos en el terminal cierta información. Entre todo el texto, está el nombre del juego. Exactamente ese nombre es el que tiene que tener la carpeta donde almacenaremos sus texturas de alta resolución.

Mensajes en la terminal del Mupen64Plus

Bajamos el pack de texturas retro de Super Mario 64 desde aquí. Creamos la carpeta SUPER MARIO 64 dentro de .mupen64plus, de tal modo que la ruta absoluta sería: /home/usuario/.mupen64plus/hires_texture/SUPER MARIO 64/ Allí descomprimimos el archivo que nos acabamos de bajar.

Ahora lanzamos de nuevo el Super Mario 64 y veremos cómo se van cargando las nuevas texturas:

Antes:

Super Mario 64 en Mupen64Plus con el plugin de vídeo de Rice

Después:

Super Mario 64 en Mupen64Plus con el plugin de vídeo de Rice y texturas retro de Risio

En próximos días añadiremos enlaces a varios packs de texturas. ¡Permanezcan atentos a sus pantallas!

Splitvt, divide la consola

Inauguramos nueva sección: Terminalitis. Bajo esta categoría se almacenarán artículos sobre trucos o programas que sacan partido de la bendita línea de comandos. Programas sólo para consola. Para enfermos de las “no ventanas” 😛

Como primera estrella, hablaremos de splitvt.

Qué es

splitvt es un programa que permite tener abiertas dos consolas, dos intérpretes de comandos, en una misma ventana. Para ello, divide la ventana actual (o terminal) en dos partes con una consola en la parte superior y otra debajo:

Splitvt

Es muy útil cuando estamos en entornos sin servidor gráfico y queremos modificar algún archivo mientras consultamos otro. Por ejemplo, programando o editando ficheros de configuración mientras leemos el manual.

Instalación

Vaya usted a su gestor de paquetes favoritos e instálelo desde ahí. ¿Usa Debian o derivados? $sudo apt-get install splitvt y listo.

Cómo se usa

Desde un terminal tecleamos splitvt y la ventana se dividirá en dos. Será como si tuviésemos dos terminales abiertos. Para pasar de uno a otro, usamos la combinación de teclas Ctrl+w.

Aquí tenemos un problema con esta combinación de teclado, ya que en el editor nano sirve para realizar búsquedas. Con lo cual es buen momento para aprender a usar vi 😉

Con la combinación Ctrl+o, entraremos en modo comando. En el manual ($man splitvt) podéis encontrar todas las opciones. Aquí destacaremos un par de ellas:

Ctrl+o y después x permite bloquear las consolas con una contraseña. Nos pedirá que introduzcamos una contraseña dos veces y la ventana quedará bloqueada hasta que introduzcamos la contraseña correcta.

Ctrl+o y después q permite cerrar splitvt de forma rápida (en lugar de teclear exit en cada terminal hasta salir).

Split! 😛

Conversión de vídeos para iPod en Debian

Atención porque empieza, lo que seguro será, una larga serie de tutoriales dedicados a productos de la manzanita. ¿Por qué? Arxel ya presumía de su iPod Touch y yo tengo en mis manos un iPod Classic (si es que no me lo merezco). Como nos gusta comentar y compartir aquellas cosas que vamos aprendiendo y nos resultan útiles, —y sobre todo que hayamos probado por nosotros mismos— aquí nos tendréis dándoos la vara.

Me centraré, en este post, exclusivamente en el iPod Classic, que es el que tengo. Para el iPod Nano nhttp://nand-magazine.net/2008/01/02/conversion-de-videos-para-ipod-en-debian/#comment-4877o varía. En cuanto al iPod Touch, le pediremos a Arxel que nos haga una guía 😉

Vídeo en el iPod

The IT Crowd on iPod Classic
Los modelos de iPod que reproducen vídeo (desde los de quinta generación) soportan dos códecs de vídeo: H.264 y MPEG-4 en tres tipos de contenedores (o formatos): .m4v, .mp4 y .mov. Muchos de los vídeos que nos encontramos por la red o series y películas que nos descargarmos están en .avi y comprimidos con DivX o XviD, lo que implica que tenemos que convertirlos al formato adecuado para que el iPod los pueda reproducir.

NOTA: técnicamente, el iPod soporta XviD, pero no es lo más recomendable (por calidad, sobre todo). Así que nos centraremos en los otros dos códecs de vídeo.

El formato de audio también es un tanto especial. No es el popular MP3, sino AAC (ojo, que es incluso algo mejor que el primero).

En resumen, los vídeos que vayan a ir a nuestro iPod deben cumplir las siguientes condiciones:

  • Vídeo: H.264 ó MPEG-4
  • Audio: AAC

Hay que tener en cuenta ciertas limitaciones en cuanto a audio y vídeo. Si nos pasamos, puede que el iPod no reproduzca el vídeo o el sonido:

  • Vídeo
    • H.264: hasta 768 kbps, 320×240, 30 fotogramas por segundo (fps), perfil de línea de base hasta el Nivel 1.3.
    • H.264: hasta 1.5 Mbps, 640×480, 30 fps, perfil de línea de base de baja complejidad
    • MPEG-4: hasta 2,5 Mb/s, 640×480, 30 fps, Perfil simple.
  • Audio: hasta 160 kb/s, 48000 Hz y audio estéreo

Con lo cual sería tontería codificar un vídeo a más de 30 fotogramas por segundo, con 192 kb/s de audio y a una resolución de 800×600. El iPod lo truncará a su límite. Así que está bien tener estas limitaciones en cuenta porque podemos usarlas para conseguir vídeos de tamaño mucho menor o sencillamente optimizados.

ffmpeg: el conversor

En GNU/Linux tenemos una auténtica navaja suiza. El ffmpeg nos deja hacer de todo (en lo que a vídeo se refiere). Aunque tenemos dos problemas: se usa por consola (¿esto es un problema?) y los paquetes para Debian no están compilados con soporte para AAC, XviD o H.264 [ Aviso para usuarios de Debian lenny: El paquete de ffmpeg para Debian lenny tiene habilitado este soporte, así que bastará con que instaléis el binario vía apt o aptitude ]. ¿Qué significa esto? Que no podemos usarlo —tal como viene— para convertir nuestros vídeos a “formato iPod”. ¿Entonces qué hacemos? ¿No hay más opciones? Podríamos usar el mencoder (que es del estilo de ffmpeg, pero a mí no me gusta tanto :-P) o pasarnos a otro sistema operativo (¡NOOOO!). Debo confesar que estuve haciendo pruebas de conversiones en un Windows con un programa gratuito y bastante sencillo llamado Videora, pero me desesperó, así que me volví a mi Debian y me dije: “Vamos a compilar ffmpeg”.

Compilando ffmpeg con soporte para H.264, AAC, XviD…

Espero que nadie se haya asustado al escuchar la palabra “compilar”. En realidad no es ninguna experiencia traumática. Fue más sencillo de lo que esperaba. Venga, comencemos.

Necesitamos el código fuente del ffmpeg que descargaremos vía subversion para hacernos con la última versión. (Para instalar subversion: #apt-get install subversion). Nos situamos en el directorio donde almacenaremos el código y lo descargamos tal que así: svn checkout svn://svn.mplayerhq.hu/ffmpeg/trunk ffmpeg. Tendremos una carpeta llamada ffmpeg con un montón de archivos y directorios.

Antes de seguir, tenemos que instalar las siguientes bibliotecas y el compilador de C:

#apt-get install liblame-dev libfaad2-dev libfaac-dev libxvidcore4-dev libvorbis-dev liba52-dev libdc1394-dev libgsm-dev libx264-dev gcc

Ahora, y dentro del directorio de ffmpeg, configuraremos el archivo configure (valga la redundancia):

./configure --enable-gpl --enable-pp --enable-libvorbis --enable-liba52 --enable-libdc1394 --enable-libgsm --disable-debug --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-libxvid --enable-pthreads --enable-libx264

Ejecutamos el archivo Makefile: $make.

E instalamos: #make install.

Después de un rato, si todo ha ido bien, tendremos el binario en la carpeta /usr/local/bin (salvo que configurárais otra ruta manualmente).

Podemos hacer una prueba para comprobar si se ha compilado con soporte para los codecs que nos interesan. Así que ejecutáis ffmpeg sin parámetros y buscáis en las primeras líneas enable-biblioteca. Yo obtengo esta salida:

tempwin@debianbox:~/packages/ffmpeg$ ffmpeg
FFmpeg version SVN-r11352, Copyright (c) 2000-2007 Fabrice Bellard, et al.
  configuration: --enable-gpl --enable-pp --enable-libvorbis --enable-liba52 --enable-libdc1394 --enable-libgsm --disable-debug --enable-libmp3lame --enable-libfaad --enable-libfaac --enable-libxvid --enable-pthreads --enable-libx264
  libavutil version: 49.6.0
  libavcodec version: 51.49.0
  libavformat version: 52.3.0
  built on Dec 29 2007 22:55:01, gcc: 4.2.3 20071123 (prerelease) (Debian 4.2.2-4)
usage: ffmpeg [[infile options] -i infile]... {[outfile options] outfile}...
Hyper fast Audio and Video encoder

H.264 vs MPEG-4

Por si alguien lo había notado, instalamos la biblioteca libx264 y no libh264. ¿Por qué? Bueno, libh264 no existe 😛 El códec X.264 es una implementación libre de la especificación del códec H.264, por ello es la que se usa en sistemas GNU/Linux.

Lo bueno que tiene H.264 frente a MPEG-4 es que consigue vídeos de alta calidad con tamaños menores que MPEG-4. Pero tiene inconvenientes. Es bastante lento y hace un uso más intensivo de la CPU. Esto se traduce en más horas de transcodificación. Además, los parámetros que hay que pasarle a ffmpeg son muchos más pues hay que controlar más aspectos. Eso sí, se nota en el resultado. Para vídeos de resoluciones grandes (más de 640×480), es mejor MPEG-4. En los ejemplos de este post usaremos ambos. Cambiar entre uno y otro es muy sencillo, así hacéis pruebas y os quedáis con el que más os convenza.

Convirtiendo vídeos a formato iPod

Desde luego es más corto decir “formato iPod” que vídeo codificado usando H.264 ó MPEG-4 con sonido comprimido en AAC 😛

Yo uso ffmpeg con los siguientes parámetros:

MPEG-4

No lo he probado a fondo porque casi no lo uso.

ffmpeg -i video_origen.avi -f mp4 -vcodec mpeg4  -b 768kb -qmin 3 -qmax 5 -bufsize 1M -acodec libfaac -ab 96kb -s 320x240 -aspect 4:3 -title "Título del vídeo" video_resultante.mp4

Sobre la resolución (-s) y la proporción (-aspect), lee el final del post (importante).

MPEG-4 Panorámico

Cuando el vídeo original tiene un aspecto 16:9. Cambiamos la resolución (-s) a 320×192 (después de muchas pruebas, he resuelto que es la mejor para el iPod, en cuanto a vídeos panorámicos se refiere) y el aspecto (-aspect) a 16:9. A veces, indicar el aspecto no es necesario, tan sólo la resolución.

ffmpeg -i video_origen.avi -f mp4 -vcodec mpeg4  -b 768kb -qmin 3 -qmax 5 -bufsize 1M -acodec libfaac -ab 96kb -s 320x192 -aspect 16:9 -title "Título del vídeo" video_resultante.avi.mp4

H.264

Es el que suelo usar. En dos pases (tarda más, pero el resultado es muchísimo mejor).

ffmpeg -y -i video_origen.avi.avi -an -v 1 -threads auto -vcodec libx264 -b 256k -bt 175k -refs 1 -loop 1 -deblockalpha 0 -deblockbeta 0 -parti4x4 1 -partp8x8 1 -me full -subq 1 -me_range 21 -chroma 1 -slice 2 -bf 0 -level 30 -g 300 -keyint_min 30 -sc_threshold 40 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.7 -qmax 51 -qdiff 4 -i_qfactor 0.71428572 -maxrate 768k -bufsize 2M -cmp 1 -s 320x240 -aspect 4:3 -f mp4 -pass 1 /dev/null

Segunda pasada:

ffmpeg -y -i input_file.avi -v 1 -threads auto -vcodec libx264 -b 256k -bt 175k -refs 1 -loop 1 -deblockalpha 0 -deblockbeta 0 -parti4x4 1 -partp8x8 1 -me full -subq 6 -me_range 21 -chroma 1 -slice 2 -bf 0 -level 30 -g 300 -keyint_min 30 -sc_threshold 40 -rc_eq 'blurCplx^(1-qComp)' -qcomp 0.7 -qmax 51 -qdiff 4 -i_qfactor 0.71428572 -maxrate 768k -bufsize 2M -cmp 1 -s 320x240 -aspect 4:3 -acodec libfaac -ab 96k -ar 44100 -ac 2 -f mp4 -pass 2 -title "Título del vídeo" video_resultante.mp4

H.264 Panorámico

Igual que con MPEG-4: Cambiamos la resolución por 320×192 y el aspecto por 16:9

Algunas consideraciones

Es importante conocer las propiedades del vídeo original antes de hacer la conversión. Si la fuente original tiene una calidad de audio muy pobre, pocos fotogramas por segundo y un bitrate bajo, de nada va a servir que aumentemos la calidad pues como mucho tendrá la misma que el original. A lo que me refiero es a si, en el vídeo original, el audio fue grabado a 64k, es tontería pasarle, a la hora de convertirlo, 96k. Sin embargo, al revés podemos usarlo para hacer una conversión perfecta y/o más comprimida.

Podéis mejorar la calidad del sonido (-ab), así como la frecuencia de muestreo (-ar), dándole valores más elevados. En los ejemplos está puesto a 96k y se escucha muy bien. Más calidad se traduce en más tamaño, así que tenedlo en cuenta. Lo mismo podéis hacer con la calidad del vídeo (argumento -b). Os recuerdo que todo esto teniendo presente las limitaciones del vídeo original.

Si queréis optimizar vuestros vídeos para que puedan verse con buena calidad en una televisión, ajustad la resolución a 640×480 y el bitrate de media (-b) a 500k.

Proporciones de pantallaPara que los vídeos en formato panorámico se vean bien en el iPod hay que ir al menú VídeosAjustesAjustar a pantalla y desactivar esta opción, de lo contrario, el iPod trataría de ajustar el vídeo para que ocupe todo el ancho y la altura de la pantalla posible, traduciéndose en imágenes alargadas y estrechas. Echando un vistazo a la imagen de la derecha, tenéis un ejemplo de lo os digo.

Para los vídeos que tengan una resolución panorámica, pero no sigan ningún estándar (16:9, 2.39:1, 1.85:1, etc.), deberemos ajustar la altura a la medida óptima y que sea divisible por 16. A la anchura no tenemos que hacerle nada porque 320 es divisible por 16 (es decir, su resto es 0). Un ejemplo: Si el vídeo original es de 608×256, le correspondería una resolución de 320×134 (basta hacer una regla de tres), pero 134 no es divisible por 16. El valor más cercano, divisible por 16, por abajo sería 128, y por arriba 144. No son demasiados píxeles de diferencia, así que recomiendo coger el valor más alto (las bandas negras serán más finas). Ah, ¿que por qué el capricho de que tenga que ser divisible por 16? El códec comprime el vídeo bloques de 16×16 píxeles. Podrías indicarle una altura que no fuera divisible por este número, pero la compresión afectaría más a la calidad.

Según la versión de ffmpeg que tengas, para indicar el códec de vídeo y audio a usar, puede variar el nombre. En la versión que tengo yo para usar el códec AAC, lo indico con -acodec libfaac; pero he visto otra versiones en las que basta con -acodec aac. Lo mismo pasa con -vcodec libx264; hay versiones que es tan sencillo como -vcodec h264. Sabréis cuál usar si al escribirlas, os devuelve un error del tipo Unknown encoder 'aac' o Unknown enconder 'h264'.

Los valores de vídeo y audio son también válidos para el iPod Nano, pues también tiene la misma resolución de pantalla que el Classic.

Sobre las relaciones de aspecto (o proporciones), es importante conocerlas para obtener vídeos lo más fieles al original (acordaos de la divisibilidad por 16):

  • 4:3 (TV): 320×240
  • 16:9 (TV panorámica): 320×176, 320×192
  • 1.85:1 (Panorámica estándar): 320×160, 320×176
  • 2.39:1 (CinemaScope o Panavision): 320×128, 320×144

Para acabar, unos datos para que veáis los resultados:

  • Vídeo Original
    • Audio: VBR MP3, 128kbps, 48000Hz
    • Vídeo: 608×256, 25 fps, DivX 5, 1hh:45mm:48ss
    • Tamaño: 699,8MB
  • Vídeo iPod
    • Audio: AAC, 128kbps, 48000 Hz
    • Vídeo: 320×144, 25 fps, H264
    • Tamaño: 282,0 MB

Lo sé. Un artículo denso y mal estructurado porque sigo añadiendo cosas según hago avances. De todos modos, la idea es reunir todo tipo de información sobre la codificación de vídeos para el iPod. ¡Que aproveche!

Convertir DjVu a PDF en Linux

Puede que sea la primera vez que oyes hablar de este formato, DjVu. Sin embargo, es más que probable que cada vez sea más popular. ¿Pero qué es? DjVu es un formato diseñado para almacenar imágenes escaneadas, por lo que se está convirtiendo en el ideal para la distribución de libros escaneados por la red. Además, es un formato de fichero abierto lo que implica que cualquiera tiene acceso a su especificación y puede crear programas para visualizar estos archivos, crearlos, etc. De hecho, hay una implementación de código abierto llamada DjVuLibre.

Bueno, vamos a lo que nos interesa, que para hablar más detenidamente de DjVu vs PDF ya habrá otra ocasión. Hasta la fecha, no hay un programa para GNU/Linux que permita convertir de DjVu a PDF directamente, pero tampoco es que el método que voy a mostrar aquí (fruto de pensar 0.2 segundos) sea excesivamente complicado. Empecemos.

Abrimos el archivo .djvu que queremos convertir con el Evince, un visor de documentos bastante completo (a instalarlo si no lo tienes, que está disponible para cualquiera distribución). Ahora pulsamos sobre ArchivoImprimir y, en la ventana de impresión, seleccionamos Imprimir a un archivo, le damos un nombre e indicamos dónde queremos guardarlo. Finalmente, pulsamos en Imprimir.

Configurar impresión

¿Qué hemos hecho? Hemos convertido el .djvu a .ps. PostScript es un lenguaje que entienden casi todas las impresoras. La ventaja de este formato es que es fácilmente convertible a PDF (de hecho, PDF está basado en PostScript). Para ello usaremos la herramienta ps2pdf (también ampliamente disponible) tal que así: $ps2pdf archivo.ps archivo.pdf.

Y tendremos nuestro PDF 🙂