F(x)tec Pro¹ with SailfishOS 3.4 community build
Table of Contents
A community build of Sailfish OS 3.4 for the Pro1 was released a month ago and I finally got around to flashing it.
These are my installation notes.
NOTE: DO NOT OTA UPDATE FROM 3.3 YOU MUST REFLASH
This need to reflash is OK, we finally get LVM and encryption. Thank you pigzz, I was looking forward to both these features!
Summary
I installed the latest build-lvm-testing, that day it was Job #871937492.
Obviously, I backed up my data on SFOS and copied it to my workstation before flashing my Pro¹ from scratch.
This post replaces my, older, SFOS 3.2 post. My previous update to 3.3.0.16 went so smoothly that I did not bother making a writeup.
Overall the SFOS release is OK, but I do see higher battery drain than I had under 3.2 and needed a work around for a Cal-/CardDAV regression.
A Quick Flash with Android Factory Image 2020-08-25
Before installing Sailfish OS 3.4 though, I did a factory reset to the latest available Android factory image, 20200825. See here for instructions.
I did this because quite a few blobs changed in the factory image, and I wanted the newer ones to be applied. I did not spend any time to identify the exact function of each changed blob.
The following seem to have changed between stock firmwares 20191028 and 20200825 (different sha256sum):
- abl.elf
- boot.img
- dtbo.img
- NON-HLOS.bin
- system.img
- vbmeta.img
- vendor.img
And the following were identical in both stock firmware versions:
- adspso.bin
- BTFM.bin
- devcfg.mbn
- mdtp.img
- pmic.elf
- rpm.mbn
- splash.img
- tz.mbn
- xbl.elf
I flashed as Waxberry writes in the post.
Although, since I am lazy, I did put the commands into a small shell script so I did not have
to check the output of each and every fastboot flash …
command, but would stop flashing if any
of the commands produced an error (as expected, none did error out,
but I like to stop at the first failed task if something goes wrong).
#!/bin/bash
# commands from Waxberry's
# [Guide] Restore to stock firmware using Fastboot method
# at https://community.fxtec.com/topic/2466-guide-restore-to-stock-firmware-using-fastboot-method/
# show each command that is executed
set -x
# Abort when one of the called commands returns a non-zero exit code
set -e
# script flashes A and B, so no need to twiddle the active bit
fastboot flash devcfg_a devcfg.mbn
fastboot flash devcfg_b devcfg.mbn
fastboot flash dsp_a adspso.bin
fastboot flash dsp_b adspso.bin
fastboot flash bluetooth_a BTFM.bin
fastboot flash bluetooth_b BTFM.bin
fastboot flash modem_a NON-HLOS.bin
fastboot flash modem_b NON-HLOS.bin
fastboot flash pmic_a pmic.elf
fastboot flash pmic_b pmic.elf
fastboot flash rpm_a rpm.mbn
fastboot flash rpm_b rpm.mbn
fastboot flash splash splash.img
fastboot flash tz_a tz.mbn
fastboot flash tz_b tz.mbn
fastboot flash xbl_a xbl.elf
fastboot flash xbl_b xbl.elf
fastboot flash abl_a abl.elf
fastboot flash abl_b abl.elf
fastboot flash boot_a boot.img
fastboot flash boot_b boot.img
fastboot flash dtbo_a dtbo.img
fastboot flash dtbo_b dtbo.img
fastboot flash system_a system.img
fastboot flash system_b system.img
fastboot flash vendor_a vendor.img
fastboot flash vendor_b vendor.img
fastboot flash mdtp_a mdtp.img
fastboot flash mdtp_b mdtp.img
fastboot flash vbmeta_a vbmeta.img
fastboot flash vbmeta_b vbmeta.img
# nuke userdata
fastboot erase userdata
# reboot the phone
fastboot reboot
This was followed by waiting for Android to boot up, setting up my Google account so the flashed OS could pull whatever it needs, a quick phone call test, and a reboot (again into Android) just for good measure.
Flash tl;dr
Read the post SailfishOS 3.4 for the Pro1 on community.fxtec.com.
When I did the flashing, Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2.zip
was the most recent output of
the run-build-lvm-testing job.
Obviously check the linked post and here
for most recent image available if flashing at a later date.
Remember; SFOS 3.4 freshly installed uses defaultuser
, while older SFOS used nemo
.
Thus anything having a hardcoded /home/nemo/
will have issues.
What this post is about
- Getting Sailfish OS 3.4 on the F(x)tec Pro¹
- allowing me to use Ansible with the Pro¹ being a host (the playbooks are run from one of my Fedora x86_64 machines)
- grabbing some info from the device to compare to my previous SFOS devices
- doing some well documented adjustments that were not yet part of the build
I am fine with using a community build that can not include some bits like the ability to run Android apps. Hopefully Jolla will eventually make an official image available which, like all previous SFOS releases, I’ll most definitely purchase to support the fine people at Jolla.
Pages to Read
Check these three pages for updated information before flashing!
- together.jolla.com Fxtec Pro1 - Sailfish OS tips and tricks
- maemo.org SFOS on F(x)tec Pro¹… from about page 34 onward
- F(x)tec Community SailfishOS 3.4 for the Pro1
- The SFOS part of the Guide: Sailfish X on Xperias
- Sailfish OS Cheat Sheet
While I love SFOS and greatly appreciate the community efforts, information is spread all over the place. talk.maemo.org is always my primary source, followed by together.jolla.com, which they replaced by forum.sailfishos.org but they have not yet fulfilled their promise to migrate the content from TJC to the new Sailfish OS forum.
FFS Jolla it’s been half a year, yes the old TJC had its failings, but come on, I expect data to be migrated at go live of a replacement software, not at some nebulous future date.
Install Sailfish OS
Just follow the instructions for SFOS 3.4. With the current image, all the needed fastboot commands come in a script.
To be safe against future data loss, I have just pointed the Wayback Machine at the URL.
Command Log
These are the commands I used. You MUST read the guide linked above, the commands are just for my records and do not include steps done interactively on the phone.
Note that the current setup does not put TWRP on the Pro¹, so there was no need to muck around with µSD-card preparation like I had to do for SFOS 3.2
Install Needed Tools on Workstation
I use Fedora on my workstation, the needed tools are available in the standard repos.
[root@workstation ~]# dnf install android-tools
Expect to find them in any modern distro, the package name might differ though. If you use Windows or MacOS, then I can not help you.
Unlock Bootloader
For units shipped after November 19 [2019], you need to unlock Bootloader first, by enabling developer mode in Android, and enable OEM unlocking and USB debugging. source
I did that ages ago and did not revisit those steps for my SFOS 3.4 install.
As pretty much always for mobile devices, the bootloadeer unlock instructions at lineageos.org are good.
[root@workstation ~]# fastboot devices
8911ce70 fastboot
[root@workstation ~]# fastboot flashing unlock
OKAY [ 0.044s]
Finished. Total time: 0.044s
Flash SFOS via Included Script
Just follow the posted instructions.
Unpack and Check What Will be Flashed
user@workstation $ cd ~/tmp
user@workstation $ unzip -l artifacts.zip
user@workstation $ unzip artifacts.zip
user@workstation $ cd sfe-t5-3.4.0.24-devel-20201125/
user@workstation $ unzip Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2.zip
user@workstation $ cd Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2/
user@workstation $ cat flash.sh
#README
#Use this script to flash the device. The device must
#be in "fastboot" (or bootloader) mode.
#It may be nescessary to run this script as root.
#Usage: sh flash.sh
#Kernel and init
fastboot flash boot_a hybris-boot.img
#Root and home filesystems
fastboot flash userdata sailfish.img001
#vendor_b is used for /opt
fastboot flash vendor_b vendor.img001
#system_b is used for the factory restore images
fastboot flash system_b fimage.img001
#Splash Image
fastboot flash splash splash.img
Enter Fastboot Mode
- Power down the phone.
- Ensure it remains off (connecting a power supply migth wake and boot the phone)
- hold volume down and power until the screen shows a logo
- let go of the buttons
- connect to your computer via USB
Flash as Instructed
[root@workstation ~]# cd /home/user/tmp/sfe-t5-3.4.0.24-devel-20201125/Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2
[root@workstation Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2]# fastboot devices
8911ce70 fastboot
[root@workstation Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2]# fastboot getvar current-slot
current-slot: a
Finished. Total time: 0.001s
[root@workstation Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2]# sh flash.sh
Sending 'boot_a' (19768 KB) OKAY [ 0.625s]
Writing 'boot_a' OKAY [ 0.260s]
Finished. Total time: 0.887s
Sending sparse 'userdata' 1/2 (522154 KB) OKAY [ 15.639s]
Writing sparse 'userdata' 1/2 OKAY [ 0.000s]
Sending sparse 'userdata' 2/2 (463619 KB) OKAY [ 18.650s]
Writing sparse 'userdata' 2/2 OKAY [ 0.000s]
Finished. Total time: 34.306s
Sending 'vendor_b' (364 KB) OKAY [ 0.018s]
Writing 'vendor_b' OKAY [ 0.000s]
Finished. Total time: 17.933s
Sending 'system_b' (493508 KB) OKAY [ 14.782s]
Writing 'system_b' OKAY [ 0.000s]
Finished. Total time: 72.719s
Sending 'splash' (6091 KB) OKAY [ 0.188s]
Writing 'splash' OKAY [ 0.290s]
Finished. Total time: 27.279s
[root@t3600 Sailfish_OS--devel-20201125-3.4.0.24-t5-0.0.1.2]# fastboot reboot
Rebooting
Finished. Total time: 0.050s
Use SailfishOS
From here on, it should behave like any SFOS device. Obviously the commercial Jolla bits are not in the community build. e.g. the Android compatibility layer.
Enable Developer Mode
Follow Jolla’s instructions (I failed to find an equivalent post on https://forum.sailfishos.org/)
Copy SSH Pubkey to Phone
user@workstation ~ $ ssh-copy-id -f -i ~/.ssh/id_USBkey.pub defaultuser@pro1
Enable ssh Access for root
I’ll ssh in directly as root. This saves me from having to make devel-su
a valid
become_method
docs.
To be able to ssh in as root, you need to
- enable developer mode in Jolla Settings
- enable remote access in Jolla Settings
- put your ssh pubkey in
/root/.ssh/authorized_keys
chmod 0700 /root/.ssh/
chmod 0600 /root/.ssh/authorized_keys
user@workstation ~ $ ssh defaultuser@pro1
Last login: Thu Dec 24 22:35:08 2020 from 192.168.50.59
NOTICE: Env value ignored: MOZ_GMP_PATH=/usr/lib/gmp-droid/0.1/
,---
| Sailfish OS 3.4.0.24 (Pallas-Yllästunturi)
'---
[defaultuser@Pro1 ~]$ devel-su
Password:
[root@Pro1 defaultuser]# cd
[root@Pro1 ~]# mkdir .ssh
[root@Pro1 ~]# chmod 700 .ssh
[root@Pro1 ~]# cd .ssh
[root@Pro1 .ssh]# cp /home/defaultuser/.ssh/authorized_keys .
[root@Pro1 .ssh]# ls -l
total 4
-rw------- 1 root root 773 Dec 24 22:36 authorized_keys
Restore of old (SFOS < 3.4) Backup
My first attempt to restore backup failed, I am not the only one
Since SFOS 3.4 freshly installed uses defaultuser
but older SFOS releases used nemo
, I created a symlink.
c.f. the section Shared Device in the SFOS Pallas-Yllästunturi 3.4.0 release notes.
I elected to symlink, restore backup and then remove the symlink
[root@Pro1 ~]# cd /home/
[root@Pro1 home]# ln -s defaultuser nemo
[root@Pro1 home]# ls -l
total 32
-rw------- 1 root root 9216 Dec 24 23:07 aquota.user
drwxr-x--- 20 defaultu defaultu 4096 Dec 24 22:38 defaultuser
drwx------ 2 root root 16384 Oct 6 19:32 lost+found
lrwxrwxrwx 1 root root 11 Dec 25 00:57 nemo -> defaultuser
Then I successfully restored my backup from before SFOS 3.4 (when the user was named nemo
instead of the new defaultuser
.)
Finally I removed the symlink again (so I can notice any other stuff that has a hardcoded /home/nemo/
).
WARNING: Be sure to verify that /home/nemo
is a symlink before you delete it.
[root@Pro1 ~]# ls -l /home
total 32
-rw------- 1 root root 9216 Dec 24 23:07 aquota.user
drwxr-x--- 20 defaultu defaultu 4096 Dec 24 22:38 defaultuser
drwx------ 2 root root 16384 Oct 6 19:32 lost+found
lrwxrwxrwx 1 root root 11 Dec 25 01:02 nemo -> defaultuser
[root@Pro1 ~]# rm /home/nemo/
rm: remove '/home/nemo'? y
[root@Pro1 ~]# ls -l /home
total 32
-rw------- 1 root root 9216 Dec 24 23:07 aquota.user
drwxr-x--- 20 defaultu defaultu 4096 Dec 24 22:38 defaultuser
drwx------ 2 root root 16384 Oct 6 19:32 lost+found
To ensure all instructions work, I went through the commands in this post twice. Since my primary backup/restore/sync of contacts, calendars, todo lists and pictures is done through a mix of both a Netxcloud instance at home and KolabNow paid account, I did not bother restoring backup the second time around.
Ansible
You may not need this, but like to control my gizmos with Ansible.
These steps should apply to any SFOS device, I have successfully used them with a previous one.
Install Python on SFOS
For Ansible to be able to control your Sailfish X device, you will need to install python
.
user@workstation ~ $ ssh root@pro1
Last login: Wed Nov 25 14:35:02 2020
,---
| Sailfish OS 3.4.0.24 (Pallas-Yllästunturi)
'---
[root@Pro1 ~]# pkcon refresh
Refreshing cache
Starting
Refreshing software list
Finished
[root@Pro1 ~]# pkcon install python
Resolving
Querying
Testing changes
Finished [ ] (0%)
The following packages have to be installed:
python-2.7.17+git5-1.9.2.jolla.armv7hl An interpreted, interactive, object-oriented programming language
python-libs-2.7.17+git5-1.9.2.jolla.armv7hl Runtime libraries for Python
Proceed with changes? [N/y] y
Testing changes
Installing
Starting
Downloading packages
Installing packages
Finished
[root@Pro1 ~]#
Add Sailfish OS Device to Inventory
Obviously you will have to ensure that your phone is always reachable as pro1
, do this via your network infrastructure.
pro1 ansible_user=root
Test Ansible Connectivity
user@workstation ~ $ ansible pro1 -m ping
[WARNING]: Platform linux on host pro1 is using the discovered Python interpreter at /usr/bin/python, but future installation of
another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
pro1 | SUCCESS => {
"changed": false,
"ping": "pong"
}
View Ansible Facts
user@workstation ~ $ ansible pro1 -m setup
[WARNING]: Platform linux on host pro1 is using the discovered Python interpreter at /usr/bin/python, but future installation of
another Python interpreter could change this. See
https://docs.ansible.com/ansible/2.9/reference_appendices/interpreter_discovery.html for more information.
pro1 | SUCCESS => {
"ansible_facts": {
"ansible_all_ipv4_addresses": [
[...]
Nail Down Python Executable to Silence the Warning
For now I want Ansible to explicitly use Python 2.7 in the Pro1, not whatever the symlink /usr/bin/python
happens to point to. So
I added the following in host_vars/pro1.yml
on my workstation.
ansible_python_interpreter: /usr/bin/python2.7
Do not blindly add this, RTFM first
and decide which behaviour you want for your use case. auto
or auto_silent
may better suit your use case.
Use The Right Ansible Modules and Roles
Note that you should enable/disable repos with ssu
. e.g.:
ssu --help
ssu lr #list repo
ssu ar #add repo
Software should be installed with pkcon
.
pkcon install <PackageName>
Neither of these seem to have corresponding ansible modules.
My Generic SFOS Playbook
Is still quite short at the moment (only nails down ssh access), I expect this to grow when doing a step manually starts to annoy me.
For now I simply added the new host to my old play sailfish.yml
, it now reads as follows
- name: SailfishOS config
hosts:
- gemini
- pro1
- Xperia10II-DualSIM
become: no # we ssh in directly as root with ssh key, to avoid dealing with devel-su
handlers:
- name: restart systemd-journald
systemd:
name: systemd-journald.service
state: restarted
- name: restart sshd
systemd:
name: sshd.service
state: restarted
tasks:
# Ensure sshd config is set up to my liking, the disconnect after 15 mins is simply because I tend to forget for hours that I ssh-ed in and this will have a battery hit
- name: SSHD | ensure AuthorizedKeysFile is configured
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^AuthorizedKeysFile'
insertbefore: '^#AuthorizedPrincipalsFile none'
line: 'AuthorizedKeysFile .ssh/authorized_keys'
notify: restart sshd
- name: SSHD | ensure PasswordAuthentication is off
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^PasswordAuthentication'
insertafter: '^#PasswordAuthentication'
line: 'PasswordAuthentication no'
notify: restart sshd
- name: SSHD | ensure that a response is requested from the client after 1 minute of inactivity
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^ClientAliveInterval'
insertafter: '^#ClientAliveInterval'
line: 'ClientAliveInterval 1m'
notify: restart sshd
- name: SSHD | ensure that a client is disconnected after 3 missed response requests
lineinfile:
path: /etc/ssh/sshd_config
regexp: '^ClientAliveCountMax'
insertafter: '^#ClientAliveCountMax'
line: 'ClientAliveCountMax 3'
notify: restart sshd
# set either 'volatile' or 'persistent'
# if you enable the use of persistent journal, then also see
# https://together.jolla.com/question/4842/how-to-enable-more-detailed-and-persistent-logs-on-jolla-device/
- name: Ensure journald.conf is NOT set to save to persistent storage
ini_file:
path: /etc/systemd/journald.conf
section: Journal
option: Storage
value: volatile
no_extra_spaces: True
backup: False
notify: restart systemd-journald
- name: Ensure journald.conf has a more reasonable setting than the default RuntimeMaxUse=1M
ini_file:
path: /etc/systemd/journald.conf
section: Journal
option: RuntimeMaxUse
value: 10M
no_extra_spaces: True
backup: False
notify: restart systemd-journald
# While with the ini file entry Storage=persistent, systemd should create the target dir, ensure it is there like the above URL suggests
# bounce the journald if the directory was changed
- name: Ensure /var/log/journal is present
file:
path: /var/log/journal
state: directory
owner: root
group: systemd-journal
notify: restart systemd-journald
and then ran it;
pcfe@workstation pcfe.net (master) $ ansible-playbook -l pro1 sailfish.yml
PLAY [SailfishOS config] *****************************************************************************************
TASK [Gathering Facts] *******************************************************************************************
ok: [pro1]
TASK [SSHD | ensure AuthorizedKeysFile is configured] ************************************************************
ok: [pro1]
TASK [SSHD | ensure PasswordAuthentication is off] ***************************************************************
changed: [pro1]
PLAY RECAP *******************************************************************************************************
pro1 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Collect Info on the Pro1
Storage
This SFOS 3.4 community build finally uses LVM. Happy!
Since I have 3.8G /
and a smidge over 100G /home/
, maybe shrink /home
to have some free PE for
future expansion of /
Details here, be sure to follow the steps for encryped home volume
For now I’ll leave it as is.
[root@Pro1 ~]# pvs
PV VG Fmt Attr PSize PFree
/dev/sda8 sailfish lvm2 a-- 107.50g 0
[root@Pro1 ~]# vgs
VG #PV #LV #SN Attr VSize VFree
sailfish 1 2 0 wz--n- 107.50g 0
[root@Pro1 ~]# lvs
LV VG Attr LSize Pool Origin Data% Meta% Move Log Cpy%Sync Convert
home sailfish -wi-ao---- <103.60g
root sailfish -wi-ao---- <3.91g
[root@Pro1 ~]# df -h
Filesystem Size Used Available Use% Mounted on
/dev/sailfish/root 3.8G 1.1G 2.7G 29% /
devtmpfs 2.7G 884.0K 2.7G 0% /dev
tmpfs 2.8G 0 2.8G 0% /dev/shm
tmpfs 2.8G 21.9M 2.8G 1% /run
tmpfs 2.8G 0 2.8G 0% /sys/fs/cgroup
tmpfs 2.8G 8.0K 2.8G 0% /tmp
/dev/sde18 991.9M 547.8M 428.1M 56% /vendor
/dev/sde36 820.6M 880.0K 795.7M 0% /opt
/dev/sda6 2.9G 2.3G 598.4M 80% /system_root
/dev/sda2 27.0M 6.3M 19.8M 24% /mnt/vendor/persist
/dev/sda6 3.8G 1.1G 2.7G 29% /system
/dev/sde9 11.7M 10.0M 1.4M 88% /vendor/dsp
/dev/sde6 64.0M 368.0K 63.6M 1% /vendor/bt_firmware
/dev/sde5 109.9M 102.9M 7.1M 94% /vendor/firmware_mnt
/dev/sailfish/root 3.8G 1.1G 2.7G 29% /vendor/lib64/librecovery_updater_msm.so
overlay 3.8G 1.1G 2.7G 29% /system
overlay 3.8G 1.1G 2.7G 29% /system_root/system
/dev/mapper/luks-b981e7a3-4fa4-4f67-a57f-72aee3ce3214
101.5G 119.9M 101.3G 0% /home
tmpfs 569.3M 748.0K 568.5M 0% /run/user/100000
tmpfs 569.3M 0 569.3M 0% /run/user/0
While I did not quite expect to see this many block devices, I will not override the vendor’s setup.
[root@Pro1 ~]# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 113.6G 0 disk
|-sda1 8:1 0 8K 0 part
|-sda2 8:2 0 32M 0 part /mnt/vendor/persist
|-sda3 8:3 0 1M 0 part
|-sda4 8:4 0 512K 0 part
|-sda5 8:5 0 512K 0 part
|-sda6 8:6 0 3G 0 part /system_root
|-sda7 8:7 0 3G 0 part
`-sda8 8:8 0 107.5G 0 part
|-sailfish-root 252:0 0 3.9G 0 lvm /
`-sailfish-home 252:1 0 103.6G 0 lvm
`-luks-b981e7a3-4fa4-4f67-a57f-72aee3ce3214 252:2 0 103.6G 0 crypt /home
sdb 8:16 0 4M 0 disk
`-sdb1 8:17 0 4M 0 part
sdc 8:32 0 4M 0 disk
`-sdc1 8:33 0 4M 0 part
sdd 8:48 0 128M 0 disk
|-sdd1 8:49 0 4K 0 part
`-sdd2 8:50 0 1M 0 part
sde 8:64 0 4G 0 disk
|-sde1 8:65 0 512K 0 part
|-sde2 8:66 0 2M 0 part
|-sde3 8:67 0 512K 0 part
|-sde4 8:68 0 512K 0 part
|-sde5 8:69 0 110M 0 part /vendor/firmware_mnt
|-sde6 8:70 0 1M 0 part /vendor/bt_firmware
|-sde7 8:71 0 4M 0 part
|-sde8 8:72 0 32M 0 part
|-sde9 8:73 0 16M 0 part /vendor/dsp
|-sde10 8:74 0 1M 0 part
|-sde11 8:75 0 512K 0 part
|-sde12 8:76 0 64M 0 part
|-sde13 8:77 0 8M 0 part
|-sde14 8:78 0 64K 0 part
|-sde15 8:79 0 512K 0 part
|-sde16 259:0 0 512K 0 part
|-sde17 259:1 0 128K 0 part
|-sde18 259:2 0 1G 0 part /vendor
|-sde19 259:3 0 512K 0 part
|-sde20 259:4 0 2M 0 part
|-sde21 259:5 0 512K 0 part
|-sde22 259:6 0 512K 0 part
|-sde23 259:7 0 110M 0 part
|-sde24 259:8 0 1M 0 part
|-sde25 259:9 0 4M 0 part
|-sde26 259:10 0 32M 0 part
|-sde27 259:11 0 16M 0 part
|-sde28 259:12 0 1M 0 part
|-sde29 259:13 0 512K 0 part
|-sde30 259:14 0 64M 0 part
|-sde31 259:15 0 8M 0 part
|-sde32 259:16 0 64K 0 part
|-sde33 259:17 0 512K 0 part
|-sde34 259:18 0 512K 0 part
|-sde35 259:19 0 128K 0 part
|-sde36 259:20 0 1G 0 part /opt
|-sde37 259:21 0 16K 0 part
|-sde38 259:22 0 4K 0 part
|-sde39 259:23 0 1M 0 part
|-sde40 259:24 0 256K 0 part
|-sde41 259:25 0 256K 0 part
|-sde42 259:26 0 4K 0 part
|-sde43 259:27 0 32.7M 0 part
|-sde44 259:28 0 4K 0 part
|-sde45 259:29 0 1M 0 part
|-sde46 259:30 0 8M 0 part
|-sde47 259:31 0 2M 0 part
|-sde48 259:32 0 64M 0 part
`-sde49 259:33 0 128K 0 part
sdf 8:80 0 1.5G 0 disk
|-sdf1 8:81 0 2M 0 part
|-sdf2 8:82 0 2M 0 part
|-sdf3 8:83 0 2M 0 part
`-sdf4 8:84 0 4K 0 part
mmcblk0 179:0 0 29.8G 0 disk
`-mmcblk0p1 179:1 0 29.8G 0 part
zram0 253:0 0 1G 0 disk [SWAP]
RAM Available to SFOS
[root@Pro1 ~]# free -h
total used free shared buff/cache available
Mem: 5.6Gi 1.1Gi 3.6Gi 23Mi 899Mi 4.5Gi
Swap: 1.0Gi 0B 1.0Gi
CPU
[root@Pro1 ~]# lscpu
Architecture: aarch64
Byte Order: Little Endian
CPU(s): 8
On-line CPU(s) list: 0-7
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 2
Vendor ID: Qualcomm
Model: 4
Model name: Kryo V2
Stepping: 0xa
CPU max MHz: 2457.6001
CPU min MHz: 300.0000
BogoMIPS: 38.40
L1d cache: 32K
L1i cache: 32K
L2 cache: 1024K
Flags: fp asimd evtstrm aes pmull sha1 sha2 crc32
Kernel
[root@Pro1 ~]# uname -a
Linux Pro1 4.4.153-perf #7 SMP PREEMPT Mon May 18 10:31:30 UTC 2020 aarch64 GNU/Linux
OS Customisations and Configuration
Since I expect these to be part of the build soon, not in Ansible for now.
Allow landscape orientation in homescreen
As per this tjc post
[root@Pro1 ~]# grep return\ allowed /usr/lib/qt5/qml/Sailfish/Silica/Page.qml
return allowed
[root@Pro1 ~]# sed -e "s/return allowed/return Orientation.All/" -i /usr/lib/qt5/qml/Sailfish/Silica/Page.qml
Hardware decoding of h.264 and h.265 (hevc) videos in native SFOS applications
As per this tjc post.
[root@Pro1 ~]# cat /etc/gst-droid/gstdroidcodec.conf
[decoders]
video/hevc=1
[root@Pro1 ~]# curl -L -o /etc/gst-droid/gstdroidcodec.conf https://raw.githubusercontent.com/mer-hybris/droid-config-sony-ganges-pie/master/sparse/etc/gst-droid/gstdroidcodec.conf
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 168 100 168 0 0 425 0 --:--:-- --:--:-- --:--:-- 425
[root@Pro1 ~]# rm /home/defaultuser/.cache/gstreamer-1.0/registry.*
rm: remove '/home/defaultuser/.cache/gstreamer-1.0/registry.armv7l.bin'? y
Replace Boot Splash
Was no longer needed, Sailfish_OS–devel-20201125-3.4.0.24-t5-0.0.1.2 did this for me. Thanks SFOS Porters!
Automatic Keyboard Backlight (automatic using mce)
Was no longer needed, Sailfish_OS–devel-20201125-3.4.0.24-t5-0.0.1.2 did this for me. Thanks SFOS Porters!
HW Keyboard US-international
Was no longer needed, Sailfish_OS–devel-20201125-3.4.0.24-t5-0.0.1.2 did this for me. Thanks SFOS Porters!
Be sure to read the comments in /usr/share/X11/xkb/symbols/fxtec_vndr/pro1
if, unlike me, you want another layout than the US, intl., with AltGr dead keys default.
Left Unchanged
- I did not enable off-mode-charge.
- Normally I enable persistent journal storage via
journald.conf(5)
for all my Linux based machines; servers, workstations and mobile devices. But the last 10 months SFOS 3,2 and later 3.3 on the Pro¹ had been so stable that I left it set toStorage=volatile
for now. No reason to needlessly wear out my phone’s flash storage.
Using OpenRepos.net
First install File Browser, then Storeman. Thanks olf!
Install Patchmanager 3.0
As per Guide: Sailfish X on Xperias.
So far I have not added any patches, previously I used
- Lockscreen Analog Clock by Ancelad
- Ultimate statusbar patch by Anceland
But I have not yet had a need for either on SFOS 3.4 since the phone is of very little use to me until it syncs with -Kolab Now_ again and since I’ve been working from home non stop since March, it’s not like I use my mobile device much anyway.
Issues
WIP section, until I have Kolab Now sorted there will not be much other testing. :-(
Syncing with Kolab Now
- KolabNow is giving issues after account restore, it fails to authenticate after I re-enter my password.
- set up cleanly again as per https://together.jolla.com/question/102636/how-to-configure-carddav-with-kolabnow/ but same error
- see https://forum.sailfishos.org/t/kolab-now-and-sfos-3-4/4106 for a work around
SFOS 3.4 against Kolab Now servers needs special handling until SFOS fixes this regression;
- Create two separate accounts, one for CalDAv and one for CardDAV.
- For CalDAV, put the CalDAV path (/calendars/user@domain) in the webDAV path in the UI.
- For CardDAV, put the CardDAV path (/addressbooks/user@domain) in the webDAV path in the UI.
- Be sure to replace ‘user@domain’ with your kolabnow.com login!
Fingerprints
Like described here
I had some fingerprints listed from a previous install (unsure if a previous SFOS or Android)
- Cleaned them out via commandline
- Successfully set up one new fingerprint
- Successfully used that finger to unklock
- Successfully deleted that fingerprint (just to be sure delete works)
Backup
[root@Pro1 ~]# tar cvf old-fingerprints.tar /persist/data/fingerprint/
Clean and Reboot
[root@Pro1 ~]# rm /persist/data/fingerprint/*
[root@Pro1 ~]# reboot
High Battery Drain
seems to be cnss_diag
. It did log a lot in the about 4 days, until I edited the conf file and rebooted.
[root@Pro1 ~]# date ; ls -lhrt /data/vendor/wifi/wlan_logs
Mon Dec 28 17:32:10 CET 2020
total 143M
-rw------- 1 system system 0 Oct 6 19:32 txrx_pktlog_current.dat
-rw------- 1 system system 30.0M Dec 28 16:30 host_driver_logs_001.txt
-rw------- 1 system system 30.0M Dec 28 16:49 host_driver_logs_002.txt
-rw------- 1 system system 30.0M Dec 28 16:51 cnss_fw_logs_000.txt
-rw------- 1 system system 30.0M Dec 28 16:55 cnss_fw_logs_001.txt
-rw------- 1 system system 12.3M Dec 28 16:56 host_driver_logs_current.txt
-rw------- 1 system system 10.6M Dec 28 16:56 cnss_fw_logs_current.txt
[root@Pro1 ~]#
To make logging stop, do
vi /data/vendor/wifi/cnss_diag.conf
so far only LOG_PATH_FLAG = 0
set. The value was 1
before edit.
See here (Discord) for details.
Sugegsted edit is
LOG_PATH_FLAG = 0
MAX_LOG_FILE_SIZE = 1
MAX_ARCHIVES = 1
LOG_STORAGE_PATH =
Opened an issue at the porting project to please disable logging.
Adaptations repo to contribute to
https://gitlab.com/sailfishos-porters-ci/t5-ci/