jueves, 6 de diciembre de 2012

Rooteando un Samsung Galaxy S III

Acabo de comprar un Galaxy S3. Después de mirar algunos precios me he decidido a comprar por amazon.es: Samsung Galaxy S III (I9300) - Smartphone libre Android (...) color azul [importado de Alemania] (aprox. 450€), aunque las ofertas de PC Componentes (aprox. 440€) para este telefono también son muy atractivas. Al ser importado de Alemania traería en principio personalizaciones para ese país pero al inicializarlo eligiendo idioma español no he detectado nada importante en ese idioma, salvo algunas apps destinadas a aquel mercado. He dado de de alta el terminal en Samsung (para realizar seguimiento en caso de perdida mediante el Samsung Dive). También he registrado mi cuenta de Dropbox para conseguir los 50GB gratis por dos años de promoción por la compra del telefono, aunque creo debería haber dado de alta una cuenta nueva ya que al registrar la cuenta gratuita que ya tenía,  me han upgradeado "sólo" de 2GB a 50GB, con lo que me han dado 48GB en vez de los 50GB prometidos...

Mi siguiente paso era rootearlo, pero soy novato (noob) y no me atraía la idea de briquear mi flamante telefono probando a ciegas métodos de dudosa fiabilidad sacados de un blog cualquiera así que he decidido entender un poco el proceso antes de nada. Como al final he visto que es necesario algo de dedicación para encontrar lo que hay disponible, elegir lo que uno quiere y decidir lo que es sensato hacer, publico aquí los pequeños apuntes y decisiones que he ido tomando y enlaces que he recopilado sobre el tema por si le pueden ser útiles a alguien más.

Aunque no existe una única referencia oficial sobre estos temas parece que http://forum.xda-developers.com es el foro más popular, dónde los desarrolladores que hacen las contribuciones más importantes las publican y dan soporte. Leyendo por allí uno encuentra los siguientes

Conceptos:


Rootear: es conseguir acceso al superusuario "root" del sistema Linux que subyace en Android, para tener acceso sin restricciones desde cualquier aplicación a los recursos del dispositivo. Rootear es distinto e independiente de instalar una ROM custom, que es básicamente, una reinstalación de Android pero personalizada, con características distintas a la que viene de fábrica (o de "stock"). En mi caso no tengo interés de momento en instalar o upgradear el sistema de stock, sólamente quiero rootear con el propósito de poder hacer un backup completo del dispositivo usando Titanium Backup y no tener restricciones para usar algunas otras utilidades adicionales.

El rooteo se consigue introduciendo el binario "su" (analogo al de Unix) con los permisos de ejecución adecuados en el sistema de archivos de Android. Este binario se invocará desde otras aplicaciones que necesiten escalar sus privilegios. Esta instalación normalmente se acompaña de otras apps (SuperUser or SuperSU) para que el usuario del telefono pueda controlar qué aplicaciones tienen acceso legítimo a esta escalada de privilegio y dejar trazas de su uso.

Para conseguir esta modificación hay que explotar previamente varios componentes del sistema dispositivo-Android:

Recovery: Un sistema de recovery es una instalación auxiliar paralela a la principal de Android que permite realizar operaciones de mantenimiento "offline" como backups completos, la actualización de la instalación principal o su sustitución (flashear una ROM) . De fabrica el dispositivo ya viene con una instalación de recovery (stock), en una partición separada.

Bootloader: En el inicio del dispositivo se ejecuta el bootloader, que determina desde qué partición se arranca. El bootloader es específico de cada terminal y es un programa que el fabricante graba en una memoria no volatil del dispositivo. Aunque por defecto el bootloader arrancará la instalación principal (Android) se puede cambiar usando una combinación de teclas (Vol Down+Home+Power) para arrancar el recovery que haya instalado.

Bloqueo: Si el bootloader está bloqueado, como suele pasar con los terminales ligados a operadores, llevará en su interior cableada una firma que le permite identificar si la partición seleccionada para arrancar (se la de Android o la de recovery) es legítima. Esto implica que para poder arrancar con una instalación alternativa (ROM ó recovery) es imprescindible disponer de un bootloader desbloqueado (unlocked). Si el terminal no es libre hay que realizar antes el desbloqueo, que es un proceso dependiente del terminal y del operador.

Por lo tanto el rooteo puede consistir esencialmente en arrancar el sistema auxiliar o recovery custom desde el cual se modifica el sistema de archivos del sistema base y se inserta el binario su con los permisos adecuados, así como apps auxiliares. Para que esta secuencia sea posible es prerequisito que el bootloader esté desbloqueado para que permita arrancar con un recovery que no sea el original.

Además de lo anterior, la imagen del custom recovery se debe transferir a la memoria del dispositivo con una herramienta que pueda situarla de modo que el bootloader la encuentre. Para la carga del custom recovery en  los dispositivos Samsung hay quién recomienda Odin ya que parece que es la que emplea el fabricante y que se ha filtrado a los foros. Por este motivo es propietaria, no está distribuida oficialmente y su codigo y funcionamiento no es conocido ni verificado, por lo que otros recomiendan Heimdall que sí es un proyecto open source.

Existe una versión en app de Odin llamada Mobile Odin que hace lo mismo pero desde dentro del sistema Android, para que funcione necesita permisos de root, por lo que esta versión no se puede usar sin haber rooteado previamente. Esta app va orientada al flasheo de ROMs

El procedimiento de rooteo, es específico de aquel dispositivo dónde es posible. Para mi terminal (GT-I9300, banda base I9300XXDLID) he encontrado esta lista de metodos de la cual he seleccionado la que se aplica a la versión internacional y que ha sido desarrollado por un tal chainfire, de la que hay dos variantes:

Chainfire CF-root: chainfire dio soporte durante un tiempo a este sistema rápido de rooteo llamado CF-root que automatizaba cuatro tareas:
  • Instalar app gestión acceso root: SuperSU
  • Instalar custom recovery: ClockWorkMod
  • Instalar app gestión recovery: CWM Manager
  • Rooteado del dispositivo propiamente dicho
este desarrollador abandonó el metodo CF-root en favor de CF-Auto-root y ya no da soporte al software que lo realizaba, aunque las versiones publicadas siguen siendo validas para realizar rooteos de los terminales ya probados.

La ventaja de este metodo es que deja instalado el recovery CWM que es mucho más versátil que el de stock y permite ejecutar otras instalaciones y realizar una imagen de backup de la instalación de Android (nandroid backup), imprescindible para aquel que quiera jugar con seguridad con el flasheo de ROMs.

Chainfire CF-Auto-Root: Ahora chainfire da soporte únicamente a CF-Auto-Root  (página oficial del autor) que es esencialmente lo mismo pero sin la instalación del CWM recovery ya que emplea el recovery stock del dispositivo, lo que parece que evita ciertos problemas con OTA y con algunos mecanismos de seguridad en los dispositivos más modernos, como el conteo de grabaciones de la flash de recovery.

Esto parece que lo consigue haciendo un backup del recovery stok antes de cargar un recovery temporal. Tras rootear la instalacion de Android se recupera el recovery original. Suponiendo que el bootloader ya estaba desbloqueado, el único "rastro" que podría quedar es que aumente un contador que indica el numero de veces que se ha grabado la flash de recovery y que puede hacer que en el arranque el terminal muestre un simbolo de advertencia parecido a un triangulo amarillo indicando que ha sido modificado. Este contador se podría inicializar una vez rooteado el terminal usando la aplicación (de pago) triangle away, también de chainfire, con algunos riesgos de briqueo si no se hace cuidadosamente.

Rooteando:


Finalmente he usado el CF-Auto-Root para el GT-I9300, siguiendo los pasos muy bien indicados por chainfire:
  1. Descargar y descomprimir Odin3-v1.85.zip, aunque tambien viene incluida en el archivo de autoroot del GT-I9300 
  2. Descargar el archivo de CF-Auto-Root para el GT-I9300: CF-Auto-Root-m0-m0xx-gti9300.zip
  3. Descomprimir el CF-Autor-Root para obtener el archivo CF-Auto-Root-m0-m0xx-gti9300.tar.md5 (no hay que descomprimir ese de nuevo).
  4. Desconectar el cable USB del telefono al PC. Asegurarse que KIES (la aplicación de Samsung de gestión del telefono desde el PC) está parada
  5. Iniciar Odin3
  6. Pulsar en el botón  "PDA" y seleccionar CF-Auto-Root-m0-m0xx-gti9300.tar.md5
  7. Poner el terminal en modo de descarga (apagar, después mantener "Bajar volumen"+"Boton home"+"Power" pulsados simultaneamente, si pide pulsar un boton para continuar presionarlo)
  8. Conectar con el cable USB el terminal al PC
  9. Asegurarse que la opción "Repartition" NO está seleccionada
  10. Pulsar el botón "Start"
  11. Esperar a que inicie Android
y en efecto, según dice el autor, no se tarda ni un minuto en completar los pasos si todo va bien. Tras el rooteado aparece instalada la app SuperSu que se invocará cada vez que alguna aplicación intente acceder a root. He descargado el Root Checker Free y, tras autorizar su ejecución, he comprobado que el rooteo parece exitoso:

 

Aunque en teoría CF-Auto-Root está diseñado para modificar lo mínimamente posible el dispositivo, hay que tener en cuenta que cualquier rooteo del dispositivo normalmente invalida la garantía. Conviene estar preparado para revertir el proceso en caso del que sea necesario acudir al fabricante por un fallo del hardware. Para ello hay que conservar un firmware de stock para flashearlo y revertir el recovery a su estado original.

Una página que según parece descarga los firmware de stock desde Samsung es sammobile (tambien conocidos por samfirmware). En este formulario se puede buscar el firmware concreto a partir de tres parametros que se pueden conseguir marcando en el telefono el codigo *#1234# , que a mi me devolvió:

AP: I9300XXDLIH
CP: I9300XXDLID
CSC: I9300DBTDLI2

o bien obtenerlos desde Kies que me informó que tengo:

PDA:LIH
PHONE:LID
CSC:LI2 (DBT)

Y la ficha del firmware correspondiente en sammobile informa que:

GT-I9300 - Germany
PDA: I9300XXDLIH
CSC: I9300DBTDLI2
Version: 4.1.1
Date: 2012-10-03
Regions: Austria, Belgium, France, Germany, Hungary, Italy, Spain, United Kingdom

y permite descargar la imagen zipeada, si estamos registrados en la pagina.

Actualmente tengo la versión 4.1.1 de Android y ya empieza a difundirse en algunos paises la 4.1.2 via OTA. Ya he podido comprobar que no se actualizará automáticamente tras el rooteo, tal como se comenta en los foros. Aunque se resetee el contador de flasheos la firma de la instalación de Android se modifica y no se permite la instalación OTA apareciendo un mensaje que dice "Su dispositivo ha sido modificado. Las actualizaciones no estan disponibles".

Estimo que tengo tres alternativas para las actualizaciones, las tres implican realizar de nuevo el rooteo, ya que se flashea una imagen stock:
  1. Revertir a una imagen stock disponible (no actualización) y permitier la actualización via OTA.
  2. Esperara a que la actualización esté disponible por Kies e intentar la actualización, aunque podría fallar como por OTA.
  3. Descargar la imagen cuando esté disponible en sammobile y grabarla con Odin, esto en principio siempre es posible.
Pero esto ya es otra historia... Más información en próximos episodios de mis aventuras con mi Galaxy S3 y Android ;)


Enlaces


Sobre el Samsung Galaxy S3 y de caracter general:




1 comentario:

  1. Esto parece que lo consigue haciendo un backup del recovery stok antes de cargar un recovery temporal. Tras rootear la instalacion de Android se recupera el recovery original. Suponiendo que el bootloader ya estaba desbloqueado, el único "rastro" que podría quedar es que aumente un contador que indica el numero de veces que se ha grabado la flash de recovery y que puede hacer que en el arranque el terminal muestre un simbolo de advertencia parecido a un triangulo amarillo indicando que ha sido modificado. Este contador se podría inicializar una vez rooteado el terminal usando la aplicación (de pago) triangle away, también de chainfire, con algunos riesgos de briqueo si no se hace cuidadosamente.
    http://comprarbaratosmoviles.com/star-z2-comprar-android-4-2-mtk6592-octa-core-venta-barata
    http://movilesbaratoschinos.com/star-z2-comprar-android-4-2-mtk6592-octa-core

    ResponderEliminar