dt.iki.fi

Getting started with Sailfish OS

Some Chapters have been split off to their own pages:
Applications and CLI/Customisation.

I was lucky to get a device that already comes with Sailfish OS 3 preinstalled. This is the most recent free version of Sailfish OS; I assume I will be able to upgrade it to Sailfish X (same version + Android support) if I want to.

If you need to start from scratch (you will need a Jolla account), instructions are here.

The first boot-up-

... is familiar. I have to enter my account to be able to use the store and install some very basic applications. The Jolla store seems big enough, I can find an app for most of my needs.

screenshot thumb
(made with custom Ambiences, see next chapter)

Ambiences-up-

Essentially these are UI themes. A single image is used as a background and a few UI colours are derived from it. This happens automatically but it can be adjusted manually. Try looking at an image with the Gallery app, then tap the ambience icon:
ambience icon
Additionally sounds can be changed, volume levels adjusted etc.

Openrepos/Storeman-up-

There's a collection of application repositories for Sailfish at openrepos.net. To use it one needs to install the Storeman package (be sure to find the newest package for armv7hl at the end of the list) manually:

  • enable installations from Untrusted software
  • copy the file to the device, tap it, drag down & install

(or use the command line: curl to download, pkcon to install)

Once that is done you can start installing all sorts of weird stuff; e.g. some Themes & Ambiences. Often it's a two step install:

  1. add the repository
  2. install the app

Remove Unused Repositories-up-

Installing a package with Storeman often requires a custom repository to be added first, however uninstalling that package does not necessarily remove the repository. Regularly check the Repositories tab for repositories that do not have any packages installed anymore, and consider removing them as they will slow down the update process.

Interaction with ZYpp/PackageKit-up-

(Also see below, chapter PackageKit)

SailfishOS' command line package management will see the added Openrepos repositories and might sometimes offer different versions of a package.

Storeman does not see the official Jolla repos and does not differentiate versions of the same package coming from different repositories. Example:

  • Use Storeman to install nano from the Feathers_McGraw repo.
  • Use pkcon to uninstall nano and install the higher version from the Jolla repo.
  • Storeman sees nano as installed (again) and belonging to the Feathers_McGraw repo. Uninstalling it with Storeman will uninstall the Jolla repo version.

In this case, I do not need the Feathers_McGraw repo anymore and I can remove it, solving that conflict.

Connect to PC-up-

Sailfish OS uses MTP to copy files via USB cable, just like Android devices do. My Linux GUI filemanager has no problems recognizing it. The complete home directory /home/nemo is mounted, and it is possible to fully interact with files there.

SSH-up-

Please be prepared that you might need to use the terminal app on the phone if you lock yourself out.

Don't be root for any of these commands/edits, except where specified!

Another option is to enable Developer mode & Remote connection, then ssh into the device or scp files to/from it via WLAN.
Example config section in ~/.ssh/config on the computer that wants to connect to the phone:

cfg
Host xa2 # make something up here HostName 192.168.0.16 # Port XXX # your choice here User nemo IdentityFile /home/me/.ssh/name-of-id

The IP can be different - tell your router to give your phone always the same IP.
Now entering

$> ssh xa2

should be enough to make a connection. It asks for the password you entered when enabling developer mode & remote connections.

When this is working, I (along with 99% of all Linux users) highly recommend using an SSH key for connecting, for improved security against attacks. The procedure is exactly the same as on any other GNU/Linux system, see e.g. here for a tutorial.

One should also disable password and root login completely: as root (devel-su), edit /etc/ssh/sshd_config on the phone and add/edit/uncomment at least these lines:

cfg
PermitRootLogin no # Port XXX # your choice here PasswordAuthentication no PubkeyAuthentication yes ChallengeResponseAuthentication no AllowUsers nemo

Remember to restrict access to ~/.ssh/ and the files in it, otherwise ssh won't let you use the keys and you might lock yourself out!

chmod 700 ~/.ssh
chmod 600 ~/.ssh/*

Restart sshd on the phone:

devel-su systemctl restart sshd.service

You should now be able to connect with your key file, not using the local user's password anymore.

Also consider changing the default port 22 to something else by uncommenting the lines in both config files, and restarting sshd again.

Becoming root-up-

devel-su asks for the user password and can be used for both single commands and to open a root shell.

PackageKit-up-

...is a "high-level front end for a number of different package management systems." It's installed by default on SailfishOS. It uses the ZYpp package manager as a backend. Simply entering pkcon will list commands and options.

Purchasing Sailfish X-up-

After using it for a while I decided to shell out the EUR 49.90.

I started off with SailfishOS 3.2.x; it has since been upgraded to 3.3.x. Without purchasing it I cannot directly upgrade; I guess a manual upgrade would have been possible, i.e.

  • download the new version (which is free)
  • install it over the current version

...but I am happy to pay the money for many reasons:

  • supporting a great project, a true GNU/Linux alternative to you-know-who
  • on-device updates/upgrades
  • Android app support up to version 8.1
  • predictive input

I already have a Jolla account (see top of this document) and the process was really easy. There are several payment alternatives, also including a bank transfer platform that allowed me to pay directly from my bank (no credit card, no paypal). I always pay attention to payment methods, and this is very nice.

Small print-up-

This is what I see after logging in and before finally agreeing to the purchase:

Jolla's Terms & Conditions

Notices & Disclaimers:

  1. The use of Sailfish X is subject to a license from Jolla.
  2. The Sailfish X license is tied to (i) the Jolla account that is used to obtain the license, and (ii) the IMEI code of the device on which the software is first installed. Jolla will not support the transfer of the license from one user account to another, or from one device model to another.
  3. If you have purchased a Sailfish X license, and we have made it available to you for installation on your device, the sale is final. This means that the software is nonreturnable, and you cannot cancel the purchase and expect an automatic refund if you regret the purchase.
  4. We are currently making Sailfish X available in the countries of the European Union, Norway and Switzerland ("Authorized Countries"). Purchasing Sailfish X outside of the Authorized Countries is prohibited.
  5. Re-installing the native Android OS may not be possible and is not recommended, as you will not get all of the Android functionality back.
  6. Sailfish X is not free of bugs, and your device running on Sailfish X will be missing some common features. Please see the latest release notes from together.jolla.com for known issues.

Part of my reasons for choosing SailfishOS over Android are the much less repressive Terms & Conditions.

After the Purchase - What do You get-up-

Almost immediately I got an upgrade notification on my phone. Downloaded, installed, rebooted, that's it. Some noticeable quirks have been ironed out in the new version, other than that, no change. Meaning, everything still works, my files are still there. Both predictive input and Android support need to be installed from the store, and require a complete switch off & restart of the device. After that, one can install Android apps. I immediately installed F-droid and Fennec, a fork of Firefox. Because the Sailfish Browser really isn't so hot.