logo

drewdevault.com

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

Mobile-linux-retrospective.md (7084B)


  1. ---
  2. title: Throwing in the towel on mobile Linux
  3. date: 2023-06-16
  4. ---
  5. I have been tinkering with mobile Linux -- a phrase I will use here to describe
  6. any Linux distribution other than Android running on a mobile device -- as my
  7. daily driver since about 2019, when I first picked up the PinePhone. For about 3
  8. years I have run mobile Linux as my daily driver on my phone, and as of a few
  9. weeks ago, I've thrown in the towel and switched to Android.
  10. The distribution I ran for the most time is [postmarketOS], which I was mostly
  11. quite happy with, running at times sxmo and Phosh. I switched to [UBports] a
  12. couple of months ago. I have tried a variety of hardware platforms to support
  13. these efforts, namely:
  14. [postmarketOS]: https://postmarketos.org/
  15. [UBports]: https://ubports.com/en/
  16. * Pinephone (pmOS)
  17. * Pinephone Pro (pmOS)
  18. * Xiaomi Poco F1 (pmOS)
  19. * Fairphone 4 (UBports)
  20. I have returned to LineageOS as my daily driver and closed the book on mobile
  21. Linux for the time being. What put the final nails in the coffin was what I have
  22. been calling out as my main concern throughout my experience: reliability,
  23. particularly of the telephony components.
  24. <table>
  25. <thead>
  26. <tr>
  27. <th>Use-case</th>
  28. <th>Importance</th>
  29. <th>postmarketOS</th>
  30. <th>UBports</th>
  31. <th>LineageOS</th>
  32. </tr>
  33. </thead>
  34. <tbody>
  35. <tr>
  36. <td>Basic system reliability</td>
  37. <td class="blue">5</td>
  38. <td class="red">2</td>
  39. <td class="blue">4</td>
  40. <td class="blue">5</td>
  41. </tr>
  42. <tr>
  43. <td>Mobile telephony</td>
  44. <td class="blue">5</td>
  45. <td class="yellow">3</td>
  46. <td class="yellow">3</td>
  47. <td class="blue">5</td>
  48. </tr>
  49. <tr>
  50. <td>Hotspot</td>
  51. <td class="blue">4</td>
  52. <td class="blue">5</td>
  53. <td class="yellow">3</td>
  54. <td class="blue">5</td>
  55. </tr>
  56. <tr>
  57. <td>2FA</td>
  58. <td class="blue">4</td>
  59. <td class="blue">4</td>
  60. <td class="red">1</td>
  61. <td class="blue">5</td>
  62. </tr>
  63. <tr>
  64. <td>Web browsing</td>
  65. <td class="blue">4</td>
  66. <td class="blue">5</td>
  67. <td class="red">2</td>
  68. <td class="blue">4</td>
  69. </tr>
  70. <tr>
  71. <td>Mobile banking</td>
  72. <td class="blue">4</td>
  73. <td class="red">1</td>
  74. <td class="red">1</td>
  75. <td class="blue">5</td>
  76. </tr>
  77. <tr>
  78. <td>Bluetooth audio</td>
  79. <td class="yellow">3</td>
  80. <td class="blue">4</td>
  81. <td class="red">2</td>
  82. <td class="blue">4</td>
  83. </tr>
  84. <tr>
  85. <td>Music player</td>
  86. <td class="yellow">3</td>
  87. <td class="blue">4</td>
  88. <td class="red">1</td>
  89. <td class="yellow">3</td>
  90. </tr>
  91. <tr>
  92. <td>Reading email</td>
  93. <td class="yellow">3</td>
  94. <td class="red">1</td>
  95. <td class="yellow">3</td>
  96. <td class="blue">4</td>
  97. </tr>
  98. <tr>
  99. <td>Navigation aid</td>
  100. <td class="yellow">3</td>
  101. <td class="red">2</td>
  102. <td class="red">1</td>
  103. <td class="blue">5</td>
  104. </tr>
  105. <tr>
  106. <td>Camera</td>
  107. <td class="yellow">3</td>
  108. <td class="yellow">3</td>
  109. <td class="yellow">3</td>
  110. <td class="blue">5</td>
  111. </tr>
  112. <tr>
  113. <td>Password manager</td>
  114. <td class="yellow">3</td>
  115. <td class="blue">5</td>
  116. <td class="red">1</td>
  117. <td class="red">1</td>
  118. </tr>
  119. <tr>
  120. <td>sysadmin</td>
  121. <td class="yellow">3</td>
  122. <td class="blue">5</td>
  123. <td class="red">2</td>
  124. <td class="yellow">3</td>
  125. </tr>
  126. </tbody>
  127. </table>
  128. <details style="margin-top: 1rem">
  129. <summary>More on these use-cases and my experiences</summary>
  130. **Mobile banking**: only available through a proprietary vendor-provided
  131. Android app. Tried to get it working on Waydroid; did not work on pmOS and
  132. almost worked on UBports, but Waydroid is *very* unreliable. Kind of shit but
  133. I don't have any choice because my bank requires it for 2FA.
  134. **Web browsing**: I can just run Firefox upstream on postmarketOS. Amazing!
  135. UBports cannot do this, and the available web browsers are not nearly as
  136. pleasant to use. I run Fennic on Android and it's fine.
  137. **Music player**: the music player on UBports is *extremely* unreliable.
  138. **Reading email**: This is not entirely pmOS's fault; I could have used my
  139. main client, aerc, which is a testament to pmOS's general utility, but it is a
  140. TUI that is uncomfortable to use on a touchscreen-only device.
  141. **Password manager**: pmOS gets 5/5 because I could use the password manager I
  142. wrote myself, [himitsu](https://himitsustore.org), out of the box.
  143. Non-critical use-case because I could just type passwords in manually on the
  144. rare occasion I need to use one.
  145. **sysadmin**: stuff like being able to SSH into my production boxes from
  146. anywhere to troubleshoot stuff.
  147. </details>
  148. Among these use-cases, there is one that absolutely cannot be budged on: mobile
  149. telephony. My phone is a critical communication device and I need to be able to
  150. depend on calls and SMS at all times, therefore the first two rows need to score
  151. 4 or 5 before the platform is suitable for my use. I remember struggling with
  152. postmarketOS while I was sick with a terrible throat infection -- and I could
  153. not call my doctor. Not cool.
  154. I really like these projects and I love the work that's going into them.
  155. postmarketOS in particular: being able to run the same environment I run
  156. everywhere else, Alpine Linux, on my phone, is fucking amazing. The experience
  157. is impressively complete in many respects, all kinds of things, including things
  158. I didn't expect to work well, work great. In the mobile Linux space I think it's
  159. the most compelling option right now.
  160. But pmOS really suffers from reliability issues -- both on edge and on stable it
  161. seemed like every update broke some things and fixed others, so only a subset of
  162. these cool features was working well at any given moment. The breakage would
  163. often be minor nuisances, such as the media controls on my bluetooth headphones
  164. breaking in one update and being fixed in the next, or major showstoppers such
  165. as broken phone calls, SMS, or, in one case, all of my icons disappearing from
  166. the UI (with no fallback in most cases, leaving me navigating the UI blind).
  167. So I tried UBports instead, and despite the general lack of good auxiliary
  168. features compared to pmOS, the core telephony was more reliable -- for a while.
  169. But once issues started to appear, particularly around SMS, I could not tolerate
  170. it for long in view of the general uselessness of the OS for anything else. I
  171. finally gave it up and installed LineageOS.
  172. Mobile Linux is very cool and the community has made tremendous, unprecedented
  173. progress towards realizing its potential, and the forward momentum is still
  174. strong. I'm excited to see it continue to improve. But I think that before
  175. anyone can be expected to use this as a daily driver, the community really needs
  176. to batten down the hatches and focus on one thing and one thing only: always,
  177. *always* being usable as a phone. I'll be back once more reliability is in
  178. place.