b454a10691c7a5bfb305c198f1b999620b37d0c4 — Anjandev Momi 1 year, 7 months ago cb07600
new post: Sxmo on the poco f1
2 files changed, 136 insertions(+), 0 deletions(-)

A src/images/sxmopoco.jpg
A src/posts/2022-04-19-sxmopocof1.org
A src/images/sxmopoco.jpg => src/images/sxmopoco.jpg +0 -0
A src/posts/2022-04-19-sxmopocof1.org => src/posts/2022-04-19-sxmopocof1.org +136 -0
@@ 0,0 1,136 @@
<h1 class="page-title">Sxmo on the poco f1</h1>
<p class="date">Published 2022-04-17 on <a href="/">Anjan's Homepage</a></p>
#+OPTIONS: toc:nil
#+OPTIONS: num:nil

Recently, I tried to upgrade the modem firmware on my pinephone and failed.
As far as I know, the modem on my pinephone is broken.
I have a developer edition of the pinephone pro but the mainline kernel doesnt even have reliable charging working [fn:6].

On the look out for a replacement device, I saw [[https://twitter.com/joelselvaraj95/status/1478971761127350275][the poco f1 and oneplus 6 have gained support for calling in postmarketOS]].
Since I am tired of dealing with pine64 hardware and the Librem 5 is too expensive, I decided to pick up a poco f1 for 150 Canadian dollars.
So how is the experience?
Overall very good and I have been using it as my daily driver for 2 weeks.

Here are the details:

* Unlocking the bootloader

Going through the process of unlocking the bootloader, I am reminded why I was so excited for the pinephone and Librem 5.
To unlock the bootloader: you must insert your sim card into your poco f1, make a Xiaomi account with your phone number, and beg Xiaomi to unlock your device via the proprietary windows only application [fn:1].
Xiaomi's unlocking application did not detect that my poco f1 was connected and I had to install the "Mi PC Suite".
I downloaed Mi PC Suite from [[http://pcsuite.mi.com/][here]] but *be advised that the website is not served over https and overall kind of suspect*.
I used this program because I could not find a reliable source for the USB drivers for this device after searching for hours.
Unlocking the bootloader took me 4 hours in total and it was a painful experience.
I will probably have to reinstall windows on my burner laptop.

I was told that Xiaomi sometimes makes people wait a couple of weeks to unlock their phone and during that time, they must use the phone with the simcard installed.
In other words, an even bigger privacy nightmare than what I went through.
Luckily, I didn't have to deal with Xiaomi denying my unlock request.

Consulting the postmarketOS wiki for the [[https://wiki.postmarketos.org/wiki/OnePlus_6T_(oneplus-fajita)#Fastboot_Mode][Oneplus 6/6T]], Im not sure if the bootloader unlocking experience is better on the Oneplus 6.

[[https://twrp.me/xiaomi/xiaomipocophonef1.html][Flashing TWRP]] to my phone via adb was trivial.

* Installing PostmarketOS
PostmarketOS gained [[https://postmarketos.org/blog/2022/04/18/v21.12.4-release/][support for calling in the stable branch after I got my poco f1]] and the distro [[https://postmarketos.org/download/][has prebuilt images for the poco f1]].
However, I like customizing my install via pmbootstrap and [[https://wiki.postmarketos.org/wiki/Xiaomi_Poco_F1_(xiaomi-beryllium)][followed the wiki]] to find out which panel my device had and made sure pmbootstrap installed the right image.
Overall, installing postmarketOS+Sxmo with full disk encryption was no issue.

* Initial Setup

I used =rsync= to copy my =$HOME= directory and =/etc/apk/world= from my pinephone to the poco f1.
The notch was a bit annoying but Vitali64 told me I can add =bar { gaps 42 0 }= to my sway config to make sure the notch doesnt cover up UI elements.
Ideally, we will have gap support preconfigured for users in Sxmo via our deviceprofiles [fn:7].

#+CAPTION: Sxmo on the poco f1. Note the notch does not obstruct the UI.
#+NAME:   fig:sxmopoco

Calling support for devices other than the pinephone is supported in the git head of sxmo-utils when callaudiod and pipewire is installed.
I installed the git head of sxmo-utils and ran =apk add callaudiod pipewire=.

* What do I do on my phone

I use my phone for the following things:
1. Calling and texting
2. Firefox: reading rss via [[https://miniflux.app/][miniflux]], watching videos via invidious/sxmo's youtube script, and reading fediverse posts
3. Dino: messaging friends and family on XMPP
4. Neomutt: reading emails
5. mpv: listening to music with my bluetooth headphones

* The Experience

** Calling/Texting
Calling does work with a caveat - sending DTMF tones doesnt work.
As such, you cannot interact with robocall systems.
This has been reported to upstream [fn:2] and someone in the SDM845 mainlining postmarketOS chat said they will eventually fix it.

Sometimes received texts appear multiple times in the text log but this might be a bug in Sxmo.

** Suspend
Closely related to calling and texting is how the phone behaves when suspended.
The phone will not wake from suspend when you receive a call or a text.
As far as I can tell, the phone will not silently drop received calls or texts while it's in suspend.
Overall, the battery life on the poco f1 with Sxmo lasts me all day and the phone works well in suspend.
The phone connects to wifi very quickly when coming out of suspend.
In contrast, on the pinephone, I would wait forever for the radio to connect to wifi.

** Web Browsing

The web browsing experience on the poco f1 with Sxmo is very smooth.
On the pinephone, the performance was so bad that I stopped using my phone.
This was very healthy for me but when I was out at a restaurant, I would often have to use my friend's phone to read the menu.
No more with the poco f1!
I can use firefox with all the privacy friendly addons I love and still have a very smooth experience.
No matter the benefits of the pinephone, I cannot give up the superior web browsing experience on the poco f1.

** Bluetooth

The Bluetooth devices connect quicker and the audio quality is better on the poco f1.

** Audio Speakers

Aside from the slight echo the caller on the other side will hear, call audio is perfect on the poco f1 and much better than the pinephone.
However, the audio on the speakers is too low when playing media from firefox/mpv.
I am not sure whether this is cause of a bad configuration on my part and I will have to try out phosh to test.

** Dino/Neomutt/Everything Else

I would often run out of ram and cpu on the pinephone.
It's nice that postmarketOS uses musl which aims to have safety under resource exhaustion [fn:3].
However, I had to close firefox/dino on the pinephone if I wanted to play gnome-chess or open some other app even on a lightweight UI like Sxmo.
With the poco f1's octacore cpu and 6 gb of ram, I no longer have issues with opening heavy webpages or opening multiple apps [fn:4].

** Video playback

I can finally watch 1080p videos in mpv smoothly without issues.

* Conclusion

I will be daily driving my poco f1 while I wait for the pinephone pro to gain mainline support in postmarketOS [fn:5].
Other than the robocall issue, I don't find any of the issues to be "show stoppers".
It would be nice to have the camera working and gps working on the poco f1 but the experience is impressive so far.
The main issue I face day to day is the DTMF tones.
Sxmo users can expect better support for poco f1 and other devices as a result of me having a non pinephone device to test.

If you want to help support the SDM845 mainlining effort, see the postmarketOS wiki page https://wiki.postmarketos.org/wiki/Qualcomm_Snapdragon_845_(SDM845).
We are very close to the days when we can buy cheap phones like we do cheap Thinkpads off ebay and install a privacy respecting OS.

* Footnotes

[fn:7] https://todo.sr.ht/~mil/sxmo-tickets/494
[fn:6] The whole point of having a "Linux phone" is to have a mainline kernel that can be support forever. I really don't want to use a heavily patched kernel.

[fn:5] And probably after pinephone pro has mainline support in postmarketOS since the poco f1 is faster than the pinephone pro.

[fn:4] According to the postmarketOS wiki, some versions of the poco f1 have 8 gb of ram. I have the 6 gb version and it works great for me.

[fn:3] http://musl.libc.org/about.html
[fn:2] https://gitlab.freedesktop.org/mobile-broadband/ModemManager/-/issues/543

[fn:1] https://lineageosroms.com/beryllium/#unlocking-the-bootloader