Posted on 4 Comments

Installing Android Lollipop 5.1.1 on Samsung Galaxy S2 GT-i9100

Android Robot Logo

The Samsung Galaxy S2 GT-i9100 is still one of the most popular smartphones today. Although, official Android upgrades have been discontinued for this model it is quite easy to install Android Lollipop 5.1 on Samsung Galaxy S2 GT-i9100 using Cyanogenmod 12.1. This post describes the steps needed to install Android Lollipop 5.1 based on an existing Cyanogenmod setup, e.g. CM 11. Additionally, it shows which Google Apps package (“gapps”, Google Play Services) is supported for this setup and guides you through the processing of setting it up correctly.

Backup data

Before flashing the Cyanogenmod 12.1 ROM on your Samsung Galaxy S2 make sure to backup for data. We are going to format /system and all caches, thus erasing your user data and previous settings. Also, in order to install Android Lollipop 5.1 using Cyanogenmod 12.1 on your Galaxy S2 your device needs to be rooted. Have a look at a previous post Installing Android Jelly Beans on HTC Desire Bravo which is still valid to root your Samsung Android device. In case you don’t have Cyanogenmod installed on your Samsung Galaxy S2 GT-i9100 have a look the official CM installation guide for the Samsung Galaxy S2 first before continuing.

Install Android Lollipop on Samsung Galaxy S2 GT-i9100

Once you’ve backed up your data download the latest Cyanogenmod 12.1 nightly for the Samsung Galaxy S2:

and save it to your SD-card. Then, download the latest TK GApps Pico Modular Package:

Make sure to choose the Pico Modular Package as the Samsung Galaxy S2 has some memory constraints that probably will lead to errors for other package types. Don’t worry, the Pico Modular Package has everything you need to use your favorit Google services, such as Google Play Services and Google Play Store but in addition does not install all of Google’s applications you might not need. Below you find a comparison chart of the different TK Modular Packages available to get an overview of the applications available in the various packages:


Next, boot into Recovery mode (hold Home button, Volume up and Power simultaneously) of your existing CM 11 setup and execute the following steps:

Note: Make sure to backup your data first! Your settings and user data will be lost by executing the following steps!

  1. Wipe data/factory reset
  2. Wipe cache
  3. Mounts and storage => format /system
  4. Advanced => Wipe dalvik cache
  5. Install zip => Choose the CM 12.1 Nightly zip file you downloaded previously from your SD card
    1. do not reboot once finished
  6. Install zip => Choose the TK GApps zip file previously downloaded from your SD card
  7. Reboot

The first reboot will take some time, so don’t worry. After the reboot you now should have a working Android Lollipop 5.1 with compatible Google Apps on your Samsung Galaxy S2 GT-i9100! Simple, isn’t it?

Possible issues / hints

Do not use the Google Apps package officially provided by Cyanogenmod:


These will not work and you will end up with a message saying

Google Play Services, which some of your applications rely on, is not supported by your device. Please contact the manufacturer for assistence.

Also, you will possibly end up with a lot of crashes of Google Play Services and applications depending on this framework, like

“” and Google Apps has stopped working

Instead, use the TK Pico Modular Package as explained above. In case you get an error message while trying to flash TK GApps Pico Modular Package saying

* Incompatible GApps currently installed

make sure to wipe data and format /system first as explained above. TK Gapps can only be installed on top of an existing installation of TK GApps. Thus, you must wipe your system partition before installing any TK GApps package.

In case you have additional notes feel free to leave a comment. Have fun with the latest Android Lollipop 5.1 based on Cyanogenmod 12.1 on your Samsung Galaxy S2 GT-i9100!

Posted on 240 Comments

Installing Android Jelly Beans on HTC Desire Bravo

Android Robot Logo

Update: Please read Installing Android KitKat on HTC Desire on how to setup the new Android KitKat version on your HTC Desire.

Due to the memory limitations and the dusty stock Android version (2.2.something) I’ve decided to upgrade my HTC Desire (Bravo) to Android Jelly Beans (JB) (4.1.2). After numerous attempts to install various custom ROMS (e.g. ICS ROM by Sandvold) I’ve finally found a working JB ROM for the HTC Bravo: Jelly Bean 4.1.2 – v3.0 by vijendrahs, which exists in various versions.

Versions Tested

The following ROMs have been tested to work with this guide:

This steps descibed in this post apply to almost any ROM available, although certain configuration options might differ.

The Guide to Installing Android Jelly Beans

This post describes the steps I’ve taken in order to get a working configuration based on this JB ROM that currently (version 3.0) offers the following features:

  1. Data
  2. WiFi
  3. Bluetooth
  4. Rotation
  5. Mic
  6. Sound
  7. USB Mass Storage
  8. GPS
  9. A2SD Script
  10. Trackball wake
  11. HWA
  12. Camera
  13. Sensors
  14. Themes

Improved in 3.1: 3G connection seems to be working much more stable now. Fixed in 3.0: In version 2.8 the camera does not work as expected (flickering). A workaround is to start the camera close it and restart it again. Also, (very rarely) the 3G connection drops but switching to airplane mode and back restores it again.

UPGRADE: In case you are upgrading from a previous version please have a look at the Upgrade Android section.

Otherwise, let’s install JellyBeans on your HTC Desire!

Backup Everything!

If you happen to have any data on your phone that you might want to keep (contacts, SMS, SD card content) now is the last chance to backup your data! There exist numerous tools helping you with that, such as SMS Backup & Restore, Titanium Backup ★ root, etc. Please have a look at the Upgrade Device section below for backup and restore. Once again – In the next steps you will erase any data on your phone. I’ve warned you 🙂

Rooting the device

First and foremost you need to root your device to gain full control in order to install custom ROMs. Be aware of the fact that you most certainly void the warranty. Furthermore you might ruin your device doing so. All that said go to and follow their guide on how to root your HTC Desire. The process is pretty straight forward so you should not run into problems. If you do please check their FAQ.

Preparing SD card

Next, you will need to do some preliminary device configurations. First, in order to overcome the Desire’s internal memory limitations (512 MB internal memory) we will setup JB to use a SD card as its primary app and cache storage. This way you will be able to install far more apps then you could when only using the internal memory. Hereby, the heavy lifting is done by a2sd, which we will he using later on when actualy installing JB. So, start your (rooted) phone and boot into recovery. You can do this by pressing and holding the power and volume down button when starting the phone (as you did when rooting the phone). You will see the recovery console window as shown below: htc_desire_cwm_rec_1 There navigate to Advanced and select Partition SD card: htc_desire_cwm_rec_2 If you happen to have a 4GB SD card (like me) choose a 2096MB Ext partition (ext3, which will be the default used by a2sd) and a 64MB Swap partition. htc_desire_cwm_rec_3

NOTE: Do the partitioning a couple of times to ensure everything has been written correctly. Then restart your phone into recovery mode again and wipe data and cache (do this a couple of times too).

Copying ROM to SD card

Take out the SD card (i.e. put it in a device such as your tablet to be able to access the partitioned and wiped SD card) and copy the JB ROM onto it, e.g., together with Google Apps (latter can be done afterwards too, additionally version 3.1 and later already include Google Apps in the ROM). Please check the developer’s page for the latest ROM version.

NOTE: The title on the developer’s homepage accidently links to a different ROM than the one described here. Thus, do not download the ROM linked by the title “The fastest/stable CM10 VJ Jelly Bean 4.1.2 vX.X”, but rather scroll down on the page and download the correct version there.

Finally, put the SD card back in and restart the phone another time into recovery mode.

Installing JellyBeans

Now it’s time to actually install the custom ROM you’ve copied to your SD card. In recovery mode select “Install zip from sd card” and select the ROM (e.g. and confirm it to start the installation process. Although you can customize the setup it’s best to just go with the default settings available, i.e. be sure to leave a2sd which we will be using later again. CM will first check the installation ROM zip file for validity, format your system (SD card) and finally start the installation process. Once the installation has finished be sure to restart the phone again by simply selecting “reboot system now” from CM’s homescreen in the recovery mode. Do not boot into recovery this time – let the phone boot normally.

NOTE: Do not panic if you only see the HTC or the spinning CyanogenMod logo for a couple of minutes – this is normal behavior since various installation steps are being processed in the background. If you happen to get stuck on the logo screen first try to reboot your device. If you still can’t continue with the final setup try re-partitioning your SD card again an start over. I’ve experienced this behavior on some devices but after doing these steps a couple of times everything worked out perfectly. Also, make sure to check the data integrity of the ROM ZIP you’ve downloaded as this might cause odd behavior too. Also please have a look at the Google Apps section below for solutions when experiencing the spinning logo problem.

Setting up a2sd

You now should see your fresh JB install for the first time. If not, e.g. the phone does not boot or you get stuck at the Cyanogen Mod loading screen forever make sure to restart the installation process by wiping the data/cache and partitioning the SD card again. I’ve experienced this behavior on a SD card that was not partitioned correctly (not fully aligned). Repartioning the SD card solved this problem. Either way, hopefully you now see in the JB homescreen. There open the Terminal Emulatur and activate a2sd by entering the following commands:

a2sd install

First you will be asked if Terminal Emulator is granted root access – allow it and check remember. Second, a2sd will ask you three questions. Answer them with YES, NO and YES.

NOTE: Selecting three times YES has caused several of my installations to not function correctly, e.g. not being able to update existing apps with the error “Insufficient space”.

If you selected YES for the last question your phone should be restarting now. Let it sit for a while as a2sd will now copy existing apps and cache to your SD card, thus freeing your phone’s internal memory. Once this is done have have a working JB installation with the power of a2sd. Congratulations! 🙂 Also note that you can issue the commands listed above at any time afterwards too, e.g. after you have restored applications using Titanium Backup ★ root. Thus, sometimes you might need to force a2sd to move applications to your SD card. Simply use this command and you are good to go. Everything after this point is optional. Nevertheless, please have a look at the Final Notes section at the end of this post.

Installing Google Apps

Installing Google Apps is only required for versions prior to 3.0. So, if you happen to use a version prior to 3.0 now would be the time to do so. Download the corresponding ZIP file and copy it to your SD card. Boot into recovery again and select “Install zip from sd card” and select the ZIP file. The installer will guide you through the setup process. After a restart you will have all Google Apps installed on your phone.

NOTE: In case you are experiencing the spinning logo problem when rebooting your device after the installation make sure to not enter your Google account details in the installation wizard. If you are unable to overcome the spinning logo problem repeat the installation procedure and make to not setup your Google account when running the setup wizard for the first time.

Customizing JellyBeans

I’ve experienced that the default CPU governor (OnDemand) drains the battery rather quickly. Thus, be sure to set smartAssV2 as your default CPU governor and select to restore this setting on boot. But be aware of the fact that smartassV2 is not available for version 3.1 and above. In this case just stick with the default CPU governor. That’s everything needed to setup JB on a HTC Desire (Bravo)!

Upgrading Android

At some point you might want to upgrade your Android installation (ROM) to a newer version that probably includes bugfixed and/or improvements. Please note that upgrading your existing installation means that you will loose your current settings since it’s best to wipe your SD card and install the new ROM according to the steps previously described. Thus, you will definitely want to backup your exisiting settings, data and applications in order to restore them after the upgrade process completed. Here are the steps required to backup and restore your settings for an upgrade.

Titanium Backup ★ root

One of the most prominent backup tools for Android is Titanium Backup ★ root. So, first of all install Titanium Backup ★ root. When started for the first time make sure to allow Superuser rights and to check to Remember this setting. Moreover, a System configuration Warning will pop-up telling you that you won’t be able to restore applications due to access restrictions. To fix this go to your devices Settings -> Security -> check Unknown Sources (Allow installation of apps from unknown sources). OK the warning. Please note that in order for this setting to work you have to restart you device. Also, once the entire upgrade and restore process has been completed be sure to uncheck this option again as it poses a security hazard. After a restart open Titanium Backup again and select Backup/Restore from the menu. There you will see a list of your currently installed applications and additional Android related options. Select those apps that you want to backup. Each application selected will be backed up to your SD card in a folder named TitaniumBackup (i.e. /sdcard/TitaniumBackup). Note that applications must be closed in order to be backed up. Fortunately, Titanium Backup will force-close them for you if needed. Also, make sure to select the following options:

  • Accounts (Google accounts, etc.)
  • User Dictionary (Your custom dictionary)
  • Wi-Fi Access Points
  • Settings
  • Settings Storage 4.1.2-eng
  • Phone/Messaging Storage
  • Phone Storage
  • Messaging
  • Media Storage
  • Browser (Bookmarks)
  • Contacts Storage (if not synced with Google or some other service)
  • Calendar Storage (if not synced with Google or some other service)
  • Country, Language, Time zone

Optional settings include:

  • Downloads
  • Application Widgets
  • Bluetooth Pairings
  • Data usage
  • Downloads
  • Key Chain

Depending on the option selected from the list you can either select to backup data, the application itself and both. I recommend to select app+data to make sure you have backed up everything required after a restore. Also note that you might have to restart your device for some Android related settings. Please do so otherwise the restore process will not complete.

Final Notes

It seems like that for some applications a2sd fails to move the application data to the SD card correctly causing it to reside in the internal memory. If this is the case simply move it to the SD card by issuing as2d install in your terminal, as described in the section Setting up a2sd. In case after some time you experience a slower system wipe the cache from withing the recovery console. This should also speed up the boot process, e.g. the spinning CM logo. For a smoother experience you can optimize the wallpaper rendering process by doing the following:

  1. Go to Settings
  2. Launcher
  3. Homescreen
  4. Un-check “Scroll wallpaper”
  5. Check “Wallpaper quick render”

For wired tethering (USB tethering) to work you need to install android-wired-tether. For WiFi tethering to work please have a look at this comment in the comments section below. That’s it, enjoy your new Android version 🙂