31 oct 2010

Froyo 2.2.1 oficial y +15MB de Ram en HTC Magic

In English: http://forum.xda-developers.com/showthread.php?p=8964540&posted=1#post8964540


Actualización: Parece que después de instalar el SPL 1.33.0013 no deja flashear el Kernel, así que mejor primero flashear el kernel (pasos 4 y 5) con un SPL de ingeniería (si no tienes un SPL de ingeniería, flashealo lo primero), y finalmente flashear el SPL (pasos 2 y 3).



Después de llevar algún tiempo con Cyanogenmod 6, y al ver que T-Mobile había sacado una actualización oficial a Froyo, me decidí a probarla. Para ello, después de hacer un Wipe de las particiones, flasheé desde Recovery la actualización no oficial, descargada desde aquí:

http://sandbox.devnull.name/android/MT3G_testrom/MT3G-test2_S.zip

Una vez instalada, se recomienda instalar el fix para algunos problemas con el Market:

http://sandbox.devnull.name/android/MT3G_testrom/MT3G-test2-market-fix_S.zip

la actualización funciona a las mil maravillas, rápida y fluida. Las diferencias respecto a la actualización 100% oficial son que incluye un Kernel distinto (ahora explicaré por qué no incluye el oficial), y las utilidades de SuperUser y otras. Más información la podéis encontrar en el siguiente hilo de Xda-Developers:

http://forum.xda-developers.com/showthread.php?t=811620

Tras unos días usándola, me enteré que la actualización oficial además actualiza el firmware de Radio a la versión 2.22.27.08 (la versión que tenía era la 2.22.27.03). En principio no le dí mayor importancia, hasta que me enteré que la nueva versión liberaba 15Mb adicionales de memoria, algo muy interesante en la escada RAM de las HTC Magic 32B. Tras flashear la nueva versión de la radio, el sistema dejó de arrancar, y me puse a investigar cuál era la causa:

  • La Radio 2.22.27.08 de momento sólo funciona con el Kernel oficial de T-Mobile, no con el de Cyanogen y los que hay por ahí (como el incluído con la ROM recién flasheada)
  • El Kernel oficial sólo funciona con el SPL (también llamado HBoot) 1.33.0013 (el original de la última actualización)
Así que he hecho lo siguiente:
  1. Desde el recovery, flashear la Radio 2.22.27.08. Se reinicia varias veces el teléfono, y deja de arrancar, se peta cuando va a salir el splash screen de "Android". El archivo usado es el myTouch-radio-2_22_27_08.zip:

    http://www.4shared.com/file/o-PkX9Ew/myTouch-radio-2_22_27_08.html?start=

    Existe el archivo para volver a la 2.22.23.03 por si algo va mal:

    http://www.mediafire.com/?qwmzgko2gg2
  2. Tras flashear, el sistema se reinicia varias veces, y acaba entrando en un bucle de reinicios. No preocuparse, es normal. Volvemos a entrar al Recovery.
  3. Desde el Recovery, flashear el SLP oficial. Flashear el archivo update.SPL_Original_1.33.0013-signed.zip:

    http://www.multiupload.com/NKJ45TLL8L

    La única pega es que este SPL es de los llamados "Perfected", que no permiten flashear una imagen de Recovery usando Fastboot. Como ya deberíamos tener una recovery no oficial flasheada (o no podríamos estar haciendo esto), no pasa nada. Si no, hay otros métodos para flashearla.
  4. El sistema se vuelve a reiniciar varias veces, y otra vez entra en un bucle de reinicios. Esta vez no entramos al Recovery, sino al modo Fastboot (pulsando la tecla de Volver + Power).
  5. Desde el fastboot, finalmente, flashear el boot.img extraído de la imagen oficial de T-Mobile, que es el kernel. La imagen oficial la podéis encontrar en:

    http://forum.xda-developers.com/showthread.php?t=807899

    en concreto el Kernel lo extraemos del archivo:

    http://android.clients.google.com/packages/ota/tmobile_opal/e059adc603a3.signed-opal-ota-60505.e059adc6.zip

    que es la segunda parte de la actualización. Dentro de ese archivo tenemos el boot.img en el raíz. Extraemos también el archivo /system/lib/modules/wlan.ko que necesitaremos posteriormente.

    El comando a ejecutar es fastboot flash boot boot.img, con el cable USB conectado al ordenador. La herramienta Fastboot lo podemos descargar aquí.
  6. Con esto el sistema ya arranca (en cualquiera de los pasos previos, el sistema se queda colgado), pero no funciona el wifi, porque el módulo con el driver no es para ese kernel. Con adb, copiar wlan.ko (el driver oficial extraído de la actualización de T-Mobile en el paso 5) a /sdcard/wlan.ko (usando adb push wlan.ko /sdcard/wlan.ko). Luego entrar con adb shell, remontar /system como lectura-escritura con el comando:

    mount -o remount,rw -t yaffs2 /dev/block/mtdblock3 /system

    y copiar el wlan.ko de la SD a su ubicación correcta:

    cp /sdcard/wlan.ko /system/lib/modules/wlan.ko
    (yo por si acaso he hecho antes una copia de seguridad del que ya existía).
  7. Reiniciamos el teléfono, ¡y listo!
El resultado es el Kernel oficial de la actualización de T-Mobile, con la última versión del firmware de Radio, con el driver Wifi oficial, y sobre todo 15Mb más de memoria, y que vaya aún más fino si cabe.

La otra forma de hacerlo es seguir la ruta 100% oficial: Flashear la imagee original de Android 1.5, luego el update OTA a la 1.6, luego el update OTA a la 2.2. Todos los archivos necesarios se pueden encontrar en este post. Pero OJO, he leido por ahí que ese update te machaca el Recovery, y además si intentas instalar otro te lo restaura, así que hay que hacer luego varias cosas (rootear, borrar el script que restaura el recovery, e instalar un nuevo recovery).

¡Espero que os sea de utilidad!

8 comentarios:

  1. Excelente post, tengo un magic y me vendrá de perlas :)

    ResponderEliminar
  2. Estupendo. Poned en los comentarios si hay alguna duda o problema, ya que estoy dando por supuesto bastantes conocimientos de como flashear y tocar las tripas del aparato.

    ResponderEliminar
  3. Hola, gracias por el post.
    Un par de comentarios, finalmente he podido actualizar la imagen de radio a la 2.22.27.08 pero eso si he tenido un par de problemas:
    1. La SPL original 1.33.0013 no me dejaba hacer un fastboot del boot.img (FAILED (remote: not allowed)) así que tuve que volver a una SPL modificada (Amon Ra por ejemplo) y hacerlo desde allí.
    2. No sé porque pero me ha dejado de funcionar el ./adb. Un problema con el puerto quizás? No lo sé. Lo único que sé es que el sudo ADB_TRACE=1 ./adb start-server me devuelve:
    _adb_connect: host:version
    * daemon not running. starting it now on port 5037 *
    ADB server didn't ACK
    * failed to start daemon *

    Alguna idea?

    ResponderEliminar
  4. Buenas, gracias por tu post. he hecho todo magnifico sin ningun problema hasta lo del inalambrico. NO me encuentro ningun problema hasta que le ingreso lo de cp /sdcard... en el shell, q m dice cp: permission denied. El root sigue estando y funciona sin problemas, asi que no se que es lo que puede pasar... el wlan.ko se copia bien, lo he hecho como 5 veces y ya no se que puede ser. Te agradeceria una ayudita :D

    ResponderEliminar
  5. Solución a lo del cp: o bien instalar busybox (un shell mejorado que incluye el comando cp, está en el Market), o bien usar cat:

    cat /sdcard/wlan.ko > /system/lib/modules/wlan.ko

    Un saludo.

    ResponderEliminar
  6. el busybox esta en el market? Oo de todas formas, pensaba que desde que habia instalado la actualizacion modificada, vendria rooteada y con el busybox... y con el cat (perdona que pregunte tanto, pero es que soy un noob en cuanto a consola se refiere), introduzco ese comando cuando estoy en shell no?

    ResponderEliminar
  7. Exacto, el comando cat en el shell, en lugar del "cp" que pone en las instrucciones. El Busybox está en el market, deberías poder instalarlo.

    La ROM modificada sí que viene rooteada, pero no trae busybox.

    De todas formas, ezterry en el mismo Post que enlazo ahora ha sacado una versión test3 que ya incluye un kernel con soporte para la nueva radio.

    ResponderEliminar
  8. Vale tio, no hay manera. Con busybox 1.17.2 y shell y mierdas, me sale cp not found. no tengo ni idea de que acer. al final fui con root explorer: lo copie y pegue directamente en la carpeta. curiosamente, se cambio y sobreescribio, pero no funciona! sigue dando error el jodido. ademas, me esta gastando la bateria a lo bestia! alguna idea de que acer? no me dan ganas de volver a flashear la rom, pero si tengo que hacerlo lo hare... cyanogenmod sera pues. porque la radio funciona con cyanogenmod y y spl ya no?

    ResponderEliminar