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.
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.