Librem5: Crimson Daily Driver

If you have a Librem 5 phone and are like me, you are eagerly anticipating the release of Crimson, because you're stuck on Byzantium which has a super old version of just about every package, but most notably, phosh and chatty.

A few weeks ago, I finally decided to try Crimson as a daily driver, and that caused me some great headache a couple of times. I am still using it as a daily driver however, but there are still some pretty sizeable issues which I have accepted for the tie being. The issues:

The issues

No camera support yet

Pretty self explanatory here. I imagine this has something to do with the libcamera api that is being worked on.

No SD card support yet

...so if you use your SD card for your home directory, you'll have to rsync to internal storage and use that. In my case, I have too much on my card, so I had to be selective about what I put on internal storage.

You can have bluetooth audio, or phone call audio, but not both

Essentially, the current config for pulseaudio doesn't work with bluetooth, but audio generally works fine everywhere else. If you try switching to pipewire, bluetooth audio works mostly well (switching audio outputs has to be done manually from the settings), but you won't have any audio, microphone or earpiece, on phone calls. This is because of a bug in callaudiod. This issue is fixed in version 1.1.10, but Crimson currently releases with 0.1.9, so pipewire support is broken as of 2024.10.22.

Installing upgrades is too perilous

Monty Python No, it's too perilous

This actually isn't strictly true for me anymore. You just have to be diligent when installing updates. Currently, the package libgl1-mesa-dri wants to upgrade 24.2.4-1, which breaks phosh, causing a crash loop. The only way to fix it is to plug in a keyboard, ctrl + alt + f2, then sudo apt install -y libgl1-mesa-dri=22.3.6-1+deb12u1 to downgrade to 22.3.6-1. Of course, while you're doing this, phosh is continuing to launch and crash every 5 seconds, so you have to keep doing the ctrl + alt + f2 sequence as systemd takes you back to tty1. <sarcasm>Isn't systemd great?</sarcasm>

To avoid the above shenanigans, every time you run sudo apt upgrade, be absolutely sure to also run sudo apt install libgl1-mesa-dri=22.3.6-1+deb12u1 before you reboot the phone, or you'll end up in a crash loop of phosh.

Updates

Update 2024.10.26

In rather frustrating timing, an important phone call came in today while I wasn't home and the phone completely crashed and boot looped. When I got home and could troubleshoot, I discovered an update of libseat1 to 0.9.0 had broken the phone, and it needs to stay at version libseat1=0.7.0-6 for now.

Here's an all-in-one command to keep your crimson phone working.

sudo apt install libgl1-mesa-dri=22.3.6-1+deb12u1 libseat1=0.7.0-6

And a couple of pieces of related advice:

  1. Only install crimson updates when you are at home with a keyboard handy to recover with
  2. Always reboot your phone after installing said updates so you don't discover your phone is broken when you're away from said keyboard.

I'll update this post with other caveats as they come to me. If you're fine with the above issues though,

Update 2024.11.21

I removed the alsa-ucm-conf piece of the below script, as that version of the package is now available in the crimson repos. Woo!

Additionally, still no SDcard support and the libseat and libgl1-mesa-dri downgrades is still required, despite many updates having come in from upstream. It's moving right along! At this point, we're seeing somewhere between 2 and 30 package updates per day.

Update 2025.01.04

Well, it's been a little over a month, I figure it's time for another update. This is gonna be a big one because, get this, I ran sudo apt full-upgrade. Brace yourselves. :)

A few weeks ago, I saw a huge list of package upgrades come in through the landing and crimson repos this past month - over 500. I assume this is related to what Purism wrote in the October 2024 Crimson Development report about package synchronization. Almost all of the package upgrades were blocked for various reasons, so I very hesitantly tried upgrading with sudo apt full-upgrade (the replacement for the old school deprecated sudo apt dist-upgrade). I got most of the package upgrades, and I now routinely have blocked upgrades for about 40 packages, all of which I want: upgrades to phosh, phoc, gnome-*, etc.

Now, what did that full-upgrade do exactly?

It broke mostly everything. I now have the latest mmsd-tng, which is nice, except a bug was introduced in the most recent 2.6.2 release which breaks MMS attachment receiving (group texts still work, just not images).

It also seems to have broken the audio stack. To be clear, it all still works, it's just fully manual to switch between outputs. I tried the full upgrade, hoping the updates to callaudiod and pipewire would allow me to switch over to pipewire fully, but pulseaudio barely works and I now have to manually switch between headset, speaker, and headphones audio whenever I want to use the phone, have an alarm clock in the morning, or listen to music, respectively. I haven't even tried bluetooth audio yet.

Some apps now scale much worse than before the full upgrade. I suspect that's because we've gone from the purism modified versions of things like gnome-calendar to the official gnome-calendar, which is waiting on the libadwaita and gtk4 changes to bake in UI mobile scaling support. I could be wrong though, as I haven't taken the time to investigate if this is actually the case or not.

The full-upgrade also removed some packages, like phosh-mobile-settings, so you'll want to manually reinstall that each time if you want to be able to use the calendar. The upgrades also (like above) pulls in non-purism-modified app updates, like with Documents Viewer. It is more up-to-date, but no longer has the purism mobile modifications, so it shows up as a non-mobile form-factor app, so you have to press "show all apps" on the app tray to see it, and it lacks mobile UI scaling. There are also some odd pinch-to-zoom glitches that cause it to jitter all over and highlight random text. I assume hope further libadwaita and GTK 4 updates will resolve many of these issues.

Battery life is marginally better from after the initial upgrade, and still is worse than before. I get about 7-8 hours out of the phone right now before it dies. Turning off the wifi card seems to add a few hours to that.

Regardless though, phone functionality still works. Strictly SMS text messaging still works, along with matrix (though that has been a little anemic since byzantium anyways).

I might give a try later today if I have time, to remove the landing repo and see what another full-upgrade does, since I expect that to do a number of downgrades, since landing is the development repo and should be notably further ahead than crimson. I will of course post back on how that goes if I get to it, but it's Saturday and I've got errands to run, coffee to brew, and birds to watch!

I know that list is a lot of negatives. To be clear, I'm not saying devs working on this are bad or anything remotely like that. I'm just providing status updates. Crimson isn't even recommended for alpha testing right now, so let's give Purism time and patience and politeness to work on this and keep in mind, this is the first real linux phone we've ever seen. The first Apple iPhone and Google G1 also had terrible battery life and stability issues for a long time. We've just gotta catch up with an industry that has an 18 year head start and billions of dollars of funding. Let's be sure in our discourse that we are patient and respectful, and moreover, helpful! Keeping perspective is essential.

Enjoy the weekend folks!

Update 2025.01.30

Since the last update, I tried removing the landing repo from my phone and the updates started rolling in much slower. By much slower, I mean none at all in 4 days. However on a positive note, it seems the libseatd and libgl1-mesa-dri updates that broke the phosh boot process don't come down now, so it seems those are coming from landing. That said, I re-enabled landing today and got over 100 updates again. Feels good to be on the bleeding edge.

At this point, I still have 37 updates that are always pending (blocked due to conflicts), most of which are things I really want, like an update to gir1.2-adw-1 which should fix Gnome Secrets, and update to gnome weather, nautilus which I hope will fix the scaling issues, and of course phosh-core, since phosh still hasn't been updated for quite some time. Regardless, I'm still seeing around 5-30 packages get updated per day.

I'm still running Crimson without any new issues really. All of the previously mentioned issues have not yet been fixed sadly. I assume we're just waiting on all of the base packages to be upgraded before the fixes start rolling in. Also we still require the reverts to libseatd and libgl1-mesa-dri.

Until next time.

Hacks to get running

Because I want to easily rebuild this phone if I need to, without following a long checklist of shell commands, I put all this in a clean shell script which handles everything for me/you.

I do recommend putting this in its own directory, as it has to download and extract some of its own artifacts (alsa-ucm-conf) to complete.

In short, the following script:

~/crimson/fixup.sh

#!/usr/bin/env bash

set -euo pipefail
export IFS=$'\n\t'

# By default Crimson comes with the crimson repos, which is very broken last I
# checked.
# This adds landing, crimson-security, crimson-updates, and
# crimson-updates-proposed repos. These might make things unstable in the long
# run, but for now this is required to get things up and running.
#
apt_set_repos() {
  sudo tee /etc/apt/sources.list <<EOF
deb http://repo.pureos.net/pureos landing main
deb http://repo.pureos.net/pureos crimson main
deb http://repo.pureos.net/pureos crimson-security main
deb http://repo.pureos.net/pureos crimson-updates main
deb http://repo.pureos.net/pureos crimson-updates-proposed main
EOF
}

apt_set_repos

Run that and most of the issues should be resolved.

Written on: 2024-10-22 20:36:07 -0600

Last edited: 2025-02-25 19:18:47 UTC