Friday, June 1, 2012

Updating Transform (M920) to Transform Ultra (M930)

When we upgraded my son's Android smartphone, he wanted to copy all his info from the old phone to the new one.  This included not only the apps, but all of their associated data.  While copying things like contacts, pictures, and even apps is trivial, copying the app data is not.  I managed to get it done, though.  Here's how.

Android phones use a Unix-style filesystem and file permissions for their underlying storage.  Each app's private data is placed into a separate directory (folder) on the filesystem.  Each installed app is given its own username which entitles it--and only it--to access its private data.  This restriction provides certain benefits like keeping your passwords and personal data safe from unscrupulous app writers.  It also causes problems for legitimate apps like those that you would like to backup all your precious data to a safe location.

Incidentally, this same restriction also prevents apps like adult content blockers from working as well as you'd like.  It's a two-edged sword.

The way to get around this when performing backups is to obtain superuser (aka root, or administrator) access on your phone.  The superuser can do whatever it wants.  Some Android apps are written to make use of superuser access if the person running the app grants superuser access to that app.  With superuser access, an app can do pretty much whatever it wants, for better or worse.

Of course, before you can grant superuser access, you must have it to give.  This requires "rooting" your phone, so named because "root" is the name of the all-powerful super user whose permission level you are obtaining.  Rooting your phone allows you to do lots of cool stuff, but it also allows you to brick your device if you don't know what you're doing.  For that reason, rooting your phone will void your warranty.  If you're the type that relies on a good factory warranty, stop reading now.

I don't know phones as well as I do traditional computers, so I simply had to follow directions and use tools built by other people to do this stuff.  Because of that, rooting the older phone (a Samsung Transform running Android 2.2.2) gave me terrible trouble, so I wanted to document what I found here.

Here's the basic process to backup app data:
  1. Root both phones.
  2. Install either the MyBackup Pro or Titanium app on both devices.  The free version of MyBackup won't cut it when switching devices.
  3. If using MyBackup Pro, do a full apk+data+photos backup from the old phone to its SD card.
  4. Copy the backup from the phone's SD card to a computer.  While you're at it, copy the entire contents of the SD card to the computer.
  5. Copy that data back from the computer to the new phone's SD card.
  6. Use MyBackup Pro to extract the backup from the SD card into the proper locations on the new phone.

I used the MyBackup Pro app for this job.  Titanium also gets high marks, but I didn't try it.  Titanium is free, but requires root access to do anything at all.  MyBackup Pro will run on an un-rooted phone, but won't be able to access your app data without superuser access.  MyBackup's free version works great for backing up & restoring onto the same device (with or without root), but only the $5 paid version will let you extract a backup onto a different device from which it was created -- something you're doing when upgrading phones.

The old phone was a Samsung Transform running Android 2.2.2 (FroYo) with the EF09 build (that's significant).  The new phone was a Samsung Transform Ultra running Android 2.3 (Gingerbread).  Both were on Sprint, though it makes no difference here.  The old Transform was agonizingly slow, hence the upgrade.  That fact made this whole process take hours longer than it should have.

Rooting the Transform Ultra was straightforward using the One Click Root instructions found on this site.  Speaking of that site, is a wonderful resource for this sort of thing.  The rooting took only a few minutes.  None of the existing data on the phone is harmed by doing this.

Once rooted, I still had to install the Superuser app to keep Titanium happy when I played with it briefly.  I don't recall if MyBackup required it or not.

Rooting the older Transform gave me fits.  The issue turned out to be that we were running v2.2.2 with the EF09 build.  Running Android 2.1 makes rooting this device easy, as does using one of the older software builds (like EB28) of Android 2.2.  My research found that the EF09 build was released by Samsung only briefly before it was taken back off the market due to problems it caused.  We apparently managed to upgrade our phone during that short time window.  Lucky us.

If you've got the older software, you can use either the z4root, Intercept, or SuperOneClick methods to root your phone.  All are quite straight forward, just like the process for the newer Transform Ultra.

If you've got the EF09 build like we did, your only recourse is to install a new kernel and then root that.  The popular route is to use the Vampire kernel following these instructions.  This route is slightly more invasive, but still does not harm any of the software or data on your phone if it's done right.

Must have root access to backup & restore app data.
MyBackup Pro will do it for $5.  Non-Pro will not restore to a different device.
Will Titanium Root backup app data for free?

Hell of a time rooting Transform:  Not z4root, not Intercept (YouTube), trying SuperOneClick (nope).

On Android 2.2.2, build EF09 was temporary and eventually revoked by Samsung.  You can't root this.  Must back off to EB28 build.  Try installing stock ROM with SWupgrade from here:
with these instructions:

How to root an EF09 build by installing root+vampire kernel (it works!)

Samsung USB driver:

Install "superuser" app to keep Titanium happy.

Rooting Transform Ultra:  One Click Root:

Backup to SD card, copy there to PC, copy there to new SD card.

App data (if not moved to SD card) is stored on phone in /data, which is not world readable.  Each app has its own username to prevent accessing the data of others unless superuser access is possessed.  Same goes for "adb shell."

This got a little scattered, because I was flying blind through most of the process.  Hopefully some of those links will help you if you're in the same boat as me.

No comments:

Post a Comment

Please leave your comment below. Comments are moderated, so don't be alarmed if your note doesn't appear immediately. Also, please don't use my blog to advertise your own web site unless it's related to the discussion at hand.