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!