Flashing Android Froyo in a Galaxy S with Ubuntu and Heimdall

As some of my friends know, I am now a happy Android user. In fact, for about 5 months already… But my phone shipped with ECLAIR version of Android (2.1) and since I’m an Ubuntu user, I would find a way to flash my device and update my firmware to FROYO without Window$ / VirtualBox traditional approach. For my surprise, there are some options to accomplish that and I’ll explain the one that worked for me.

Please Note: These steps worked for me but it’s possible that will not work for you. It’s a very stable procedure but $hit happens. Do follow the steps at your own risk.

UPDATE – The same procedure works with Android 2.3.3 (Gingerbread) firmware. Version I9000BVJJV3 – Jun 2011. Please check samfirmware website to download.

Heimdall

According to their website, here is a description:

Heimdall is a cross-platform open-source tool suite used to flash firmware (aka ROMs) onto Samsung Galaxy S devices.

It has ports for Mac OSX, Linux and even Windows, although most of the Windows users prefer to use Odin to flash their devices or even Samsung Kies.

You can grab heimdall packages for Ubuntu from their website -> http://www.glassechidna.com.au/products/heimdall/

For this tutorial I’m using Heimdall 1.1.1 command line tool. Using the GUI version I’ve got some strange behaviours and some times the GUI just said that Flash happened without any processing.

Android Froyo firmware download

To flash your device you must obtain the firmware version that you’ll apply. You have many options over the web to obtain different versions of Android. Some of them claims to be original ones from operators and some others modified/hacked versions with extra functionalities. I’ll stick with the “original” ones and since I’m in Brazil, my device has digital TV so I need to use a GT-I9000B firmware. Here are two options to download firmwares:

For this tutorial I’m using  Froyo 2.2 (Operator Free):

Procedure

  1. Install heimdall
  2. Uncompress the downloaded firmware package, in my case -> OK – 2.2 – FROYO – BRASIL SEM OPERADORA.rar
  3. Check if you have all the necessary files:

    -r--r--r-- 1 markito markito  13955072 2010-12-11 01:23 cache.rfs
    -r--r--r-- 1 markito markito   4833980 2010-12-11 02:04 zImage
    -r--r--r-- 1 markito markito    716800 2010-12-11 02:04 param.lfs
    -r--r--r-- 1 markito markito 254341120 2010-12-11 02:04 factoryfs.rfs
    -r--r--r-- 1 markito markito  12582912 2010-12-12 22:30 modem.bin

  4. Move or copy the PIT file (s1_odin_20100512.pit) to the same directory you uncompressed the firmware
  5. Put your device in download mode. On a Galaxy S you should hold -> home buttom + power buttom + volume downand wait until you see the Android logo with “Downloading” written below.
  6. Now that your phone is ready to receive a new firmware, plug the USB cable, wait a few seconds and type the following command in the same directory you have uncompressed all the files:

    heimdall flash --factoryfs factoryfs.rfs --cache cache.rfs  --param param.lfs --kernel zImage --modem modem.bin --pit s1_odin_20100512.pit

  7. Now you should wait a few minutes and expected for the best: successful messages. :-)
  8. Your device should boot and will stuck a few moments in the Samsung S logo. That’s normal because it’s the first boot of your new kernel. But your are ready to go now, firmeware updated!

If it worked for you, congratulations. If you had or still have some problems, please take a look at some of the sources that I’ve used to learn and apply to my device, maybe it will help.

Sources:

22 comments

  1. Abhisek Jain

    Thanks a lot……how come we are not installing Drivers..Just how does the program differentiate between galaxy s and other usb devices?

  2. markito

    Hi Abhisek,
    I’m not saying that heimdal uses that, but in Linux you can type “lsusb” in any console and see some information about USB devices plugged in your system. With that, you can check for specific fields to see the manufacturer name, id, etc.

    Thanks for reading, regards! ;)

  3. alan

    How do you install heimdall? I’m new to Linux and have used Odin to flash in the past. I have tried to install the packages using ./heimdall and. /heimdall-frontend from terminal, the heimdall application seems to install but I have-not idea how to run it. The Frontend package says its missing a lib package that I dont know how to install either. Can you help?

  4. markito

    Hi Alan,
    You have two ways to install heimdall on Ubuntu.
    The quick and easy way is to download the .deb file from their website and install it (double-click). Here is the link https://github.com/downloads/Benjamin-Dobell/Heimdall/heimdall_1.1.1-1_i386.deb.

    OR

    If you want to compile it on your machine please follow these steps:
    1 – Open a linux terminal and execute the following command:

    sudo aptitude install build-essential libusb-1.0-0-dev

    2 – Download heimdall source code from http://www.glassechidna.com.au/products/heimdall/
    3 – Extract the package and look for a folder Heimdall-Source (or something like that)
    4 – Execute the following commands in a sequence:

      ./configure
      make
      sudo make install
      

    After these steps you should be able to execute heimdall from your Ubuntu,

    Hope that helps!

  5. جوتيار کوردى

    its possible if install custom ROM instead of installing froyo firmware?
    clearly if i download the custom ROM and putting it with pit instead of downloading froyo??

    thnaks alot.

  6. markito

    Hi جوتيار!
    Yes, heimdall is simple a flashing tool but you can use it with any image/ROM that you have. Of course that you have the same requirements (pit, modem, all other files…).
    So if you have all the required files for your custom ROM, flashing it should work the same way as the official ROM.

    Thanks for reading!

  7. Pingback: Upgrading Galaxy S from android 2.1 to 2.3.3 under linux » To Linux and beyond !
  8. moe

    Hi, Im brand new to Ubunut, just installed it an hour ago and I wanna flash my phone. I downloaded the heimdall binary file and the heimdall-frontend file and installed them both through Ubuntu’s Software Center but now I dont know how to run them….

    I tried and searched the hdd for them and found what seems to be the program but when I click on it, it doesnt launch. Can you guys help me out please

  9. chinesegeek

    Hey, great how-to!!! I got a question… If I flash my Galaxy S, will I lose all my data (contacts, photos, videos, music, docs, installed apps…)?

  10. markito

    Hi chinesegeek!
    Well, there is a risk of loosing your data. But, that risk is really low and in my experience it never happened. All my data was kept in my system. Also, you should think that most of your apps are already stored in your google account, so even if you buy another device and login with the same account, you will synchronize your account including all your apps on the new device.. ;) HTH
    Thanks

  11. markito

    Hi Moe, I’m not used to the heimdall-frontend and you can follow my tutorial in this post and use the command-line version. Just install the complete package of heimdall.

  12. chinesegeek

    Ok, I got another question… Why you dont use boot.bin and Sbl.bin in the heimdall parameters? It works without those two files?

  13. markito

    Yes, it works. Also, you can read a comment from other user (federico carrara) that did the upgrade and preserved his all his apps and data

  14. android tutorial

    Aw, this was a very good post. Taking a few minutes and actual effort to produce a top notch article… but what can I say… I put things off a whole lot and don’t manage to get anything done.

  15. Blackberry 10 L review

    After I initially commented I appear to have clicked the -Notify me when new comments are added- checkbox and now whenever a comment is added I receive 4 emails with the exact same comment. There has to be an easy method you are able to remove me from that service? Kudos!

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s