Well, I finally did it. Last night, I bricked my Nokia N900. Bricking a mobile device is making some change or update that causes the device to no longer start up properly. Normally mobile device users don’t have to worry about bricking their devices. Most phone manufacturers and mobile carriers don’t want people to brick the phone, so they lock it down and keep tight control over what can be installed for apps.
One of the reasons I like the N900 is that it allows you to experiment and install all kinds of apps, including those still in development or testing. It allows you to even change the operating system relatively easily. I bought mine nine months ago. This was when it first became commercially available so there were various early glitches. I have installed and tested all kinds of applications, including testing various operating systems. It is a surprising that I have not bricked the N900 months ago.
In my case, I believe what bricked the device was my beginning efforts to install NitDroid onto my N900. NitDroid is the ability to boot Android on a Nokia tablet. I’ve installed other operating systems, with various levels of success and figured it was time to start experimenting with Android on the N900.
After my tests in installing Mer on the N900, I installed kernel-power. This gives my IPv6 connectivity, additional abilities to check the status of the battery, more options for mounting file systems, and so on. Unfortunately, this new kernel prevented me from successfully booting Mer any more.
Reading the Nitdroid forum, I discovered multiboot kernel power. This is a different boot menu system than I had been using and works with kernel power. However, when I installed it, the N900 stopped booting.
So, what do you do when your N900 stops booting? Typically you ‘re-flash’ it. There is a program called flasher that you install on your desktop or laptop computer. You connect that computer to your N900 via a USB cable and use the program to send a new version of the operating system to the N900. Updating The Firmware goes into detail about the process, which generally is reinstalling the operating system. Of course, in doing so, you are likely to wipe out just about everything you’ve already installed.
However, in some cases it is possible to reboot without losing everything. If you have a copy of the kernel you wish to run, you can flash that. A comment in a discussion about installing MeeGo goes a little bit into this.
flasher-3.5 -l -k vmlinuz-file -b makes the device boot the kernel.
For permanent flashing you’d use:
flasher-3.5 -f -k vmlinuz-file -R
Maemo5 is left intact.
If I could find a kernel file that I could boot, get in, clean up the damage that installing multiboot-kernel-power did, and then reboot, I could probably recover. The question is, where can you find a copy of the kernel to boot?
The article about updating the firmware includes a link to where to get the latest version of the firmware. As I write this article, the latest version for the United States is RX-51_2009SE_10.2010.19-1.002_PR_COMBINED_002_ARM.bin.
To download the file, you need to enter your device’s 15-digit IMEI number. The download page says you can find it beneath the battery on your phone. The example shows the code with slashes on the label, and entering the number without the slashes in the form. I missed that and since my reading vision is weakening and the numbers were hard to read, it took a couple times before I managed to download the firmware.
One site suggested that I could simply run
flasher-3.5 -k RX-51_2009SE_10.2010.19-1.002_PR_COMBINED_002_ARM.bin -l -b
This returns the error
Write failed after 0 bytes
usb_bulk_write: Resource temporarily unavailable
This obtuse error is essentially saying that you have the wrong file. RX-51… is not a kernel file, it is a FIASCO image.
flasher-3.5 -F RX-51_2009SE_10.2010.19-1.002_PR_COMBINED_002_ARM.bin -l -b
seems like the more appropriate command. This should load and boot the image. Unfortuantely, for me, it never managed to boot successfully.
Another interesting approach is to try unpacking the image with
flasher-3.5 -F RX-51_2009SE_10.2010.19-1.002_PR_COMBINED_002_ARM.bin -u
With this, you should get a zImage file that you might be able to use for just the kernel. I didn’t have any luck with that. In the end, I ended up sending
flasher-3.5 -F RX-51_2009SE_10.2010.19-1.002_PR_COMBINED_002_ARM.bin -f
This wiped out everything I had installed. The initial boot took a long while, but eventually came up and I started reinstalling everything.
The first thing I installed was the OpenSSH client and server. This allows me to connect to the N900 with secure shell as root. I’ve always found it easier to ssh into my N900 and make changes that way.
With this in place, I could start rebuilding my N900. Since a key desire is to make this a multiboot device, the first things that I installed were kernel-power, kernel-power-settings,
kernel-power-bootimg, and multiboot-kernel-power. Trying to be careful and not rebrick my device, I installed this in three steps, rebooting between each step. The first step was kernel-power and kernel-power-settings. The second step was kernel-power-bootimg and the third was multiboot-kernel-power.
Now, I can successfully boot, with kernel power running and multiboot options. I’ve since learned that I might have been able to get my broken device to boot by leaving the slider open and pressing zero when the empty menu came up. I’m not sure if that would have worked. However, it is probably well past time to clean out all kinds of old junk and start fresh.
I have now started installing some of the apps I use most often, dorian, barriosquare, vim, mastory, personal-ip-address, personal-gprs-mon, flashlight-applet, flashlight-extra, healthcheck, omweather, pianobar, pypianobar, fmradio, attitude, accdisplay, and hermes. They all installed quickly and nicely, often adding lots of other modules they depend on.
Some of them require a bit of additional configuration. Often the configuration has been recovered from my previous installation. In other cases, there are new configuration options available since the first time I set up these applications. Also, I need to rearrange all the widgets on my desktop.
Other applications have not reinstalled quickly or nicely, such as Facebook and Qik and will require additional investigation. As things stabilize, I’ll return to testing things like Nitdroid on the N900.
While it was frustrating to brick my Nokia N900, I was pleased that it has not been all that difficult to recover and to clean things up and I expect to be able to do even more interesting things with my N900 as I continue cleaning up and installing new applications.