lunes, 3 de febrero de 2014

El móvil se reinicia constantemente

¡Ojo! Cualquier cosa que hagas aquí puede empeorar el estado de tu dispositivo. Atente a las consecuencias  que yo no seré el responsable. Si lo vas a seguir, te recomiendo que te lo leas entero, te hagas un croquis y después, si tienes ganas, ya hacer estos pasos.

Ayer jueves 30 de enero de 2013 me sucedió lo siguiente: estaba dándole al móvil en el tren de camino al trabajo, leyendo los feeds que tenía pendientes, enviando algún que otro tweet al respecto, cuando el sistema empezó a cerrarme el gReader, mi lector de feeds. Tras varios intentos de volverlo a abrir, decidí que iba a ser mejor reiniciar. ¡Mala decisión! Desde entonces no ha vuelto a ser el mismo. :(

Justo cuando estaba reiniciando, la pantalla con el hombrecito azul de CyanogenMod, el splash del sistema, se quedaba ahí, moviéndose como siempre lo hacía, pero esta vez in eternum.

Splash del CyanogenMod instalado en mi móvil
Splash del CyanogenMod instalado en mi móvil
Después de muchos intentos de intentar acceder al modo recovery, no lo conseguí. Hasta que un buen compañero de curro me advirtió de que estaba haciendo mal las combinaciones de teclas: Vol-up + home + [encendido]. Sólo conseguí acceder unas pocas veces las cuales vacié las distintas cachés que se me ocurrieron. Pero algo hice mal, o lo que sea, que ya ni siquiera me sale esta pantalla. Pero, hay otra cosa más que sí que conseguí hacer antes de llegar al modo recovery y que aún puedo hacer: es entrar en el modo download: mientras le das al botón de encendido (mejor, que este sea el último en darle), aprieta: Vol-down+home. Y me sale el modo download:

Download mode
Download mode
Según he podido averiguar, en este modo es como hay que ponerlo para que el software de actualización del sistema Odín pueda realizar sus tareas. Pero antes de machacar todo el sistema, quiero probar otra cosa. Porque según he podido averiguar, hay otro modo que se llama fastboot, que es similar al download, pero con más cosas. Y que me podría ser mejor. A ver si puedo saltarme el proceso de reinstalar.

Además, si por un casual no puedes acceder a este modo, he visto una serie de vídeos en youtube que te ofrecen montarte un micro-usb que hará que entre directamente en este modo. Busca: usb jit samsung y los verás. Según dicen es sencillo: 3 resitencias de 100 kilo-ohmios, para 0,25wa cada una de ellas y... Bueno. Mira los vídeos y a ver si te sale. 

Como podréis comprobar, estoy escribiendo esto a medida que voy probando cosas.

Una de las primeras cosas que he querido hacer ha sido mirar si utilizando el comando adb, que se encuentra en el paquete de las SDKs de android, podía acceder al sistema o forzarle a reiniciarse. Todo esto, evidentemente, estando en el único modo que se puede encontrar: modo download. Pero como no me encuentra el dispositivo, de momento no he podido tirar por aquí.

Voy a tirar por una herramienta que están recomendando ahora en el wiki de CyanogenMod: Heimdall. Sólo hay que descargarlo y descomprimirlo.

He hecho una cosa que no he me ha hecho mucha gracia, pero bueno, de perdidos al río. Después de aplicar su programa zadig.exe para actualizar o cambiar el driver (con el riesgo que ello conlleva), he querido tirar directamente de la línea de comandos del propio heindall pero no ha sacado la información esperada. Para resumir: ejecutamos el heimdall-frontend y vamos a utilities:

Heimdall-Frontend: utilities
Heimdall-Frontend: utilities
En este caso he podido encontrar distintas particiones o entradas. Algunas llaman la atención como la que hace referencia a RECOVERY o FACTORYFS. Al menos puedo ver que hay forma de sacar algo de información estando en este modo.

Voy a tirarme a la piscina: voy a poner un recovery.img obtenido de la ¿distribución? Replicant. A ver si hay suerte y así puedo acceder otra vez al modo recovery. Si no fuese así, buscaría la forma de poder poner o configurar el bootloader (o buscar a ver si hay algo que le haga referencia junto con esta herramienta). En última instancia, haría una reinstalación perdiendo todos los datos. 

Muy bien, dos noticias: la mala es que por interfaz gráfica no me ha funcionado:

Heimdall: flashing desde entorno gráfico

Fundamentalmente: se selecciona el fichero PIT de antes. Se busca la imagen que vamos a flashear. Después, seleccionamos la partición deseada en el combo y al hacer click sobre el botón add se queda seleccionada. Después puedes ir repitiendo el proceso con el resto de particiones con sus respectivas imágenes. El botón remove quita la modificación de la partición seleccionada. Al hacer click sobre el botón start comienza el proceso. Pero a mi no me ha funcionado.

Ahora, si se hace con el modo consola, ha reaccionado bien, pero tampoco he avanzado en mi problema:

heimdall flash --RECOVERY rutaImg.img
Donde --RECOVERY es el nombre de la partición deseada a la que le vamos a flashear la imagen.

Este no me ha funcionado. Lo que he hecho ha sido bajarme el fichero de semaphore al que hace referencia el manual de Cyanogen. Lo he lanzado desde la interfaz gráfica, ya que esta vez el cmd no ha funcionado. No tiene sentido, lo se. Pero estoy intentando recuperar el móvil. De todas formas, cada vez me dá la sensación de que ya lo he perdido todo y que lo más sencillo sería reinstalar (ya de paso, poner una versión superior a la que tenía). 

Por lo tanto: después de aplicar el contenido del zip de semaphore al KERNEL (repito: KERNEL), se consigue:
  • Que ya no aparezca el screen que aparecía del cyanogen anterior (lo que me ha hecho sospechar que lo he perdido).
  • Que apretando los botones VolUp+Home+Encendido (esto último lo he hecho a ver si colaba). A los pocos segundos me ha salido el recovery. Con errores, pero me ha salido (que ya es un avance).
Errores que muestra:

E:failed to open /etc/recovery.fstab
E:unkown vlolume for path [/cache/recovery/command]
E:Can't mount /cache/recovery/command
E:unkown volume for path [/cache/recovery/log]
E:Can't mount /cache/recovery/log
E:Can't open /cache/recovery/log
E:unknown vlolume for path [/cache/recovery/last_log]
E:Can't mount /cache/recovery/last_log
E:Can't open /cache/recover/last_log
E:unknown volume for path [/cache/recovery/command]

Por lo tanto, vamos a ver si hay algo que se pueda hacer para lanzar el sistema. Que no pueda hacer cosas con los logs lo arreglaré más tarde.

 Dando la recuperación total por perdida, voy a hacer la instalación de la última versión estable del sistema. Tocaré madera para que los datos de la tarjeta sd interna estén intactos, aunque lo dudo mucho. Música, fotos, vídeos... Al menos hace poco se me ocurrió cogerme bastante datos del móvil. Pero había cosas que sí que tenía interés en mantener, sobretodo las que procedían de ciertas aplicaciones.

Hay que conseguir pasar el fichero de instalación al dispositivo. Y como también está dando problemas el montaje de la sdcard interna... A ver qué encuentro para solucionarlo.

Alguna cosa he podido encontrar como que a veces se hace una especie de USB brick. Como no consigo que mi Windows reconozca el móvil para utilizar los comados adb y fastboot, voy a enchufarlo a otro ordenador con una debian y que le he instalado las herramientas android-tools-fastboot, android-tools-adb y android-tools-fsutils. Esta prueba tampoco me ha salido. 

Como tengo descomprimido el fichero de instalación que utilicé la anterior vez, he querido ver si enchufando el fichero boot.img que está dentro del zip puedo avanzar en algo, peo como se queja de que espera un fichero boot.bin voy a pasar. Eso sí, parece ser que hay quien dice que el loop en el arranque se puede solucionar cambiando el nombre de ese fichero por zImage y sustituir la parte de KERNEL tal y como he hecho antes. Si me fallase, volvería a poner el RECOVERY. Es más, voy a poner los dos a la vez para evitar tener que estar reiniciando y esas cosas. ¡Avance! Esto va en marcha: Después del proceso se ha reiniciado (como era de esperar), ha salido el logo de Samsung + Cyanogen y ha saltado directamente al recovery sin dar ningún mensaje de error. Creo que la versión del recovery es un poco anterior a la que me salía antes, pero esta vez no me muestra ningún fallo (de momento).

Bueno. A estas alturas no he conseguido recuperar el sistema tal y como lo tenía. Para que se entienda, se ha quedado como cuando tienes que tumbar el sistema del ordenador que, gracias a las particiones, tus datos quedan a salvo. Por lo tanto, y ya que parece que hay que reinstalar, subiré la última versión de Cyanogen para mi móvil. Para subirlo, y no me preguntéis por qué, ha funcionado el comando adb que se encuentra en la carpeta platform-tools del paquete de las SDKs de Android. El móvil está arrancado en el modo recovery. Si no tienes las SDKs en el PATH de tus variables de entorno, tendrás que irte directamente a la carpeta antes mencionada para ejecutarlo desde ahí:

adb push rutaFicheroROMParaInstalar/ficheroParaInstalar.zip /sdcard/

Tardará un poco. Nada unos dos o tres minutos, y ya es decir mucho. Ahora, con el fichero ya subido, podremos navegar por el menú, en el siguiente orden: 
  1. install zip from sdcard
  2. choose zip from sdcard
  3. Busca el fichero que acabas de subir, que se encontrará en la raiz (irás más rápido si pulsas el volúmen hacía arriba desde el principio, que te llevará a la parte de los ficheros que están en raíz y no tendrás que pasar por todos los directorios. 
  4. Cuando lo hayas seleccionado, confirma que vas a hacer la instalación.
Y... la primera vez que lo he lanzado ha fallado. La segunda vez que lo he lanzado no se ha quejado, pero al reiniciarse me ha vuelto a llevar al recovery, que se ve distinto al que estaba usando justo antes de reiniciarse. Volveré a probar a lanzar otra vez el instalador. Esta tercera vez está tardando bastante más. Hay que reiniciar a través del menú ya que no lo ha hecho por su cuenta. Otra vez en el recovery.

Hay distintos ejemplos para intentar solucionarlo, pero, en mi caso, aún no ha funcionado (sigo sin poder arrancar bien el teléfono):

adb reboot [bootloader|recovery]

Una de las dos opciones serviría, pero hace lo mismo. Lo que me indica que, o el bootloader está muerto y se está tirando de la siguiente opción o el bootloader es el mismo que el recovery. Y ya he intentado poner el boot.bin (renombrando el boot.img) pero nada.

La otra opción es ejecutar:

adb shell
echo boot | dd of=/dev/block/mmcblk0p3 bs=1 seek=0

Pero tampoco.

Tampoco ha funcionado intentando utilizar el Heimdall de distintas formas cambiando alguna de las particiones de antes por otras. Es más. Un detalle curioso: cuando tengo el móvil apagado y lo enchufo al USB, también se carga el recovery después de salga durante unos segundos una pila en la pantalla.

Vale. Esto es lo que he hecho: he flasheado otra vez el KERNEL de nuevo, y varias veces, en el siguiente orden:

  1. El semaphore: que, otra vez, al cargar el sistema, sale el recovery antiguo que no encontraba las carpetas y ficheros. 
  2. He cargado el boot.img de la última distribución que tenía instalada antes de instalar la última versión que me dio por cogerme (la estable), pero renombrándolo a zImage. Tampoco, la carga se paraba. Se me está ocurriendo que a lo mejor de haber hecho esto lo primero lo podría haber recuperado. Pero ya...
  3. Por último, he hecho lo mismo pero con, ahora sí, la última versión estable que me he bajado para tal efecto. Y, ahora sí que sí, ha arrancado (dado que el sistema en teoría ya estaba instalado desde hacía un buen rato).
En fin. Voy a ver si soy capaz de ponerle algunas cosas antes de irme a la cama, que empecé a escribir esto el viernes y estamos a domingo por la noche. 


Enlaces interesantes que he ido visitando (y que quiero conservar):

http://wiki.cyanogenmod.org/w/All_About_Recovery_Images
http://wiki.cyanogenmod.org/w/Fastboot
http://forum.cyanogenmod.com/topic/73505-cant-repair-bricked-i9000-with-odin-or-heimdall-or-adb/
http://forum.cyanogenmod.com/topic/58791-device-reboot-to-recovery-cm10/
http://forum.xda-developers.com/showthread.php?t=999097
http://glassechidna.com.au/heimdall/
http://android.stackexchange.com/questions/48417/cannot-boot-into-recovery-samsung-galaxy-s
http://androidforums.com/desire-all-things-root/579026-desperate-can-not-flash-rom-e-cant-mount-scard.html
http://androidforums.com/desire-all-things-root/503471-desire-all-things-root-guide.html


No hay comentarios:

Publicar un comentario