logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git
commit: 1cf5065eb43fcfe4fce266a995861de32bb290b1
parent 10129f957dd1b8d947957b76774401eae41cff85
Author: Drew DeVault <sir@cmpwn.com>
Date:   Thu, 25 Aug 2022 12:49:56 +0200

Poco F1 review

Diffstat:

Acontent/blog/pmOS-on-xiaomi-poco-f1.md153+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 153 insertions(+), 0 deletions(-)

diff --git a/content/blog/pmOS-on-xiaomi-poco-f1.md b/content/blog/pmOS-on-xiaomi-poco-f1.md @@ -0,0 +1,153 @@ +--- +title: A review of postmarketOS on the Xiaomi Poco F1 +date: 2022-08-25 +--- + +I have recently had cause to start looking into mainline Linux phones which fall +outside of the common range of grassroots phones like the PinePhone (which was +my daily driver for the past year). The [postmarketOS wiki][0] is a great place +to research candidate phones for this purpose, and the phone I landed on is the +[Xiaomi Poco F1][1], which I picked up on Amazon.nl (for ease of return in case +it didn't work out) for 270 Euro. Phones of this nature have a wide range of +support from Linux distros like postmarketOS, from "not working at all" to +"mostly working". The essential features I require in a daily driver phone are +(1) a working modem and telephony support, (2) mobile data, and (3) reasonably +good performance and battery life; plus of course some sane baseline +expectations like a working display and touchscreen driver. + +[0]: https://wiki.postmarketos.org/wiki/Devices +[1]: https://wiki.postmarketos.org/wiki/Xiaomi_Poco_F1_(xiaomi-beryllium) + +The use of mainline Linux on a smartphone requires a certain degree of bullshit +tolerance, and the main question is whether or not the bullshit exceeds your +personal threshold. The Poco F1 indeed comes with some bullshit, but I'm pleased +to report that it falls short of my threshold and represents a significant +quality-of-life improvement over the PinePhone setup I have been using up to +now. + +The bullshit I have endured for the Poco F1 setup can be categorized into two +parts: initial setup and ongoing problems. Of the two, the initial setup is by +far the worst. These phones are designed to run Android first, rather than the +mainline Linux first approach seen in devices like the PinePhone and Librem 5. +This means that it's back to dealing with things like Android recovery, +fastboot, and so on, during the initial setup. The most severe pain point for +Xiaomi phones is unlocking the bootloader. + +The only officially supported means of doing this is via a Windows-only +application published by Xiaomi. A [reverse engineered][2] Java application +supposedly provides support for completing this process on Linux. However, this +approach comes with the typical bullshit of setting up a working Java +environment, and, crucially, Xiaomi appears to have sabotaged this effort via a +deliberate attempt to close the hole by returning error messages from this +reverse engineered API which direct the user to the official tool instead. On +top of this, Xiaomi requires you to associate the phone to be unlocked with a +user account on their services, paired to a phone number, and has a 30-day +waiting period between unlocks. I ultimately had to resort to a Windows 10 VM +with USB passthrough to get the damn thing unlocked. This is very frustrating +and far from the spirit of free software; Xiaomi earns few points for openness +in my books. + +[2]: https://github.com/francescotescari/XiaoMiToolV2 + +Once unlocked, the "initial setup bullshit" did not cease. The main issue is +that the postmarketOS flashing tool (which is just a wrapper around fastboot) +seemed to have problems writing a consistent filesystem. I was required to apply +a level of Linux expertise which exceeds that of even most enthusiasts to obtain +a shell in the initramfs, connect to it over postmarketOS's telnet debugging +feature, and run fsck.ext4 to fix the filesystem. Following this, I had to again +apply a level of Alpine Linux expertise which exceeds that of many enthusiasts +to repair installed packages and get everything up to a baseline of workitude. +Overall, it took me the better part of a day to get to a baseline of "running a +working installation of postmarketOS". + +However: following the "initial setup bullshit", I found a very manageable scale +of "ongoing problems". The device's base performance is excellent, far better +than the PinePhone &mdash; it just performs much like I would expect from a +normal phone. PostmarketOS is, as always, brilliant, and all of the usual +mainline Alpine Linux trimmings I would expect are present &mdash; I can SSH in, +I easily connected it to my personal VPN, and I'm able to run most of the +software I'm already used to from desktop Linux systems (though, of course, GUI +applications range widely in their ability to accomodate touch screens and a +portrait mobile form-factor). I transferred my personal data over from my +PinePhone using a method which is 100% certifiably absent of bullshit, namely +just rsyncing over my home directory. Excellent! + +Telephony support also works pretty well. Audio profiles are a bit buggy, and I +can often find my phone using my headphone output while I don't have them +plugged in instead of the speakers, having to resort to manually switching +between them from time to time. However, I have never had an issue with the +audio profiles being wrong during a phone call (the modem works, by the way); +earpiece and speakerphone both work as expected. That said, I have heard +complaints from recipients of my phone calls about hearing an echo of their own +voice. Additionally, DTMF tones do not work, but [the fix][3] has already been +merged and is expected in the next release of ModemManager. SMS and mobile data +work fine, and mobile data works with a lesser degree of bullshit than I was +prepared to expect after reading the pmOS wiki page for this device. + +[3]: https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/merge_requests/823 + +Another problem is that the phone's onboard cameras do not work at all, and it +seems unlikely that this will be solved in the near future. This is not really +an issue for me. Another papercut is that Phosh handles the display notch +poorly, and though pmOS provides a "tweak" tool which can move the clock over +from behind the notch, it leaves something to be desired. The [relevant +issue][4] is being discused on the Phosh issue tracker and a fix is presumably +coming soon &mdash; it doesn't seem particularly difficult to solve. I have also +noted that, though GPS works fine, Mepo [renders incorrectly][5] and Gnome Maps +has (less severe) [display issues][6] as well. + +The battery life is not as good as the PinePhone, which itself is not as good as +most Android phones. However, it meets my needs. It seems to last anywhere from +8 to 10 hours depending on usage, following a full night's charge. As such, I +can leave it off of the juice when I go out without too much fear. That said, I +do keep a battery bank in my backpack just in case, but that's also just a +generally useful thing to have around. I think I've lent it to others more than +I've used it myself. + +[4]: https://gitlab.gnome.org/World/Phosh/phosh/-/issues/552 +[5]: https://l.sr.ht/TOL9.png +[6]: https://l.sr.ht/6SQX.png + +There are many other apps which work without issues. I found that [Foliate][7] +works great for reading e-books and [Evince][8] works nicely for PDFs (two +use-cases which one might perceive as related, but which I personally have +different UI expectations for). Firefox has far better performance on this +device than on the PinePhone and allows for very comfortable web browsing. I +also discovered [Gnome Feeds][9] which, while imperfect, accommodates my needs +regarding an RSS feed reader. All of the "standard" mobile Linux apps that +worked fine on the PinePhone also work fine here, such as Lollypop for music and +the Porfolio file manager. + +[7]: https://johnfactotum.github.io/foliate/ +[8]: https://wiki.gnome.org/Apps/Evince +[9]: https://gfeeds.gabmus.org/ + +I was pleasantly surprised that, after enduring some more bullshit, I was able +to get [Waydroid][10] to work, allowing me to run Android applications on this +phone. My expectations for this were essentially non-existent, so any degree of +workitude was a welcome surprise, and any degree of non-workitude was the +expected result. On the whole, I'm rather impressed, but don't expect anything +near perfection. The most egregious issue is that I found that internal storage +simply doesn't work, so apps cannot store or read common files (though they seem +to be able to persist their own private app data just fine). The camera does not +work, so the use-case I was hoping to accommodate here &mdash; running my bank's +Android app &mdash; is not possible. However, I was able to install F-Droid and +a small handful of Android apps that work with a level of performance which is +indistinguishable from native Android performance. It's not quite there yet, but +Waydroid has a promising future and will do a lot to bridge the gap between +Android and mainline Linux on mobile. + +[10]: https://waydro.id/ + +On the whole, I would rate the Poco F1's bullshit level as follows: + +- Initial setup: miserable +- Ongoing problems: minor + +I have a much higher tolerance for "initial setup" bullshit than for ongoing +problems bullshit, so this is a promising result for my needs. I have found that +this device is ahead of the PinePhone that I had been using previously in almost +all respects, and I have switched to it as my daily driver. In fact, this phone, +once the initial bullshit is addressed, is complete enough that it may be the +first mainline Linux mobile experience that I might recommend to others as a +daily driver. I'm glad that I made the switch.