Back in December, 2011 when I first got my ASUS Transformer TF101 it came loaded with android 3.2 (Honeycomb). The OS was pretty slick, though Honeycomb was only the first tablet-ready android so there wasn’t a lot of polish to it. Over time I accepted the various ASUS-vetted updates to the tablet and eventually got one that upgraded it to version 4.0 (ICS, or Ice Cream Sandwich). Suddenly this awesome little device became a nightmare of reboots, freezes, and crashing apps. To add to the pain, the upgrade introduced a little bug which was also present in various distributions of linux that made it impossible to connect to a specific kind of VPN (which just happened to be the one I need to use). Since then, subsequent updates (coming through ASUS) to 4.0.3 and 4.0.4 made the device more stable, but didn’t solve the problems entirely and this despite my wiping the device clean, reinstalling the latest firmware and manually installing all my apps. I was hoping that eventually ASUS would release 4.1 (Jelly Bean) which might fix all my issues, but rumours of a release in October, 2012 got pushed out to November, and more recently folks were speculating it might not come at all. ASUS has a bunch of faster transformers out now – why would they waste time supporting my old model?
This weekend I got tired of waiting and decided to install Cyanogenmod (CM). Doing so is a risk. It certainly will void the warranty (no longer a concern to me since that has expired in my case), but it also can render the device non-functional. This might not be a permanent condition, but some folks are less interested in diagnosing this kind of thing than I am and recovery might take a considerable amount of time and investigation you might not want to be bothered with. You have been warned.
Since I run Ubuntu on a MacBook, I was worried that it might not even be possible to install Cyanogenmod. I wasn’t sure at the onset of this project whether it even mattered that I had never gotten the transformer to talk to the MacBook via MTP. Not when it ran OSX (though I admit to not trying very hard) nor in a Windows XP VM although it turned out XP doesn’t support MTP (Win7 does) anyway. In Ubuntu I could see it as a camera device, but I couldn’t use it as an MTP device here either despite installing mtpfs, gMTP and hours of changing configuration files. It turned out it didn’t matter at all, and in fact ever since I upgraded to CM I’ve been able to connect to the TF101 with USB and open files in nautilus just fine (as long as Android debugging is checked in Developer Options in the Settings).
To get Cyanogenmod on the TF101, I followed this guide which I followed exactly so I’ll only relate those things which held me up.
I started by installing the Android SDK in Ubuntu. I chose to install the ADT Bundle which includes the eclipse IDE since I’ve been interested in developing some android apps anyway, but mainly because thats what provides adb (Android Debug Bridge), which is called for in the guide above. adb is the software that a developer can use over USB to talk to android: to “pull” files off the device, “push” files onto it, “install” apks (application package files), or even open a remote shell on the device.
For instance, I grabbed the screenshots used at the bottom of this post to my desktop with:
adb pull /sdcard/Pictures/Screenshots ~/Desktop
I didn’t have to install any APX drivers since the instructions stated that was only needed in Windows. I didn’t bother trying to set up udev, I just ran commands as root. wheelie provides a full implementation of nvflash for the TF101. NVflash is the software from nVidia that allows you to access and write to the storage connected to their Tegra chip (the TF101 has a Tegra II). nvflash can fix every case of “bricking” (corruption in the firmware making the device appear dead), so its certainly a handy tool to have around.
Getting the TF101 into APX mode was probably the biggest pain about the entire process. Its not hard – its just that since I didn’t know what I was doing, the fact that any mention of how to get into this mode was left out of the instructions made for some un-needed frustration. To enter APX mode, turn the device off, then hold in the power button while depressing the volume UP button for a few seconds, then connect the TF101 to the computer with the the USB cable. Nothing ever appears on the screen so you have no idea that you have successfully gotten into APX mode – I was expecting to see something on the screen like “entering APX mode”. It took a while to find out that when the device is in APX mode and connected to the MacBook if you run
lsusb you’ll see “NVidia Corp.” and not “ASUSTek Corp” as you do when its connected normally. Mine showed up like this:
Bus 001 Device 027: ID 0955:7820 NVidia Corp.
Doing this in Ubuntu means I’m working in a terminal. I use the terminal all the time, but Windows folks should be warned that you might have to do this stuff on the command line as well – I really don’t know. You should learn to love the command line though – its worth it.
I had to use the second wheelie command (as root):
wheelie -2 -o 0x300d8011 --bl bootloader.bin -c transformer.bct
but not because it turned off as suggested in the instructions – I just got a message in the terminal that I couldn’t connect to the nVidia device because the key was wrong. Turns out I have a slightly newer B70 TF101 which has the newer key (SBKv2) which requires the -2 argument.
The Clockworkmod Recovery you install with nvflash is NICE. Now when I boot up the device into recovery mode (press power and volume DOWN until you see the prompt then press volume UP), instead of the stock choice of just boot clean Linux or wipe all my data theres a nice menu with a bunch of options including backing up and restoring or adding packages. Very well done, and well – just sweet.
I decided to run the latest stable release of Cyanogenmod for the TF101 which is currently 9.1.0. This is Ice Cream Sandwich just like I was already running, but I wanted to test out the most stable version I could to compare with the experience I’ve been having. I figured that if CM9 was just as bad, maybe I actually have a hardware issue.
Cyanogenmod does not package the proprietary Google Apps (which includes the Play store app) with their download. I installed them as a secondary package (moved them over to the TF101 the same way as I did the CM rom image in the instructions) from here. In my case I am using version 20120429 for CM9. Some of the Google Apps can be installed through the store, but not the core apps.
I manually installed all the apps I use (I didn’t let Google restore them from the cloud backup on my account), I set up everything as I used to have it and have tested everything I could think to test. The only problem I’ve come across (actually found this while dumping the picture of clockworkmod above from my camera) is that without the file manager app from ASUS I don’t really know how to access an inserted external SDcard. I was able to fire up the Terminal app that comes with CM9 and move the image over to the sdcard by command line copying, but obviously I’m going to want a GUI way to do this. Also, I don’t see a “connected external card” notice near the clock as I used to get in ICS prior, so there’s no obvious way to safely remove the card! Gotta go sit back on the couch for a bit to figure that out now
All my files that were in
were still there and recognized. I did have to do a couple reboots after installing and setting some of the apps up but since then everything has settled down, and seems I’m good to go. I do miss the ASUS file manager app which was just really nice. I’m still searching for a decent replacement.
Since I’m still on ICS, I still can’t get my L2TP VPN working but flashing CM9 was so easy I’m considering going for a CM10 nightly build next. I think I’ll wait a while though and just enjoy a using my transformer again as a snappier and more stable device. Great work, Cyanogenmod team!
As it turns out, CM9
is only initially seemed rock solid. It definitely is a lot faster. (Maybe not faster than Honeycomb was though – hard to remember back that far now though.) *but* this morning I woke the device up which had been shut and not on the charger all night and it was in a boot loop where the ASUS eee screen would come up and then blink off and boot up again to that screen. I had to force it to power off completely by holding in the power button for about 7 seconds, and then it turned on normally. It worked fine the rest of the morning. I’ve added so many apps now that I wonder if it might be some buggy app, but I also noticed that the battery had drained completely on the keyboard (there are separate indicators in CM9 for power) though it was nearly full on the tablet itself, which in old ICS would have been 50% power for overnight. Thats definitely not as good as my old ROM.
Had no such problems last night. One thing I noticed during the evening last was the battery suddenly reported that it was less than 50% (so the keyboard battery icon was reporting empty). This was obviously inaccurate since it had only been running (mostly doing nothing) for about 2 hours so I went into CWM (clockworkmod) recovery and cleared all the caches *and* the battery statistics cache. Rebooted and got a screen that it was “updating android” which was really just rebuilding the preference files in the apps. Once it finished that, it came on as normal and I saw the battery reported normal – 85% or so. This morning charge was still above 50% (so keyboard icon still had some juice showing). I’m thinking it might have been a buggy app. I’ll stay on CM9 for now since a heavy read of posts of folks using CM10 was mixed.
Got home and the transformer was off though I had left it on and charging. That was the last straw for CM9 for me and I downloaded the latest nightly of CM 10 (cm-10-20130120-NIGHTLY-tf101.zip) and the latest version of Google Apps compatible with 10 (gapps-jb-20121011-signed.zip). Now that I have Clockworkmod installed it easy as hell to flash a new rom – just reboot to recovery, wipe all the caches (cache, data, dalvik, and battery stats) and add the zip files. Note: this is the 4.1 version of Jelly Bean, not the latest 4.2. So far I haven’t run across anything that doesn’t work and best of all the VPN does work again! The interface on CM10 is noticeably faster and smoother. Still testing, but so far so good. I really like the Cyanogenmod File Manager.
I decided I couldn’t live with the bugs in the official nightly (see my comment below), and found Gierdo’s unofficial nightlies which are built from RaymondFX’s sources. Currently I’m running cm-10-20130125-UNOFFICIAL-tf101.zip and while the audio occassionally cutting out after waking from sleep, I’ve found this can be worked around easily with the KAT audio app – I’m running K.A.T_V1.2.4.apk. This allows you to restart the DSP when and if it craps out without having to reboot, and it increases the audio volume nicely. It has the odd behavior of interfering with the on screen volume display (OSD) – that always seems to show full volume even though the volume is really changing. This nightly has the lid patch which is nice, but it seems to have some problem displaying the OSD for brightness, disalbling the touchpad, and enabling bluetooth, etc. These functions all work they just don’t show the current setting on screen. Battery life seems good, and I have an option to overclock up to 1600MHz though currently its on 1200MHz max interactive (variable). So far, really smooth and snappy, no other odd bugs to note.
I’ve been running fine since, nothing new to add.