First of all: Make backup (root your phone and save apps, contacts, /efs directory from the root and others)
Ok. The easiest way to upgrade your Samsung Galaxy S (i9000) is to use Heimdall. =) This is an Open Source project (see the project page).
What is Heimdall? Heimdall is a cross-platform open-source tool suite used to flash firmware (aka ROMs) onto Samsung Galaxy S devices.
Let’s see it step-by-step:
Go to the xda-dev forum.
- See this video on youtube: You are a Noob on XDA-Developers. (important step)
- Go to the Heimdall firmware packages for stock GT-I9000 firmwares thread.
- Find and download your regional firmware package.
You can find the European package in the main post.
XXJVS for 2.3.5 or XXJVQ for 2.3.4 etc.
- The downloaded file will be a .tar archive. Do NOT extract it.
- Download Heimdall. I use v1.3.0 on mac now (as you see below in screenshots).
- Install Heimdall. It probably needs to restart the machine afterwards… so save this post into your bookmarks.
- Open Heimdall.

- Turn off your phone and plug the USB cable into your computer, but don’t plug into the phone.
- Hold down the
Homeand theVolume Downbuttons and while you hold these buttons plug the cable into the phone. The phone turns into Download mode. Nice.
- In Heimdall, push the
Detectbutton under theUtilitiestab.
- Switch back to
Load packagetab and use theBrowsebutton. Yes browse your downloaded.tarfile.
- Wait… Wait… Wait…

- Now you can see the Firmware Name (eg: Stock),
Version (eg: XXJVS),
Platform (eg: Android 2.3.5),
Developers (Samsung),
the Package File List (in the right) and other useful information.
Ok. Hit the
Load/Customizebutton in the right-bottom corner.
- You don’t need repartition if you have Froyo or newer (checkbox in the left).
If you don’t want to customize your package, for example kernel,
just press
Startand wait, again =)
- You are done. You have a v2.3.5 Android on your Samsung Galaxy S.
If you want to root your phone (with the “new” v2.3.5 Gingerbread)…
- Download the latest CF-Root for the selected Android version like CF-Root-XX_OXA_JVS-v4.1-CWM3RFS for XXJVS and unzip it. You find one file. Yes zImage =)
- Slap on a Terminal/Console/cmd.
- Go back to the Download mode (Step 9-10)
- Enter this command:
heimdall flash -kernel zImage. - Wait a moment.
- Finish =) The kernel installs some apps like Superuser. Superuser is outdated, so you need to update it from the Market
Nice ^_^ It was easy, right? That’s why I love Heimdall.