HTC Desire is a mid-end smartphone with limited memory being already out of radar of HTC updates. Rooted phone can have installed customized firmware that accommodated recent changes. It is a bumpy road if you are into newest Sense (feature rich interface), yet still concerned with responsiveness, battery consumption and other factors. I found the solution holding most of my tight requirements.
I would not even think about changing Starbust ROM, which pleased me for last half a year, if I had not enhanced mass storage. Replacing Toshiba 8GB SDHC class 4 with the new one Adata 16GB class 10 card was impulse for change. Quicker storage could complement comments on Gingerbread OS – leaner, faster yet more battery saving. It turned to be quite bumpy road. Despite common opinion on class 10 cards in Desire, I found no problems so far. I agree that it does not boost your system as much as expected, more improvement you will notice going from class 4 to 6, than from 6 to 10. Class 10 shines however when large files from are pumped up through USB; transfer easily reaches 10-12MB/sec.
Rooting HTC and using custom Starbust v1.4 ROM based on Froyo (Android OS v2.2) was the best shot. Half year back I was simply frustrated by broken HTCsync and looking for more internal storage for apps. Starburst is nearly stock ROM with tiny customizations, with most notable one – DATA2SD scripting – virtualizing internal memory to SD card partition.
Teased by class 10 SDHC card, I redefined ROM criteria again – I wanted new Gingerbread OS while keeping the status quo (plenty of memory, responsiveness, all current apps up and running). Nice add-on would be new Sense interface; stock version of Sense overlay (v1.9) has some flaws I wanted to avoid investing into ROM reconnaissance. Looking at XDA forum on subjective opinions I found hard to get what seamless or laggy system is for particular users; some geeks implicitly sacrifice responsiveness in favor to low battery consumption or other specific features and so on. There was no other way than “trial and error” done on my own. I have created NAND backup of current setup and then tried in sequence: factory reset, ROM installation, startup, most apps installation, testing and benchmarking, create notes and circle back again. Boring or at least time consuming activity, indeed. Especially true when realized that full cycle, except for testing, takes roughly 40-60 minutes for single ROM. However booting and system stabilization takes 90% of this time so ROMs review was background activity while doing other things.
DATA2SD turned to be minor technique amongst current ROM versions. Most popular way to extend internal memory is A2SD. User perspective is that DATA2SD moves whole application data to SD card, while A2SD only most of it. The consequence is that for 768MB ext4 partition on SD dedicated to DATA2SD I could still have over 400MB after installing tens of my utility applications, taking around 200MB of internal memory. For most clean ROMs installation using A2SD you can find from 50 to 120MB of internal memory free. Here comes however kind of irregularity – on A2SD installed app uses mostly SD partition but some data is still place on real internal memory. For instance, installing 14MB app you can find only 1MB taken by internal memory. This way 200MB of my apps reduced internal memory only by 20-30MB. I found however that internal memory was dropping down over time because of the way system caches data and apps stores more and more configuration data.
I lost some time trying to apply A2SDKiller to A2SD-ready ROMs and then install DATA2SD manually. None of dozen ROMs I tried to fix survived this operation – bootloops and boot locks were symptomatic. I completely gave up on this approach.
First I tried Cool3D-AceS-V5 on stock hboot. With A2SD it starts with 86MB of internal memory. Initially I was impressed. However after all apps installation when it came to regular usage it was really laggy comparing to Starburst with the same configuration. I know that I cannot expect that HTC Desire designed for Sense 1.9 can handle Sense 3.0 for faster devices. Fair enough. I would give it a try if it could work with Lotus Traveler (mobile client for corporate email). I could install Lotus Traveler, but was unable to start, it produced errors every time it was opened (“adb catlog” revealed problems with SQL drivers incompatibility).
Later I tried to step back to Cool-sensation-v10 and v7 also based on A2SD. Clean installation leaves more free internal memory, around 139MB. It has less fancy features comparing to Cool3D-AceS yet it has similar glitches using GUI. In this case again Lotus Traveler disqualified this ROM for the same reason.
Testing process accelerated over next ROMs taken from top of list of Desire ROMs and I started aligning performance benchmark to expected responsiveness. Find below excerpt of this exercise using full Quadrant benchmark done couple times on each ROM in same conditions (all apps, WiFi turned on, etc):
- Starburst-v1.4 –> 1900-2000
- Cool3D-Aces-v5 –> 1000-1100
- Cool-sensation-v7 –> 1000-1100
- Supernova-v2.4 –> 1600-1800
- Virtuous-unity-v1.29 + a2sd –> 1000-1100
- Cyanogenmod-v7.1 –> 1300-1400
- RevolutioN-v2.0 –> 1200-1400
- PyramidMod007-v11 -> 1300-1400
- AceSMod007-v41 -> 1300-1400
After all I was really disappointed and close to idea of getting back to proven, fast and stable Starburst. I gave last chance to Runnymede-AIO-v2.2. Positive feedback and different A2SDX memory management pushed me and I give it a chance. A2SDX (also called XD2SDX or D2SDX) gave me almost the same impression as DATA2SD (A2SDX is like DATA2SD except for dalvik-cache which in case of first one is still kept on phone memory for quicker access). For 1GB SD dedicated Ext4 partition, I had over 660MB available memory. I was surprised by quite responsive bells&whistles Sense 3.5 GUI on clean system. Loaded with my all apps, including Lotus Traveler, the lag generator, phone started to brood longer and longer. I could not stand 3-5 second lags for loading simple Sense applications (like SMS or clock details), waiting couple second for unlock screen was irritating as hell.
I was really close to scorch all these ROMs and return back to Starburst. The last word was spoken however by some XDA users, pointing out that Runnymede-AIO is really fast when equipped with SNQ kernel instead of default gingercakes-0.9. Kernel replacement was a question of 15 minutes: boot to recovery mode, clean cache and dalvik-cache and install kernel zip file. First boot took ages; it is always like that when cache is gone so I kept patient. First run was also slow. Two full restarts later the system was up to speed. I was thrilled by true responsiveness of the system: same as Starburst! And it was confirmed by the Quadrant benchmark reaching the level of 2000 points!
Where is the catch, I thought. Some XDA users claim higher battery consumption. After 2 days tests I can say it really does, but not that much – on Starburst-1.4 with Android 2.2.1 and also SNQ kernel battery usually dropped by 2-3% overnight, with Runnymede-AIO-2.2 Android 2.3.5 and SNQ kernel (bravo-184.108.40.206-snq-111118-no2wcr) it is nearly 5%. In daily usage, which is harder to compare day by day, I have not notice real battery drain. Since AIO comes with RCMix-Tweaks preinstalled one can use advanced menu and lower down default auto-brightness, to reduce power consumption.
Kernel replacement fixed also some bugs which happened gingercake kernel related: hot-restart that was hanging phone until battery removed or trackball that was too sensitive messing edited text.
Couple days later with Runnymede-AIO-2.2 with SNQ kernel I really enjoying modern features in blazing fast way without restarts and force-closes. Kudos to XDA dedicated devs: snq and sebastiaan15.
Edit (Nov 2011): AIO-2.2 appeared on 18 November, while on 26th November we have AIO-2.5 with SNQ inside.
Edit (Jan 2012): Over couple weeks period AIO-2.5 I noticed performance degradation that finally pushed me to move to AIO-4.0 (with manual X2DSDX installation). To my surprise v4.0 has stable responsiveness over last couple weeks. Battery conserving is also surprising; phone can last for 2-3 days w/o charging. Good job!