I’m not sure if uncrappifying is a word, but who cares, right?

If you have this device, it’s going to be really, really awesome. I’ve just managed to create a system image that gets rid of all the bloatware found on this device. Gone are the stupid Chinese apps that took up space on your home screen. Gone is the Samsung App store that didn’t even work (unless you had a SIM card from China Telecom, which realistically nobody has at this point). Everything is zippy, snappy, whatever you want to call it.

How do I get in on the action?

Simple. Go to my downloads page and grab the factoryfs.rfs file and the pit.pit file. You WILL need Heimdall Suite installed on your computer. Linux is preferred since Windows always complains about USB driver issues and libusb not working and all sorts of crap.


In the “Utilities” section of Heimdall, press the “Detect” button. If all goes well, your device will be detected and the radio button next to “Device Detected” will be filled in.

Next, go to the “Flash” section. In the PIT corner, load up that pit.pit file. Then, click on “Add”, and choose factoryfs under “Partition Name”. Load the factoryfs.rfs file you downloaded earlier, cross your fingers and click “Start”.

If all goes well, it should start flashing the image. If it stops mid-way or does anything funky, just let it continue. It’ll eventually finish. (Heimdall is weird that way.)

I want to use my own .pit file.

Simple. Back in the “Utilities” section, make sure the device is detected. Under “Download PIT”, choose your destination file and click on “Download”. Voila! You should have your own .pit file from your device.


I’m lazy. Can you do the above steps for me?

Hey, I knew you were! We can be best pals.

In all seriousness, go back to the download page, and you should see a file named SCH-I909-DECRAP.tar.gz. Download (do not extract), and load it up under Heimdall’s “Heimdall Firmware Package” under the “Load Package” section. Then click “Load/Customize”, then click “Start”.

You STILL need to make sure your device is detected, however.

I get a bunch of errors.

You might get one of these errors:

Protocol Initialization Failed.
Setting up interface failed!
Failed to send file part packet.

This is usually one of these reasons:

  • You’re using a bad USB cable. (VERY COMMON)
  • The USB cable is not making good contact with the port of the computer or/and the port of the device. (ALSO COMMON)
  • Your drivers are not set up properly. (COMMON)
  • The computer’s USB port is bad. Just because it can send files and talk to other devices DOES NOT mean it’s suitable for a firmware flash. (COMMON)
  • You’re using the front-bus USB connectors, and these are getting signal interference as it travels through the cables. Plug the USB cable into the back of your computer, and retry. (LESS COMMON)

The last reason was mine. The front bus USB turned out to be too noisy for the phone to decode, so it never flashed properly. Using a port on the back turned out buttery smooth.

So HOW did you do this?

I unpacked the ROM, and inside, there was a bunch of firmware files in Samsung’s old format: .rfs.

If you follow my blog, you’ll know I posted a guide that tells you how to unpack .rfs files. Turns out, you could also mount the files in read-write mode using this command:

sudo mount -o loop,rw factoryfs.rfs temp/

HOWEVER, YOU MUST BE EXTREMELY CAREFUL. The file is actually a container of some sorts for vfat. Windows does NOT support this file, and Linux only can read/write in a limited state. One of the limitations is that Linux does not support vfat’s curious permissions model. Therefore, if you start adding or modifying stuff within the image, you WILL end up with a non-booting device.

In my case, deleting files didn’t really change permissions, so I was in the clear. Just keep the above points in mind when you’re performing operations on the image. Once I was in, I deleted all the cruft in the app folder. After a quick unmount, I had a new image with all the cruft removed.

In the next session, I’ll go over all the files I managed to extract from the ROM, and see how I could use these to build my own AOSP ROM. Stay tuned.