Daily Driving the Pinephone Pro
January 29th 2024 | #Digital Rights #English #Open Source
tl;dr: I've used the Pinephone Pro running postmarketOS with SXMO for long trips and as a main phone for a while. I love the freedom the Pinephone Pro gives me to work with FOSS software for so many things and that it helps me to elude the smartphone doom spiral. I hate that I still feel bad using it as a phone (terrible audio) and that it constantly has annoying glitches everywhere. But the feeling when something suddenly works because someone was so awesome to implement it is great every time the software matures. I hope those days are near where this moment comes for call audio, battery life and camera support.
That being said, here's some background, what works, where it glitches and what you can expect from linux on this mobile phone.
Update 2024-06-23: I've switched to stable v23.06. due to a bug with the disk encryption. Also I now recommend using cronie for reliable cronjobs, as it deals better with suspend, and I've found a way to bypass reboots after modem crashes.
Some History
I've been dabbling in the open source Linux world for a very long time now and have grown to love working with software that works for me, lets me control how it works and supports simple workflows well while keeping my data private. Still, I'm no IT guy. I'm a user, not a developer. My first smartphone in 2012 was a Jolla phone running Sailfish. I've shortly used android before quickly ditching the horrible UI for SailfishOS on an Xperia Compact. Then, Pine64 gave the linux phone ecosystem a huge push with its original Pinephone and again with the Pinephone Pro. At this point, I decided to try out the Pinephone Pro as a secondary device, tinkering around with it but mainly relying on my Xperia Compact until its touchscreen broke and the battery started expanding roughly one year ago. Since then I've been forced to use the Pinephone Pro as a daily driver or buy a new phone, which is expensive and would largely mean returning to Android, which I'm loath to do as I want to use google's spyware as little as possible in my life. For a while I also reactivated the old Jolla phone for phone calls, but now I've finally decided to ditch that too, as it can't do much more anymore (SailfishOS no longer supports it with updates).
It has been a struggle, and it has been rewarding. I've used the Pinephone Pro exclusively as my navigation device and sole companion on off-road-motorcycle trips through the Italian Alps and the south of Poland. I rely on it for a lot of internet tasks, when I'm away from my laptop. It's been my main chat device for Telegram, Matrix and SMS. I've watched YouTube videos, recorded audio for my work as a journalist and utilized the great traveling app Itinerary for all my train and plane travels for almost two years. It's worked great often, and it has frustrated me often as well. I've learned a lot, and I've largely stopped doom-scrolling and waste less time on platforms designed to ensnare their users.
That being said, it's time to get technical.
The Basics
The Pinephone Pro is a smartphone "powered by a Rockchip hexa-core SoC operating at 1.5GHz, and ships paired with 4GB of dual-channel LPDDR4 RAM as well as 128GB of internal eMMC flash storage. It features a high-fidelity 13MP main camera sensor and a 5MP front-facing camera." Obviously, no powerhouse, but also not painfully slow, especially since it manages tasks easily if software is economical and does its job (instead of being bloated with feature creep). It has GPS, Wifi and Bluetooth. It is a smartphone, after all. With 215g weight and dimensions of 160.8 x 76.6 x 11.1mm it's a pretty normal size, but to large for me. There's a reason I switched to a Xperia Compact in the past, and I still believe a smartphone should be exactly as large, as my thumb can reach everywhere on the screen easily when holding it in one hand.
Pretty much every mobile Linux distribution runs on it currently, with varying levels of functionality and support. I opted for postmarketOS, which also provides full disk encryption for all my data on the device. I'm not running the stable version, instead having opted for the edge channel, so with a steady stream of software updates but also a higher risk of bugs still present. This is also where the caveats begin.
Point one: If I power on the device without charging it during boot, it will crash after a few minutes. I have no idea why. Having it connected to a charger during boot solves the issue, and it'll run for days on end.
Point two: As most smartphone components use proprietary drivers, it is hard to get them running on a Linux system as no commercial vendor is developing these features. This means that cameras while present have just recently begun to work and there is still a long way to go to achieve good picture quality, and the main camera only works until the phone suspends for the first time. Here's an example:
Support is getting better and better, as some component pieces are also getting completely open source firmware, like the Modem itself, for which Biktorgj has developed awesome open source Firmware that works reliably and allows much more control over call and SMS functionality and can even run DOOM. In case you need that in your life. I haven't tried that...yet.
As with any Linux distribution, there is a selection of different UIs to choose from. Most people gravitate towards Phosh or KDE for mobile, just as these are common choices for laptops and PCs. But, the mobile form-factor also gave rise to SXMO, which has taken a very unique and very unix-style approach and which I've chosen. There's two main reasons: It has a innovative swipe-based approach reminiscent of SailfishOS (for me) and everything is customizable as it's essentially a bunch of easily editable shell scripts, leveraging classical Linux programs instead of separate and complex graphical apps. Slim, sleek and powerful. Even with my very basic understanding of scripting.
So how does this setup hold up on a daily basis? Well, it's not the greatest phone and definitely not a drop-in replacement for an Iphone or Android device.
Usage as a Phone
Calling and Texting work. Texting in SXMO happens through the Linux console, neatly wrapped up in scripts and menus that make it easy. All you need to know, is that the text editor requires one press of the "i" key, before you can start writing. You get alerts when an SMS arrives, your own messages get sent, and you can quickly and easily add new contacts. Calling also works, that's the good news. The bad news is that currently the Pinephone Pro picks up your audio as if you're talking underwater (that's what I'm told I sound like) and the receiving end gets an echo on their own voice. It works, but it's quite the bad quality. You can mitigate this some by using headphones a bit, but always searching for headphones when receiving a call gets tiresome really fast. Apparently the audio routing is quite complex and there has been a lot of work on this issue, but it's not quite there yet. I've heard it's better when using a Linux distribution that uses pulseaudio instead of pipewire (so KDE Mobile or Phosh) but I can't confirm that.
Furthermore, there is one glitch that sometimes bugs me. The free modem firmware sometimes crashes, requiring a restart through the modem interface in the menu. Easy enough, but restarting the modem also leads to a random crash in the next few minutes, so that forces either a reboot (disabling all NetworkManager connections for a while and reenabling also appears to work). Quite annoying. Especially as this also affects utilizing the Pinephone Pro as a smartphone.
The "Smart" Functions
Modem crashes occur especially when complex network changes happen, as with weak signal strength ans open hotspots (think train station and train wifi plus weak mobile internet signal). Less obnoxious, because it just requires reconnecting to a network instead of a modem reboot and thusly a phone reboot, is the tendency of the network connection to get stuck. This leads to the phone reporting internet connection, but apps not connecting. Easily fixable through a reconnect, but annoying. If you don't change mobile cells or wifi often you probably won't even encounter this problem, but it makes it a bit more tedious to use the Pinephone Pro as a travel companion.
But apart from that, it performs excellent as a smart device. There is a host of awesome apps that provide the usual smartphone services, like train and plane tickets and travel routes, calender functions, weather, podcasts, etc. On SXMO though, I haven't managed to apply a dark theme for KDE apps and first investigations into the issue haven't yielded a solution (Edit: I've now got Dark Solarized working, here's how.). The best part of the app ecosystem is, that it runs a full-fledged mobile configuration of the standard Firefox browser without the android plugin restrictions. This has two large advantages:
- You can use any web application, for which you don't yet have an app or don't want to use one. Accessing E-Mail or online banking, micro-blogging on Mastodon, doing your daily dose of Duolingo. Awesome! No need to install a gazillion apps.
- It is possible to protect your data and identity through good ad-blockers (like ublock Origin) and the usual privacy-oriented plugins.
GPS works quite well with geoclue. You just have to run:
/usr/libexec/geoclue-2.0/demos/agent
in a terminal, and it's up. Close the terminal and GPS is off again. It'll take a while for the first position fix, and then it's reliable and can navigate you forever through your favorite map app (mepo and osmin work, but I haven't figured out how to interact with mepo yet due to lack of trying). It safely guided me for over 6000km on my motorcycle, I think that's proof enough. Here you can see the phone mounted on my handlebars.
What a gorgeous place. I should probably write a small script for GPS though, which calls it through the SXMO menu, to make life easier for me. Maybe once I find the time to learn at least some basics of scripting (EDIT: Or, just use the one from the wiki, thanks to @PocketVJ for pointing me there).
I've also set up synced directories with my laptop via syncthing for pictures I take with it and documents I might need away from my laptop as well as my password database for KeepassXC.
Obviously there's also the possibility to set alarms via an alarm clock (but you need to use cronie instead of crond), record audio, read the news via RSS feeds and watch YouTube videos (adfree!) - but instead of classical apps, this is also possible through linux terminal commands, neatly wrapped in scripts. Intuitive but powerful and without hiding how your technology works from you. For me and my DIY-attitude, this has changed my relationship to smartphones greatly, as it works more like a handy tool than a marketplace of commercial enterprises trying to buy me for their ad revenue.
All of this obviously has a learning curve. But it's a learning curve that allows you to better grasp what your device actually does, how much has been grafted on to generate ad revenue and sellable identifiable information. It's no easy path, but it is rewarding.
As such, I'd say Linux on mobile utterly provides a smart experience, unless you mean closed commercial platforms like Instagram, TikTok and their ilk when talking about "smart". You'll not be very happy in this department, at least with SXMO. Obviously, there are also Apps for such services, like the Telegram client, but they are rather rare.
The actual showstopper though is battery life. Using the Pinephone Pro for heavy lifting drains it's battery really fast. Roughly 1-2 Hours of full usage, that's it. Currently, maybe we'll see better performance as the software matures. But there's a bit of good news in there as well: The suspend mode is extremely light on battery drain, and a 10000mAh powerbank will easily get you through 12 hours of heavy use.
Closing Thoughts
Depending on the Pinephone Pro daily is a mixed bag. It can be utterly nerve wracking when it glitches just when you depend on it. It's mind blowing how well it opens a better experience of the internet and the digital commons for its user. It has rekindled my adventure of learning more about computers. I've recently scripted my own airplane mode for SXMO, due to tinkering with the Pinephone Pro and having noticed that I need this functionality that hadn't previously been implemented. I'm eager to finally learn more about reporting bugs, so I can help the awesome developers fix the bugs I encounter (like the modem crashing), thus also contributing to the digital commons myself and actively helping make the world a place where older phones don't get thrown out, but find a new life. A world in which maybe more people turn to privacy protecting software that works for them instead of capitalist enterprises built on exploiting our content and our lives.
Will I continue to daily drive my Pinephone Pro? I'll certainly try! And if I fail, I already now that I'll try again in the hope that Linux on mobile matures further in the meantime.
So thank you, all you nerds and enthusiasts, who have gotten linux on mobile this far, your work is awesome!
< Buchrezension: Die Zukunft der Außenpolitik ist feministisch | Den Weg zum Kommunismus auf den Kopf gestellt >