jueves, 3 de diciembre de 2009

Conexión Ad-hoc en Android, ¿posible?

¡Claro que es posible! ¿Es sencillo y funcional? Mmmh... No estaría tan seguro de esto último. En mi casa tengo internet con Telcel, por lo que sólo tengo internet en una máquina vía módem usb (tipo memoria flash, pero un poco más 'robusta') pero tengo una tarjeta inalámbrica en mi PC, por lo que quería que mi teléfono con android se conectara de forma ad-hoc a esa tarjeta inalámbrica y compartirle el internet. Lo anterior es posible según lo explico a continuación.

Requisitos:
  • Si alguien no lo sabía es necesario tener acceso "Root" al teléfono, la forma en que yo 'rootee' mi teléfono está claramente ilustrada en está página (en inglés, pero con video sumamente ilustrativo): theunlockr.com. Por cierto, como se aclara en la página sólo sirve para el G1 y MyTouch (Dream y Magic). Hay otras formas de rootear descritas en muchos lados, por ejemplo en forums.xda-developers.com.
  • Una tarjeta Wifi.
  • Internet para compartir.
  • La forma más fácil es usar el ADB (Android Debug Bridge) proporcionado oficialmente y gratis por Google. Hay un tutorial de cómo descargarlo e instalarlo (y usar lo básico, que es lo que yo sé) en elandroidelibre.com.
  • Archivos tiwlan.ini y wpa_supplicant.conf modificados.
  • Windows XP. Lo hice en XP porque es lo que tengo, pero la base puede servir en otros SOs.
Una vez dicho lo anterior comenzamos:

Conectamos nuestro celular vía USB (con los drivers y ADB instalados según se explica en elandroidelibre.com)

Abrimos la consola: Botón de windows + R, para abrir "Ejecutar" y tecleamos "cmd" (sin comillas) luego la tecla Enter.

En la consola nos movemos a la carpeta donde tenemos nuestros archivos twilan.ini y wpa_supplicant.conf modificados. (En mi caso C:\HTC). En la consola usad "dir" para ver las carpetas del directorio actual, "cd .." para subir un nivel y "cd NAME" para ir a una carpeta que esté dentro del directorio donde nos encontramos, donde NAME es el nombre de la carpeta.
adb shell
Para "meternos" a nuestro cel, vemos que la primera parte de la línea cambia a "#", ya estamos en el cel y con acceso root, luego:
mount -o rw,remount -t yaffs2 /dev/block/mtdblock3 /system
Con esto hacemos "escribible" un parte de Android. Luego:
exit
Salimos de android y volvemos a la consola, ahora hay que enviar a android nuestros 2 archivos, para esto tecleamos:
adb push tiwlan.ini /system/etc/wifi/tiwlan.ini
Enviamos tiwlan.ini desde nuestra ubicación actual a la ubicación específicada. Luego:
adb push wpa_supplicant.conf /daa/misc/wifi/wpa_supplicant.conf
Enviamos wpa_supplicant.conf, y ahora nos metemos a android para hacer "sólo lectura" lo que habíamos hecho "escribible", para esto tecleamos:
adb shell
mount -o ro,remount -t yaffs2 /dev/block/mtdblock3 /system
Nótese que aunque es muy similar a una instrucción anterior es diferente en la parte de "-o ro", en lugar de "-o rw". Bueno, finalmente:
exit
Ahora, cerramos el adb para poder retirar con seguirdad nuestro android, para esto:
adb kill-server
Listo.
Una aclaración: en los archivos tiwlan.ini y wpa_supplicant.conf yo especifiqué el nombre de la conexión ad-hoc como "Droid" por lo que al crear una conexión ad-hoc en la laptop o en la PC se debe usar este nombre (respetando la mayúscula) si quieren cambiar el nombre es tan sencillo como modificar los archivos y cambiar cualquier referencia a "Droid" por el nombre que os plazca. Debe ser una vez en cada archivo.
¿Complicaciones? Sí, las siguientes:
  • Una vez modificados los archivos y realizada la conexión en la Laptop/PC vemos que android no se puede conectar a la red aunque el nombre de la misma aparece en su listado, lo que se hace aquí es desconectarse de la red desde la Laptop/PC, apagar y prender la Wifi en Android y luego conectarse desde la Laptop/PC a la red. Deberá estar funcionando así. No es tan sencillo como desde una laptop, por ejemplo, escanear las redes y seleccionar la conexión ad-hoc al alcance para conectarse. Hasta ahora.
  • Otra cosa, la pila por alguna razón se acaba en pocas horas (3?) conectados en forma ad-hoc, sólo úsese en emergencias.
  • Finalmente (creo) si se reinicia el celular la función de wifi queda "inservible" por decirlo de algún modo, yo supongo que el archivo wpa_supplicant.conf se modifica con la reiniciada, por lo que de nuevo hay que enviar este archivo (el otro no es necesario) al celular. Debe haber forma de evitar esto, pero no la conozco hasta ahora, ¿alguna idea?
Desde luego cabe la advertencia de intentarlo bajo su propio riesgo, yo en las primeras pruebas me asustaba cuando la Wifi dejaba de funcionar y restauraba la ROM a mi celular, pero luego aprendí que sólo bastaba modificar el archivo wpa_supplicant.conf y el tiwlan.ini.
En las ROMS que usamos para nuestros Androides se encuentran estos dos últimos archivos en su forma "original" por si queremos regresar a nuestro estado inicial no hace falta más que ponerlos en la carpeta donde tenemos los modificados y realizar los pasos descritos aquí para enviarlos al celular.
No abordé temas que se pueden buscar fácilmente en google como el crear una red inalámbrica ad-hoc, usar la consola, usar ADB, etc. Sin embargo, con gusto trato de ayudar en cualquier pregunta que pudiera surgir.
Finalmente la parte de los créditos. No inventé esto yo de mí mismo, más bien es una traducción y "facilitación" a lo leído en los siguientes enlaces:
Modmygphone.com
blog.joint.net
hydtechblog.com
¡Gracias a ellos!

Actualización (Enero 2011):  Cuando escribí esta entrada las formas de rootear el teléfono eran realmente difíciles, al día de hoy que estoy usando mi segundo Android las cosas para rootear el teléfono se han simplificado a simplemente descargar una aplicación del propio Android Market y ejecutarla luego.  


Por otra parte, hay opciones mucho más 'elegantes' para compartir Internet desde nuestro Android (actualmente uso "Barnacle Wifi Tether" en mi Xperia Mini X10 Pro y va de perlas); sin embargo, en esta entrada mi intención era que nuestro Android se conectara a  la Tarjeta Inalámbrica de una laptop (que tuviera internet por cable) o a una tarjeta inalámbrica de una PC (que tuviera también internet por cable o, en mi caso, por un módem de telcel) y no a un AP (Access Point) que es como comúnmente nos conectamos en nuestros Androides.  

Libro de Mormón en formato txt, doc, pdf y epub

Lo que todos estaban esperando... el Libro de Mormón en distintos formatos: texto, formato de MS Word, PDF y epub. Debo primeramente dar méritos a www.cumorah.org (actualmente el admin de la página anunció su cierre) porque fue ahí donde encontré un archivo con el texto completo en un formato que me fue fácil exportar a txt y de ahí a todos los demás. Sin más, los links de descarga:

Update: Gracias a Eric, en los comentarios, tenemos el siguiente link con aplicaciones para diversos sistemas operativos móviles (Android, Apple, BlackBerry, Palm y ¡Windows Mobile!):


Cabe señalar que también hay versiones en español, sólo hay que leer lo que se dice para cada plataforma... 
Google