Froyo (and root) on Samsung Galaxy I9000 with Linux only

Friday, December 03rd, 2010 | Author:

So I just updated my Samsung Galaxy GT-i9000 Android phone from Android 2.1 to Android 2.2 "Froyo", using a Linux system only (no Samsung Kies or Odin required). Here is my HOWTO:

DISCLAIMER: Everything described here can "brick" your phone, which means UNUSABLE and somewhat DESTROYED FOREVER.
It hasn't done any harm to my phone, but every phone is different (mine is an unbranded european model). For example, the "download mode" you get into when pushing the "volume down"+"home button"+"power on" combo doesn't work on some phones. You absolutely NEED to fix this if you have the so-called "3-button-problem". If you get a yellow sign with "Downloading..." after using the combo on booting, everything should be fine.

ETA: downloading the firmwares takes about 1-2 hours. Everything else takes roughly about half an hour, if you know what you're doing. Otherwise you might count some time for cautious reading of other HOWTOs.

  1. Optional: Backup your stuff. Copy the contents of your sdcard the usual way. To copy all your apps (even the paid apps), you can use RootExplorer if you already rooted your phone. To become superuser (=root), just install OCLF2, the OneClickLagFix 2.0. It is available through patient googling (and maybe even in the Android market). Then start OCLF, select "root" and follow the instructions. Basically, this puts an "" with the root hack on your sdcard and explains how to install this.
  2. Optional: Skim over the howto in the xda-developers forum to learn some vocabulary.
  3. Download the big file from this xda-developers post. If this doesn't work for you, download the I9000XXJPK and I9000XXJPM firmwares and the 512.pit (and 803.pit) file somewhere else.
  4. Download Heimdall (the Odin/Kies replacement for flashing ROMs to your phone) on the heimdall website. Skim over the README contained in the archive you just downloaded. This tutorial is for the heimdall version of 2010-12-03, newer versions might not require .pit files any longer.
  5. Configure, build and install Heimdall with the usual GNU console commands "configure", "make" and "sudo make install". If you're not sure what this means, just try (although you might want to stop at this point). You might have to install libusb (developer package), g++ or something else to get a successful "configure" but that should be clear from the output. If your "make install" succeeded, you can type "heimdall" in any shell to get a small usage manual.
  6. Make sure your phone has a full battery and then shut down your phone. You can remove SIM card and SD card (I didn't). Connect the phone to your Linux computer with a USB cable. Press the 3-button-combo for download mode: [volume down]+[home]+[power]. I guess you have to count to 4 and then release at least the power button, otherwise your phone will reboot again. You should see a yellow construction sign now.
  7. We will install the JPK firmware now. Open a console in the folder where you extracted the JPK archive. If you see a bunch of .tar files, just extract all of them. If you see a bunch of .tar.md5 files, rename them to .tar and extract all of them. Always extract the "..CSC.." file last (as indicated in the heimdall README). You should copy the .pit files you downloaded earlier into this folder. Type
    heimdall flash --pit s1_odin_20100512.pit --factoryfs factoryfs.rfs --cache cache.rfs --dbdata dbdata.rfs --boot boot.bin --secondary Sbl.bin --param param.lfs --kernel zImage --modem modem.binIf this fails for you, just use the 803 pit file instead.
  8. After booting, you might still stay in text mode (recovery mode). If that's the case select "wipe cache partition", "format internal sd card", "wipe data / factory reset" and finally "reboot". Now you might have to wait for 10 minutes. If everything seems to be normal again, go back to download mode.
  9. We will install the JPM firmware now. Open a console in the folder where you extracted the JPM archive. Type
    sudo heimdall flash --pit s1_odin_20100512.pit --factoryfs factoryfs.rfs --cache cache.rfs --param param.lfs --kernel zImage --modem modem.bin
  10. The following step is required if you want to become superuser (root access). Go to this xda-developer forum thread to download CF-Root-JPM-v1.2-Busybox-1.17.1 and extract it somewhere. Copy your pit files to that location, too. Go to download mode in your phone. In the folder where you extracted the zImage file, type
    sudo heimdall flash --pit s1_odin_20100512.pit --kernel zImage
  11. If you have root, you can install the OCLF tool to use a loop-mounted ext2 partition to speed things up a little bit.
  12. If you encounter any trouble, read the big howto on xda-developers mentioned in the seconnd optional task.
  13. Enjoy Froyo!

In principle, you can use a similar procedure to flash customized ROMs to your phone. Also, Mac OSX users can use this tutorial almost the same way that Linux users can.

For any questions, go to xda-developers. If you successfully updated your phone with my tutorial, I'll be happy to read your comments.

Tags » , , «

Category: English

Comments are currently closed.


3 Responses

  1. Maybe I should add a little update:
    So far it works great on my phone and everything is a lot faster than before the update. Root access is still there and helpful with various apps (mounting Samba shares, etc.).

  1. 2
    Anonymous (via Pingback)
    2011-02-03 (3. February 2011)

    [...] [...]

  2. 3
    ADB avanzato « galaxymod (via Pingback)
    2011-06-03 (3. June 2011)

    [...] ora come usare quei file in ODIN. Per HEIMDALL, non sembra occorrano ulteriori spiegazioni: sono già pronti da inserire, no [...]