The next step for me was to get root. People are generally recommending to downgrade firmware to take advantage of a glitch. I checked mine and I was still on RC19, which has another simple method. Basically you can simply start the telnet service and connect as root remotely from another computer. I just had to install a terminal app from the Android market and then I was in. From there you can create an su command for use on the handset and then kill the telnet service. I used instructions from Hello Android in case you are interested in the specifics.
It was good that I had the old firmware, as I was able to experience some of the original mods that generally no longer work. I went over the original G1 hacking forum posts and tried a few tricks. My firmware was nice and insecure, that’s for sure. Storm clouds were brewing and I could hear thunder in the distance. It added some mad scientist atmosphere.
While I was exploring the joys of root I received an email from one of the G1 modding sites informing me that the latest firmware was modded and available, including multitouch enabled features, such as multitouch zoom in the browser. This is something you really need, just in case an iPhone fanboy notices you have the G1. Time to get serious and put some custom firmware on this thing. I downloaded it and started reading through the tutorial.
By now it was getting really stormy. The storm knocked out my ADSL, so that was the clincher. No internets, nothing else to do but start the firmware upgrade. I followed the tutorial, which was very mickey mouse. No explanation of what you were doing, just follow the bouncing ball. One step was to wipe all your settings. This meant I had lost my APN settings in the firmware upgrade (the details I’d gotten off the Whirlpool site to get GPRS working). No internet = no Whirlpool = no G1 reactivation… Doh! I had to wait a while to reactivate the handset. Next time I’d better jot those details down somewhere.
So, I took advantage of the opportunity to get some chores done, change and feed the baby, etc. All the stuff I probably wasn’t going to be doing as soon as I got my toy back.
…
Eventually I was back on line and could activate the handset again. I even found the right place to get G1 APN settings for any carrier.
Upgrading to the modded firmware actually turned out to be more of a pain in the butt than I had anticipated. This was only because the tutorial was flawed. It assumed you’d already installed a modded firmware previously and so they missed a crucial step. After pestering the Android devs on IRC and even tracking down JesusFreke (the main guy responsible for the firmware mods) eventually someone put me on to the full instructions.
These instructions rock. Included was a very useful hotkey that actually gives you some text output during the firmware upgrade process. The crucial step missing from the previous tutorial required me to replace the default recovery image with a modified one. Once I had an alternative recovery image that could circumvent some digital signature check, I was able to install the modified firmware with no dramas.
The system is fairly robust in preventing you from bricking it. As long as you don’t nuke the recovery image you can boot with it in the event that the main system wont start up. Once in there you can refresh the system with an image file stored on the sdcard. I’m not sure what would happen if your recovery image was also broken or missing. The place to find out would be over at xda-developers forum.
One downside of the firmware upgrade was I lost all my apps. I spent the rest of the day putting apps back on there with a bit more discrimination this time. Found some useful apps, like sftp clients and an ssh client. The sftp apps I tried kept crashing for some reason that wouldn’t become apparent to me until the next day.
There is also a screenshot app that supposedly worked when granted root access. It was rather unuser friendly, and I couldn’t figure out where the images were supposed to be saving to. I’ve since used it to collect a few screenies that I’ll scatter through the blog at some stage (don’t hold your breath, I’m pretty slack). Stuff was starting to seem buggy, but it was late so I decided to call it a night. That was the end of day 2.
Day 3 I had the pleasure of showing my iPhone wielding boss the multitouch browser. Never mind the fact that multitouch support is limited by the hardware such that you can’t effectively use it if your fingers get closer than about an inch. Apparently a snapping effect then happens where the device only detects a single touch somewhere between the two fingers. You can checkout the specifics on Luke Hutchison’s blog, he’s the mastermind behind the multitouch hacks. The hacked browser doesn’t actually use multitouch gestures properly anyway. It just emulates a general zoom in/out command, it doesn’t centre the action on the point between your fingers like an iPhone does. Doesn’t matter, you can successfully fool the Apple fans for long enough to get past them and get back on with your life.
Actually I found that wasn’t quite true. My workplace has WPA2 enterprise wireless security. The wireless applet/widget/whatever you kids call programs these days wouldn’t even list the SSID. Funily enough I found my Tricorder application did detect them. I had a moment of bemusement that this purposeless toy could actually be useful for something.
<insert Tricorder screeny here>
So now iPhone had me on a feature that wasn’t just aesthetic. Rrrrrr… GOOGLE SKILLS ACTIVATE! Good on you Goolge, you really brought the true Linux experience to the handset market. Editing text files as root with vi to get stuff working on my phone, that’s pretty special, in some sense of the term anyway. So I followed instructions listed on the xda-developers forums. I didn’t actually need to install any certificates, it just connected as soon as I put details about the SSID, WPA2, and my username and password in a text file. Not ideal for security reasons, but as long as it works I’m a happy man. The SSID now shows up in the wlan applet too.
Something else was amiss that day though, the instability that I noticed last night was still going on and I finally figured out what the pattern was. When anything tried to write to the sdcard it would fail after a couple of files. Some apps would crash, other’s would fail silently, and just one actually handled the exception and displayed a meaningful error message. Go you cowboy Android app developers!
Experimenting with remounting the sdcard confirmed that after a short window of write activity the sdcard would become readonly, once again keeping true to the spirit of Linux. A quick search confirmed my suspicion the solution was to reformat it. Bare in mind, this is the sdcard that came with the handset. I backed up the files, formatted it and restored the data and the problem went away.
I spent the rest of day 3 pondering the next frontier.