Can you daily drive a linux phone in 2023?

2023/02/08

When I first tried using a linux phone as a daily driver - around 2 years ago - it was nowhere near usable. My device was a pinephone, which didn't have hardware acceleration, would have trouble receiveing calls, crash every minute and use up the entire battery in just a couple hours of sitting in my pocket.

But a lot has changed since then. Even on the same hardware, the system is way more usable now. For starters, the pinephone has hardware acceleration (at least in PostmarketOS, not sure about the others). The performance still isn't impressive, but it's way better than it used to be.

The battery situation hasn't changed much, however. I left my pinephone idle at my desk for around 1.5 hours and by the time I came back, the battery has dropped down to 40% from the 90% it was before I left.

But the pinephone isn't the only linux phone out there. A week ago I came across a video by LINMOB.net on peertube about the Pocophone F1, which apparently had mainline linux support with full hardware acceleration. Of course I had to give it a try.

So I looked online for a used Poco F1 and luckily someone has just posted one on Hardverapró, which is a Hungarian used tech market. I got the phone for about $82, which is a really good price for a phone like this. It has 8 cores up to 2.8 GHz, 6 GB of ram and 128 GB of storage, which is quite the upgrade from my Redmi 7A.

Of course, I immediately started working on unlocking te bootloader of the phone. But I ran into a strange issue: whenever I tried to execute a fastboot command, the phone would just crash and display the message “Press any button to shutdown”. I eventually figured out that for some weird reason fastboot on this device doesn't support USB 3.0, and even using the USB 2.0 ports on my computer resulted in the same message. The solution was to use a USB 2.0 hub and connect the phone through that.

Then came the next roadblock: Xiaomi. If you didn't know, Xiaomi does bootloader unlocking differently to most other manufacturers. The following is not enough to unlock it:

shell fastboot oem unlock

This will only cause an error message and a reboot.

What you need to do is connect your phone to your Xiaomi account, request unlock access and then use the proprietary Xiaomi software (which is Windows only by the way) to unlock the phone.

There used to exist an unofficial tool which could unlock the phone from a linux or mac computer too, but Xiaomi added some authentication bullshit to their system to prevent it from working.

My next option was to use a windows virtual machine, which I passed the phone to. But for some weird reason the VM wouldn't recognise the device, so I gave up.

The way I ended up solving this issues is just borrowing my mom's Windows laptop and running the Xiaomi software from that.

Once that was done, the process was fairly straight forward. Build an image with pmbootstrap and flas it with fastboot. So I made my image with plasma mobile and flashed it. Initially everything seemed fine, but when I booted into the OS, I started noticing some issues. For some weird reason only the volume up key would work and not the volume down, no matter what I did. I thought it may be an issue with the desktop environment, so I reinstalled PostmarketOS with sxmo-de-dwm. Sxmo is a really cool environment built for linux phones, because it uses tiling window manager and dmenu scripts. I find it fascinating. However, it also didn't really want to work on the Poco F1. None of the gestures or buttons worked, except for opening a terminal and bringing up the on-screen keyboard. It was obviously unusable this way and so I had to ditch it too.

Which lead me to phosh. I reinstalled the whole system again, this time selecting phosh as the interface. But believe it or not, phosh also didn't work correctly. At first everything seemed fine, but I started noticing a lot of graphical artifacts while just using the phone for general tasks. Random black bars appearing for a split second, menu items flickering before before getting hidden in the menu. This would have obviously not been good to live with, but I could manage. Only when I tried to test the call functionality did I discover an issue I couldn't ignore. The calls would just simply not work. When I tapped the call button, the call would instantly end.

The software still isn't ready for daily driving yet, not to mention the tedious install process. So at this point I just can't recommend any linux phone as a daily driver.

I planned on doing a challenge where I would daily drive a linux phone for 30 days, but since such basic functionality as calls are broken, I just simply can't.

I ended up flashing crDroid on the phone. I don't consider this purchase a waste fo money, since an upgrade from my 16GB/2GB Redmi 7A was long overdue, and I'm fairly confident this device will be able to keep up with android updates for at least 4-5 more years. It will probably need a battery replacement though.