How to make daily driving the Purism Librem5 work
From Bluetooth to Battery, phone cases and more
Introduction
The Purism Librem5 one of the first phones specifically designed to run Linux based operating systems without Android (along with the Pinephone).
As with any early concepts, designs and platforms this device has numerous small grievances which might complicate its daily use. This guides provides an overview of all my personal grievances and resolutions grouped by several topics.
Let’s start with describing several of the problems that might hinder daily use. First and foremost is battery life, expect no more than 8 hours on a single charge. Second, is connectivity you will find that both cellular and Wi-Fi become inactive frequently even though the phone suggests it is still connected. Moreover, out of the box GPS and Bluetooth do not even work at all at the moment (2023-09-06). Third is the compatability of apps, primarily social media apps are not supported or very difficult to use. And last there are no screen protectors or cases made specifically for the Librem5.
Good things about the Librem5
While it relatively simply to list all problems with a particular device we have to recognize several outstanding features. Firstly is the dedicated hardware buttons to disable functionality such as camera, Wi-Fi or cellular. Speaking about cellular, this device uses a separate cellular modem with its own dedicated memory, contrarily to most phones which have one memory region being both accessed by the CPU and cellular modem. From a security perspective both the modem having dedicated memory and being able to physically unpower it is a tremendous improvement.
Topics
App Compatability
While for most mobile applications you can find a decent replacement there are a few categories that proof problematic. Primary social media applications like snapchat or whatsapp are cumbersome to get working. Nevertheless, through Waydroid most android applications can be run on the Librem5.
Apart from using Waydroid several applications available from the store are noteworthy and work natively on mobile.
- authenticator, uses argoni to encrypt the database and supports most 2fa features (qrcode, totp, backup)
- secrets, open, use and modify keepass databases
- amberol, play music with lockscreen widget
Some apps do not work natively on mobile displays but can be made to work by
forcing them to be scaled down. This is done in the mobile settings
app under
the compositor
tab.
- nextcloud, synchronise files
- telegram, telegram social network client
- flatseal, manage flatpak permissions
- tuba, mastodon client
Broken apps that do not start, are unusable due to scaling or otherwise are difficult to use on the phone currently
Setting up waydroid
Several write ups have been made by Sebastian Krzyszkowiak (dos) about how to install waydroid on the Librem5. Unfortunately these excellent guides are very difficult to find on the internet. Instead searches are covered in unhelpful forum posts complaining about how this (supposedly) is not possible.
Dos has made several guides the most recent one being available here https://source.puri.sm/-/snippets/1198
The instructions boil down to the following commands
sudo apt update
sudo apt full-upgrade
wget https://source.puri.sm/Librem5/debs/waydroid/-/jobs/401129/artifacts/file/debian/output/waydroid_1.3.3-0pureos0+librem5ci79377.0353512_all.deb
sudo apt install ./waydroid_1.3.3-0pureos0+librem5ci79377.0353512_all.deb
That is all, you will now have waydroid launcher on the screen. Booting the first time will take a while and requires an internet connection. Be sure to minimize the keyboard when you launch the app otherwise waydroid will only occupy part of the screen.
The guide by dos contains additional information about how to access logs, use adb to debug or install apks and much more. However, there are a few limitations mostly related to sensors, WiFi, GPS and cellular. Additionally, the clipboard is not copied between waydroid and the host so instead something like the Nextcloud client can be used to copy data back and forth.
Given that the waydroid image does not contain Google play services an alternative app store like fdroid can be installed. For applications only available from the play store apkpure or aptoide can be used (with caution). Personally, I recommend uploading each apk to virustotal.com prior to installing.
Synchronising files & settings
Using the Nextcloud client
The Nextcloud client allows to synchronise files for offline use, without an active internet connection. This is ideal for files such as keepass databases especially because any local changes to this file will also be uploaded back to Nextcloud.
The Nextcloud client can be found in the regular app store but the option
to show incompatible apps has to be enabled in order to see it. Simply press
the burger menu in the top right followed by preferences -> Show Incompatible
Applications
.
Once installed, launch the Nextcloud client and press the downward arrow to open the settings menu. These windows will be scaled down so the text might not look very crisp. In the legacy settings menu you will find it is much easier to configure which folders to sync between Nextcloud and the device.
If you close the Nextcloud window the only way to reopen it again is by first
typing killall nextcloud
in a terminal prior to relaunching.
Using Nextcloud through gnome settings
Alternatively the Nextcloud files, contacts and calendar can be synced through
gnome settings. When using this for files it will appear in the file explorer
as a network mounted fileystem. To add an Nextcloud account in settings simply
go to gnome settings -> Online Accounts -> Nextcloud
. When added the option
to sync calendar, contact and files can be individually enabled or disabled.
When using the Nextcloud file synchronisation through gnome settings be sure to unmount the network filesystem whenever it is not used to prevent excessive battery drain. Alternatively the files synchronisation can be enabled and disabled on the fly in gnome settings whenever it is needed. The network filesystem will automatically remount during boot or when a new network connection becomes available.
Firefox bookmarks
The use of Nextcloud file synchronisation also allows to easily export and
import Firefox bookmarks. You can find this menu under the hamburger icon
in the top right Bookmarks -> Manage Bookmarks -> Import and Backup
.
Phone contacts
Phone Contacts can be automatically synced through the Nextcloud online account in gnome settings allowing to access the same set of contacts anywhere.
However, in the absence of a Nextcloud installation altnernative methods can be used to keep contacts synchronised between devices or Waydroid. First the native contacts app has the ability to import contacts from Vcard files as well as export them.
The import button can be found under the right top burger menu labelled import
while exporting is done by selecting one or more contacts using press and hold
and selecting export in the lower left corner.
Inside waydroid the Android contacts app will have the same ability to import
and export contacts. On android the options are found under the left top
burger menu followed by settings
and labelled import
and export
respectively.
Connectivity
Unfortunately you will find that the Purism Librem5 regularly loses both WiFi and cellular connectivity among other issues. Other issues such as that Bluetooth does not work at all out of the box. For most of these I have developed tips and guidelines that can elleviate most problems.
Losing WiFi or cellular connectivity
First you will find that WiFi will refuse to connect or that it says it is connected but you can’t actually transfer any data. The solution is to simply toggle the physical hardware button disabling Bluetooth and WiFi temporarally.
In some rare occurances this will not fix the issue at which point you will need to reboot the phone.
For cellular the behavior is mostly identical to WiFi but instead you often
manually have to register to the APN in order to get network service. It is
easily visible when this happens by the exclamation mark in the top left corner
of the device. For this navigate to gnome settings and go to
Mobile -> Access Point Names
and take note of the name of the selected access
point. Next open a terminal and use it to toggle the APN network:
nmcli connection down "APN Name"; nmcli connection up "APN Name"
This should have the exclamation mark dissapear. It is best to routinely check
if you actually still have a working network service by pinging a server of
choice ping meter.met
in a terminal. In particular when travelling at high
speed having to switch cell towers regularly.
GPS connectivity
GPS can be enabled from gnome settings -> privacy -> location services
this
will allow phosh to provide geoclues which are used by both gnome-maps
and
pure-maps
. However, other maps apps such as foxtrotgps
require the use of
gpsd
which requires more configuration. In addition you might notice that the
location in gnome-maps
never updates because it silently crashes after
receiving the first geoclue.
The apparmor definition of gpsd
will have to be modified given the gps
serial device will be on /dev/gnss0
for which apparmor is not configured.
For this, use a text editor with elevated permissions to open
/etc/apparmor/usb.sbin.gpsd
and navigate to the line starting with /dev/tty{
and add the following as shown below:
/dev/gnss[0-9]* rw,
After this restart apparmor and gpsd.
sudo systemctl restart apparmor gpsd
You can check how well your gps is working by using the cpgs
tool in a
terminal. You might need to make the font a bit smaller for it to fit the
Librem5 screen.
Getting Bluetooth to work
Bluetooth is currently unsupported unless the Bluetooth module firmware is manually downloaded and installed. Simply execute the following:
wget https://source.puri.sm/angus.ainslie/firmware-rs9116-nonfree/-/raw/debian/master/Firmware/RS9116_NLINK_WLAN_BT_IMAGE.rps
sudo mv ./RS9116_NLINK_WLAN_BT_IMAGE.rps /lib/firmware RS9116_NLINK_WLAN_BT_IMAGE.rps
Afterwards modify /etc/modprobe.d/librem5-devkit.conf
and change
dev_oper_mode=_
to dev_oper_mode=13
. Now reboot.
Unfortunately, whenever the device now boots you will be discoverable on Bluetooth. Turning off Bluetooth will only engage rfkill and thus you will still be discoverable on Bluetooth!
The only way to prevent Bluetooth discoverability is by executing the following anytime the phone reboots or the WiFI / Bluetooth hardware button is toggled:
bluetoothctl discoverable off
bluetoothctl pairable off
bluetoothctl advertise off
These commands must be executed before turning off Bluetooth in gnome settings!
Some wireless audio systems or car systems will refuse to pair with the device.
One solution is to use hciconfig
to change the device class such that it
better reflects being a phone: sudo hciconfig hci0 class 0x5a020c
Bluetooth audio
One of the nice things about low level Bluetooth access is that you can now configure the device however you like. This allows to either source audio from the phone to a connected device like Bluetooth speaker but also allows to sink audio from a device and play that through the phone speakers or headphones.
I recommend to install both pavucontrol
and blueman
to make configuring
Bluetooth easier. From the blueman-manager
you can select to configure any
device as source
or sink
under audio-profiles
. Similarly this can be
in pavucontrol
under the control plane.
For sourcing audio using either pavucontrol
or blueman
is sufficient but
for sinking you require to use pactl
. Simply use pactl list
to show the
audio sink when connected. Next create a loopback device to play the sinked
audio out of the speakers or headphones:
pactl load-module module-loopback source=bluez_source.xx_xx_xx_xx_xx_xx.a2dp_source
Be sure to replace the xx_xx_...
with the bluetooth address as listed by
pactl
before. With this the audio can now be played.
Without the loopback device the sinking can still be done but the sinked audio is only available as microphone input in that case.
In order to be able to launch blueman-manager
you might need to start the
bluetooth service systemctl start bluetooth.target
Battery life
The phone can operate about 8 hours on a single charge which is pretty low for a phone. Now an experimental suspend feature is available that significantly extends this operation time. However, networking is not available while the phone is suspended, and it will only wake up for phone calls and text messages at the moment (2023-09-07). Now you could keep your phone connected to the charger for most of the day or charge it multiple times. However, both those conditions have downsides as I’ll explain.
Constantly keeping your battery at 100% with trickle charging is pretty bad for Lithium batteries their health and expected lifetime. The same type of degradation is experienced from rapid charge and discharge cycles, particularly when the battery gets hot / warm.
I have found this to be the case with the Librem5. Through sensors
we can see
that the battery is being supplied with roughly 20/30 mA of current continuously
when the battery is 100% charge. This means that keeping the phone plugged in
with the battery connected will accelerate the degradation of the battery.
More so, charging and discharging the battery multiple times a day does not only ad to the limited number of charge cycles of a Lithium battery but the battery also gets relatively hot (around 45 degrees Celsius) which further accelerates degradation.
Especially in Europe this is problematic as Purism refuses to ship batteries due to export surcharges. So unless you bought multiple batteries with the phone, which was not even an option with the crowdfunding campaign, you are stuck with this single battery for the entire phones life (yikes). In my opinion this situation is unacceptable export charges or not, especially for a 1000$ + phone.
Using a USB-PD power bank or charger (aka the bareback method)
To prevent rapid battery degradation I recommend removing the battery and powering it directly from a 18W capable USB-PD power bank or charger. This works, but it decreases ease of use and mobility. Keep in mind, depending on the power bank the phone might have problems booting, so it might be best to retain the battery until its fully booted only removing it after.
If you keep the back cover removed you will find it is quick and reliable to insert and remove the battery while the phone is operating (hence the bareback method). Should you need to run of with your phone simple connect the battery and start walking.
The only downside of this approach is that the phone will get confused about the
total capacity of the battery after the first insertion / removal. You can check
the actual state of charge through a command line utility called inxi
by
executing inxi -B
.
Using a short USB-C capable with two right angle connectors you might be able to construct a power bank and Librem5 sandwich that increases mobility drastically.
Endurance & protection
There are no purpose made screen protectors or phone cases available for the Librem5. However, several screen protectors should fit fairly well including
- ZTE Blade V9
- Huawei Honor 7c
- Moto x pure
- Google nexus 6p
- LG v10
I personally use a ZTE Blade V9 screen protector and am satisfied with the fit although its a bit short around the edges and does not fully cover the screen.
For phone cases several 3D STl files are available online that can be 3D printed. However, this must be done in a material like TPU otherwise it will be impossible to stretch the case over the phone. 3D printing TPU requires a direct drive extruder and full metal hotend without PTFE feed tube. In the absence of the necessary 3D printing equipment an online 3D printing service capable of TPU printing can be used. Expect the cost to be around 50 euro.
You can find up to date 3D models for cases on the gitlab repository of purism.
I have not been able to fully test fit any of the online available phone case models. But have matched the location of buttons and phones by printing several cases in PLA instead of TPU.
EU Legislation and conformance
According to the (terms and conditions) policy page of the purism store a 1 year limited warranty is offered including on the Librem5 phone. This a violation of European legislation that requires at least a 2 year legal guarantee or even longer in select countries. The warranty of Purism also explicitly does not apply to select goods such batteries while offering warranty to defective products even consumbles is also required. Purism also charges the shipping for defective products to the customer which is not allowed.
I would highly encourage Purism to follow the free training courses on European consumer law through the Consumer Law Ready portal.
Following the simple deductions from the policy and consumer law page we can conclude that Purism is in non conformance with European legislation.
For highly detailed and in depth information see the European Derictives:
- https://eur-lex.europa.eu/legal-content/EN/TXT/?qid=1415266727957&uri=CELEX:31985L0374
- https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=CELEX:32011L0083
- https://eur-lex.europa.eu/legal-content/EN/TXT/?qid=1413904356529&uri=CELEX:31999L0034
- https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=celex:31999L0044
Conclusion
There is a lot to be said about this phone, it serves a niche market with many of the features that the community values but clearly is not a very polished experience yet. This guide provides some of the steps to make the device more useable but it still a lot more cumbersome to use than a flagship Android or IOS phone. The focus of Purism on the US market and neglect towards European customers is worrysome and should be taken into consideration before purchase.