Motorola Milestone: free the Android!

Como decía en el anterior artículo, tras el accidente con el móvil ADP1, y forzado por un enorme síndrome de abstinencia, decidí investigar el mercado en busca de otro móvil Android con teclado físico. Realmente ya había hecho mis deberes antes, pues en mi grupo de investigación necesitábamos usar un móvil con soporte de Flash 10.1…  a ser posible con Android. Bien, sólo encontré en su día 2 móviles que cumpliera con mis requerimientos (lo cual no quiere decir que sólo hubiera 2  😉  : Motorola Milestone y Motorola Droid. Realmente el Google Nexus One también indicaba que soportaría Flash 10.1 pero carecía (y carece) de teclado físico. El Motorola Milestone y el Droid son prácticamente idénticos en lo que a especificaciones HW se refiere, siendo una de las diferencias fundamentales que el Droid tiene soporte para su uso en las redes de telefonía de USA, frente al Milestone, con soporte para redes de telefonía de Europa y América Central. Soooo, si son iguales y el Milestone está preparado «de serie» para ser usado por estos lares, compremos el Milestone, me dije.

Primero la parte buena: es un excelente móvil, con amplia pantalla, muy buena resolución, buena batería (dentro del enorme consumo que Android sigue haciendo de las baterías) y un teclado que, a pesar de las críticas que he leído por ahí – dicen que no se distingue con el tacto una tecla de la otra-, a mí me basta y me sobra.  El Milestone viene de serie con algunas cutre-aplicaciones de Motorola (un navegador tipo TomTom y una aplicación para marcación por voz, por ejemplo). También tiene soporte multi-touch en el navegador y un visor de documentos MS Office. Hasta aquí los bonus-points.

Ahora la parte negativa: el bootloader del Motorola Milestone, a diferencia de su hermano Motorola Droid, comprueba que el firmware que va a arrancar está firmado digitalmente por Motorola.  Si no lo está, no arranca. Esto, que parece una tontería, hace que sea IMPOSIBLE instalar ROMs no oficiales. Por ejemplo, actualmente no es posible instalar Cyanogen ni ninguna otra ROM que sí es instalable en Droid.

Alguien podría decir que bueno, que alguien, algún día, lo conseguirá. Realmente hay serios esfuerzos para conseguirlo, y en esta Wiki se han reunido los mejores hackers de Motorola para intentarlo, pero por ahora no ha habido éxito.  La idea principal para intentar la instalación de una ROM no oficial es muy ingeniosa: consiste en programar un módulo kexec para que el propio kernel oficial de Motorola cargue, en caliente, otro kernel no oficial, sin pasar por el bootloader 🙂   (como sabéis, kexec permite cargar un kernel sin parar el actualmente en uso, muy útil para aplicar parches de seguridad al kernel en sistemas críticos que no permiten ser parados).

También hay un grupo en Facebook para presionar en lo posible a Motorola, pero no ha tenido mucho éxito…

Yo creo que lo mejor entenderá Motorola es ésto: NO compréis un Milestone.  Si os gusta este móvil (a mí me parece de lo mejorcito que hay) entonces esperad hasta agosto y pillaros el Motorola Droid 2 (que vendrá con Froyo) o comprad el Motorola Droid por eBay (que permite instalar nuevas ROMs sin problemas).

Nota: que no puedas cargar ROMs no oficiales no quiere decir que no haya un hack para conseguir ser root en Milestone (por defecto eres un usuario mondo y lirondo, sin permisos para hacer prácticamente nada). Por ejemplo,  el equipo de G.O.T. te ayudará a conseguirlo de forma cómoda (hoy publican un update para la versión española del Milestone 🙂

Cómo destripar un Android y no morir en el intento

La historia que voy a contar me ha llevado muchas horas que he ido robando al sueño a lo largo de varias semanas. Algunos ya sabéis cómo comenzó todo: se me cayó el Android ADP1 al suelo de la cocina. Un hermoso suelo de duros baldosines.  Ya se me había caído otras veces, pero nunca como esa vez: perfectamente horizontal, con la pantalla mirando hacia el suelo. El golpe fue fatal, y la pantalla falleció 🙁  Lo curioso fue que el móvil seguía funcionando. Si alguien me llamaba, podía descolgar el móvil y hablar. Incluso, sabiendo de memoria las combinaciones de teclas, podía llamar. Pero claro, sin ver nada en pantalla.

Lo primero que hice fue sufrir. Lo segundo, pedir otro Android (el Motorola Milestone, del que ya hablaré en otro post). Y lo tercero, plantearme hacerle una cirugía al ADP1 para intentar cambiarle la pantalla. Total, de perdidos al río. Hay varias formas de abrir un G1/G2/Magic/ADP1 . Para la cirugía, necesitas el siguiente material:

* un juego de destornilladores T5 y T6. Más adelante verás que también hace falta un Phillips Screewdriver #0 para abrir un puñetero tornillo minúsculo situado en la parte superior derecha de la parte posterior de la pantalla del móvil.

* Lo segundo que es totalmente necesario si no quieres dejarte las uñas y los dedos en el intento, es un par de cuñas de plástico.

* Unas pinzas de depilar o de filatelia

* Una pantalla de repuesto

* Mucho tiempo de sueño que estés dispuesto a perder

Vamos allá. Los destornilladores T5 y T6 los puedes encontrar «sin problemas» en cualquier ferretería. Lo entrecomillo porque encontrar los dichosos «destornilladores de precisión», como se conocen por ahí, no fue tan fácil. Me tuve que recorrer varias ferreterías. Y no te venderán unidades sueltas, tendrás que comprar un set completo (aunque son bastante baratos, yo encontré uno completo de 5 unidades por 15 €. Eso sí, el destornillador Phillips #0 fue imposible. Al final, gracias a Endika (thanks, my friend), conseguí un ejemplar.

La pantalla y las cuñas las compré en Honk Kong :-), es decir, a través de la web Mobile Phone LCD (¡que luego ví, en el sello del sobre que me enviaron, que efectivamente está situada en Hong Kong!).  La pantalla está a 38.99  dólares. En la misma web, por $1.49, también tenemos las dos cuñas de plástico para abrir la carcasa del móvil (que está dura de narices…) Tardan unos 8 días en enviarte el material, muy bien empaquetado en una cajita de plástico que protege la pantalla.

¿Cómo sustituír la pantalla del G1? Bien, hay varias formas . La «ortodoxa», es abriendo completamente el móvil, desde la parte de atrás, tras quitar la batería, desensamblar esa parte trasera, abrir luego la base (donde están los botones de llamada), extraer la pantalla, desensamblar la pantalla. Y la «quick&dirty», como muestra este vídeo de un técnico de móviles de Sarajevo. Yo he seguido la segunda, la quick&dirty (eso sí, siguiendo la forma ortodoxa, conseguí llegar hasta el teclado, sacar la lámina del mismo – es un simple plástico con las teclas – y volver a poner, no es difícil, pero da «miedito» al principio ;-). Como decía, siguiendo «the quick&dirty way», lo primero que hay que hacer es abrir el teclado, dejando arriba la pantalla y abajo el teclado, como si fueras a teclear algo en un móvil que funciona correctamente. Bien, dándole la vuelta a la pantalla, verás que hay 4 tornillos (de los cuales sólo son accesibles 3). Uno de ellos sólo lo conseguí abrir con el #0. Los otros dos, con el T5 (el T6 es para los tornillos que encontrarás si quieres acceder siguiendo el método ortodoxo).

Una vez desatornilles, tendrás que usar las cuñas para abrir la carcasa. Hay que darle con firmeza, pero sin cargarte el móvil, claro 😉  Ojo, que no te pase como a mí, que de tanto apretar, despegué el digitizer (es la primera pantalla, la que tocas con los dedos. Está pegada a la carcasa, si aprietas con fuerza, verás que la puedes sacar, pero ¡no es la forma!).

Al abrir la carcasa superior, verás que el móvil tienes 3 «capas» (es como cuando abres una billetera con 3 separadores). La primera capa es el digitizer. La segunda es el LCD. La tercera es una pequeña placa de metal. Podéis ver buenas imágenes en esta web. Si os fijáis en la que acompaña a este artículo, hay un «flex cable» naranja. La parte superior se mete debajo de una tela gris. Bien, esa tela hay que sacarla (despegándola con la ayuda de las pinzas). Al hacerlo verás que se inserta en un minúsculo «slot». Con las pinzas lo sacas del slot. Ya ha pasado lo peor 🙂

Quítale la protección de plástico al nuevo LCD. Conecta el «flex cable» (necesitarás hacer uso de las pinzas otra vez, y con tranquilidad y paciencia lo conseguirás). Cierra las tapas que hayas abierto. Pruébalo.

Para decir toda la verdad, he conseguido que  la pantalla vuelva a funcionar, pero el digitizer no (es decir, si toco la pantalla no me hace ni caso, tengo que funcionar con el «touchpad» o mini-ratón del ADP1 y el teclado físico). Pero ahora al menos puedo usar el móvil y verlo :-).  Próximo reto: tal vez, cambiar el digitizer, aunque otros $46 sin saber si eso resolverá o simplemente el actual está bien y no lo he conectado correctamente, no me hace mucha gracia… ;-P

Receta: Solucionar «Impresora sin papel» cuando sí lo hay

Ayer imprimí un documento y cuando quedaba una última página por imprimir, se me acabaron los folios (DINA4). No problem, vuelvo a cargarla… Y la cosa es que la impresora desde entonces sigue funcionando, pero con un (muy) molesto icono triangular rojo que dice «Impresora sin papel». Llevaba ya un buen rato mirando la causa hasta que he visto que es un bug de CUPS. Pero tiene solución:

* Editar /etc/cups/printers.conf con sudo
* Buscar la línea que dice «Reason media-empty-error». Borrarla y grabar.
* Reiniciar cups (sudo /etc/init.d/cups restart).

Un alivio.

OpenMeetings: video-reuniones virtuales libres

Seguro que el lector conocerá Adobe Connect, un sistema de video conferencia web, propietario, con cliente Flash y servidor alojado en la infraestructura de Adobe. A través de ese sistema puedes participar online y en tiempo real en web-conferencias, usando recursos como audio (micro), vídeo (webcam), presentaciones (en PDF o PPT que se convierten a Flash), compartición de la pantalla de tu ordenador, o pizarra digital compartida. He participado en varias reuniones online con Adobe Connect y la verdad es que funciona estupendamente. La última vez que lo probé no funcionaba aún la compartición de pantalla en máquinas Linux, pero por lo demás, se oía y se veía bien, haciendo uso del plugin de Flash más moderno. Incluso cuando no podía acudir a alguna reunión, o bien quería recuperarla más adelante para revisar alguna cosa, Adobe Connect me permitía ver una grabación de lo que ocurrió. Como si de un vídeo de YouTube se tratara.

Espectacular. Bueno. Pero software cerrado, propietario hasta la médula, y de pago (bastante asequible, eso sí, para licencias de menos de 100 usuarios). La cuestión es que me apetecía comprobar si era posible montar algo similar basado en soluciones opensource. Que el servidor estuviera bajo mi control y que pudiera afinarlo para soporte de múltiples usuarios concurrentes. Que pudiera traducirlo (al euskera, por ejemplo) Y ya puestos a pedir, que se integrara con Moodle.

La parte buena: hay varias opciones en el mercado opensource. La parte mala: hay que trabajarse la instalación, configuración y puesta a punto de cada una de ellas. Pero hey! Con un buen café al lado todo es posible 🙂

Empecemos por la opción, en mi opinión, más potente: OpenMeetings. El código y los manuales están alojados en Google Project Hosting. También han montado un host con la aplicación instalada para demostración de capacidades.

¿Funcionalidades de OpenMeetings? Las mismas de Adobe Connect que he comentado (pizarra compartida, audio y video-conferencia, posibilidad de subir y convertir a formato Flash presentaciones PDF , PPT o ODP, panel de administración, posibilidad de grabar las sesiones….) y una más: soporte multiplataforma total. Es decir, aparte de poder grabar las sesiones, puedes compartir tu escritorio también desde una máquina Linux. Lo mejor de todo es que todo el paquete OpenMeetings está basado en software libre. Hace uso de Red5 para guardar y emitir vídeo y audio, gestionar las «rooms» de conferencias, etc. Para la conversión de documentos a formato Flash, hace uso de OpenOffice.org en modo servidor. Los vídeos los manipula haciendo uso de FFMPEG. El audio lo manipula con sox, y las imágenes con imagemagick. La parte cliente se ha desarrollado en Flash haciendo uso de OpenLaszlo (yo hubiera preferido Flex 4, pero … )

Por si todo esto fuera poco, el autor no para y ha desarrollado un módulo de integración con SugarCRM y otro de integración con Moodle. Por cierto, en la Moodle Moot de este viernes hablaré sobre las posibilidades de integrar plataformas de vídeo opensource con este sistema de eLearning :-), pero si quieres probar por tu cuenta, también hay una web de demostración disponible.

Bueno, a la chicha: ¿Cómo se instala OpenMeetings? Hay varias formas: compilar las fuentes, usar una máquina virtual o bien hacer uso de los binarios. Yo he usado los binarios (que San Ignucius me perdone). En concreto, la r3087. Descargamos el zip, descomprimimos y veremos que hay una carpeta red5. Dentro, daremos permisos de ejecución al script red5.sh.

Requisitos a tener en cuenta antes de proceder con la instalación propiamente dicha: necesitamos tener lanzado OpenOffice en modo servidor:

/path/to/openoffice/program/soffice.bin -headless -nofirststartwizard -accept="socket,host=localhost,port=8100;urp;StarOffice.Service"

Esto nos permitirá convertir ficheros de formato ODP o PDF (entre otros) a Flash, a través del interfaz de OpenMeetings.

También necesitaremos Ghostscript (yo lo tenía instalado de serie en Ubuntu 10.04), ImageMagick (ídem) y SWFTools. Éste último paquete no lo tenía y tampoco lo encontré vía APT, así que, me bajé los fuentes (versión 0.9.1.tar.gz), y tras descomprimir lancé el conjuro mágico:

./configure
make
sudo make install

FFmpeg y Sox ya los tenía. Sólo queda configurar MySQL (o el SGBD que uses) para OpenMeetings.
Buscamos dentro de red5/ el fichero mysql_hibernate.cfg.xml y lo renombramos como hibernate.cfg.xml
(normalmente situado en /webapps/openmeetings/conf/hibernate.cfg.xml)

Editamos el xml anterior y cambiamos tres líneas (lo que está en mayúscula, para ajustarlo a nuestra configuración):

  <property name="connection.username">LOGIN_DB</property>
                <property name="connection.password">PASS_DB</property>
                <property name="connection.url">jdbc:mysql://YOUR_HOSTNAME/YOUR_DATABASE</property>

Ahora lanzamos Red5 (haciendo uso del script ./red5.sh) y entramos desde el navegador al proceso de instalación:

http://localhost:5080/openmeetings/install

Interesante para la Universidad: hay una pestaña para soporte LDAP. Así que la posible integración de OpenMeetings con Moodle, haciendo uso de LDAP, sería más manejable …

Tras un rato (se tira unos minutos instalando las tablas de la BBDD necesarias) ya está todo listo para empezar a jugar 🙂 Eso lo dejo para mañana, ahora corto y cierro.

Receta: cómo obtener listado de links rotos

Hoy me han pedido que saque un listado de los enlaces rotos dentro de cierta web. ¡Ah! Nada más fácil en Linux:

$  wget --spider  --no-parent -r -o log.txt http://tuweb.com

Sweet wget…

–spider : recorrer la web que le digas, pero SIN descargar nada. Sólo recorrerla.
– r : recursivo, como si fuera el robotito de Google 🙂
– o fichero : la salida de ejecutar el comando que salga por pantalla
–no-parent : si le pasamos como parámetro un nombre de directorio, no queremos que suba hacia los directorios padre.

La lista de enlaces rotos estará en log.txt (parte final)