Yaky's

blog | notes | apps

PinePhone - Post daily driver review

Review of PinePhone after a month of daily driving.

All opinions are my own, and most of the review is for my own use-cases. There are some comparisons, mostly for entertainment purposes, to iOS (based on my previous device, iPhone 12 Pro) and Android (based on my current device, de-googled OnePlus Nord N10 5G).

Verdict

PinePhone is a great mobile Linux device. I would use it as my daily driver, and probably iron out some issues I ran into, but for me, it failed at... being a phone. I had repeated, unpredictable problems both placing and receiving calls, and I could not resolve them. See below for details.

Hardware

3GB RAM Convergence edition original PinePhone rev 1.2B.

PinePhone on Pine64 store

Body

TLDR: Plastic, pretty standard for mid level phone.

Well-made, pretty standard dimensions, is a bit slippery, but buttons have a good feel to them. It would be great with a grippy case.

Having all three buttons on the right side makes it convenient for environments like SXMO, which uses buttons for navigating menus.

Display

TLDR: Okay, difficult to see in bright light.

After ultra-smooth modern phone touchscreens, PinePhone's screen protector feels strange, but is nothing unusual. (You can take it off or replace it with a glass one for more glossy feel)

The display itself is an IPS panel. Not as colorful as OLED, but not as expensive or power-hungry, either. My only complaint is that it's difficult to see in bright light, so I kept the light theme for everything.

Battery

TLDR: Eh. Enough for occasional texting and short calls. Plug in otherwise.

Not great, but not terrible. At first, and when traveling, I carried a power bank with me, but rarely needed it. If you use the phone to occasionally text and chat, you are OK. Browser and WiFi are the two things that noticeably drain the battery. Often, if not actively using bandwidth, I think it makes sense to turn WiFi off.

I made an adapter to use with Samsung S20 Ultra battery case, but some strange USB issues kill the modem while case is active, so I could not try it out very well.

PinePhone to Samsung Galaxy S20 Ultra back cover adapter

Software

postmarketOS stable with Phosh (installed on new 128GB SD card)

https://postmarketos.org/download/

Installation

TLDR: EASY.

To install an OS, you flash an image to an SD card, put it in the PinePhone and turn it on. That's it. You can swap OSes by changing SD cards as much as you want.

Compare to Android, which involves unlocking the bootloader, flashing recovery, booting into recovery, flashing an OS image, and possibly patching the image to get root.

Compare to iOS which doesn't let you do that to any reasonable extent.

(Yes, I know normal people do not install OS on their phones...)

Activation

TLDR: No hand-holding, but only few settings.

When you start some distros/desktops, you are presented with a short tutorial. You need to configure the mobile connection yourself, but it's usually just setting the APN and MMSC URLs. For postmarketOS+Phosh, the APN setting is in Settings/Mobile Networks, and MMSC setting is in Chats/Settings.

PinePhone carrier support on Pine64 wiki

Compare to Android, which requires clicking through multiple pages of setup. Although most of that is skippable (depending on the manufacturer too, I guess).

Compare to iOS, which not only annoys you to set up Siri and Face ID on setup and at every update, but does not allow you to activate the phone without an SMS message. (Very convenient when in another country with no coverage or high roaming charges)

UI

TLDR: Phosh is conventional and practical. SXMO is a bit unusual but pretty cool and very customizable.

Phosh navigation uses the bar on the bottom of the screen (similar enough to iOS and Android), which opens both a list of running applications and an app drawer. All apps in the drawer are listed alphabetically but can be added to the favorites list on top.

Phosh app drawer

I think this unification of home screen with the app drawer is simpler and faster than Android/iOS pinned apps + pages, and much more organized than iOS's "home screen is an app dumpster" (which i see on many people's phones).

There are occasional slowdowns but they are not significant.

Some unimplemented controls, such as switch for location and inhibit-suspend (aka caffeine), I wrote as desktop entries ("shortcuts" that show up in app drawer).

Most GTK-based apps are more or less consistent in their styling, and you can force a theme on everything if you want to. Qt is a bit all over the place.

Phosh does not have a global "back" button, so each application has to implement its own UI. Usually, the back button is in the upper left, which is very inconvenient. Although, new Android and iOS now use the "swipe from left edge" to go back, which is equally unwieldy for people with regular-length thumbs. Android with its back button on the bottom bar is still the best in this regard.

Another desktop environment is SXMO. It has a menu-based UI that you navigate using the volume and power buttons, as well as some pre-defined gestures for other actions. It is intended to be used with simple terminal-based tools, but I had no problems running any other software. I liked being able to open applications side-by-side, override and customize any menu (you can even make app-specific menus for most-used actions, for example), and run hooks on events (such as custom notifications for texts, calls, etc).

SXMO website

Keyboard

TLDR: Simple, but customizable

Phosh uses squeekboard, which is a pretty standard, simple keyboard which supports multiple languages and can be very easily customized by editing a YAML file. There's no swipe, spell-check, or predictive text, but there are other projects that try to implement that.

SXMO uses wvkbd, which is aimed more towards terminal use and includes cursor keys, modifiers (Ctrl, Alt), and other useful keys (/, -, Tab). To customize wvkbd, you... compile it from source. It's pretty straightforward C and builds in a few seconds.

Notifications

TLDR: Only calls and SMS notifications are truly real-time.

If PinePhone is in sleep (by default, after 2 minutes of idle on Phosh), it cannot receive notifications. The modem (which, itself, is another Linux device) is always on, so once it receives a call or SMS, it will wake PinePhone up. Theoretically, it should be possible to have modem check for notifications, but I am not aware of any project that did this yet.

The way notifications present themselves is per-application, more or less. On Phosh, Calls vibrate continuously for calls, Chats vibrates and chimes. Fractal (Matrix messenger), and Dino (XMPP messenger), however, produce notifications silently. But you have access to their source code, so that can be changed - I rebuilt Dino with noisy notifications before.

There are no icons on the status bar, but most notifications show in the pull-down panel and make the LED blink blue. Yes, I love blinkenlights. However, blinking the LED is kind of silly, because if the phone goes to sleep, it will keep the LED state it last had (either permanently on or off).

Compare with Android, which mostly got rid of the notification light :( But notifications are shown in the status bar and can wake the screen.

Compare with iOS, whose UI is terrible in this regard. Notifications wake the screen, and show on lockscreen, but only until you unlock the phone. Then they are dropped somewhere into "notification center", which required an additional swipe to open. And unless you start a habit of checking that separate screen, you can miss them for a long time. The status bar is taken up by the notch, so there is no space for icons there.

Phone calls

TLDR: Probably fine for 2G and 3G calls, but VoLTE is flaky and unpredictable.

Your experience may vary wildly. According to forums, github, and reddit:

For me, calls were extremely unreliable. Just for the information, I have T-Mobile as my provider (which is one of the few that allow PinePhone in the US), but I live in a hilly neighborhood of a small city where my signal strength shows 50% at best for 4G, and 25% for 2G. 3G has been disabled and 2G significantly scaled down by all US carriers AFAIK. Because of that, I have to rely on VoLTE for calls. Which, I believe, is the main cause of my problems. As far as I know, PinePhone's modem, Quectel EG25-G, is intended for IoT devices, and technically supports VoLTE, but not officially.

These are the issues I had:

I tried several firmwares, and they all had their benefits and drawbacks, but the VoLTE problems above persisted for all of them:

FOSS firmware by biktorgj

Some people on the forum recommended modifying udev rules to keep the power to permanently on for stock firmware (it is set to "auto" by default), but that did not seem to help, just increased the battery drain.

Out of curiosity, I tried Mobian OS, which uses a different kernel with some modem-related improvements. One noticeable change is a very strong mic boost that sounds like rumbling or cat purr to the other part. I suppose this is to address the "too quiet" issue for FOSS firmware? At that point, I did not want to try re-installing firmware again.

On that note, UBPorts does not support VoLTE on ANY of their devices.

To eliminate another potential cause, I got a new SIM card. I didn't think it would matter, but my friend suggested to do it anyway, as he had to get a new SIM card to get 3G working on his phone (many years ago). That didn't help.

Interestingly enough, while I was writing this, calling using my current (officially supported by T-Mobile) Android phone, I got a very similar scenario: about 30 seconds of attempting to call, phone frantically switching between VoLTE and VoWiFi, then dropping the call. The second attempt went through 2G and connected. Maybe I should not blame PinePhone's modem here...

Voicemail

TLDR: You get cryptic texts.

When you get a voicemail, you get a data text message from a short number, so you will know you got one. There is VVMD (visual voicemail daemon), but I did not try setting it up.

Texting

TLDR: Works well.

Basic text messaging through SMS and media through MMS work well and without issues.

The default (and only?) text messenger, Chats, does not natively play some formats (for example, 3gp video), but they will open as long as you have the appropriate application.

I really have no complaints here because I remember when getting MMS and unblocking the SMS queue on the modem were manual operations.

On PinePhone, text messages will wake up the phone, so they are almost realtime, as one would expect.

Messaging

TLDR: Works well, no notifications in sleep.

Although Chats lets you use Matrix accounts and even supports encryption messaging, there are several usability issues, resulting in disconnections, missed messages, and crashes.

For Matrix, Fractal (via flatpak) works very well, although has some minor UI issues. Nheko works well, seems a bit faster, and has swipe controls (if that's your thing).

For XMPP, I have used Dino in the past, and it is also a very well-made messenger, with audio and video call functionality (which I have not tried).

I do not have any contacts on Signal, so I have not tried any Signal clients or bridges.

For WhatsApp, I run a Matrix bridge, so 99% of messages are routed through my Matrix client. For once-in-a-while calls, I use an old device I keep at home.

Camera

TLDR: Potato, no video out of the box.

Camera works okay. Raw camera data has to be post-processed to balance colors, so it takes several seconds for a photo to appear in a directory. Sometimes, post-processing fails and you get a black rectangle. Editing some shell-scripts, I removed the heavy part of post-processing (sharpening) and reduced the processing time to around a second.

The quality is poor by any standard since 2010: the pictures are grainy and have low dynamic range. At the same time, they look like old film photos, and there's a certain charm to it.

pinephone-photo.jpg

Do not let the phone go to sleep with the camera app open, or it might enter a state where it cannot wake up and needs to be rebooted.

There are no apps to shoot video, but it's possible via scripts (I have not tried).

While having a bad camera can be frustrating, think about all the pictures you took and never looked at again.

TLDR: Works. Not Google Maps though, learn your local roads.

Osmin is a good navigation app with live directions, voice, and offline maps.

GNOME Maps 45 and later has decent mobile UI, but does not have offline capabilities AFAIK.

As is with many apps based on OpenStreetMap data, do not expect that you'll be able to find an address (at least in the US) in Osmin, so use POIs or intersections instead. I think the only app that supports address lookup is Pure Maps, but it was fairly slow for me.

PinePhone's GNSS/GPS module works through the modem. Which sort of makes sense, but then, you can't use GPS without a SIM card installed... When GPS is enabled, it takes 10-15 minutes to get a precise location. Before that, your location is derived from Mozilla Location Service, map of known WiFi spots and their approximate locations, so it can be VERY rough (precision of a few streets away for me). GPS module does support AGPS (assisted GPS, locations of satellites downloaded over the internet) for faster location detection, but AFAIK none of the OSes implement that. (In fact, the modem has the config for it, and should be able to download it itself).

Interestingly, on my degoogled Android, I get a similar experience - very rough location until ~10 minutes later. Makes you consider how much Google knows everyone's router's location.

Music

TLDR: Spotify playback is spotty.

I listen to mostly Spotify, and there is a mobile Linux client called Spot (both postmarketOS/Alpine repos and Flatpak). The main issue with it is that the playback stops after 2-4 songs. Not sure if that is an application issue, or the classic "sound on Linux" issue.

Of course, there's an official Spotify client, but it is available only for desktop Linux (x86_64).

There is spotify-qt, which did not work for me, and spotify-tui for the terminal(!), which I did not try.

Browser

TLDR: Stick with Firefox ESR.

Firefox ESR is the default on many Linux distributions. It is a desktop browser, adapted for mobile. Although it takes a while to load, the browsing is fast. There are some UI issues, and it can feel clumsy to use sometimes, but you should be able to do everything a desktop browser can. And it includes uBlock Origin add-on by default!

GNOME Web has great UI, some adblocking, and Firefox account integration (!), but the renderer itself (based on WebKit) is just too slow.

Angelfish has a nice UI and seems relatively fast, but I haven't used it much to have an opinion.

Another interesting option is BadWolf, WebKit-based browser with toggles for JS and images. Great idea, but I couldn't use it because it cannot focus on a textbox on the page (e.g. search box)

And for the terminal, there is the good old Lynx and w3m.

For gemini, Geopard looks and works really well.

Notes

TLDR: Several options.

I used gedit instead of the newer Text Editor to keep notes, as I found the UI better (fewer steps to do things). There are several note-taking apps, but they are too slow and have too many features that I don't need.

Android applications

TLDR: Possible.

To run Android applications, postmarketOS supports waydroid, which was surprisingly easy and straightforward to install. Launching LineageOS takes about a minute, and running apps drains the battery much quicker, but I was able to install and use a few things from F-Droid and Aurora Store. Expect apps to complain about Google Play Services.

Connecting to PC

TLDR: UNLIMITED POWER!

The "killer feature" of PinePhone is that you can SSH into it as any other Linux machine. If you run SXMO, you can easily navigate the same menus and text/message through the terminal.

I wrote a small rsync script to backup/sync notes and pictures onto my laptop. It does not require Syncthing (saves PinePhone's limited resources) or any complicated setup.

On Android, I sync my notes and pictures using Syncthing, which requires some setup, but is very convenient too.

On iOS, photos are not considered files (WTF Apple?!), so they cannot be synced with Mobius (Syncthing-like app). So the only way to back them up is via USB (which requires additional setup on Linux).

Conclusion

In ~3 years of PinePhone existing, I've witnessed lots of progress: Mobile UI libraries (libhandy, then libadwaita), and, as a result, convergent, mobile-friendly applications; Much better SMS/MMS handling; FOSS modem firmware, first that I have ever heard of for a smartphone.

My daily adventures with PinePhone have reached their end (for now). PinePhone is refreshingly straightforward, and practical for many of my daily tasks. Alas, it was not much of a phone. Perhaps PinePDA would be a more fitting name.