Samsung Galaxy S II, The best Android Smartphone ever?

Whenever i hear such a claim, on any product for that matter, i always wonder what is the context of the “best”. You see unless the product excels in all departments, i.e. it is the purrrrr -fect product in comparison to its competitors (see there is still a context) it can’t be the best.

Take the category of smartphone as an example. I would rate HTC for its famed Sense experience, which help to ramp up a newbie experience with Android (and Windows Mobile previously). On the other hand I see SonyEricsson being in the leader in its camera functionality having used its Xperia Arc and compared it with all the Galaxy S series. That said, HTC Sense is getting too complicated as the company tries to be sophisticated for its products to be ‘smart’. But I have digressed.

So when I read reports that raved the new Samsung Galaxy S II as the best Android smartphone to date I thought it is a bold statement. Don’t get me wrong as I think it is yet another fine product by the Korean company but that statement needs to be contextualized. Continue reading

Desire HD a Déjà vu

It has been more than 3 months since I have gotten myself a Desire HD. Usually I would be excited with the new phone, and would blog about it like I did with my Galaxy Tab and Galaxy S. Somehow, with Desire HD, I have been dragging my feet (or rather my fingers) to blog about my thoughts of the HTC latest flagship Android gadget.  It was mostly disappointments that piled up one after another, and I tell you why.

HTC Desire HD

 

When I first had my hands on the Desire HD, I actually thought I fell in love with it. The overall quality is just what you would have expected from HTC; The use of good quality material (over some cheap plastic material assembly), the polished user interface including the initial set up process. The phone feels heavy but it makes you think of the good solid material instead of the negative aspect of the weight. The tactile feedback on the screen gives a “tight, controlled mechanical” response you would expect from a high quality haptic technology based components. The initial take of the phone then was this should be what HTC Desire was 6 months ago. But it turned out to be more than 6 months gap.

Like all romances, love at first sight is never definitive, and with Desire HD it is a good classic example of that. The quality one can expect from HTC is not just about the positive ones. There were still alignment issues with the housing and casing covers, and the stability of the HTC applications that were bundled with the phone remained questionable, just to name a few. Before this blog entry degenerates into rants, let me just highlight three key areas that had subdued my enthusiasm about this phone.

With all the fantastic technical specifications that Desire HD is carrying, the phone fails miserably in the screen display and camera department (of course in my humble opinion). If Samsung Galaxy S had changed my perception about what a mobile phone can do as far as video recording and playback are concerned, Desire HD proved why the former is the best selling Android phone in the marketplace today. That is despite all the great things you can find about the phone itself. At a first glance, Desire HD screen display looked fabulous. The Super LCD screen appeared to have match the bar set by Samsung’s Super AMOLED screen. But when I placed my Desire HD and Galaxy S side by side,  my jaws dropped and I was almost screaming, “What is so super about the SLCD!?”.

From the video below, the display on Desire HD is simply washed out. The display colors looked faded and flat, whereas in the Samsung devices they looked vibrant. Looked at the contrast and brightness!   The conclusion I got?  I would never want to watch any movie on my Desire HD, if I happen to spot somebody around me carrying a Samsung Galaxy S.

Moving on to the video recording capability. Despite the specification of being able to take 720p video, Desire HD  was never able to match the video recording capability I had experienced in Galaxy S. The ghostly motion effect is still there, especially if the video is taken in an indoor setup (flash is a moot point because I could record a smooth video indoor with Galaxy S). If that was not bad enough, there was a severe bug in Desire HD, that resulted in video recorded with random stuttering effect. So when you are trying to take a HD video, this bug becomes a big joke. Incidentally this bug occurred only when I set the video camera mode to 720p. Essentially, the phone had problem recording at 30 frames per second in high definition. There are “dirty” workarounds, but I was never happy with this video recording function since day one.


a sample of video recording using Desire HD. Notice the freeze in 0:16 frame.

Then comes the software aspect of the phone. I remembered when I first got HTC HD2 more than a year ago, I had to endure the buggy SMS application for more than 2 months. If text messaging is an essential mobile function for you, that bug effectively rendered the phone unusable. Despite the bad experience, I remained hopeful when Desire HD was first launched in the market.  HTC development team must have learnt a big lesson out from that saga and delivered a better quality product this time round.

How wrong was I again! One of the selling point of Desire HD is that it is “smarter” than before with its Htcsense.com.  The latter is essentially a service based feature which enables the phone owner to locate and control the phone remotely. Theoretically one can locate the phone with the help of GPS, or initiate a ringing on the phone so you can locate its presence acoustically. One can even initiate remotely, to redirect phone calls and text messages, or wipe out data in case of emergency. Sounds great isn’t it? And of course I said that is in theory, because until last month, I could do nothing of these, even though these were advertised features. The  HTC support acknowledged that the performance stricken services (or applications) in htcsense.com were buggy and the development team was working on it. Being an IT-trained professional, I can understand how software can never be perfectly free of bug. However, the line should be clear between a software in alpha stage versus one that is go-to-market ready. HTCsense.com was clearly at a former stage, so it baffled me why the product was being launched in the first place. Perhaps it should not come as a surprise given the pressure to launch in the market, but it looked like somebody in HTC had done his maths. That the market share gain (through early product launch) will take care of the market share loss (due to the product quality problem).

A web-based service that looks good but not functional at all

On the otherhand, the HTCsense.com could also be more smarter than it is. As of now the services become useless when the phone battery get depleted. Imagine you discover that you have left your phone at home when you reach the office.   You want to remotely redirect your phone calls and/or text messages, only to find out that your phone is “uncontactable” because it runs out of battery. But I digress.

In all my correspondences with HTC support, it was clear to me that they could not commit a time to fix the problems. I gave up, and was looking to sell away the phone, or to do something about the phone myself. With xda-developers.com, I could save a hell lot of my time from building my own ROM or optimizing my kernel which I did for my previous phones. I found Leedroid custom ROM and kernel, flashed it, and the phone finally became what it should really be in the first place. However, there are things that do not change, such as  the hardware limiting issues (i.e. screen display). In other cases, such as the overall product and customer experience with HTC,  it is almost like a carbon copy of the previous one when I had HD2.

It is a déjà vu again.

Face-off – Desire vs Galaxies

I had the opportunity over the weekend to have close look on Galaxy Tab and Desire HD. I will be blogging about these two wonderful gadgets separately, but I did a quick video playback comparison, together with my trusty over-clocked Galaxy S. Here’s the video. Enjoyed!

PS: Please let me know if there is anything else you want to see as comparison between the phones. I will try to incorporate your request where possible.

Software Programming and Cooking

Apart from the incidental choice of word “Cooking” to describe Windows Mobile ROM development process, I found out that recently there is really a great similarity between software programming and cooking.

With cooking, you master the science of key culinary skills, and then with some creativity,  you venture into dishing out different cuisine. I am not a food connoisseur, so you don’t expect me to go into details on this, but you should get the point.


 

Now, turning over to software programming (oh my, I suddenly feel so at ease), there is alot of similarities. You need to master the fundamental programming techniques, and you exposed into different type of programming; UI programming, Web programming, Data integration programming, Kernel programming .

And yes, recently I had ventured into kernel programming, something I have never imagined in the past. The reality though is that I was just meddling around with the Linux kernel source, thanks to  Opensource.

So I looked at the various kernel source codes published by various xda-developers, each of which addresses different aspect of kernel improvements. I decided to make a kernel that takes the best of all. The end product is one kernel that incorporates sztupy‘s Universal Lagfix, supercurio‘s Voodoo display tweak (Gamma and Sharpness enhancement), raspdeep‘s overclock and undervolt, and hardcore/ykk_five 341MB memory hack.

Universal Lagfix addresses the poor performance  inherent in Samsung’s original RFS-based storage. The fix is about reformatting specific data partitions into Linux ext4 format, and by doing that, you can expect 200-300% of improvement. The applications no longer run with intermittent freezes (caused by the lag in the file system access), and responses are therefore almost instantaneously.

So one would think, with a 200-300% improvement in performance, what is there to optimise further?

Now Samsung Galaxy S comes with 512MB of RAM, as you would expect from a top tier smart phones in the market. The problem with Galaxy S, is that the amount of RAM available for end user, is only 304MB. There are more than 200MB of RAM reserved for the system, such as video, android OS, etc. It didn’t help when Android has a bad habit of loading installed applications and widgets on start up, which means by the time your phone boots up successfully, you would be lucky to have 80MB RAM free for use. Now in Froyo, the memory management is far more robust than Eclair, but still, with a limited amount of free memory, you end up having frequent memory clean up performed by the OS, resulting in unnecessary instability in the system.  Both ykk_five and hardcore researched and figured out the kernel configuration for reserved memory. With some trial and error (as eliminating memory reservation causes problem with certain applications such as video recording or 3G video call), the folks in xda-developers established the optimal memory configuration. The result is 341MB of available memory (as compared to 304MB). That ensures some stability much needed in the Samsung Galaxy S.

And you would think by now; Samsung must have done something wrong if any more tweaks can be uncovered. You bet! The question now is how much have we optimised the  Cortex A8  processor, i.e. the brain of Galaxy S.  When looking at the kernel source code, folks have figured out that there are compiler flags we could use to compile the kernel to take advantage of the A8 Cortex CPU architecture. Not only that, the team has figured that the CPU can be over-clocked, just like how the PC geeks would have done to their desktop processors.  Additionally, the CPU is currently running at a voltage level that can be further tweaked, i.e. reducing the voltage consumption value  for each CPU frequency step. The end result, is a turbo-charged but super “air-cooled” (and efficient)  Galaxy-S. Unfortunately, there is no real tool out there to measure CPU voltage consumption scientifically, so one can only rely on feel (e.g. lower temperature) and experience (battery consumption level). That said, the under-volt tweak is still being refined as we speak, just to determine the optimal level of voltage that is low enough but not at the expense of CPU running reliably at the desired frequency.

The final installment of the tweak is display. supercurio had definitely done far more research than anybody in xda-developers, and probably even in Samsung development team, to improve on the display gamma and sharpness. More explanation can be found in his web-site, so I wouldn’t regurgitate what has already been documented.

And of course, there are some minor tweaks I did along the way, as I touched the source code for the above tweaks. However, these are experimental at this point, it’s probably not smart for me to disclose until I can conclusively determine the value of such tweaks.

Did I mention the code name of the kernel I have customised? Yet Another Optimised Kernel (YA OK!) … So go flash this kernel  if you happen to own a Galaxy S (sorry only for Europe and Asia Galaxy S owners) and want to turbo charge your phone. You will be surprise how buttery smooth your phone is, and it is definitely much faster than the Voodoo’ed Galaxy S I had awhile back.

Here’s a quick video capture of my Galaxy S running on YA OK Kernel. Enjoy.

Samsung Galaxy S – Can it ever be a brick?

In the techie world, the ‘brick’ is usually associated to the state of your phone, where no matter what magic you try to apply, your phone  cannot be powered on at all. It is therefore no better than a high tech paper weight, or a brick if your phone happens to be one heavy phone.

Well, I thought my recently acquired Galaxy S was bricked yesterday.  It’s almost unthinkable that a surreal phone sitting in front of me was staring at me like a brick. I had previously flash a corrupted kernel or interrupted the flash process, in all cases, the phone will just show a broken flash icon when I tried to power up the phone. The phone was recoverable in every incident, since I could bring the phone back to the “download mode” (i.e. bootloader mode),  which allows me to re-initiate a firmware flash.

But not yesterday. I updated one part of the firmware, the flash process was successfully executed as indicated by the Odin flash application, and the phone was expectedly rebooted. But lo and behold,  the phone did not wake up at all after the reboot. It stayed powered down, no display, no sound, no sign of phone trying to “breath”. Not even an icon on the screen that says corrupted firmware. The phone did not even react when I attempted to put it back to the “download mode”.

Thinking that the phone has just coincidentally run out of battery, I decided to put the phone on charge but but it was still no go after few minutes. As I tried to recap what I have done, I realised that I had done something a noob would not have done. I had ticked on “re-partition” option prior to the flash process in Odin. Coupled with the fact that I was flashing the CSC image (one part of firmware that provides operator specific configuration and/or software).  Consequently, the phone had its entire system storage re-partitioned and end up with just that CSC code, without the remaining code, not even the kernel.

It was 1.30am at that particular moment, I reckon my sleepy head must be the reason behind this stupid action of mine.  What I couldn’t comprehend, is how can this screw up impact the bootloader, which is responsible for controlling the phone action during the boot up. One thing certain though is that I had completely woken up as a result.

For a good 15 minutes, I have been thinking all possible remedies, including removing the battery (albeit doing it very quicky) and putting it back to restart the phone.

I was almost resigned to the fact that my phone has become a $950 paper weight. But being a stubborn person (or one who perseveres, depending on how you look at it), I did not like the idea of throwing in the towel. I remembered how my father would spend the entire night till morning, just to fix some simple computer glitches when I was a young boy. I think I might be like him for that night.

Then I was enlightened. I observed that in those attempts when I was trying to put the phone into the “download-mode”, the phone might already be in panic-boot mode. While I had removed the battery and put it back to restart the phone, it was done so quickly that the state of the memory may not have totally erased.

So there I went, took out the battery, left the phone for a minute, put back the battery, and powered on the phone into “download mode” right away. Lo and behold again, phone is alive again! I almost yelled with joy .

And the moral of the story?

Never do any “not for weak heart” tasks, and firmware flashing for that matter, in the wee hours of the day. You would end up staying wide awake for the whole night, regardless of whether the end result is positive or not.

On a lighter note, it appears that it’s impossible for Galaxy S to end up as brick. Not unless you literally make it to be so.

Htcardware vs Samsungoftware

I have been asked a number of times which phone is better, Samsung Galaxy S, or HTC Desire, both of which I had done some review on in the previous blog posts.

Here’s my thought.

At the end of the day, the choice is very personal, there’s no good or bad device, it’s more like if its right choice for you, based on your requirements.

For me, Samsung triumphs in the hardware department (except for maybe the lack of camera flash), whereas Desire wins hand down in the software aspect.

For me, you can address software gap with workaround (sometimes better, sometimes not as good, but its a good workaround), but you can’t say the same for hardware.

For e.g. I was blown away by Samsung camera capability, whereas HTC Sense mesmerized me without a shadow of doubt. I can emulate HTC sense in Samsung Galaxy S via Launcherpro (much better than Sense imho!) and widgets like fancy widget (not as functionally complete but its a good bridge), but I can’t emulate the video taking capability *anywhere near* Samsung Galaxy S in HTC Desire.