¡darandandunguen!

Manual de Heimdall

¿Qué es Heimdall?
Heimdall es una herramienta de software libre multiplataforma creada para flashear firmware (ROMs) en teléfonos Samsung Galaxy S.

¿Cómo funciona?
Heimdall utiliza el mismo protocolo que Odin para interactuar con un teléfono en modo descarga. La comunicación USB en Heimdall se realiza mediante la librería libusb-1.0, un librería en software libre muy popular

¿Por qué “Heimdall”?
Todo tiene que ver con la mitología noruega, en ella Odin es el rey de los dioses. Loke, el componente software del Galaxy S que se ocupa de flashear el firmware, también es un personaje de la mitología noruega y Heimdall es el dios vikingo guardián del arco iris que da acceso a la morada de los dioses

¿En qué plataformas funciona Heimdall?
Linux, OS X y Windows (XP, Vista, 7 etc.)

OJO, usuarios de Mac OS X
En algunas versiones del boot loader secundario de los Galaxy S hay un bug que impide que el teléfono se registre en OS X. Las últimas versiones oficiales de Froyo corrigen el problema. Esto no es un bug de Heimdall sino del teléfono y una vez que consigas instalarle una versión de froyo con el Sbl.bin corregido podrás usar heimdall sin problemas.

¿Por qué usar Heimdall cuando puedes usar Odin?
Odin es en general inestable y sólo funciona en Windows. Además, Odin es un software de Samsung que ha sido filtrado a la comunidad, por lo que no se puede distribuir libremente ni la comunidad entiende completamente su funcionamiento.

¿Es Heimdall seguro?
No importa qué método se utilice, flashear un firmware en tu teléfono puede acabar en desastre. Heimdall se ha probado en distintos dispositivos y con dstintos firmwares con un 100% de éxito. Por lo tanto entendemos que es, en general, estable. Sin embargo, Heimdall, como cualquier otro software para flashear, puede convertir tu teléfono en un bonito pisapapeles de diseño.

¿Cómo se convierte un Galaxy S en un ladrillo durante un flasheo?
Además de los peligros comunes, como que se vaya la luz, accidentalmente se desconecte el USB, etc. Los teléfonos Galaxy S parecen tener un software de control del USB poco estable.

Por supuesto, un fallo al flashear no implica que el teléfono esté muerto, sólo si tienes mucha mala suerte y el fallo se produce mientras se transfiere el boot-loader primario (boot.bin), el secundario (Sbl.bin) o el archivo param.lfs que son archivos muy pequeños, entonces, tu teléfono estará muerto hasta que Samsung te lo repare.

OJO
Sed MUY cautos mezclando ficheros de diferentes versiones de firmware. ¡No lo hagáis si no estáis seguros de que va a funcionar!

¿Cómo conseguirlo?
Puedes descargarlo de la página de Heimdall.

Instrucciones para Windows
Las instrucciones para instalarlo y ejecutarlo en Windows vienen en el archivo readme.txt del binario. Hay que instalar previamente los archivos redistribuibles de Microsoft Visual C++ 2010.

Instrucciones para OS X
Se incluyen en el archivo README.

Instrucciones para Linux en general
Instalar Heimdall en Linux

Instrucciones para Debian
Instalar Heimdall en Debian.

Donaciones
Este es un proyecto realizado por Benjamin Dobell, puedes apoyarlo haciendo una donación en su página a través de PayPal. Si quieres colaborar de otro modo, ponte en contacto con él o compra alguna de sus aplicaciones para Android.


Actualizar Galaxy S en Linux

ACTUALIZACIÓN 10/03/2011
Como la instalación en Debian se ha simplificado mucho, dejo aquí este tutorial para usuarios de otras versiones de Linux.

En el artículo del otro día, ya expliqué que trabajar con el Samsung Galaxy S en Debian es sencillísimo. Bien, flashearlo para actualizarlo o simplemente cambiar de versión ya no es tan sencillo. Sin embargo, rebuscando en HTCMania he encontrado la forma de hacerlo.

Lo primero que hay que hacer es descargar el SDK de Android para linux de la página para desarrolladores de Android.
Después hay que instalar el paquete sun-java6-bin y, SI TU ARQUITECTURA ES DE 64 BITS, también hay que instalar las ia32-libs.

Descomprimimos el paquete del sdk en /usr/local/ y obtenemos la carpeta /usr/local/android-sdk-linux_x86
Entramos en la carpeta tools y lanzamos el gestor del SDK
cd /usr/local/android-sdk-linux_x86/tools
./android

Android SDK

En el gestor seleccionamos Available Packages y en él Documentation for Android SDK.

En este punto es probable que te diga que por un error no puede descargar los paquetes disponibles del servidor. Si sí tienes red, la solución es sencilla:

Tienes que editar el fichero /etc/sysctl.d/bindv6only.conf y cambiar la línea

net.ipv6.bindv6only = 1
a
net.ipv6.bindv6only = 0

y reiniciar el equipo, ya que el kernel debe leer este parámetro antes de iniciarse.

Tras esto, no deberías tener problemas para descargar los paquetes con lo que en la sección Installed Packages del gestor de Android te aparecerán las Android SDK Platform Tools.

Opcionalmente, podemos añadir la localización de las herramientas al path para que no sea más cómodo trabajar. Para ello, editaremos el archivo /home/[usuario]/.bashrc y añadiremos al final las siguientes dos líneas:
PATH=${PATH}:/usr/local/android-sdk-linux_x86/tools
PATH=${PATH}:/usr/local/android-sdk-linux_x86/platform-tools

Por último, creamos una regla para que nuestro equipo reconozca al Galaxy S. Creamos el archivo /etc/udev/rules.d/51-android.rules y escribimos en su interior:
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"

Puedes comprobar que todo ha ido bien conectado el Galaxy S al ordenador en modo depuración y ejecutando en una consola:
adb devices
En mi equipo, el resultado es:
manu@fritigerno:~$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
1000a863b64e device

Una vez que el SDK está correctamente instalado,es hora de instalar la aplicación que se va a encargar de todo lo relacionado con el ‘flasheo’ del móvil:

Heimdall

Primero hay que instalar las dependencias:

  • build-essential
  • libusb-1.0-0-dev
  • libqt4-dev

Despúes nos descargamos el paquete de Heimdall desde la página del proyecto Debéis copiar las carpetas heimdall, heimdall-frontend y libusb-1.0 a /usr/local/src.

Ahora sólo hay que configurar, compilar e instalar cada programa:
cd /usr/local/src/libusb-1.0
./configure
make
make install

cd /usr/local/src/heimdall
./configure
make
make install

cd /usr/local/src/heimdall-frontend
qmake heimdall-frontend.pro
make
make install

Con esto ya tenéis todo lo necesario. Antes de nada, leed el manual de Heimdall en español. De todos modos, en los próximos dos artículos, os pego los dos ejemplos que a mi me han resultado más útiles para usarlo:
Cambiar Kernel
Actualizar a Gingerbread


Gingerbread en un Samsung Galaxy S desde Debian

Ya es posible actualizar tu Galaxy S a Android 2.3 Gingerbread.
Aunque todavía se trata de una beta y yo personalmente no la recomiendo más que para hacer pruebas, puesto que todavía hay muchas aplicaciones que no funcionan.

Si tienes ya flasheada en tu teléfono una versión con Clock Work Mod, es mejor que hagas una copia de seguridad antes de nada. Esto te permitirá volver a tu versión actual, si quieres, simplemente instalando un kernel apropiado.

Para realizar el flasheo, tenemos que utilizar Heimdall, tenéis el manual de Heimdall en español en otra entrada.

Una particularidad de Heimdall a la hora de realizar un flasheo, es que actualiza TODO, incluyendo los bootloaders principal y secundario, por lo que es necesario darle toda la información que precisa.

El enlace de descarga es http://hotfile.com/dl/108009101/c197125/I9000XWJV1.rar.html y la contraseña: samfirmware.com

En todos los tutoriales que he encontrado recomiendan usar el archivo pit de 512, yo he probado con el PIT de 803 y también funciona bien.

Pasos a realizar

  1. Comprobar que te funciona el ‘fix de tres botones. Si no, htcmania es tu amigo
  2. Conectar el móvil al ordenador por un cable USB en modo depuración.
  3. Poner el móvil en modo descarga.
    Opción 1, ejecutando en una consola adb reboot download.
    Opción 2, apagando el móvil y pulsando a la vez las teclas home, volumen abajo y encender hasta que nos aparezcan las letras blancas de Samsung.
  4. Ejecutamos heimdall-frontend
  5. Seleccionamos los archivos que hemos descargado y el pit que queramos utilizar. Finalmente pulsamos Start. heimdall-frontend.
  6. Esperamos a que el móvil termine de reiniciar (tarda un rato y emite sonidos con voz metálica mientras va avanzando) y ¡a disfrutar!

Cambiar el kernel a un Samsung Galaxy S en Debian

En este artículo se presupone que has instalado el programa Heimdall siguiendo las instrucciones para actualizar un Galaxy S que os he dado. Os dejo tambien el manual de Heimdall en español en otra entrada.

Primero debéis descargaros, un kernel apropiado a la versión de Android que tenéis.

Por ejemplo para Android 2.2, Froyo, el kernel que yo estoy usando ahora en mi móvil es el SpeedMod del blog touristinparadise.

Para instalar el kernel, hay que seguir estas instrucciones:

  1. Comprobar que te funciona el ‘fix de tres botones. Si no, htcmania es tu amigo
  2. Conectar el móvil al ordenador por un cable USB en modo depuración.
  3. Poner el móvil en modo descarga.
    Bien, ejecutando en una consola adb reboot download.
    Bien, apagando el móvil y pulsando a la vez las teclas home, volumen abajo y encender hasta que nos aparezcan las letras blancas de Samsung.
  4. Ejecutamos heimdall-frontend
  5. Seleccionamos el kernel (y sólo el kernel) y le damos a Start.heimdall-frontend
  6. Cuando termine, el móvil se reiniciará sólo y ya está todo.

Actualizar Samsung Galaxy S en Debian

Actualización 10/03/2011
El proceso de instalación de Heimdall se ha simplificado muuuuuuuuuucho.

En el artículo del otro día, ya expliqué que trabajar con el Samsung Galaxy S en Debian es sencillísimo. Bien, flashearlo para actualizarlo o simplemente cambiar de versión ya no es tan sencillo. Sin embargo, rebuscando en HTCMania he encontrado la forma de hacerlo.

Lo primero que hay que hacer es descargar el SDK de Android para linux de la página para desarrolladores de Android.
Después hay que instalar el paquete sun-java6-bin (está en el repositorio non-free)
apt-get install sun-java6-bin
SI TU ARQUITECTURA ES DE 64 BITS, también hay que instalar este otro
apt-get install ia32-libs
Descomprimimos el paquete del sdk en /usr/local/ y obtenemos la carpeta /usr/local/android-sdk-linux_x86
Entramos en la carpeta tools y lanzamos el gestor del SDK
cd /usr/local/android-sdk-linux_x86/tools
./android

Android SDK

En el gestor seleccionamos Available Packages y en él Documentation for Android SDK.

En este punto es probable que te diga que por un error no puede descargar los paquetes disponibles del servidor. Si sí tienes red, la solución es sencilla:

Tienes que editar el fichero /etc/sysctl.d/bindv6only.conf y cambiar la línea

net.ipv6.bindv6only = 1
a
net.ipv6.bindv6only = 0

y reiniciar el equipo, ya que el kernel debe leer este parámetro antes de iniciarse.

Tras esto, no deberías tener problemas para descargar los paquetes con lo que en la sección Installed Packages del gestor de Android te aparecerán las Android SDK Platform Tools.

Opcionalmente, podemos añadir la localización de las herramientas al path para que no sea más cómodo trabajar. Para ello, editaremos el archivo /home/[usuario]/.bashrc y añadiremos al final las siguientes dos líneas:
PATH=${PATH}:/usr/local/android-sdk-linux_x86/tools
PATH=${PATH}:/usr/local/android-sdk-linux_x86/platform-tools

Por último, creamos una regla para que nuestro equipo reconozca al Galaxy S. Creamos el archivo /etc/udev/rules.d/51-android.rules y escribimos en su interior:
SUBSYSTEM=="usb", SYSFS{idVendor}=="04e8", MODE="0666"

Puedes comprobar que todo ha ido bien conectado el Galaxy S al ordenador en modo depuración y ejecutando en una consola:
adb devices
En mi equipo, el resultado es:
manu@fritigerno:~$ adb devices
* daemon not running. starting it now on port 5037 *
* daemon started successfully *
List of devices attached
1000a863b64e device

Una vez que el SDK está correctamente instalado,es hora de instalar la aplicación que se va a encargar de todo lo relacionado con el ‘flasheo’ del móvil:

Heimdall

Primero hay que instalar las dependencias:

apt-get install build-essential libusb-1.0-0-dev libqt4-dev

Despúes nos descargamos los paquetes .deb de Heimdall desde la página del proyecto Debéis descargar heimdall y heimdall-frontend (en versión i386 o amd64)

Después los instalamos con dpkg:
dpkg -i heimdall-[version].deb heimdall-frontend-[version].deb

Con esto ya tenéis todo lo necesario. Os dejo el manual de Heimdall en español en otra entrada. De todos modos, en los próximos dos artículos, os pego los dos ejemplos que a mi me han resultado más útiles para usarlo:
Cambiar Kernel
Actualizar a Gingerbread