ICS on the Galaxy S2: Official firmware (UK), hit or miss?
Saturday, April 28, 2012 3:32:36 AM
ICS has been released on the Galaxy S2 and the rollout is already happening in a staggered fashion across Europe. Barring a few minor carriers, the update is available on Kies for all UK GS2 handsets. Plugging in your handset to a PC running Kies will encourage you to upgrade. Should you upgrade, what's changed and will everything work as it should?
Warning: Essay ahead
OK, so I held off upgrading. I'm not the early adopter I once was. Maybe it's an age thing. I read a few of the brief reviews at sites like PhoneArena and Techradar; there seemed little in the way of depth to these reviews, merely a warm reception to the idea of ICS on the biggest selling Android handset of all time. Such reviews haven't stopped the repeated questions coming up all over the place: "Should I Upgrade?", "will X app work?", "what about battery life/performance?" etc. etc..
I'm going to look at these questions from my perspective as a programmer/hacker and tech enthusiast.
Issues raised by the cycle of leaked prerelease Samsung S2 ROMs over at XDA Developers fuelled the need for answers. These included, in no particular order:
- Battery life
- Touchscreen responsiveness and behaviour changes
- Wifi connectivity
- Performance / lagginess
- Upgrades and changes to apps and the Touchwiz launcher
- App compatibility
I will attempt to answer these and other questions. Since I spend an unhealthy amount of time playing detective with tech, programming etc. my ruminations are largely opinion, hopefully informed, rather than hard fact - and if it's a little laboured well, I'm a bit of a geek - 'nuff said
ROM: I9100XWLP7 / I9100XXLPS / I9100CPWLP5 (unbranded UK)
Let's begin with a brief look at ICS and what it really means for users. Fuelled by excitement at something "new", common misconceptions include: ICS is some kind of revolutionary Android redesign with a cool new interface that overhauls everything internally leading to better performance, better multitasking, iPhone smoothness, amazing new features (beam etc.) and some kind of unleashing of the true power of the hardware upon which it runs - to name a few. Google themselves, along with review sites echoing that pitch, have done little to quell such misunderstandings - part of the reason being that ICS rode on the coat-tails of the Google Nexus, Google's Samsung-partnered handset designed to showcase ICS (released last year). Most of the above is just plain wrong, if for no other reason than the fact that Android is an OS in constant evolution, and no one version thus far can be considered revolutionary, except perhaps the first. Such realities are typically clearer to those with a background in software development/programming.
Many of the clues to what ICS really brings can be found in the Android developer documentation. The Android API, essentially the layer of software in Android that allows programmers/app developers to access the facilities of the handset, has been evolving since the beginnings of Android. Google have come out and said as much, even though it is worth taking that with a few grains of salt in the context of their disputes with Apple et al. It seems that Google have only recently - say in the last two years - understood the potency of Android as a mobile platform and thrown more resources behind it. With this realisation has come accelerated efforts to "sort out" the platform to make it a powerful, rich environment for developers, along the way adding features and ramping up the "out of the box" UI to make it appealing for consumers demanding a slicker experience. High on the priority list was unifying the 2.x (Froyo, Gingerbread etc.) line - seen as the phone/handset Android OS, with the 3.x (Honeycomb) line - a superset designed primarily for tablets. Incompatibilities between these major Android lines caused additional fragmentation in the Android ecosystem; Taken in the context of the touted advantages of the iOS platform - a tightly controlled ecosystem that's developer friendly off the bat, looks great and offers developers access to everything the hardware can do - ICS could easily be misunderstood as "revolutionary".
In a number of typical use-cases, in terms of features ICS simply brings the vanilla Android experience in line with what handset OEMs have been adding to android themselves over the last few years. In the case of Samsung, their Touchwiz 4 launcher (applauded and lamented by many in equal measure) already has a number of these "new" ICS features. Though many were hoping for a Touchwiz-less ICS from Samsung, it was obvious - to me at least - that this was never going to happen. It is understandable that, as a stock update, Samsung would feel obliged to keep their out-of-the-box experience consistent with that of the GS2 at launch for the average user. Removing Touchwiz could break that "commitment" and land Samsung in all sorts of trouble ("hey, my phone changed, wtf?!?"). The best compromise would have been to offer the facility to switch Touchwiz in and out, but this is technically more challenging, more costly and would likely only please the more technically minded user. In any case, the tech-savvy can go install a variety of ROMs out there that remove almost all traces of Samsung from their handset.
So what's new?
Read carefully: ICS for the S2 is a very similar user experience in terms of look and feel, standard apps and behaviours to the S2 running Gingerbread 2.3x. No point in upgrading if you want a new UI - Touchwiz 4 is essentially exactly the same in ICS as before, apart from a few small changes here and there, and the facility to leverage some of the ICS new features.
In a nutshell, changes for typical users are as follows. Those with a +, I like, the rest, I don't mind either way:
+ new "recent apps" taskswitcher / killer (push-hold home button)
+ ability to dismiss individual notifications from the tray
- face unlock
+ new settings menu layouts
+ new developer mode options including CPU use overlay, touch interaction indication, flashing for changed screen areas etc.
+ Some other ICS refinements like data monitoring and capping
- changed overscroll bounce to glow
+ Updated some core Android apps, like Gmail
+ changed lockscreen unlock behaviour (gone is the irritating need to slide off the whole screen)
- slightly more flexibility re. what appears on the homescreen and where (weather/time at top, middle or bottom)
+ changed lockscreen notifier appearance for missed calls and new messages
+ faster acceleration profile for scroll and slide gestures and less damping. Easier/faster to scroll through long lists
- homescreen wraparound
- changed phone & contacts components. Chief among these is removing the Contacts tab from the phone.
+ partial consolidation of the phone log (thanks Clive). Could go MUCH further though.
+ Cosmetic changes to the status bar. Signal and battery indicators bigger and Wifi indicator shows traffic
+ Cosmetic change to show orientation change by GPU-accelerated display rotation
+ Cosmetic change to the answer incoming call screen (more obvious to the user and reduces the minimum slide distance to answer/reject calls)
+ Browser updated to the latest Webkit engine
So there are lots of pluses and therefore lots to like? Not really.. Or at least, nothing to get excited about; the Touchwiz improvements are largely trivial and in response to repeated complaints from a large section of the user base. Most are welcome, but Touchwiz changes/improvements could easily be retrofitted to Android 2.x and, as I understand, one or two have. Less trivial changes I'll discuss below. ICS changes are mostly welcome but again, not much to get excited about. The average S2 user won't feel any big differences from Gingerbread to ICS in terms of features.
...in fact, "plenty" in my humble opinion - though given the bar with respect to software development these days, Samsung might disagree. My biggest complaint lies in the overall feel of the phone which at the time of writing is still considered a flagship, high performance device. In a nutshell it feels, well, more bloated and more clunky, less smooth and responsive. Read on for more, and rather than tackle my frustrations feature by feature, I'm going to deal with them in broad categories...
I won't say this thing feels flaky. 14 days in and I've been forced to reboot twice. Not bad, right? But in the year or so prior, running GB, I've never been forced to reboot the thing for software reasons. Not once. Sure, I've done it by choice, but never because it locked up on me. I did run into the dreaded USB port battery dumping and spontaneous switch off issue a way back, but I have it on good authority that that's a hardware issue, and was solved with a little coaxing of the USB/charger port.
Example 1. Fired up my trusty Sony IV840 bluetooth headset for the first time with the new ROM. Switched Bluetooth on. Switched headset on. Phone prompts for passcode (never asked before but hey, this is a new ROM). I hear a nasty short digital noise in the headset and boom! Phone is frozen with a status bar and nothing will respond. 20-second power button reboot required. Afterwards headset is working as normal.
Example 2. Wifi. This thing takes ages to connect to Wifi. Up to 30 seconds before it will connect with my usual Wifi hotspots. Once it hung trying to connect to Wifi; the Wifi button in the tray was in-between states - green but grayed and unresponsive. Reboot required.
Edit: Clearing the dalvik cache seems to have improved the situation with Wifi connectivity considerably, but 2.x would always connect instantly, and I still need to wait 5-10 before the connection's active.
Example 3. Swype keyboard. Using it causes massive battery drain. Expect your phone to be dead after 4 hours from fully charged. The reason is that the swype process goes 60+% CPU and stays there, while the CPU is nailed at 1.2Ghz. If you don't know this you're gonna be tearing your hair out. Thankfully OSMonitor revealed the problem to me in about 20 seconds. Every time I try to use the swype keyboard it happens again, so swype is off limits in this firmware, period.
Now, apart from the above issues, I've not had any other significant stability issues, but these are major issues affecting typical use cases of the phone. Swype I can live without, but if you're coming over to ICS at home with Swype on Gingerbread, you're in for a big disappointment. Overall opinion: Not impressed.
The best word to describe the performance of the new firmware is "laggy". On the whole the handset performs much as before, no faster for sure, but on average no slower either. However, real world performance and perceived performance are two very different things, and it's in the latter case that the new firmware disappoints.
Before getting into the details it's worth mentioning the one big performance improvement, and that's in the inbuilt browser. Samsung have moved to a much newer Webkit base in their browser for this firmware, leading to improved JS, CSS and rendering performance as well as better compatibility to the latest standards. Still no autowrapping/flowing when pinch or doubletap zooming though. None of which really affects me since I use Opera mobile as my window on the web.
Some examples of perceived performance hits...
My typical use-case for the dialler is as follows: Tap phone to bring up dialler, tap up to 3 numbers to filter the contact list, and choose contact to populate the phone number. Leaving aside how the functionality of this feature leaves a lot to be desired on the Galaxy line (in every firmware), it used to be fast. I could tap numbers to filter or tap just to type in a phone number real fast with almost no lag, save perhaps a tiny amount on the first digit as it starts filtering the phone book. It's gotten a lot more laggy now, and feels like the phone isn't keeping up as I type the numbers.
A sort order issue has crept in, so if I have two contacts named: Hello and Chris Hello, and I type 4355 to filter "Hello", contact "Chris Hello" will appear requiring me to pull down the list to select the right contact (not so before).
Obvious areas for improvement in the Dialler have been almost completely ignored: for instance allowing to filter on firstname and surname, and the stupidity of tapping the dropdown and having to tap again to see all the numbers for the contact (there are more, but these annoyances were also in 2.x)
2. Touchscreen lag, responsiveness and behaviour
Example 1. So I hit "menu" and "settings" quite a lot. About 30% of the time my tap on "settings" isn't registered, requiring a re-tap. Sometimes the retap(s) don't work either. Hanging up a call I'm often tapping the big red call-drop button 2-3 times in quick succession to drop the call.
Example 2. I start scrolling in a long-ish list, like the contact list, or a list of settings. Typically I'm holding my finger on the screen and sliding it, and I expect the display to correspond. But the phone doesn't start scrolling the screen when I start sliding my finger. There's usually a half second delay before the phone jumps the screen to where it should be, and from there it keeps up.
Example 3. I'm scrolling through the contact list or a web page using flings. Now that the scrolling got much faster and the damping is less (which on the whole I like) I need to tap again more often to stop the scrolling. And when I do, it sometimes starts scrolling again when I release my finger. Sometimes fast, sometimes slow, and occasionally in the wrong direction.
Examples (2) and (3) could be knock-ons to the increased sensitivity / acceleration profiles used in ICS... In any case my fingers have adjusted a little to these issues but they're still noticeable two weeks in.
3. General lag
I was going to describe these issues in the touchscreen section above, but hey - there are so many, it deserves it's own.
Launching inbuilt core apps, such as Phone, Contacts and Messaging, there are pauses galore. Gone is the instant response I used to enjoy in 2.x. Tapping any of these results in a 1 second delay (blue bar at top, black screen) before the module appears and is usable. If Phone/Contacts/Messaging are already loaded into memory, they reappear instantly, but if they've been shunted out of memory by Android, hello 1-second pause again. To test this, from the homescreen, use the taskswitcher to kill your previously launched phone, contacts or messaging apps, then try and launch them again.
Launching core apps from the lockscreen, for example when you've missed a call or an SMS has come in while the phone's asleep, is just as bad. Now, this wasn't perfect in 2.x, but it's worse in ICS: unlocking the phone with the new SMS/missed call bubble takes you to the homescreen for 1+seconds before you're in the SMS/Call log apps, even if those apps were running or even if they were active before the phone went into sleep. For text message pingpong this is a PITA if you, like me, like to put your phone to sleep when you're done and not wait a minute's worth of battery sucking before the phone does it for you.
The SMS app is one example of many apps using Android widgets that display chronic lag during transitions. So for example, if I launch SMS (waiting a 1+seconds for it to appear), then tap on "compose", where in the past the compose activity would slide in smoothly from the right, it now judders and jumps in, seemingly fighting for CPU with the keyboard. If I tap on an SMS thread in my history list, it's more choppy and laggy, and of course scrolling through that history is more jumpy than before.
Hitting "back" to back out of activity (app) pages doesn't keep up with me the majority of the time. So, if I'm editing an SMS and hit "back back" to collapse the keyboard then go back the the SMS list, I'm crossing my fingers that the taps were recognised because the screen didn't respond yet, nor did the haptics make me aware that the keypress was registered.
When backing out of apps to the homescreen, the GPU transition is often jumpy, where in the past it was almost always totally smooth.
Using the keyboard, whether the inbuilt Samsung IME or my preferred "Gingerbread keyboard" (by Steven Lin) is now far less responsive. Haptics lag behind keypresses and the keyboard struggles to keep up with me when I'm typing fast. It was much more nippy before so less typing errors and less irritation.
The examples go on; it's pretty much the same story across the entire platform.
4. "Jumpiness" when scrolling / panning etc.
Now, Gingerbread wasn't perfect in this regard, and there are a number of detailed examinations of the issue from Google etc. that explain why Android isn't as generally smooth as iDevices when it comes to scrolling, panning etc.. Especially in regard to the issue of scrolling through long lists. Bottom line: there are some good reasons technically (and even from a usability perspective) as to why why Android isn't totally smooth. But things just got worse in this build of ICS. Not by much, but noticeably. Whether that's because of some additional bloat in Touchwiz - usually where I see it, for example scrolling the contact list, or not, eg. Opera mobile which feels slightly less smooth when zooming in and out or scrolling/panning complex pages - I can't be sure. But the overall experience has gone in the wrong direction. Together with some of the touchscreen issues above, the whole experience of the display seamlessly responding to your finger has gone significantly in the wrong direction.
I will say that these issues aren't necessarily the fault of Samsung-Touchwiz or Google-ICS. The litmus test of Samsung's programming would be to establish whether a faulting app works on the Google Nexus running at the same Android level (4.0.3). If it does then Samsung's ICS is to blame, if not, there's a general ICS compatibility issue with that app.
So key among my frustrations here is Skype, which launches and works, but sound is completely garbled in both directions, whether over Wifi or 3G. My feeling is that Skype would already have been fixed to work properly on the Google Nexus, a handset that's been available for some time, so my feeling is that Samsung have messed something up here.
I have a number of friends who've reported that a number of games don't play since upgrading the GS2 to ICS; it's likely that games will be updated to work properly on ICS very soon. Most top-tier games seem to work. My fear is that failing games may already work on ICS but are failing on Samsung's ICS ROM. One of my colleagues is developing an OpenGL-ES2 game using only the Android API (in Java). It works fine in 2.x on the GS2 (his development device) but on my handset running ICS just shows a black screen.
One of seemingly best kept secrets of the GS2 handset is how utterly power efficient this thing is. In the Gingerbread days with settings well tuned, some user intervention and with occasional use I've seen my handset achieve 6+ days' battery life switched on 24/7. Now, I wouldn't achieve this consistently, just occasionally; nonetheless a consistent light use profile on a tuned handset would typically achieve 4-5 days from fully charged. Apart from obviously using the handset, two other things would affect battery life considerably: the amount of "wakelocks" (taking the phone out of deep sleep mode) being held by installed and/or running processes (typically affecting the "Android OS" bar graph) and the mysterious "Android System" bargraph which on a light use cycle would typically reach ~20% over 4 days. I never got to the bottom of the "Android System" usage, but on those few occasions where I saw 6+ days, Android System was down at 4%, so it's safe to assume that something in there was making regular wakelocks on the system. At that time I was running the I9100XWKI4 / I9100XXKI1 firmware (CPW CSC), the latest pre-ICS firmware for unlocked unbranded GS2's in the UK.
My feeling over those months was that if Samsung could sort out the drivers and some of the key core components of the GS2, it would be capable of 7 24/7 days on one charge with occasional and light use.
The situation in ICS is notably worse, but certainly not intolerable. In exactly the same usage profile I can get 4 days "at a push" where I would get 6+ before, and the typical has fallen from 4-5 days to around 3. I think that battery stats gathering in ICS has changed internally from Gingerbread, so comparing the Battery UI between the two versions is somewhat apples and oranges, but the biggest noticeable difference is "Android OS" which, at the time of writing, is at 62%, even though the phone has had very little use since it was charged 1.5 days ago. The battery stands at 60% currently. If my reading of the stats is correct, were Android OS down at ~5% (where it should be), then the current battery remaining would be about 80% which, after 1.5 days, could allow for 6+ days as before. So the bottom line is, Android OS is sucking juice, and it has nothing to do with wakelocks held by any apps I've installed. A useful program "Better Battery Stats" allows one to investigate offending apps for holding wakelocks, and everything reported from BBS shows minimal wakelocks held by any processes in userspace. The problem, it seems, is that objects running in kernel space are holding wakelocks or doing unnecessary stuff on timerthreads.
As a last point on battery use, certain Samsung apps can go rogue causing big battery drain. Chief among these are the Swype keyboard, which must simply not be used in this build, and the horrible Vlingo voice control software, which (in Gingerbread) had a habit of going 100% CPU and draining the battery. I haven't yet noticed a major issue with Vlingo in ICS although it does have a habit of kicking in when you double tap the home button - which I accidentally do from time to time - and when you connect up a bluetooth headset and then hit the headset button. Vlingo drives me nuts and is a good example of what really annoys me about vendor bloatware. You can't remove it, you can't turn it off or disable it. And if it plays up (which Vlingo does) you have on each occasion to go on a mission to kill of its processes and services before they respawn.
One of my tweaks to improve battery performance is to stop the phone hunting between GSM (2G) and WCDMA (3G) transmitters. In its default configuration, the GS2 prefers WCDMA whenever possible so in a patchy signal area where WCDMA drops out, the phone switches to GSM, then when a little 3G signal reappears, back to WCDMA, then back to GSM, etc. etc.. This constant switching eats battery so nailing the phone to GSM, a technology with generally better signal coverage and less power requirement, is a good strategy for when the phone doesn't need to be a data device; it can be switched over to WCDMA manually when needed. This switch can be found in Settings..More..Mobile Networks..Network mode. Only in ICS, when you change network mode, it automatically enables packet data for you
Being on T-mobile in the UK allows me to roam between the T-mobile and Orange networks at will, a handy facility. Much like with the phone's 2G/3G, the auto switching of this isn't too clever in the phone, so I want to control it manually. I do so in Settings..More..Mobile Networks..Network operators. Only in ICS (as with 2.3.4 before) every time I do it, it has to scan for all available networks (taking a good 30 seconds) instead of presenting a cached list of the networks and trying to connect at the point I select one. That's really annoying - in the original firmware from 12 months ago, it would present a cached list instead of insisting upon scanning every time.
I use the VPN facility on the phone to connect into my office network, browse my network files/folders, remote desktop, etc. etc.. Only in ICS, I can't save a VPN connection without changing the lockscreen to a password, PIN or pattern. I really don't want my phone secured in this way, it's a real hassle typing that crud in every time I want to look at the phone. If my phone is stolen, I'll change my VPN password on my network.
A colleague using the GS2 for business routinely pumps his next months' to-do into his GS2 calendar by exporting an iCal file from his corporate network and just opening it up in Samsung's calendar. This facility, which worked perfectly in Gingerbread, is completely broken in ICS. That's right, iCal files don't import into Samsung calendar any more in ICS.
OK, so ICS is the way forward. From a developer perspective it offers a substantially richer API for programming, creating the possibility for single apps to be developed to target both tablets and phones. It offers developers more access to device features and paves the way for software to be written controlling and interfacing to connected USB and bluetooth devices like never before. It fixes a ton of bugs lingering in the older 2.x codebase and leverages newer versions of the Linux kernel with the potential for improved performance, better games and more heavyweight (meant positively) apps. ICS is a good thing, and the GS2 being Samsung's flagship phone, needs to run ICS well.
I can live with the aesthetic of Touchwiz and understand Samsung's reasons for keeping the TW4 layer as the front-end for ICS. What I can't live with is poor performance, broken features and core functionality not working as they did on the device when I purchased it. I have a feeling many GS2 owners will feel the same way, and for these reasons I can only regard the GS2 ICS firmwares as Beta grade software at the moment.
With the current Galaxy S2 and upcoming release of the Galaxy S3, Samsung have some of the best smartphone hardware that money can buy out there. It is incredibly frustrating that their software division is not receiving the same attention and investment as the hardware division. Loyal consumers will be put off if they are left out in the cold, and poor software will do nothing to cement the reputation of Android given the huge success of the Galaxy S2. One can only hope that, given said success, Samsung will address these issues quickly and continue to support the S2 as the S3 becomes their new flagship. That not being the case, the danger is that Samsung will alienate their userbase, many of whom will be thinking right now that the S3 is their natural upgrade path over the next 12 months.
Consumers are extremely fickle, especially in the current climate of rapid mobile technology evolution. Android is well placed to become a hugely dominant and successful platform, but hardware manufacturers and software creators share in the responsibility for its continued growth through ensuring that quality remains a foremost priority.
Samsung, pay attention: Nokia were here just a few short years ago.