0x00 Before Start

Recently, I just gave my iPhone 4S away. This phone runs smoothly with jailbreak iOS 6.1.3. It was siting in my nostalgia box for years and has never been my daily driver.

Back in time, I was a big fun of Motorola Milestone/Droid series and my main phone was the last of these QWERTY phones, Photon Q (XT897). Its keyboard was fantastic and CyanogenMod 11 (Android 4.4 KitKat) with XPosed framework was perfect in both productivity and aesthetics.

My final QWERTY phone is Nokia N900 since Motorola no longer making them. This is a phone from 2009 but I bought it after my Photon Q was broken. It was cheap compare to Neo900 and runs Maemo 5 or other open-source systems such as Firefox Mobile, Ubuntu and Kali Linux. Speaking of Neo900, it makes me remember the X62, a ThinkPad Mod.

I don’t like to mod hardware just to keep up with the software, I’d prefer the opposite.

I really like the idea from cheapskatesguide and lowtechmagazine that could save people from the pitfalls of consumerism. Moreover, to me it’s not about saving money on technology nor adapting certain lifestyles. This is a manifestation of ideology, the way of pursuing freedom.

0x01 Maemo 5 Factory Reset

This step is optional but I’d prefer to have a clean, latest base system to start with.

The official guide is very well written but those download links are already down.

I found maemo flasher 3.5 from github with additional useful information and firmware files, also its archive.

With the flasher tool and two .bin files, I can follow this guide to perform the reset/upgrade.

flasher-3.5 -F RX-51_2009SE_10.2010.19-1_PR_COMBINED_MR0_ARM.bin -f

flasher-3.5 -F RX-51_2009SE_10.2010.13-2.VANILLA_PR_EMMC_MR0_ARM.bin -f -R

0x02 Flashing postmarketOS


I used the SD card method and downloaded the image file from official site.

After checksum, I need to use lsblk to find and edit the dd target /dev/sdx.

sha512sum 20221005-1522-postmarketOS-edge-i3wm-0.3-nokia-n900.img.xz 

xzcat 20221005-1522-postmarketOS-edge-i3wm-0.3-nokia-n900.img.xz | sudo dd of=/dev/sdx status=progress bs=1M

While flashing the SD card, I can prepare the root access on Maemo by Open App manager - Update - Download - System - Sudser , this needs Wi-Fi connection.

Either Sudser or rootsh would work, and they need “Extras repository” to download. Which should be already included with the latest firmware RX-51_2009SE_10.2010.xx.

In case of adding Extras manually, Open App manager - Click title bar drop-down menu - Application catalogues - New and input these then Update:

Catalogue name: Extras
Web address: http://repository.maemo.org/extras/
Distribution: fremantle
Components: free non-free

0x03 Boot into U-Boot

Now, power off, put the SD card with fresh postmarketOS into the phone and turn back on Maemo, Open X terminal and execute:

sudo apt-get install u-boot-flasher

If Sudser was installed properly, sudo command should go through without password prompt.

After installation of u-boot, configure the entry menu by sudo vi /etc/bootmenu.d/10-pmos.item

ITEM_NAME="postmarketOS"
ITEM_SCRIPT="boot.scr"
ITEM_DEVICE="${EXT_CARD}p1"
ITEM_FSTYPE="ext2"

Create link

sudo ln -s /etc/bootmenu.d/10-pmos.item /etc/default/bootmenu.item

Update changes

u-boot-update-bootmenu

Finally, reboot the phone into the U-boot bootloader menu and boot postmarketOS.

0x04 Usage of postmarketOS

Like the official wiki, there are other articles about N900 with pmOS but solely focuses on installation rather than post-installation. People on YouTube either frustrated by stucking at the i3wm wallpaper or showing off their magical techniques. I like freedom and openess, not gatekeeping. This is the motivation behind this post.

keymap

The blue arrow key in combination with the Volume Up/Down to switch to a different virtual terminal. Combine with Enter key is Tab, with Backspace key is Escape, these would come handy with command-line.

Here are some basic techniques of i3wm from the official wiki page. It’s more efficient than common desktop environments on such a constrained device.

default mode
shift + space: switch to "command mode"
command mode
t: open terminal
k: kill current program
w: workspace mode
r: restart i3wm (use after modifying the config)
q: go back to "default mode"
workspace mode
a/s/d/f/g: switch to workspace 1/2/3/4/5
q: go back to "command mode"

Default Login, which can be used for local virtual terminal / text console or remote SSH.

username: user
password: 147147

First thing to do is to say good-bye to the wallpaper by opening a terminal:

shift + space type t then Enter

For security and convenience, change the default password

sudo passwd user

Connect to Wi-Fi, run nmtui then select “Activate a connection”

sudo nmtui

Set up date and time

sudo date -s "2022-10-xx xx:xx:xx"
sudo hwclock -w

Start SSH daemon

sudo service sshd start

From now on, it’s easier to continue with SSH on a relative larger computer

ssh 192.168.x.xxx -l user
#this command runs from a remote computer, not on the phone
#check ip from the top right of status bar or
ifconfig

While checking the update, I got BAD Signature errors

sudo apk update

Fixing it by sudo vi /etc/apk/repositories, change content as below:

https://mirror.postmarketos.org/postmarketos/master/
https://dl-cdn.alpinelinux.org/alpine/latest-stable/main/
https://dl-cdn.alpinelinux.org/alpine/latest-stable/community/

0x05 Post-installation Softwares

Web browser is considered essential in my use case. There are many options and a out-dated test review video as a reference. I did my own test anyway, that netsurf is the fastest one for simple web pages and midori is the only working one for “modern”(heavy) web pages.

There are also text-based browsers like vimb, w3m and lynx. No need to be limited by the application list on pmOS wiki, Arch Linux wiki is always my best friend.

sudo apk add xxx

flatpak repo provides many up-to-date applications although I didn’t find a need for that.

sudo apk add flatpak

flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo

There are other tools that are useful to me, such as a GUI-based file manager, text editor and process manager. I don’t depend on CLI tools with a device that has screen.

sudo apk add nemo gedit htop

To run the installed tools, simply enter its package name e.g. gedit in the terminal of the phone.

postmarketos-tweaks seems useful but in fact it’s not for N900. Run it withpmos-tweaks instead of its full name.

Sometimes I get connection aborted/ IO error when using sudo apk add, So I have to retry multiple times. Using sudo apk fetch instead may work better, or troubleshooting the network.

It maybe interesting to try install xfce4 on N900 but I feel good with i3wm for now.

After installing everything, clean up the cache either by

sudo apk -v cache clean

or

sudo rm -rf /var/cache/apk/*

Then check the storage usage

df -h

I’m using a good old humble 4GB Toshiba Class-4. It works reliably with adequate speed for N900.

By far, the post-installation is complete, less than 2GB of my SD card was used. Everything looks good and it’s ready to work whenever I need it.

quitesimple even has more toys like puting LUKS encryption onto N900.

For me, this phone will not be a tiny server nor an open-source media player, although it can be. As I said at the beginning, it is not about making use of the phone nor my skills, not even for the love of Linux.