In this particular example, I’ll show how to do that on this specification:

OS: Debian Sid
Phone: Samsung Galaxy SL (i9003)
Software: Heimdall 1.3.1
ROM: XXKPQ (taken from here)

Basically it should work on any operating system, cause Heimdall (tool used for flashing) is available for any platform and there’s also source available (as this is project is on MIT license).

I’m not as sure regarding the phone, however. Heimdall was created with Samsung Galaxy i9000 in mind and, basically, this is the only phone, that’s officially supported. For full list of tested and confirmed by users software, check the Heimdall website, section “What Galaxy S devices has Heimdall been tested with?”.

Personally I can confirm, that this is working on Samsung Galaxy SL (i9003) too (:

Download both heimdall (cli) and heimdall-frontend (gui) (remember to choose correct architecture – you may check it by issuing uname -m in command line). For Debian/Ubuntu (and any other Debian-based distribution probably) you may use .deb files for installation.

After download of ROM is completed, extract *.rar firstly and *.tar.md5 secondly. You will have seven files inside: boot.bin, cache.rfs, modem.bin, normalboot.img, param.lfs, Sbl.bin and system.rfs.

All these files are going to be needed by Heimdall to properly flash your mobile.

1. Generating *.pit file

Turn your device into download mode and connect it via USB cable to your computer. There shouldn’t be any notification, that you connected anything – no worries. Launch lsusb and/or dmesg to make sure, that system is seeing it:

Bus 001 Device 012: ID 04e8:6601 Samsung Electronics Co., Ltd Mobile Phone
[20249.528179] usb 1-1.2: new high speed USB device number 12 using ehci_hcd
[20249.620678] usb 1-1.2: New USB device found, idVendor=04e8, idProduct=6601
[20249.620681] usb 1-1.2: New USB device strings: Mfr=1, Product=2, SerialNumber=3
[20249.620683] usb 1-1.2: Product: SAMSUNG USB DRIVER
[20249.620684] usb 1-1.2: Manufacturer: SAMSUNG
[20249.620686] usb 1-1.2: SerialNumber: 	SAMSUNG SERIAL BULK

OK, now let’s check, whether Heimdall is seeing it:

heimdall detect
Device detected

Great. Let’s generate pit file. Launch heimdall-frontend, go to Utilities tab and click on Save As… button to select path and file name you wish to use.

OK, now it’s time for next step.

2. Preparing files to flash

After properly prepared *.pit file, it’s time for some real action. Switch to Flashtab and start selection with PIT file – the one, that was generated in previous step. Now click Add button and select Partition Name and browse appropriate file. Here’s list which file should be attached to which Partition Name:

  • boot.bin – SBL
  • cache.rfs – CACHE
  • modem.bin – MODEM
  • normalboot.img – NORMALBOOT
  • param.lfs – PARAM
  • Sbl.bin – SBL2
  • system.rfs – SYSTEM

Remember to leave Repartition and No Reboot untouched – they shouldn’t be selected.

3. Flash

Last step is the most pleasant one – just click Start. Everything should work properly (at least for my it did). Good luck! (: