Librem 5

This review describes my personal experience with the device and it's written in multiple sections to ease finding specific details that might be interesting. Some parts are more recent than others to my memory. So keep that in mind.

Shipping

If you want to learn about the whole drama regarding shipping delays, promises of refunds and more, feel free to explore the internet and some of its angry posts. I personally found this forum post very helpful during the time I had to wait receiving my device. People collaborated to estimate when their package would arrive based on their position in queue.

In the end I ordered my particular device after their Kickstarter campaign ended in January 2020. But I had to wait for it until May 2023... and I know this sounds horrific. However the reason I never thought about refunding was quite simple.

I still liked the concept behind this product. I wanted to own one and support the project of mobile GNU/Linux. Obviously I can understand people feeling frustrated about not getting refunds when demanded, especially if you are in needs of money. So I will only talk about my personal point of view here. Also there have been other ways to support this whole idea as well. But I didn't feel like my money was wasted.

I personally followed Purism's progress during that time. They posted a bunch of videos, news posts and quite a lot of software contributions online and I even tried to interact at times hoping to help improving it.

In the end I received my device and all I can say is that after this whole time waiting, my excitement hasn't been reduced a bit (even though I already had a Pinephone and a Pinephone Pro in my hands during that time). The Librem 5 is definitely one device that changed my view on paying for free software. As strange as it might sound.

I would still recommend companies to not overstep the mark and communicate their way of handling issues in the supply chain better upfront. I don't think my own good faith here can be taken as example for the average customer.

Unboxing

From outside the packaging looks pretty solid. The inside is formed within white plastics which don't look amazing but are fine. Besides the phone (with pre-installed battery) there is a USB-C charging cable, a charging brick with potential adapter for your chosen wall plug and 3.5mm jack in-ear headphones.

The included USB-C cable supports up to USB 3.0 which is neat for file-transfer, bi-directional network traffic and other things. More about that later but I wanted to include this.

The battery is pre-installed but it is recommended to charge the phone first before initial boot and setup. You can simply follow the included quick-start guide for the whole setup.

Only step before typical setup when booting is entering the password regarding full-disk encryption which is initially: 123456

You can and should obviously change that later on, keeping your personal data secure. All those steps are described inside the guide. So no worries.

Setup

What can I say? The setup is as easy as GNOME on any Linux distribution for desktop because for the most part, it is exactly that. Your user account is pre-created with a default password being the pin-code: 123456

I recommend changing that later on from within settings. You can also change the password to anything besides numeric pin-codes because the login allows using the full touchscreen keyboard (squeekboard) which contains every key known from desktop.

So you setup language settings, optionally connect to Wi-Fi (if the hardware for that is connected - we come back to that later), opt-in to location or telemetry services if wanted and add in useful online accounts like your self-hosted Nextcloud for example.

That's it. From here you find yourself on the home screen showing a handful of pre-installed applications.

Usage

After setting up the device I played around with it, a lot. From the beginning I wanted to test what kind of software is available in the repository from PureOS. Because I figured applications in there would be more optimized to run on this form factor.

To understand this in detail, I probably need to explain that while this device looks like a phone, it runs desktop applications. Sounds a bit strange at first but a ton of effort was put into making GTK applications (many major applications from the GNOME desktop environment) to work on a very small screen in vertical form factor with a touch screen.

I even rely on 200% scaling for most applications limiting them essentially to only 360 pixels in width. But in most cases this works.

I can write text messages, make phone calls, look at my contacts, browse websites, watch videos, check mails and even play some games. Making it even more strange, I can install Godot (a game engine) on my "phone" to open my own project file from a Nextcloud directory and play it using the editor. I don't even need to export it or port it at all.

I can implement a GTK application inside a Python script on my laptop, copy the file over to my "phone", execute it and use it. The barrier for mobile development has only been that low with web applications... which some people would probably assume, I need to use on such a device to work as daily driver. But I simply don't.

Running native applications is so much faster and requires way less resources. The only thing I run as web app is Discord because I don't want to give that any file access. But I rarely use it on this device.

Most of my usage besides messaging via Signal or Telegram is likely in Amberol, listening to music and Tuba to check Mastodon.

I've also put a lot of time into learning how to develop mobile friendly Linux applications. Because it makes a ton of fun and now I can build an application supporting up to five different device configurations (desktop, laptop, tablet, phone and gaming handheld) at once without using different branches, forking the repository or porting the whole app into different languages or APIs. All of this thanks to free and open-source software.

I learned that flatpaks can be a great way to get latest releases of desktop applications installed because Flathub tends to build for arm64 as well. So you have a wide access to different applications and there's definitely a trend of making only small adjustments to make most of it work in mobile form factor.

Also thanks to Schmiddi I can easily checkout when my train or bus is trying to arrive (as well as checking how much it's delayed). So for traveling around, especially in Germany I recommend using his Railway application.

There are a lot of other people as well who do an amazing job, implementing the applications I use now on the go. So while I actually tested running Android apps via Waydroid on it once (that works with some limitations), I'm not missing any Android apps in particular at all.

All I can say is great job FOSS community and keep going!

Keyboard

Usually I would write subsections about parts that were challenging but I really wanted to add a whole section about the on-screen keyboard. It is implemented via squeekboard and all I can say is that I kind of fell in love with it.

It's way better in my opinion than the on-screen keyboard you would experience in typical GNOME on laptop or tablet. Because you will find all the keys you need, different layouts which even enable themselves in some applications like the terminal to make your life easier and there are special layouts as well as pages for language specific characters, emoji and so on too. If anything goes wrong, you could write your own preferred keyboard layout or just change existing ones. It's awesome!

I personally only use a German layout as well as the default one for the terminal. But I can't complain. You have full access to all keys, you would have on a physical keyboard for the desktop and that is actually useful.

For example one of the first pieces of software I installed on my device was VIM. Because you can actually use it on there because your keyboard contains keys like 'Escape', arrow keys, 'Tab', 'Ctrl' or 'Alt'.

After using the device for about a week, I fumbled around with my old Android phone and thought how annoying it was missing arrow keys to move the cursor precisely to correct some wrong text-input.

Also using the terminal with bash and bash-completion on 'Tab' on a mobile device. Awesome!

Not saying this can't be accomplished with Android but this is the default experience I had with this device here and it feels great.

Battery life

From my experience you really want to utilize its suspension that turns off the main SoC as well as Wi-Fi modem. So the device will only wake up on a physical button press, a call, a text message (SMS) or an rtcwake timer (but we get to that).

I also recommend using it more with screen turned off rather than on because you really notice it drawing power. Doesn't mean you can't get anything done with it or watch some video. But I personally don't do anything like this if not necessary because I don't want to drain the battery.

So my most usage comes from messaging when I am outdoors or listening to music that I locally store on the device itself. That means I don't need to stream music, allowing me to turn of modems reducing power draw further.

Like this I tend to get about 8 hours out of it in a reliable way, having typical usage. Depending on what you do exactly, it can be much shorter or even longer. But I personally could nearly always arrange with that.

Once I knew that it might fell too short, I bought an external power bank which solved my issue completely. But you can also work-around it with a second battery since you can easily open the back and swap the battery without a tool. Unfortunately batteries will not be shipped to Europe as spare parts.

I assume battery life could still improve via software updates. But for the most part, I think the issues could be solved if the SoC would be more efficient, also reducing heat during heavy tasks.

Alarms

Replacing my old Android phone with it for daily usage, I noticed one major issue. Alarms that are set in GNOME Clocks require a device to stay on.

Yeah, that's not gonna work. From start of my journey I had no issues charging the device over night. But ideally the device would be suspended during that time to definitely get fully charged.

Also for me waking up in time can be a struggle sometimes. So I would really like to have this feature. I needed it.

So after a long time still relying on my older Android phone for one task only, setting an alarm to wake up in time, I found some forum thread explaining there was access to an rtcwake command which allowed the system clock to trigger a device waking up from suspension at some chosen point in time.

I ended up creating a cumbersome script to launch mpv playing loud music once the rtcwake went through waking up my device after a chosen delay in hours. Sometimes it worked, sometimes it didn't. My assumption was that a text message triggered the modem to wake up the whole device before RTC did, causing some undefined behavior - I guess. Unsure.

For the most part I ended up living without the strong dependency to a phone alarm. But I'm still eagerly waiting for this feature to work with GNOME Clocks and similar applications. I already know there has been landed user level support for timers in systemd that can wake up your device and other people are waiting on this issue to be solved on application level. There's even pull request looking to implement this properly and for the mean time waiting, you can find a prototype for setting an alarm on the GNOME Gitlab.

So I'm optimistic all of this hassle will get figured out. Not to mention the implementation will not just improve mobile devices and my simple needs in the long run. But it will also work for tablets, laptops or even servers if they support the rtcwake command. Makes me even more excited about it.

Features

  • A 720×1440 pixels touch screen with 60Hz refresh rate. Doesn't get as bright as other mobile devices, sure. But I'd say it's fine most of the time.
  • Three hardware kill-switches for the cellular modem, Wifi/Bluetooth and the camera sensors including microphone. You can easily flip them at any time, cutting power from the required hardware. Once flipped back on, it gets detected and reconnects. No major software issues with that.
  • A camera setup with two sensors for front and back. Both can be accessed via Millipixels (a fork from the Megapixels application). Picture quality is fine for my personal needs, have experienced worse.
  • Hardware accelerated decoding for video (unfortunately only software encoding - keep that in mind for recording videos).
  • A full USB-C port that is capable of USB 3.0 and video-out. You can connect a dock, an external display, keyboard, mouse and such without issues. It's a mobile desktop computer if you want.
  • Full modular Wi-Fi and Bluetooth modem for 2.4GHz and 5GHz networks. (Works great and connects in a reasonable amount of time.)
  • Modular cellular baseband modem that supports a range of bands for one of multiple selectable areas. (Pick the right modem for your area before shipping.)
  • One Nano-SIM card slot inside a tray that also contains another slot for a microSD card to extend the storage.
  • A 4500mAh battery to keep the device running on the go. (Sounds like a lot but see the section about battery life... it's necessary.)
  • Two speakers on top earpiece and bottom (which can get enough volume, potentially vibrate its back cover with bass).
  • IMU sensors for auto-rotation of the screen, a light sensor to turn off screen during calls and GNSS sensor to locate the device in navigation applications (if allowed).
  • A yellow/orange flashlight on the back side (not very bright but useful).
  • Never thought this would need to make part of such a list but here it is: Side-loading apps or in other words... I can install any software I want from which source I personally trust. (What a time to be alive, right? iOS? Android?)
  • USB-tethering... also unidirectional USB-tethering. That means I can connect my device with another and share network from any of them to another. (I always wanted this on my phone, using the ethernet connection from my desktop when plugged in for charging. Now it's possible.)
  • Development in any programming language I want with native runtimes. (I can even write on shell script or Python program on device, save it, make it executable and run it. I can pipe between multiple programs of course, access the terminal, SSH into my server, use GStreamer for media pipelines... essentially no limits of possibilities.)
  • No glued parts, only Philips screws were used, making disassembly straight forward.
  • Most of the software (nearly all of it) is free and open-source. (Exceptions are in the modular parts than can either be disabled, cut from power or removed besides some proprietary code to initialize the memory.) But otherwise you pretty much get lifetime updates (in worst case from upstream Debian).
  • It's probably the first phone that went the extra mile to gain respect from the FSF and receive an RYF certification. So if you advocate for free software, I think work has been done here that may earn some respect.
  • Dedication of its developers: I can't stress this enough but people really put time and money into this device, making it work as well as it does now. If you don't believe my words, I recommend reading through the process of the people figuring out how to make the camera sensors (front and rear) work without much documentation from the vendor, essentially treating it as a black box at some point. I'm still impressed by those people who made it possible that I can simply open a camera app and make a picture, only relying on free software.

Support

  • For simple questions Purism provides a wide range FAQ containing sections for all of their individual devices.
  • No matter whether you run into problems or want to discuss some workarounds with other users, you want to checkout the official forums.
  • There also an official contact page, even mentioning a matrix channel and development mailing lists. So if anything goes completely wrong, that's the way to communicate I assume (potentially in case of hardware defects to get them fixed/replaced).
  • In case you have some major software issue or a feature request, there are official public repositories by Purism to checkout and even contribute to their software. It is really awesome to see such dedication to free software.
  • Many of their software efforts went upstream which allows you to utilize other Linux distributions (for example Mobian)
  • There are even open schematics for the boards and open 3D design files if you want to tinker with the hardware.

Resetting

On time I tried auto-mounting the microSD-card during boot via a manual change in /etc/fstab. However I managed my device to become unbootable. So to fix this, I had to reset the device by flashing a clean installation of PureOS on it.

Fortunately Purism provided a detailed documentation on how to do this:

  • They made an official post showing exactly how to proceed from each step embedding a video.
  • You can read it very detailed in a section from the documentation for developers.
  • Also besides using either Debian or PureOS to run through the procedure, there even exist packages in the AUR to do everything on Archlinux as well.

So yeah, the whole platform is extremely open. Especially when it comes to fixing issues. With all that it was about 20 minutes until my device was running again as clean as day one.

Issues

  • I would like battery life to improve further. I know there have been done many steps to be on current level and I can deal with it. But I want to imagine, things can still be better, not thinking about how long AOSP would last.
  • Temperature management is not ideal yet. Most of the time, it is fine. However sometimes when you are charging and it's doing stuff in the background like installing updates, it can get quite warm. I'm not sure whether I would like it to slow down to adjust this honestly. So maybe I would just like the SoC to be more efficient to solve this but I'm not sure what's the best way to achieve it.
  • Video encoding definitely needs hardware acceleration on a mobile device. Not necessarily to reduce draining the battery but also to reduce heat while recording a video. I know there have been some progress to improve software encoding in Megapixels quite a lot. But I think devices in the future should also have the required capabilities to not wait for people figuring out how to workaround the hardware (at least their future plans seem to align with that).
  • Mostly a software issue but navigation applications like GNOME Maps do not update your location as frequent as you would expect coming from Android or iOS. Effectively your location only updates after a longer delay and it's not as accurate because you don't have access to the same kinds of tracing Wi-Fi networks as Google or Apple does. (You could say that makes it harder to get tracked but it also means it's harder to track yourself.) It's not a deal breaker because I can read a map and find the right location manually but I would like to see some smart FOSS solution to this problem (potentially avoiding the tracking of third parties).
  • GPU drivers... well, there are some and the device supports OpenGL 2.1 and OpenGL ES 2.0 out of the box. But the SoC would be capable of more in theory and modern applications might not be compatible with these drivers and you definitely don't want to fall back to software solutions via CPU in such cases (because of heat and battery drain). So yeah, the GPU is amazing if it works but it needs better interfaces.
  • Signal on arm64... I don't know why but the Linux native Signal desktop application does not officially support the required architecture for this device. So I ended up using an third-party repositoy that applies a bunch of patches to workaround build issues. Not ideal, definitely. So I really hope the people behind Signal can figure this out in the future (I've heard laptops with arm64 chips exist).
  • Internal storage is kind of short with 32GB. It can be extended via microSD card but since automatic mounting of it has caused some trouble in the past, I don't trust it yet to move system directories onto it. However relying on flatpaks for certain applications can fill your system storage pretty quickly. (Yes, I like to use flatpaks on it to have latest releases for applications available. But no they do not all re-use the same runtime as some flatpak enthusiasts may want you to believe.)
  • The camera stack is not perfect yet. I wasn't able to get the camera sensors working outside of Minipixels which probably means that my device is still missing a patch for libcamera and pipewire to handle that. It's probably only a matter of time until it works in other apps but I wanted to include this.
  • Probably a software issue inside older GTK but right click via long press on its touch screen can be a pretty rough experience (causing the context menu to immediately disappear if you don't get timing exactly right). Most of the time, you can find a workaround.
  • Not really an issue for me personally. But this device weights more like two regular phones do. Using it you will keep that in mind and to some degree it makes you think of it like a tool even more. (Probably because I could imagine you can put a nail into the wall with it - haven't tried though.)
  • It's not water-proof and probably not very water resistant in general either. Sometimes it worries me during snow or rain. So I tend to have a bag or pocket keeping it dry.

Future

On the one hand I'm really excited to see what the next mobile GNU/Linux device running free software will look like. On the other hand I like to keep using this device here and see how things improve over time.

Either way I'm not planning to go back to some locked down mobile OS by a vendor that doesn't really care about privacy, user freedom or longevity. Because I don't think people should need to buy a new phone because of lacking software support, a drained and glued battery inside or missing replacement parts.

I also really like the concept of running the same software on my desktop, phone, mobile device, tablet, server or game console. It just makes my life as developer much easier because many times I don't even need to do "porting" anything. I don't have different versions of one app with subsets of features. I can build upon a software stack that I already know and trust. That's just amazing.