Upgrading my aging HTC Tattoo from 1.6 to 2.3

One of the first commercially available Android phones in India, I had picked up an HTC Tattoo on the second day of its launch in India because its inbuilt GPS and Google Maps support would’ve been an amazing companion on my road-trip to Kerala.

Needless to say, the gps unit on the phone combined with Google maps provided a never before experience while driving in rural India – that of not having to stop and ask for directions.

The Android (which was 1.6) market had other useful apps. Apps such as Private SMS and Call (for blocking those annoying calls peddling ads and addons) and Fake-A-Call (for getting out of meetings Winking smileor pestering others as to why their phone was constantly dialing out) found uses that my earlier smartphone didn’t have. In fact, I remember a weekend where a few friends and I tested each other’s audio sensitivity with UltraSound (if you attempt it, I must mention that the higher frequencies, although may not be audible, definitely gives you a headache!)

Nearly two years later, the phone was showing signs of aging. The battery wouldn’t last more than 12-16 hours, or the alarm wouldn’t ring (that might be due to yours truly’s talent for pressing the dismiss button without waking) and more than the others, the apps in the marketplace had started using 2.2 as their base version now. Apps would simply exit.

With the warranty no longer active, I decided to try upgrading the phone. A quick look around, and I found that no official upgrade existed.

After some research on the web, I decided to follow the steps outlined at http://wiki.cyanogenmod.com/index.php?title=HTC_Tattoo:_Full_Update_Guide

There were a few steps where I had to deviate from what the page recommended.

As the page recommends, Ritesh Sahu’s apps SMS Backup & Restore and Call Backup & Restore and APN Backup and Restore were the apps I used to backup my call log, SMS and APN list. I also syncd my installed apps on AppBrain.

Downloaded m7 and su, attempted to root the phone, however nothing happened. In fact, there was a scare, when I downloaded the update.zip and tried running it from the boot loader, and the boot loader gave an error about unsigned update. For a few tense moments,  I was left wondering whether I had bricked my phone. However, post the restart, HTC OTA update was applied and my phone was back to its factory state.

I used Root Checker to check if the phone was rooted. And, it showed me that my phone was still unrooted.

With one failed attempt, I decided to go the traditional route and dig up older forms of rooting. I landed up at http://theunlockr.com/2010/03/16/how-to-root-the-htc-tattoo/ Since I had a spare microSD card lying around, creating a Gold card was a snap http://theunlockr.com/2010/03/10/how-to-create-a-goldcard/. Ran the Tattoo Rooting App and at the end of the process, I ran Root Checker again, and this time it showed me that the phone was rooted!

At this point, you might want to use a different SD Card, preferably a blank one that doesn’t have any data our you might want to completely back up your regular SD card before you begin.

The next step was loading Cyanogen for HTC Tatoo (instead of the unlockr link, I chose to go with the one I had downloaded from http://wiki.cyanogenmod.com/wiki/Latest_Version#HTC_Tattoo)

I was hesitant to do Wipe data/factory reset and Wipe cache partition. However, without those steps, you will only see the boot load animation. Once I did those, the phone booted fine. Also, you do need the google apps zip. Again, without this, the phone was stuck on an infinite animation loop

Once the above two steps were followed, the phone booted into 2.3. 

device

Post upgrade observations:

  1. Battery life has improved tremendously. The new kernel is indeed managing power better than the 1.6 kernel.
  2. Usability-wise, I think the HTC Tattoo is ill-suited for the new features. I don’t think the small screen and the resistive touch screen are doing the new apps/features justice.
  3. I assumed that the contacts on the phone were automatically synced with my Google account, every time I pressed the sync icon – I was wrong. I lost all my contacts post the upgrade
  4. The entire experience still requires some technical expertise and is not advised unless you have a relaxed 6-8 hours to spare.

Setting Notepad2 to run in unprivileged mode on Windows 7

Whenever I need to work on any computer for more than few minutes, I invariably download Notepad2 by Florian Balmer and follow a process adapted from Scott Hanselman’s post i.e.

  1. Extract the contents of the zip (viz. notepad2.exe and the config file) to system32 folder (so no messing around with PATH variables – too lazy to do that)
  2. Rt. Click on notepad2.exe and drag-drop within the same folder, which brings up the Context menu with the option to “Create a Shortcut here”. Select the option to create a new “Shortcut to notepad2.exe.lnk”
  3. Rename the shortcut to n.lnk

Now, whenever I need to run notepad, I just type “Windows-R, N, Enter”  and as Scott puts it, helps me “save at least a few hundred “otepad’s” a day.” I prefer this method over the other method that involves renaming notepad2.exe to n.exe

However, a couple of days back I noticed that Start->Running ‘n’ brought up a UAC prompt, and also prevented drag-drop into the resultant notepad2 window.

Guessing that Windows might have updated my UAC rules, it was time to check out what had changed.

Notepad2.exe’s property displayed that Privilege Level had been updated to require Administrator privileges.

Notepad2.exe Properties

A quick change later, I was back to saving a few ‘hundred otepad’s a day.

Rover, Fetch!

I was busy with some code and was trying to concentrate when I heard a noise from my computer that sounded like someone or something was scratching. My first impulse was to kill all the browser windows thinking that it must be some amateur website that had some flash ad running. Yet, 2-3 minutes later, something scratched yet again. And, there was this distinct feeling that this sound was quite familiar (no pun intended!)

At this point, I killed everything except my explorer windows. And, yet I could hear the scratching sound. And, that’s when it clicked. Mr. Rover – the ever friendly search assistant had completed the “fetch” and was waiting for me to do something with him again!

How can you not like the dog! Seeing Mr. Rover again, I was reminded of an IronPython talk that Mahesh Prakriya (from the DLR team) had conducted at MS IDC. One of his demos used to show how easy it was to invoke Merlin and make Merlin do some wizardry using IronPython.

Interest piqued, moments later, I had the latest build of IronPython downloaded and was ready to make Rover appear. But now, Rover was nowhere to be found.

I asked Rover to show me his hiding place and it turns out that he’s hiding in “%WINDIR%\srchasst\chars\rover.acs.”

Copied this file over to %WINDIR%\msagent\chars and I fired up notepad2 and with the following few lines, got Mr. Rover up on the screen.

Note that you need to run  C:\>tlbimp c:\WINDOWS\msagent\agentsvr.exe from visual studio command prompt.

#rover.py
#from visual studio command prompt, run C:\>tlbimp c:\WINDOWS\msagent\agentsvr.exe
import sys
import clr
from System.Runtime.InteropServices import DispatchWrapper, UnknownWrapper
sys.path.append('C:\\')
clr.AddReference("AgentServerObjects.dll")
from AgentServerObjects import AgentServerClass
a = AgentServerClass()
#c = clr.Reference[int]()
reqId = clr.Reference[int]()
cId = clr.Reference[int]()
c = clr.StrongBox[object](DispatchWrapper(None))
a.Load("rover.acs",cId,reqId)
#copy rover.acs from c:\WINDOWS\srchasst\chars\rover.acs to C:\WINDOWS\msagent\chars
a.GetCharacter(cId.Value,c)
c.Value.WrappedObject.Show(0,reqId)
c.Value.WrappedObject.Think("I fetch, therefore I am!", reqid)
c.Value.WrappedObject.Hide(0,reqId)

 

Neat fun! It felt sad to read that Rover has not been invited to Windows 7.

Technorati Tags: Windows Search Rover,IronPython