Daily driving a Linux Phone - My Experience
My first exposure to 3rd-party smartphone operating systems originally intended to run Android was from a Linus Tech Tip video. This video covered how one could extend the usable life of an old smartphone by installing a 3rd-party Android ROM called LineageOS. After further research, I also discovered a project called Ubuntu Touch that promised to bring Ubuntu to your smartphone but in a touch-friendly package. While Ubuntu touch had an initial “wow” factor, this feeling eventually wore off when I realized that you can realistically only use app from the UBports app store, since desktop Ubuntu apps are pretty clunky to use on a small screen and do not support hardware acceleration on Ubuntu touch.
This lead me searching for something that would let me run Full, Fat, desktop Linux apps on a smartphone, which is exactly the goal of PostmarketOS: A true, linux operating system that uses an upstream, up to-date linux kernel and runs a Wayland or X11 compositor. Approaching smartphone software like this has several benefits:
- It reduces the need for new devices due to discontinuation of software, reducing ewaste.
- It improves privacy since no account is needed to use the device.
- There is no need to re-learn mobile-only software when your smartphone apps are the same as your desktop apps.
The biggest downside of PostmarketOS is hardware compatibility. Very few devices have working GPS, Camera or USB. This is why PostmarketOS has a handy hardware table that indicates a phone’s hardware support for essential features.
I concluded, based on the hardware table, that the Pinephone , a phone designed to run Linux out of the box, was the best option. It has a working GPS, Camera, Video out, suspend and USB. The Pinephone’s biggest weakness is that it uses a relatively old chip that uses lots of power (40nm transistor size!) for very weak performance. The interface is horribly sluggish and the battery lasts a bit over an hour when actively using it. I managed to daily drive it for almost a year, mostly since it’s battery life when suspended was long enough to get though a day and not needing a case due to the plastic shell also helped.
After tolerating the Pinephone for a year, I looked for other options. I ended up picking up a Oneplus 6 that I got for a reasonable price on Kijiji, a local marketplace used in Ontario. The Oneplus 6 seems to be one of the best supported Android devices that can run PostmarketOS. Cellular, haptics, speaker, and Graphical acceleration all function perfectly. There are a few major problems that hold this device back from perfection:
- The camera is non functional. I really enjoy having a camera on me at all times for personal use and I needed a camera for my job at the time (I solved this by carrying around a dedicated compact camera). Recently, there has been a fork of the kernel with preliminary camera support, but it lacks several core features, much like the pixel 3a that I will talk about.
- The device will not wake from suspend for calls or SMS, so suspend has to be disabled, though this is not much of a problem since the phone hardware is still able to last an entire day this way, and this also has the benefit of receiving internet notifications as well.
- No GPS. (There is apparently a way to flash a specific android version to enable the GPS, I could not figure this out). Since I need a navigational device to navigate my city’s nonsensical bike network, I used an old android phone for navigation.
Imagine how exited I was when I read the latest PostmarketOS blog and found out the the camera on the Pixel 3a was functional! I immediately looked to Kijiji again to see if I could find a Pixel 3a for a good price. I immediatly flashed the latest PostmarketOS Edge upon receiving it to see what the camera looked like. While I was impressed that a proper Linux phone had a working camera at all, the camera has a major issue that makes it almost useless to me: There is no focus! The focus is locked to be as close as possible, so it’s only really possible to take photos of small objects, like sharing your breakfast with friends. Even then, the photos have a green color to them and are cropped in, meaning the resolution and FOV of the phone camera is reduced. Looking at the pmaports issue for cameras, it seems like lots of work is needed to get the camera backend to support focus at all, as well as actually getting the Pixel 3a hardware to work. The Pixel 3a had additional problems compared to the Oneplus 6 as well:
- Call audio would sometimes not work, and when it did, would only use the loudspeaker.
- The battery did not last long enough to last a day. I needed to charge midday to keep the phone running. (This could be due to a degraded battery, as the seller did warn me)
Overall, I really want to use PostmarketOS. The software does basically all I want out of a phone, and it does many thing better than Android. I really like how all the applications come from central repository, meaning updates are at regular intervals. I like how notifications are only used to notify for communications. I like how I can sign into Nextcloud and have Calender, Mail, Contacts and Files all work without dedicated sync applications or a different UX for each app. I like how the open applications stay in the order I left them. It’s just that hardware support is lacking.
I tried a project called Drodian, basically Mobian running ontop of the original Android kernel using Halium, but I found it to be prone to crashing and not connecting to cellular. As of writing this post, I use CalyxOS on the Pixel 3a I got for PostmarketOS. It has a locked bootloader, working camera and GPS and All day battery. It just feels a bit icky to be using a Google OS with all the weirdness that Android entails when 90% of my needs are met my PostmarketOS.
I’ve considered the possibility of constructing my own phone using prefab components like a RPI CM4, the Qucetel Modem used in the pinephone, a Pi camera, 2 18650 cells, and a screen all joined by a custom PCB inside a 3d printed enclosure. While this device would probably be thick (~1.5-2.0cm) and would have poor specifications (Low res screen, short battery life), it could be possible to have everything just work, which would be enough for me.