Resurrect a Nokia N900 ‑ Applications

This article has a parent article.

Podcasts

After lots of trial & error and testing various apps I can now say:

  • gPodder does not work with most HTTPS feed URLs
  • the stock RSS app does not want to add feeds at all
  • one or two other apps from extras-testing did not work either

In the end I got cuteNews to work: enable the extras-devel repository and install cutenews. Disable Extras-devel after installation.

Also see the previous chapter "Secure Encrypted Connections" - some or all the steps outlined therein might be necessary to get this to work.

Unfortunately, cuteNews wouldn't work with my region set to Finland, I had to change that to United Kingdom. This is acceptable for me but might be a dealbreaker for others...

I can import my feeds from an OPML file. It's a long list, it takes a very, very long time.

In the settings, set a custom download command like this:

wget -q %f -O -

The UI is a little confusing:
Long-tap an episode => Enclosures
This should show a link to a media file.
Long-tap the link => Download

It seems I have to tell it every time to use

wget %f

for downloading; still investigating why that isn't permanent.

Stock Email Client: Modest

For my main provider, a fully encrypted connection is not possible even after the updates outlined in "Possible Solution 1: CSSU-devel" - so-called TLS connections have to go over the ports reserved for STARTTLS (so I guess they're actually STARTTLS connections). The SSL option in Modest's account setup preferences apparently does not work at all.

After a little thinking I decided that this is sufficiently secure for me.

Unfortunately it works only for one of my accounts; another one would force me to use an unencrypted connection. Not good, so I try a different mail client:

QMF Mail a.k.a. qmfmail a.k.a. QtMail

qmfmail can be installed from extras-devel or extras-testing.

Upon testing the setup I keep getting an error: "Error retrieving folders: Account updated by other process". I suspect this means that modest is still up in the background, and it is: pidof modest returns to PIDs.

I could not find a way to keep modest from respawning after killing it, or from autostarting at boot, and decided to uninstall it in the end:

# apt-get purge modest

This will also remove two (empty) meta packages: mp-fremantle-community-pr qtm-maemo-metapackage - nothing to worry about.

For good measure I also removed two folders: ~/.qt-messaging and ~/.local/share/data/QML.

After that account synchronisation works.

I was able to set up both accounts with full SSL encryption :)

Caveat: the UI is not so good.

Sync Calendars & Addressbooks via CalDAV/CardDAV

SyncEvolution will work with a generic CalDAV/CardDAV server (I use [davical][davical]) and has backends specifically for the N900's calendar and contacts. I installed the syncevolution-frontend which also pulls in the backend. I recommend to not use the GUI straight away, but set everything up on the command line instead.

Links: https://wiki.maemo.org/Sync/Usage_of_syncevolution
https://talk.maemo.org/showpost.php?p=1415014
and most of all
https://syncevolution.org/wiki/synchronizing-radicale

That last one helped me the most; I came up with this shell script:

sh
#!/bin/sh sep="=========================================" PASSWORD="verysecret" BASEURL="https://some.tld/caldav" CONFIG="davical" USERNAME="me" ADDRESSES="contacts" CALENDAR="calendar" echo "$sep" echo "Cleaning up syncevolution directories first. Now is the time to press Ctrl-D to abort, or Enter to continue..." echo "$sep" read x rm -rf ~/.config/syncevolution rm -rf ~/.cache/syncevolution echo "$sep" echo "Tell SyncEvolution on the n900 how it it is going to reach the $CONFIG client:" echo "$sep" syncevolution --configure --template webdav username="$USERNAME" password="$PASSWORD" syncURL="$BASEURL/" target-config@"$CONFIG" echo "$sep" echo "Tell SyncEvolution about the remote databases we want to sync:" echo "$sep" syncevolution --configure database="$BASEURL/$USERNAME/$ADDRESSES" backend=carddav target-config@"$CONFIG" "$ADDRESSES" syncevolution --configure database="$BASEURL/$USERNAME/$CALENDAR" backend=caldav target-config@"$CONFIG" "$CALENDAR" echo "$sep" echo "Connect these remotes with local databases. This is done by defining a \"sync configuration:\"" echo "$sep" syncevolution --configure --template SyncEvolution_Client sync=none syncURL=local://@"$CONFIG" username= password= "$CONFIG" echo "$sep" echo "Then add calendar & addressbook:" echo "$sep" syncevolution --configure sync=two-way backend=contacts database=file:///home/user/.osso-abook/db "$CONFIG" "$ADDRESSES" syncevolution --configure sync=two-way backend=calendar database="$CALENDAR" "$CONFIG" "$CALENDAR" echo "$sep" echo "If this went OK it's time to do the actual sync, e.g.:" echo "syncevolution --sync refresh-from-client $CONFIG $CALENDAR; or just:" echo "syncevolution $CONFIG"

It shouldn't really be a script, because it needs to run succesfully only once. But it probably won't on your first try.

Please make sure that

  • both remote and local targets exist before you start, even if empty
  • their names are the same both in the URL and the display names (to avoid confusion)
  • the same name is also used for the calendar on the N900 (not so for the contacts list which does not have a name).

After I had success with that, I used the GUI for syncing. Then I also used the GUI to add notes & memos (by default these are added to the N900 default calendar, called N900).

TODO: Apparently SyncEvolution can sync a lot more. Worth investigating.

Caveat & Major PITA

I use Evolution at home and DAVx5 on my Android phone. This combination works now, but I remember that I had trouble setting it up way back when.
I had similar troubles now: SyncEvolution was able to fetch the data but not able to make sense of it, so it couldn't properly convert/import it. This seems to only apply to events created on my phone; if I recreate (not just copy) the event on Evolution, it will sync OK. I had to rewrite a bunch of events.
Just another reason to not use Android anymore...
I'm pretty sure I read somewhere that Android/Google deliberately use a non-standard implementation of the WebDAV/CalDAV standard.

Password Management

I'm using keepassxc on my desktop, so I'd need something that can at least read the .kdbx database.
On the other hand, this device's usage limitations are such that I might hardly use these passwords (no complex web browsing).

Apparently meepasswords could be an option. Or a keepassx alpha from here. Or wallet. Or via Easy Debian.

Easy Debian

https://wiki.maemo.org/Easy_Debian

A Debian chroot that starts a full GNU/Linux desktop on top of the N900's X-server, or just a single application. Depending on the image used this will enable us to run many more and much newer applications.

Latest Jessie

https://wiki.maemo.org/Easy_Debian/Latest_Jessie

This seems to be the newest Easy Debian image available - oldoldstable nowadays, but still somewhat actively supported by Debian.

We will use this to install:

WWW Browser: Netsurf

Do not try to run apt upgrade on the jessie chroot! I did, had to start from scratch.

Do run apt update though. You might need to edit /etc/apt/sources.list to point to a server that accepts IPv4 connections:

deb http://deb.debian.org/debian jessie main contrib

From now on, the process is outlined here. You might run into post-installation errors, but as long as the desired packages install, it should not matter.

Start the LXDE desktop from the application menu, see if you can launch Netsurf. Or try debbie netsurf from a command line. If this works, it might be time to look at this chapter.

WWW Browser: Iceweasel

Easy Debian also allows to use an outdated Iceweasel (but please don't run javascript or, dog beware, even flash).

Maps, Navigation

Apparently ModRana is the way to go.
Possibly also this.

Download Videos from the WWW

youtube-dl is one of my favourite utilities in the Linux world (and it works on Windows, too). No need to open web pages, just download directly. You can watch e.g. youtube videos like this:

  • enable extras-devel first, and do an apt-get update
sudo apt-get install python3.2
wget https://yt-dl.org/downloads/latest/youtube-dl
python3.2 youtube-dl -f "best[height<=480]" "https://www.youtube.com/watch?v=-DcYYrZC72A"
mplayer I\ broke\ Linux.--DcYYrZC72A.mp4
  • disable extras-devel

Notes (please read)

  • HAM - the graphical Hildon Application Manager
  • Update vs. Upgrade - in Debianspeak, "update" just updates the software catalogues, and "upgrade" actually upgrades all software packages. However, HAM uses the terms "refresh" and "update" instead.

In this article, I (try to) use the proper terms depending on context, i.e. if I use HAM, I speak of updates, if I use apt-get on the command line, I speak of upgrades.

When I write

Install package package

This actually means apt-get install package in a root terminal.