Rooting and Installing Custom ROM on S-ON HTC Sensation

At the moment, I’m doing some weekend project coding in Android and since a Galaxy Tab does not qualify as a phone, I switched gadget. An iPhone for an HTC Sensation with my uncle. One thing I quickly miss is iPhone’s Retina Display, however the performance of the Sensation is sensational compared to my iPhone. Was happy until the battery keeps on dying out too soon. I figured HTC Sense played a big part, so I went hunting to get a Sense-less ROM.

The HTC Sensation I have on me is already running Ice Cream Sandwich, was updated OTA. This is good news for me because from some readings here, virgin ROMs are easy to be rooted. For the sake of clarity, here are some links that you’d find most useful in doing the we’re about to do.

  • Stock ROMs to revert back to factory defaults, here.
  • HTC Sensation/XE/4G AIO Tool (Windows based), here.
  • Virtuous Inquisition ROM, here.
  • Fastboot, just Google this.

Because we’re rooting and installing Custom ROMs with S-ON, there is a limitation on what is possible and what is not. First of all, you can only use ROMs that are based on HTC firmwares meaning that you CANNOT use ROMs that are coming from AOSP, CyanogenMod or any of those sort. However, there are some tricks you can try but I’m not responsible for any wrongdoings.

Before anything else, you should root and install a custom recovery. If you’re lucky enough to have your hboot version less then 1.18 then you should go ahead and visit Revolutionary.io, follow the steps there and you even get S-OFF and therefore the limitation in the previous paragraph does not apply to you. However if you’re not that lucky, use the AIO tool from the links above and run it to root your device.

You could actually do S-OFF with the AIO tool BUT you’d have to do it my meddling with some hardware. Since this is a borrowed unit, I’m not doing it. Now that you have root and custom recovery installed, you can go ahead and install a ROM.

  1. Download an HTC based ROM like the one I put above at the links section.
  2. Copy the ROM to the root directory of your device’s SD Card.
  3. Turn off the device.
  4. Unplug the battery and replug after a few seconds.
  5. Hold down Volume Down + Power buttons until it shows a white screen.
  6. Press Volume Down to select RECOVERY.
  7. Once you’re in the Custom Recovery, choose Install from a ZIP
  8. Select the ZIP file you downloaded earlier.
  9. Confirm the ROM installation
  10. Next you must Wipe Data and Wipe Cache + Dalvik

Now for the next part, since we’re still S-ON, the ROM script to overwrite boot.img will not work, it’s still protected by the device. What you can do now is to repeat steps 3 to 5 above. In your laptop/computer, unzip the ROM’s zip file and copy the file boot.img from kernel/pyramid/boot.img to somewhere you’re comfortable.

  1. On the device, select FASTBOOT by pressing the Power Button.
  2. If your device is properly connected with your laptop, the device will say FASTBOOT USB.
  3. Open up a terminal and do fastboot flash boot /path/to/boot.img
  4. Restart the device by doing fastboot reboot

Now you have an S-ON device with a custom ROM :)

Android Ice Cream Sandwich on Galaxy Tab 7

After a long break, I thought I wanna write about Android. This time it’s Ice Cream Sandwich on a Galaxy Tab P1000. As always, for smartphone hacks, everyone should first go to XDA-Developers.com and have a look if one of your gadgets has sub-forums. There’s a specific thread for Galaxy Tab 7 First generation and ICS love is there.

This blog post is a confirmation that ICS works beautifully and incredibly fast and snappy on a Galaxy Tab P1000. It is as if you are having a multi-core Android device. Have look at [ROM][ICS] AOKP (Android Open Kang Project) for P1000/L/N here. Follow the installation routines and you’re good to go.

Here are the steps I took to get ICS working:

  1. I reflashed the Tab with a Gingerbread ROM and ClockworkMod Recovery using ODIN
  2. Downloaded Milestone #4 ROM for P1000 which is listed on the thread
  3. Downloaded Gapps from the link on the thread
  4. Downloaded a ClockworkMod flashable kernel for P1000 from the link on the thread
  5. Went into ClockworkMod Recovery (Power + Volume Down)
  6. Mounted USB Storage and copied ROM, Gapps and Kernel packages
  7. Unmounted USB Storage and flashed ROM, Kernel and Gapps last
  8. Wiped Cache, Data and Dalvik Cache
  9. Rebooted the system
  10. I got an incredibly smooth ICS working on the Galaxy Tab
  11. The ROM’s performance was the best of any ROM I tried but the kernel kept nullifying the RIL stack, I downloaded HumberOS P1000 Kernel here and the problem disappeared
  12. A HAPPY GUY

Performance throughout the whole experience immediately alleviated by the ROM, not only the slick UI/UX had a welcomed boost but the Tab’s performance itself is just amazing. I was on a rooted Stock Gingebread version previously and this update made my day!

Graphics & 3D performance are amazing, everything is GPU Accelerated so it is a very smooth experience indeed. Gmail for ICS is also very relaxing!

ICS SettingsGmail for ICS

Augmented Reality Browser in 10 minutes with Wikitude API

This blog post is a simple tutorial to demonstrate how easy it is to set up a full fledge Augmented Reality browser with Wikitude API. It will only take 10 minutes of your time in its most simplest form, ready to be customized with your own needs. It should be easy enough to let you innovate on your own.

For this to happen, I assume you already have these items ready with your setup:

  • Eclipse (Preferably Indigo)
  • Android Developer Tools for Eclipse here
  • Android SDK here
  • Wikitude SDK here

The project is live at Github: https://github.com/tistaharahap/ARBrowser

I believe codes will speak louder than words ;)

Jajan for Android Open Sourced at Github

Jajan

Jajan for Android is now Open Sourced at Github a few hours ago. I personally hope that by looking at the source code provided, more and more developers will sync to the tune of how easy it is to create an Android application. I wrote most of the codes 7 August 2011 in under 4 hours. Using ready made libraries already available within Android and also other third party libraries, it helped to ease the complications.

The source code is NOT perfect, there’s a lot of places where it could be optimized aggressively even more. More of the optimization will most definitely lie within the ListView. At any case, it will load 100 search results, you can make this endless by loading an incremental of your choice.

The codes are available at https://github.com/tistaharahap/jajan/.

Excerpts from the README shown below:

JAJAN by Urbanesia
==================

Jajan is a simple app to showcase Urbanesia's API v1.0 and how you can extend for your own apps.

As of this writing, the initial commit is at sync with Jajan's binaries at Android Market which is version 1.1.1. Upcoming Jajan versions will NOT be published from the codebase here in Github, this repository is treated as an example for future third party apps by you.

Jajan is available in multiple platforms, go to , if your device is one of the supported platform, it will redirect to your device's application store or it may have you download a binary for your platform.

Mobile Products & Handhelds Landscape

It’s been a few weeks after the whole world said their good byes to Steve Jobs, the iconic leader any startup/company should aspire to have. Everyone was in awe for what he did but mostly for what he didn’t do I suppose. He shaped the mobile landscape as we know today and for the years to come.

I believe strongly that mobile developers are candidly smart but also stupid at the same time, this includes myself. We are smart because we embrace a whole new paradigm and concept in programming that is actually still maturing. There is no one size fits all platform that will deliver everything a developer would need. The most stupid thing of all is actually focusing only on a single platform instead of the product.

While implementing a fresh way to develop mobile products, a notable early stage investor here in Indonesia told me that the technology I was implementing is still 2-3 years ahead of the industry. He was damn right in saying, “What’s the point? Going native is still the answer (for now)“. In spite of all cross platform goodness, there’s always a catch.

So why do any developments I said to myself? It’s just a waste of time and energy because it’s not an easy task to focus on different platforms at the same time. UI on every platform is different whether programmatically or its actual visual equivalent when users see them. I just can’t see any single solution will ever be ready for prime time in the near future. This being said by someone who has coded and NOT by analyst or writers who never coded their whole lives.

Anyways, the distant future is not so distant after all if you got cash for it. Just like the rest of the population, getting a US$ 500+ device is just too expensive. Although here in Jakarta, the trend is the higher the merrier for shops and buyers, it does not cater the whole population. People want first class products even if the could only spend less.

Premium sound premium because other devices make them look & feel premium. The physical properties of a device is the first thing anyone will notice. Nowadays form factors are suited for your thumbs and the way devices look these days are increasingly (subjectively) “better” with at least 10 years ago as a comparison. Devices don’t have explicitly visible antennas, they’re also getting smaller, lighter and the batteries although Internet connected most of the time still lasts longer relatively.

Cameras and phones is a match no one would argue and now 2 Megapixels is what you get at least. Although the quality won’t be that of pictures taken from a pocket camera but the technology is keeping up. We see phones sporting 8 Megapixels lenses from big names that used to be premium. Not to mention the success experienced by Instagram clarifies the argument even stronger. Remember those cheesy frames when you got your first Nokia camera phone, unnoticed and unaware, that’s Augmented Reality in a somewhat more primitive conceptualization.

Processors are getting double its core and power every year but sadly, not so with applications. I see a lot of time, software as an actual performance-hindering component even through upgrades of more advanced specs. What we can still be thankful is cheap memory (storage). You can easily get an 8-64 gigs Mini SD Card for at least $ 12.

So yes hardware is getting more powerful but the price is still a major barrier for end users to enjoy their own devices. If the device has a bitten Apple logo in it, people are used to paying premium, it is a premium device with all its glory. Coupled with a great recent iOS 5.0 release, it’s only gonna get better and better delivering the needs and wants of the whole market.

Android is catching up and has recently dethrone iPhone as the number 1 best selling smartphone in the world. What does this mean to developers and end users? Here’s a few pros and cons about Android as a platform:

Cons:

  • The User Experience is plain and prone to rather extreme iterative changes for every Android version.
  • Due to inconsistency in its User Interface, for each new version boasts a whole new look and it really is causing more problems than solutions, even though functions are defined constantly.
  • Dalvik is a great JVM with incredible clarity for Garbage Collectors. The report of freed memory by GC is actually very demotivating. Try inflating sub views, you’ll see why.
  • Doesn’t run well at all for devices < 800 MHz ARM processors. Samsung Galaxy Mini is a best seller, due to its popularity it can lead first time Android end users to associate Android with lag and unresponsive behaviors.
  • Multi threading is an alienated term for asynchronous. Sure there are classes to do this efficiently but this knocks down more creativity as do with most of C derived languages.
  • Fragmentation of different versions of Android makes developers support the lowest acceptable API level and end users stuck with whatever the handset maker offer.
  • Handset maker more often than not can’t keep up with Google’s amazingly fast iterative updates.
  • Free as in free beer, “Google Experience” devices will cost OEMs and or handset makers.
  • Quality apps in terms of UI/UX are nothing at all in quantity compared to iOS, Android is ok but not beautiful. Very subjective and open for debate.
  • A very dismal post-sales options to get upgrades to newer Android versions even if the device is still on warranty. After-market ROMs are available but this NOT the case with end users, still need guts and technical knowledge although I know a few non-technical friends of mine who does it almost naturally.
  • A very insecure platform! Don’t ever root an Android if you’re not up for its risks.

Pros:

  • Any developer with a spare time can always build their own version of Android. Customizable deep to kernel level, a talented developer can do magic with it.
  • Knowledge is available everywhere on the Internet.
  • Java is a relatively more well known language.
  • Layout is very flexible thanks to XMLs, seriously this is the first time I’m grateful of XML lol.
  • The growth chart is amazingly exponential, currently already topping off the iPhone.
  • Lets mid to low market to have a go at touch screen phones that is always connected. Opens up new possibilities especially for educating the general population about being online.
  • Because of looser supervisions of Android Market, it makes a great playing ground to test out new ideas, even half baked and see how the market responses.
  • Best practices are commonly available and design patterns in Java is very strong, one can be ready for prime time in no time.
  • Although heavily fragmented, developers are often given the option to adopt new frameworks available in higher API levels with a sort of compatibility library to enable them on lower API levels.
  • The kind of technology embedded into Android’s stack is already very extensive and very well though of although I have found some cases like a Multipart HTTP request library is only available if you use third party libraries or by making your own methods. Easily forgivable though in contrast.

There is still more to add to the 2 lists above but the ones written are the ones I feel worth noting. Other platforms have their own pros/cons but as any data will show, Android is topping the smartphone market and that’s a fact. It is the future, especially here in Indonesia. Due to Android’s nature of being open, adopting it is not so much a trivial task.

In China, Android is modded very heavily to suit China’s own needs for a smartphone. Most of the effort are made possible again because of Android Open Source Project (AOSP). Why can’t we do this for Indonesia? With or without the government on our back, we have a great market. It’s puzzling to not see an Android made by Indonesians being sold to Indonesians when we as Indonesians are well know for our desire and passion of making technological advances out of nothing. Wajanbolic is none other the best example.

We owe this to ourselves! As a person involved in the tech world of Indonesia generally, I applause Nexian for its bold efforts in having a very strong C/C++ team of developers to mod its own MTK feature phones. It’s not an easy thing to do but in the end of the day, end users want more beyond its low price. I truly hope Nexian will set an example with its Android phones.

Being a dreamer, one can visualize a very mobile and an actually high tech tomorrow without end users having to fuss with technical jargons and or spec to be persuaded to buy a smartphone. Like any startup will tell, a good product will market and sell itself. We can still empower and influence the market, it’s just a shame if we see this kind of success and control not in the hands of local companies. We know what our market need, not to mention their wants. Look at Google, Facebook, Groupon, etc, their investing so much to become hyperlocal and we just stood there and made to watch as our great market is slowly but surely taken over.

Read the paragraph before with some lime and a pinch of salt, my purpose is simple, it’s the future and nothing else. If anyone is reading this and somehow is disagree with my writings, the comments below is open for anything.

Anyhow, it would be great if we can analyze different user behaviors in a collective way. This will benefit us all without sacrificing privacy though. Although here in Indonesia nobody gives a damn about privacy but I still believe in ethical means in doing it. I’m just not sure the industry itself is ready. I have some data and would love to share with yours. Let’s be smart about this.

All and all, the mobile landscape in Indonesia still very early in its infancy, we have the upper hand of knowing what the market like and how to capitalize on it. Let’s make that disruptive force coming from us and of course for us. Aren’t you tired of making a living outside Indonesia because our market is still not ready yet? Well it’s gonna happen soon and you better be ready for it. I’m game, are you?

Indonesians like to buy things they don’t need, they buy what they want as proof of their existence and identity. RBT is a great example and generates a sick load of revenue. In app purchase is the way to do it + bragging rights.