Ape in Progress

This past weekend I managed to get around to doing something that I’d had on the ‘to do’ list for a while. I wanted to get root access to my phone, with the intention of upgrading Android 2.3.5 Gingerbread to Android 4.1.2 Jellybean. Needless to say, there is so much information on XDA Developers that I was a bit overwhelmed! I got it done in the end, so I’ll summarise what I did below. This guide related to the GT-i9100, not the GT-i9100g. Please read and understand all steps before you commence.

Remember, installing custom ROMs to your phone voids your warranty and can leave you with a very expensive brick - anything you do, you do at your own risk. Ensure all your phone’s data is backed up and your battery is fully-charged prior to starting!

Steps To Get Root Access to SGS2 GT-i9100 Running Android 2.3.5 On Linux

  1. Access ‘Settings > About Phone’ and take note of the following - I’ve noted my settings in brackets: Model Number (GT-I9100) Android Version (2.3.4) Baseband Version (I9100XXKI1) Kernel Version (oops - forgot to write this one down) Build Number (GINGERBREAD.XWKI4)
  2. Install Heimdall - it’s a cross-platform, open source alternative to ODIN (used for flashing ROMs to the phone in Windows). I installed the GTK front-end too, to make things easier.
  3. Download the closest cf-root (root-enabled stock kernel) to your settings noted in step 1. This is explained here (make sure you read the comments too) - for me, XXKI1 = XWKI4.
  4. Permit installation of software from unknown sources by checking ‘Settings > Applications > Unknown Sources’.
  5. Switch on USB debugging via ‘Settings > Applications > Development > USB debugging’.
  6. Set your phone to ‘Download Mode’ by switching it off, waiting for it to fully shut down, then whilst holding the ‘Volume Down’ and ‘Home’ button, press the ‘Power’ button to switch the phone on.
  7. Connect the phone to the PC via USB.
  8. Open Heimdall by typing ‘heimdall-frontend’ into a terminal window.
  9. In the ‘Utilities’ tab, select ‘Detect Device’; wait for confirmation.
  10. Download the PIT (partition table) by click the ‘Save As’ button and selecting an appropriate name and location for the file. The phone should reboot, but if it does nothing after a few minutes, reboot it manually to ‘Download Mode’ (as per step 6).
  11. When the phone has loaded, detect the device once more (see step 9).
  12. In the ‘Flash’ tab, click ‘Browse’ to locate PIT file saved in step 10. A number of guides recommend against updating the PIT - I found them after I’d successfully flashed the rooted kernel. Understand what PIT files are and make your own decision on which way to proceed (or not). More information here.
  13. Click ‘Add’ under the ‘Partition’ textbox.
  14. In the ‘Partition Details’ section, select ‘Kernel’ from the ‘Partition Name’ dropdown.
  15. Click ‘Browse’ next to the ‘File’ textbox to select to the cf-root file downloaded in step 3 (assuming the ‘zImage’ kernel file has been extracted).
  16. Click the ‘Start’ button to commence. On completion the phone should reboot with a yellow triangle on the Samsung Galaxy S2 loading screen. If this bothers you, it can be removed using an Android app called TriangleAway, which appears to have disappeared from the Play Store.
  17. You can confirm your root access using the ‘super user’ app that should have installed with CF-Root - more details on the XDA Developers CF-Root Page in step 3.

Steps To Upgrade Rooted SGS2 GT-i9100 Running Android 2.3.5 to Android 4.1.2 On Linux

This section assumes that you’ve already got root access to your phone (read the intro and follow the previous section if you haven’t).

  1. Download the ‘Resurrection Remix v3.1.3 Jelly Bean AOKP’ ROM (using torrent or direct download) and ‘Fix for (3.1.3 sgs2) keyboard and wifi tethering’.
  2. Connect your phone to your PC by USB and transfer both files from step 1 to the SD card. When I connect my SGS2 to my laptop, it appears as two separate mounted volumes. If you are unsure which is your SD card, copy both files to both (it makes things easier, trust me).
  3. Unmount your phone volume(s) and disconnect the USB cable.
  4. Start your phone in ‘Recovery Mode’ by switching it off, waiting for it to fully shut down, then whilst holding the ‘Volume Up’ and ‘Home’ button, press the ‘Power’ button to switch the phone on. You navigate ‘Recover Mode’ using the volume up/down rocker, selecting using the ‘Power’ button.
  5. Select ‘backup and restore’, then ‘backup’. This will create a folder on your SD card called ‘clockworkmod’, which will store a single archive file of your phone’s contents. You may choose to reboot your phone and verify the file exists before returning to ‘Recovery Mode’ to flash your new ROM.
  6. In the ‘Recovery Mode’ start screen, select ‘wipe data/factory reset’ and wait for confirmation that the wipe is successful. It is a requirement of some custom ROMs that previous kernel and ROM are deleted.
  7. Select ‘install zip from sdcard’, then ‘choose zip from sdcard’.
  8. Navigate to the file ‘RR_JB_V3.1.3_AOKP_4.2.1_I9100.zip’ and select it. You will have the option of selecting various kernels and modems. I chose the CM10 stock kernel with the XWKI4 modem (or similar). You may want to do a little research before choosing your options. Proceed and wait for confirmation of success.
  9. Repeat step 7, then navigate to the file ‘3.1.3 keyboard & wifi tethering fix.zip’ and select it. Wait for confirmation.
  10. Reboot your phone. You should now be running Jellybean on your SGS2 i9100. If everything works well, consider donating to the developers of Heimdall, CF-Root, AOKP and Resurrection Remix. If I’ve missed anyone, please let me know so I can add them. Also, get in touch if I you think I’ve made a mistake somewhere. EDIT: I’ve found what looks to be a very informative link for SGS2 tinkering.