Blog :: I Love My PinePhone
For the past ten months, I've been using my PinePhone as a "daily driver." By which, I mean it's been in my pocket everywhere I go, and it's the device I use to make phone calls. Depending on your familiarity with the PinePhone (or the state of "Linux Phones" more generally) this statement is either delirious, or vapid (why should I care that you use a "smart" phone just like the rest of us?) Don't be mistaken: the PinePhone is usable as a little cellular-capable PDA, and it's in a league of its own. This article is my attempt to document my experiences and rationale for wanting to use one, as well as my thoughts on mobile Linux in general.
I expect "Linux Phone" to be a readily understood term by readers of mine, but it is a somewhat imprecise term. So I'll clarify that by "Linux Phone," I mean a mobile phone that runs not only the Linux kernel, but also the user space and general experience we all associate with the Linux operating system1. Notably, this excludes Android2, which has existed for several years. Not long ago, a Linux Phone seemed like a pipe dream: one I've had ever since I first held a smartphone I could call my own. Perhaps it's impractical for many, but I would be happy to trade ubiquity for being able to carry around workstation-like capability in my pocket. I don't use social media like Instagram, or proprietary messaging applications like WhatsApp and Snapchat. As long as I can run my usual Linux software stack, and have a modem that can receive and send phone calls and text messages, my needs are met. So when the PinePhone was announced in 2019, I was excited. Not only did it tick many of the boxes for my dream of a "Linux Phone," but it came from PINE64, a vendor I'd had great experiences with in the past, being a Pinebook Pro owner.
The idea of Linux phones had been at least somewhat popularized at that point with the earlier announcement of the Librem 5, but the Pinephoe was far more affordable, and it would be hitting the market well before the Librem 5. I got it as a Christmas gift from my wonderful mother. Unfortunately, this was amidst my hellish time as an undergrad, so I didn't have the time to fully buy into swapping over my mobile compute stack. So it waited until I graduated. I actually am somewhat happy that I waited, though, because the software situation is much better today than it was three years ago.
My previous "smart" phone was a Huawei Honor 5X, which I purchased for about $200 before the Trump administration banned domestic sales of Huawei products.3 I flashed CyanogenMod (later LineageOS) the second I removed it from the box for reasons I expect to be self-evident. Initially, it was a significant upgrade over my previous 2nd generation Moto G, but the experience soon grew unbearable as the LineageOS image for the device grew unmaintained. The System UI would freeze frequently, rendering the phone inoperable until I forcefully rebooted it; expanding the usable disk space with an external SD card resulted in strange errors and often the SD would show up as "corrupted" until I rebooted the phone enough times; and I would frequently have the phone reboot to TWRP while I was walking around with it in my pocket, a symptom I strongly suspect to be related to panics in the old, non-mainline Kernel.4 The battery also couldn't hold a charge, and I was able to remedy that by replacing it, but the difficulty I had in finding OEM parts suggested that regularly servicing the battery probably wasn't sustainable. It was time for a change.
The First Week
With that, you now understand the situation I found myself in last October. Software support for my mobile phone was suddenly non-existent, and I was growing frustrated with it. I had the option of setting up the experimental PinePhone I'd been hoarding, or fronting a couple hundred dollars for a new cellphone. I went with the former.
Unboxing
The PinePhone's initial presentation engenders confidence. Despite the cost, the box it comes in feels nice and gives me the sense that I have a quality product in my hands. The phone comes in a protective sleeve, with a USB-C cable and a leaflet with some information. It isn't a manual, but it does link to the Pine64 wiki, which is close enough to one.
I care about the longevity of my gadgets, so I went on Thingiverse and found a hard case design for the PinePhone. I could've spent more time sanding it down and making it look nice, but it was good enough for me at the time. I'm still inexperienced with making "good" 3D-printed parts. The roughness led to a few minor scratches on the back cover, but it's saved my PinePhone from worse damage on several occasions.
The PinePhone shuts itself off upon impact. I think that's a bug, rather than a feature, but I'm usually careful enough that it doesn't happen often. (In fact, it's usually when others are handling my phone that it falls.)
Per this Reddit comment, I purchased a pack of cheap tempered glass screen protectors designed for the iPhone Max XS. I haven't dropped the phone enough to put it to its limits, but thus far it's done well to keep the front of the phone free from scratches.
The PinePhone arrives flashed with a "factory test image" which is suitable for
verifying that the hardware on the PinePhone is functional before you proceed
with it configuring it. The test for the modem was finicky, and the motor test
did not work. The device, at this point, was well past the limited warranty, so
I decided to press regardless.
These issues were non-existent when I did install a proper operating system to
the phone, so I suspect there were actually some bugs in factorytest.
Experiencing bugs seems to be consistent with other users' experiences.
Distribution
Now that we've got the phone powered up, we have some decisions to make. What Linux distribution do we want to install on the phone? Furthermore, what desktop environment do we want use?
The PINE64 wiki has a page listing most of the distributions that are known to work on the PinePhone, and the choices are surprisingly diverse. On one end of the spectrum, there's GloDroid, which is a port of Android to the PinePhone. That might seem like it defeats the purpose of using the PinePhone, but I'm sure it can be used for a use-case similar to dual-booting Windows and Linux. Moving further from Android, we have distributions like Ubuntu Touch which actually use parts of Android to interact with the underlying phone, but implement a full Linux userland and display server on top of that. Personally, I think this is a really cool approach for making ordinary Android phones more useful, and you can read more about the approach here. Finally, we've got regular mainline Linux, with both desktop-oriented and mobile-oriented distributions. You can run Gentoo, Fedora, Arch Linux ARM, etc. on the Pinephone, or you can opt for PostmarketOS (Alpine-derivative) or Mobian (Debian-derivative).
There are some options that might not fit into my arbitrary "spectrum" idea, like Sailfish OS. I don't know enough about it to say where it falls. Regardless, I hope you're taking away that with an open design, you have lots of options.
One last choice I want to mention is the SqueakPhone, which appears to be based on PostmarketOS, but the userland is almost entirely written in Smalltalk.
It's a good time to be hacking on mobile devices. We might not be in the golden age, but we're certainly marching toward it.
As much as I like running Gentoo on most of my machines, I figured that would be
a bit much for me. It also doesn't seem like a good idea to constantly be
compiling things from source on my phone, which probably doesn't have great
thermals (and I assume it would take a few days to compile e.g. Firefox unless I
took the time to properly set up distcc.)
So I went with PostmarketOS. I admire the design of Alpine Linux, and I think that PostmarketOS is the project making the most progress in the mobile Linux space. Now, PostmarketOS comes with several options for a desktop environment. The three I consider to be the "main" options are Sxmo, Plasma Mobile, and Phosh. Sxmo is basically a mobile-oriented dwm fork. I'm a former dwm user and current AwesomeWM user, but running a tiling window manager on my phone seems a bit much, even for me. And in the Gnome versus KDE footballing5, I like Gnome better, and I prefer GTK+ over Qt, so I went with Phosh.
Once you know what you want to install on your PinePhone, the process is straightforward. Flash a distribution image to an SD card, pop it into the phone, and power it on. From there, you can install it to EMMC.
Storage
The internal EMMC on the PinePhone I have is 16GB (later models have a 32GB
EMMC). My music folder far exceeds 16GB, so I bought an SD card to use as extra
storage. Unlike Android, a regular Linux distribution gives you some flexibility
with how you split storage up across the various storage devices. I set up a
LUKS-encrypted ext4 filesystem on the SD card and threw a script into local.d to
decrypt it and mount it on top of /home. I haven't had a single issue with it,
so we're already doing much better than Android. I can store basically whatever
the hell I want on my phone without worrying about space constraints.
Mobile Data
Mobile data worked surprisingly well, with minimal tinkering. At the time,
PostmarketOS wasn't able to automatically detect the APN for my carrier, but the
PINE64 wiki has a list of APN settings for common carriers. Once I set it up to
communicate with NXTGENPHONE, I was able to kill the Wi-Fi connection and hit
icanhazip.com. I knew it worked because I was given an IPv6 address in response.
First time that's happened to me.
I was also able to pull out my PinePhone and pull up a picture of Fred Durst at the Thanksgiving dinner table6, far away from my house, so I was able to test out mobile data "in practice" fairly early into my PinePhone usage.
Software
While we can run Android applications on GNU/Linux, it would defeat the purpose of using this phone to run Android applications for everything. So, soon after I'd verified all was working, I put together a list of the packages that I had installed on my old phone, and figured out what the analogs were on PostmarketOS.
| Android App | PostmarketOS package | Note |
|---|---|---|
| andOTP | numberstation |