Tuesday, December 10, 2013

Installing (first) OmniRom nightly for Samsung Galaxy S2 (I9100)

After a successful installation last night, here is the recap of what happened so that some of you may find it useful (eventually).
Before flashing OmniRom, I was on latest CyanogenMod 10.2 nightly. This means there was already ClockWorkMod Recovery (CWM), root access, and what not. These are the prerequisites I won't go into.


A little background information might come in handy here. OmniRom is the next Cyanogen, in a way. After CyanogenMod became a commercial entity several of its (now former) developers wanted to keep the spirit of free software, community, etc. going and they formed OmniRom. This was also (one of) the first ROM to bring Android 4.4 KitKat to not-yet officially-supported devices, including Samsung Galaxy S2. The above facts should be enough to make you want to try the ROM out, right? It was for me. That and some spare time were enough to jump ahead.


First, as always, it is a good idea to make a backup. However, in this case it turned out to be a waste of time. First because SD card wasn't deleted in the process so all my files, settings, backups, etc. were still there when the new Rom booted. Some early adopters reported that there was no external SD card accessible from the Rom but this was not an issue in my case. So, all my files were still there but backup gave a bit higher sense of security.
The important thing I *didn't* do was to actually backup each application from its own settings and options. I'm not sure if Titanium Backup could restore the apps from earlier Android versions so it would be a good idea to back up each application that has your data through its interface.


Next comes the download.
OmniRom for Galaxy S2 (i9100, *not G*) is available here. There is only one build currently.
GApps must be specific build and what not. The ones I used are here. No issues whatsoever.
SuperSU I used is v1.80. Available from here.

I downloaded on a PC and then copied to the root of the phone's SD card via USB cable. Fortunately, CWM could read both internal and external flash cards, including subdirectories, so the location would not matter so much.


Installation was pretty smooth. The instructions I followed up to certain level came from here. In brief, what happened is:
  1. Rebooted into (CWM) recovery.
  2. Wipe Data/Factory Reset
  3. Wipe Cache partition
  4. Wipe Dalvik Cache from Advanced options
  5. Install Zip - ROM (
  6. Install Zip - GApps (
  7. Install Zip - SuperSU (
  8. Reboot
The first boot was either too long or the device was stuck so I turned it off and boot into Recovery again by pressing Volume Up + Home + Power. This time it was already TWRP Recovery that comes with OmniRom. Then I did again
  1. Wipe Cache Partition
  2. Wipe Dalvik Cache
  3. Reboot
 This time the system booted itself up happily and quickly. Then came the customization of the new system. Google account log-in was a bit tricky as my GAuthenticator for 2-step authentication was on the wiped Rom. Here I used one of the backup codes to log in, then moved the authenticator to the "new" device through this page. This was painless, fortunately. Pay attention to details before you delete your important data.
Moving other apps, like Dropbox, to the new code generator was equally easy. Simply register the new device in the web-app settings on the PC, for example.

That's pretty much it. I installed most of the applications I had previously simply by searching for them in the Play Store, Amazon Store, or F-Droid. Some applications had their own backup and that was restored, which is really helpful. Others I had to reconfigure manually.

Update: In SuperSU go to Settings -> Custom ROM -> Install SuperSU backup script, to avoid reflashing SuperSU on every update.


The ROM seems basic so far. Pretty much the stock Rom that is available for devices like Nexus 7. Currently I'm missing some customizations, like customizable tile settings, ability to turn off led button lights, customize button actions, quick access to recent apps, turning off the screen, and so on. Unfortunately, all these were supported directly in (CyanogenMod) Rom so far and there are no applications that would do that. Hence I'm hoping the support for this will come later as part of OmniRom.

Most of other features are provided by applications so that's all fine. Oh, one thing - install Greenify to take care of the unwanted background process activity and save battery (and the planet).

Battery life after a day's usage seems pretty good. And I mean good as in comparable to the previous (latest CyanogenMod, which is considered stable as of last week) Rom. I did use Greenify to hibernate pretty much anything I don't appreciate running in the background so the playing field for comparison was even.

Things to watch

Delta updates: Apparently there are delta updates available. This is a welcome change and helps reduce the time and bandwidth needed for Rom updates. As there is currently only one build available for download, I couldn't really test that part. The thing to pay attention to is that delta updates are (supposedly) only supported through TWRP, not CWM. Something to try out once deltas are available for i9100.
Update: Deltas are available for i9100 as of Dec.12. In Settings -> About Phone -> System Updates check for new versions. OpenDelta will download the difference and create the new ROM file in OpenDelta directory on SD card. This is to be used to flash the new version. I guess it should be done automatically but this first one I had to do manually.

Customizations: As mentioned earlier, I hope some level of customization of button actions, notification light, etc. will become available for i9100.
Update: As of 20131212 there are new Quick Settings tiles available, like Airplane Mode.

Addendum: Customizations

Some applications can be used to replace missing functionality and those will be added here as I find them.
  • Elixir2 - toolbar in notifications, system profiles, sound profiles, lock screen ... So far suits most my needs.
  • Increasing Ring -  enables increasing volume for ringer and alarms.
  • [Volume Buttler - sound profiles and various ways of activating them.]
Some tweakers for i9100 are available but don't work with current kernel. In case they add support in the future, the links are below

Update: Further links are to be found on my OmniROM page.

Monday, December 09, 2013

OmniROM for Samsung Galaxy S2 (i9100)

Besides custom ROM(s) available earlier, there is now an official build of OmniROM available for Samsung Galaxy SII (I9100) at the link below:

i9100 - > i9100

Wednesday, December 04, 2013

Tuesday, December 03, 2013

DateTimePicker for Bootstrap v3

Finally found one datetimepicker for Bootstrap v3 that works. Almost all these date/time pickers for Bootstrap inherit from work done by Stefan Petre ( but only few are updated to work with the (latest) Bootstrap V3. This one has a NuGet package, too.

Nuget package: Bootstrap.v3.Datetimepicker

Github: Eonasdan/bootstrap-datetimepicker

Monday, December 02, 2013

DateTimePicker for Bootstrap

GitHub: smalot/bootstrap-datetimepicker

Home Page: link

Message Queue platforms

Below are links to some Message Queuing platforms available:
  • ActiveMQ (link) - "Swiss-army-knife"
  • ZeroMQ (link) - good performance
  • RabbitMQ (link) - advanced
  • MSMQ - basic
Recommended reading: ZeroMQ Guide (link)

- Comparison between RabbitMQ and MSMQ (link)
- A Concise Comparison of RabbitMQ, ActiveMQ, and ZeroMQ Message Brokers (link)

Open Source MSMQ Explorer

An Open Source tool to work with MSMQs:

MSMQ QXplorer / Code / [r3]