]> git.llucax.com Git - personal/website.git/blob - source/blog/posts/2011/12/11-how-to-rescue-your-nokia-n900-without-reflashing.rst
Add some blog posts
[personal/website.git] / source / blog / posts / 2011 / 12 / 11-how-to-rescue-your-nokia-n900-without-reflashing.rst
1 Title: How to rescue your Nokia N900 without reflashing
2 Tags: en, nokia, n900, maemo, linux, floss, software, hardware, rescue, initrd
3
4 I bought a `Nokia N900`__ recently, a great toy if you like to have a phone
5 with a Linux distribution that uses dpkg as package manager :)
6
7 __ http://en.wikipedia.org/wiki/Nokia_N900
8
9 Of course you can use it as an end user, and never find out, but as the geek
10 I am, I had to hack it, and use the devel `package repositories`__. Of course,
11 with that comes the problems (and the fun! :D).
12
13 __ http://wiki.maemo.org/Repository
14
15 The last update of the batterypatch__ package__ came with a weird *feature*.
16 The device rebooted itself each time it starts, leaving it in a restart loop
17 that rendered the device unusable.
18
19 __ http://talk.maemo.org/showthread.php?t=73315
20 __ http://maemo.org/packages/view/batterypatch/
21
22 Searching for valuable information was not easy (thanks forums! You **SUCK** at
23 organizing information... I miss mailing lists).
24
25 Anyway, I hope I can save some work to someone if you get in a similar
26 situation, so you don't have to waste ours searching the `Maemo Forums`__.
27
28 __ http://talk.maemo.org/
29
30 .. image:: ##POST_URL##/n900.jpg
31    :align: center
32    :alt: Nokia N900
33
34 First you will need a `tool to flash the phone`__ (it can do other things
35 besides flashing it, I used the ``maemo_flasher-3.5_2.5.2.2_i386.deb`` file).
36 You can also check some `instructions on how to load a (very) basic rescue
37 image`__ (from Meego__). The good thing is this image is an initrd that's
38 loaded in MEMORY, so you don't loose anything if you tried, the device goes to
39 it's previous state (broken in my case :P) after a reboot.
40
41 __ http://tablets-dev.nokia.com/maemo-dev-env-downloads.php
42 __ http://wiki.meego.com/ARM/N900/Using_Rescue_Initrd
43 __ http://en.wikipedia.org/wiki/MeeGo_%28operating_system%29
44
45 What this image can do is put the device in USB mass storage mode (the embedded
46 MMC -eMMC- and the external MMC). I've done this to backup my eMMC data, which
47 holds the *MyDocs* vfat partition and the 2 GiB ext3 partition used to install
48 optional software. You can also put the device in USB networking mode, you can
49 get a shell console (and reboot/power off the device), but I found that pretty
50 useless (because you don't have any useful tools, the backlit is not turned
51 on, so is really hard to see anything, and because the kayboard doesn't have
52 the function key mapped, so you can't even write a "/").
53
54 The bad thing about this image, is you can't access to the root filesystem
55 (wich is stored in another NAND 256MiB memory). I wanted to access it for
56 2 reasons. First, I wanted to edit some files that the *batterypatch* program
57 created to see if that fixed the rebooting problem. And if now, I wanted to
58 make a backup of the rootfs so I didn't loose most of my customizations and
59 installed software.
60
61 I first found that a way to access the rootfs was to `install Meego`__ in a uSD
62 memory, but for that I needed a 4GiB uSD. Also it looked like too much work, it
63 has to be something battery and easier to just mount the rootfs and play
64 around.
65
66 __ http://wiki.meego.com/ARM/N900/GettingStarted
67
68 And I finally found it. It was the hardest thing to found, that's why I not
69 only passing you the `original link`__, I'm also hosting `my own copy`__
70 because I have the feeling it can disappear any time! :P
71
72 __ http://216.189.8.164/N900/rescueOS/
73 __ ##POST_URL##/rescueOS/
74
75 This image let's you do all the same the other image can, but it turns on the
76 backlit, it has better support for the keyboard (you can type a "/") and it
77 can mount the UBI__ root filesystem. Even more, it comes with a telnet daemon,
78 so you can even do the rescue work remotely using USB networking ;)
79
80 __ http://en.wikipedia.org/wiki/UBIFS
81
82 You can see the instructions for some of the tasks, but here is how I did to be
83 able to log in using telnet, which is not documented elsewhere that I know
84 off. Once you have your image loaded:
85
86 1. You have to activate the USB networking in the device:
87    ``/rescueOS/usbnetworking-enable.sh``
88 2. Configure your host PC to assign an IP to usb0:
89    ``sudo ip a add 192.168.2.14/24 dev usb0 && sudo ip link set usb0 up``
90 3. Start the telnet daemon in the device: ``telnetd``
91 4. I couldn't find out the root password, and since the initrd root filesystem
92    is read-only, so I did this to change the root password::
93
94       cp -a /etc /run/
95       mount --bind /run/etc /etc
96       passwd
97
98    Now type the new root password.
99 5. That's it, log in via telnet from the host PC: ``telnet 192.168.2.15`` and
100    have fun!
101
102 With this I just could edit the broken files and saved the device without even
103 needing to reflash it, but if you're not so lucky, you can just backup the root
104 filesystem and reflash using this instructions__ (I didn't tested them, but
105 seems pretty official).
106
107 __ http://wiki.maemo.org/Updating_the_tablet_firmware
108
109 Now I should probably have to try the recovery-boot__ package__, if it works
110 well it might be even easier to rescue the phone using that ;)
111
112 __ http://talk.maemo.org/showthread.php?t=72726
113 __ http://maemo.org/packages/view/recovery-boot/
114
115 .. vim: set et sw=3 sts=3 :