¿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
¿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!
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.
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
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
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.
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.
Conectar el móvil al ordenador por un cable USB en modo depuración.
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.
Ejecutamos heimdall-frontend
Seleccionamos los archivos que hemos descargado y el pit que queramos utilizar. Finalmente pulsamos Start. .
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!
Conectar el móvil al ordenador por un cable USB en modo depuración.
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.
Ejecutamos heimdall-frontend
Seleccionamos el kernel (y sólo el kernel) y le damos a Start.
Cuando termine, el móvil se reiniciará sólo y ya está todo.
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
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:
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