logo

drewdevault.com

[mirror] blog and personal website of Drew DeVault git clone https://hacktivis.me/git/mirror/drewdevault.com.git

pmOS-on-xiaomi-poco-f1.md (9232B)


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