HTC Desire Bravo running Android KitKat 4.4.4

15-Jan-2015 General  One comment

Introduction

After many years of faithfull serving, i have had enough of the “no more space” messages on my HTC Desire Bravo, the need to uninstall apps to make space for others, the “this application is not compatible with your phone” message (Android 2.2.2)…..
Enough ! Time for a new phone or…… why not try to root it ? If it bricks, well, i am ready to say goodbye to the phone anyway…..

So now, 24 hours later….. i am looking at my HTC Desire with Android KitKat 4.4.4. running all my wanted applications on exactly the same hardware ! Hurray ! Incredible.

I must say it hangs and crashes sometimes (frequently), but i think this is caused by the slow -standard class 2- flash card that i am using. I need to use a faster flash card, preferably, i am going to install a class 6 flash card in the future to see if it helps (NOTE: I have read some articles on the internet that the devices doesn’t support any class 10 flash cards (i have not verified this). That’s why i will take a class 6, just to be sure.)

UPDATE: I upgraded my flash card to a SAMSUNG EVO 16 GB after reading this review. It seems random IO throughput is more important then sequental throughput.
I did some tests also with A1 SD Bench:
Standard (class-2) 4GB random I/O write performance: 0.08 MB/sec (yes, true, 0.08), random read performance: 2.78 MB/s

Samsung EVO class-10 16GB: random I/O write performance: 0.83 MB/sec (still low but 10 time increase), read performance: 12.6 MB/sec

Anyway, the difference in speed is very noticable, so highly recommended to change the standard flash card. However, the crashes still happen (see later).

Rooting and Custom Romming

I am a rooting dummy and the journey did have some bumps (that’s why it took 24 hours..), but i will try to describe my steps here as detailed as possible so you can avoid the pitfalls.

You can choose several custom ROM build, but i choose LiquidSmooth v3.2 first, mainly because it is the latest one and it seems to be maintained. A list of other ROMS for the HTC Desire specifically can be found here.

1) I rooted the phone using Revolutionary. [I found that it worked MUCH better as UnRevoked. With UnRevoked, you still need to install the AlphaRev HBOOT version afterwards and i found it very difficult to do this. Using Revolutionary, the AlphaRev HBOOT version comes by default].

Read the first part of this article on how to do this.

2) Boot the phone into HBOOT mode by pressing Power + Volume Down on startup (before the HTC window appears). A screen like the following should appear:

Please note especially if you see the purple “AlphaRev” line on top. It needs the AlphaRev HBOOT version or the next step will not work.

3) Now, we need to install an advanced version of the bootloader called 4EXT instead of the standard ClockWorkMod version (which comes with Revolutionary). I found out -the hard way- that the partitioning in ClockWorkMod was difficult, while it was very easy in 4EXT. So how to do this ?

From HBOOT mode,  go to ClockWorkMod. With the Volume Up/Down you need to select “Recovery”. Press the Power button to select the entry. You are now in ClockWorkMod (CWM) mode:

Now connect your phone to a PC and enable USB connectivity in ClockWorkMod (CWM).

  • Mounts and Storage Menu -> Mount USB Storage
  • Download the 4EXT bootloader from this location.
  • Put it in the root of your flash drive and name it specifically: “pb99img.zip”
  • Reboot your phone in HBOOT mode.

NOTE: Once the phones boots in HBOOT mode, it will recognize the “pb99img.zip” file and will automatically try to install it. You should see some status lines saying: “Installation Successfull”

  • Reboot your phone again in HBOOT mode and then select Recovery again. You should now see the 4EXT recovery window:

Cool, isn’t it ?

6) Time to take some backups now !!
Make sure you have around 1 GB free on your flash card.

First, take a Nandroid backup. This backs up your system partitions to the SD card. It can be used to restore your phone like it is today, should the flash fail. It is done in 4EXT: Go to Backup menu and select “Backup”.

Second, connect the USB cable and completely backup (just copy) your SDcard to your PC (the Nandroid backup is also on the SD card)

7) Now download the ROM + basic GAPPS from this location and put them on your PC (for now).

Quick note: custom ROMs often remove all Google apps by default. Since the storage on a HTC Desire Bravo is very limited, this is a good idea. So by default, the ROM comes with no Google apps. Of course, this isn’t very usefull, you need at least the Google Play app. Once this is installed you can install the other Google Apps also (but only the ones you want).

8) ok, now the fun stuff begins: wiping everything and formating the SD flash card for extended memory 🙂

Select menu “Format|Wipe” and then, all three:

  • wipe data/factory reset
  • wipe cache
  • wipe dalvik cache

Then select “Tools -> Partition SD Card”.  A warning may appear indicating there is data left on your SD Card. Select “Remove all Partitions and start from scratch”, since we have taken a backup.
Then continue as follows:

first /sdext partition : select at least 512 KB (for 4 GB flash card). If you have more flash, take 1GB or 2 GB.
skip if it asks to create a second /sdext partition
if 4EXT asks for a swap partition, select 128 MB as size.

if 4EXT asks for the type of /sdext patition, select EXT4

9) Once your card is formatted, connect your phone to a PC and enable USB Storage (Tools -> Trigger USB Storage)

10) Copy both downloaded ZIP files to the root of your SD card. If you are in 4EXT, you can enable USB storage via the menu Tools -> Trigger USB Storage.

11) Now select, “Install from SD Card” and select the ROM you downloaded.

12) After installation, reboot the phone and let it settle. The first boot into LiquidSmooth can take a long time (up to 10/15 minutes). This is normal.

13) The phone should boot into Andoid, but you will see that you have very little apps. Don’t worry. Now, we need to first enable A2SD which is a service that will move apps to the extended storage space we created earlier as much as possible.
For this, open the Terminal App and type:

>su
>a2sd install

Chose: Y/N/N for options.

14) Now reboot into recovery (make sure you boot into recovery, do not let it boot normally to startup).
Once in 4EXT, choose “Install from SD Card” and now install the small GApps zip file.

15) After installation, boot the phone normally and let it settle. You should see messages like “Optimizing App 1/30” etc on the screen now (the number of apps can vary).

16) After the phone is booted, you should have the “Google Play Store” app. You can now start installing/downloading your apps. Some suggestions:

  • Gmail
  • Titanium Backup

Feedback:

The Liquidsmooth ROM for HTC Desire Bravo works VERY fine with a fast SD Card. With the standard Android 2.2, i was able to install only 1 or 2 giant apps like Facebook and Waze navigation app. Often, you need to remove one app to be able to upgrade another app. All this is finised, now i am running more than 10 huge apps and they all work, thanks to the extended storage space that was reserved on the flash card (and a2sd application).

Note: Sometimes, the ROM still crashes and in my case, some worksheets and icons on the main screen just disappear. Sometimes, after a crash, certain apps have disappeared also.
Therefore, it is not a bad idea to take regular backups of all Apps using Titanium Backup.
Have much fun with your upgraded machine !

UPDATE1:

Since the upgrade to the 16 GB EVO flash card, the phone exhibits strange behaviour:

* It sometimes lock completely (nothing works anymore). Just randomly. I need to remove the battery to reboot the phone. For example: i was navigating using GPS for over 30 minutes and suddenly without warning, it just rebooted.

* Sometimes, it stays stuck on the “LiquidSmooth” boot screen forever. Battery removal is the only thing to recover.

Not sure if it is caused by the flash, maybe i need to re-install from scratch to see if it disappears..

UPDATE2:

My phone was really unstable with the LiquidSmooth ROM. What was most annoying is that after a crash, icons, widgets and complete apps could disappear from the phone. My feeling is that a2sd was responsible for a lot of crashes (but i can’t prove it). I also learned the difference between Dalvik Cache and ART. Apparently, an App on Android comes in a “generic” format and still needs to be compiled for your specific platform. Android historically “compiled” your app at runtime, saving the result in what is know as the Dalvik Cache. Disadvantage: each time you run the app, you need to “compile” the app. In Android 4.4, they are going for a new system: ART. Your application is “compiled” once when you install it and after that, it can run directly from the compiled format. Result: a little more time to install, but faster execution and less cpu (read battery) required during execution. LiquidSmooth has ART enabled, and i think this also contributed to the crashes.

So -as a test- i tried a ROM with classical Dalvik Cache and no a2sd or anything: the Gingerbread MildWild CM8.0 Stable. This thing only uses 30-40 MB on the /system partition (so plenty of space left for other apps), is lightning fast, and rock stable. Not a single crash in 1 week.

Of course, it is still Andoid 2.3, and i need Android 4.1 at least, for some specific apps. But it confirmed my suspicion that a2sd might contribute to more crashes. I am going to use Mound2SD as an alternative in the future. It does the same, but has an GUI App interface.

 UPDATE 3

Regarding kernels, my last experience with the Cyanogen Mod 8.0 kernel (in MildWild see above) was very good. I realised i need to pick a kernel that has been around for a long time and that has a great development community. So i have come to the conclusion that my next 4.4 kernel should be an Cyanogen-based kernel (there are not so many 4.4 kernels for HTC Desire)
After reviewing the list above and the Android community, i decided for this BeanStalk kernel.
This kernel has ART, but it is disabled (good). I run it with the classical Dalvik Cache and with Mound2SD this time.

The result so far has been good (not great). On average, it crashes one time per day now (which is better than the LiquidSmooth kernel).
The problem with icons & apps disappearing after crashes has gone away, so that is good. The Mound2SD experience is also good, the only thing i noticed is that it doesn’t handle unexpected reboots (lockups, crashes) very well. It expects a clear shutdown of Android, so it can close & cleanup properly. When it closes properly, you are not bugged with the “Optimizing Applications” box at startup. If you have an unexpected crash, you probably will see this box and you will have to wait another 5-10 minutes before your phone is online (annoying).

There is one type of crash that i can simulate over and over again: i have a widget of my agenda on the home page. When i click on a calender entry in this widget, there is a -very- high change (95% of the time) that my phone will lockup and automatically reboot. I have the same problem with one particular App which is also very sensible to presses on certain buttons. The result is always the same: you press the button or calender entry, this triggers some code to open a new window (?) or something like that. After the press, the phone immediatly freezes and after 3-5 seconds, it reboots. I have not managed to get rid of this problem/bug yet. I am thinking about tuning the GUI or GPU in advanced settings, but i have no idea if this will help.