The Tail of Three Pinephones

One afternoon at work, one of the engineers from another office was visiting. This time, not for me, but we had spoken before, and I suppose he'd just swung over to my desk to come pester me for fun and profit. Mid-conversation, he switches subjects and points at my phone.
"What the heck is that?" He asks. "Is that a mini laptop or what?"
It's my phone, I tell him. It's called a Pinephone.
I peel the phone from its keyboard case, show him the back. It's just a case, it connects via these pogo pins on the back. That big thing's the modem.
"That's cool." He enquires further, "What made you buy one of those?"
I hate both Android and iOS, I tell him. I really want to tell him that I hate the Antichrist, but I'm trying to keep it PG for work and it's not a lie.
"Wow, that really doesn't give you many options. Well... except Pine, I suppose."
Yeah.
Quite frankly, every new person that's seen my phone has asked me about it. Most conversations go about like that. Sometimes people will say "shit, I gotta get me one of those," at which point I have to talk them down. I have to deal with a lot of compromises to get what I want, you wouldn't want to wrestle with your phone like I have, I'd tell them.
But there's no conversation starter quite like the giant brick with a keyboard attached to it.
I've rewritten this article about half a dozen times now. Every time I'm halfway through, something new comes up, I reread everything, and decide to scrap everything and start over, knowing what I know now. I've been using the Pinephone for a collective two years now, including losing one and dumping a full glass of water on another, I've gone through a total of three. I'm balls deep in the sunk cost fallacy, and, of course, I hate the Antichrist. I would describe myself as laying in the bed I've made for myself, tucked in by Silicon Valley.
My original intention was going through chronologically, each Pinephone of the three exists in its own era of software and hardware madness which probably deserve to be examined in their own right. Then, I thought I'd just go through categorically – software, then hardware, then talk about what I wanted to see for the future – but then the Pinephone Pro came out. The keyboard came out not long after.
You can tell about how long it's taken to write this.
As it turns out, despite Pine64's best intentions to divorce themselves from the software development, the community's sticky fingers all over the software (and even some of the firmware) are inextricably tied to the hardware. It only really makes sense to just barf everything out now and organize the half-digested chunks after.
And if it tells you anything: I had also intended on writing this fully on the Pinephone itself. Had.
Half long-term user report, half review. This is the Pinephone, and you probably shouldn't buy one.
Lower Decks
I don't think it's worth harping on about the specifications on paper. It's a not-so-secret secret that the Allwinner A64 sucks. Hindsight says it still wasn't a bad idea, per say. No matter how bad the A64 sucks back juice, the RK3399s makes it look like Apple Silicon in comparison. For daily tasks, the performance is adaquate, with a big asterisk we'll get to later. Besides, the phone's got slightly bigger problems which would be more interesting to discuss.
Let me give you this scenario, front to back, and that should cover most of my complaints in the process.
I was away on a weekend trip last summer. Without the keyboard (and before it,) I kept my phone in the soft case from the store. I usually rock soft cases, I like having durability without having a case that itself breaks from being hard plastic. The problem? Most USB-C cables will not fit with the case on. Out of ten cables, one will fit poorly, and the other nine will require slipping the ass-end out of the case to plug it in. In this case (or, in this cable,) it was one of the latter.
So my phone is charging on the hotel desk, slipped out of its case. I accidentally knock it off, it falls out of its case and hits the hard floor, about a three foot drop. When it lands, it hits on the corner of its screen, where there isn't a screen protector. When I pick up my phone, there's a giant crack careening across the screen under the screen protector. In the neglegent months to follow, I'd wait to buy a new screen assembly, then wait to use it as a replacement, and that crack would grow and multiply. (Although, in fairness, the screen never stopped working.)
Finally, almost a year later, I bit the bullet and just tore the thing apart to replace the screen. The good news is that all you have to take out are a handful of PH00 screws to get everything out. The bad news is that there are these positively awful clips holding the motherboard into the phone's spine that do not have an intelligent way of removing or replacing the motherboard, link related. Half an hour after I should've gone to bed, I just tard-strength that bad boy into place. Somehow, I don't break any of the clips, praise God.
But before I do that, I flip it over. It's not often you get to see the business end of the Pinephone. Unlike on my Pinebook Pro, if there's an obvious way to pop out the eMMC module – say, to replace it, or maybe to upgrade it to a larger capacity – that process is lost on me. The CPU side of the motherboard is a nearly-contingent slab of headspreader covered by the second-largest EMF-shielding sticker the phone has to offer.
But hey, now I have a working screen, at least.
More low-level quirks: every user-replacable piece of firmware I've come across has been the dumbest shit on planet Earth. The modem is significantly and measurably better with the unofficial kernel/firmware, yet it still fails constantly. Service will "drop" momentarily before "picking back up" moments later. No problem, right? Except for the part where the system reports itself as connected to 4g, but no cellular anything actually works. No calls, no texts, no mobile internet, nothing. And it requires a full, hard reboot to fix. Until the sxmo guys took out the option, I had played with issuing reboot commands to the modem to try and fix it. I had one success doing so for uncountable failures.
Tow-boot has to be an out-of-season April Fools' Day prank. The Nix build files used to build it are so fucking alien that it's impossible to reverse-engineer in a less retarded build system. So alien, in fact, that I treat it as proprietary software, refuse to use it, and have sworn off using any kind of Nix anything out of sheer malice. Seriously, it's more write-only than a Perl script. You can't convince me otherwise.
The keyboard itself has this problem where you cannot charge it and the phone at the same time. I once tried to do so not long after using it, only to find my phone half discharged with the keyboard at full. You can either disconnect the two and charge them separately, charge the phone from the keyboard, or charge the keyboard while the phone happily discharges. I have no idea what the issue is here, and I've tried all three of slow charging, fast charging, and PD charging. According to the desktop PinePower, none of these options will go over 5.1V and one-and-change amps. Mathematically, I think it works out to 7W max charging.
This isn't the first time I've had weirdness with Pine64 devices charging, either, but that's a rant for another time.
To be fair, all of the wind has been taken out of my sails with respect to the keyboard's battery. Without the keyboard, it's possible to plug a dongle into the phone and use peripherals with it. Some peripherals suck down power themselves, but everything usually works out because you want to charge the phone as well, and the power in has more than enough watts for both the host device and its peripherals. With the keyboard, however, it's a no-no to plug a power-in anything into the phone half, and the keyboard half only accepts power in, no data. The result is having to crack the phone in half each and every time one wants to use a dongle. Like, say, for a wired internet connection, because God knows the wifi on this thing sucks ass.
The real kicker? If the design didn't change leading up to its release, there's still a set of pogo pins inside the keyboard one could solder to if one wanted to daisy-chain. Why were the pogo pins in the very hard to crack open please don't try or you'll break the clips keyboard not wired to the keyboard's USB-C port instead, so it could support data for a dongle and power at the same time? I don't know, but whoever designed that one off got a promotion. You know, the usualy story with engineers.
Flying Near the Sun
As we pivot into complaining about software, I want to lead off by saying fuck Wayland, fuck Wayland enablers, and fuck the jannies.
Of all of the desktop environments I've tried on the Pinephone, not a single Wayland compositing one of them has run well. Not Phosh, not Plasma Mobile, and not swmo disguised as sxmo for some reason. All of them are unresponsive pieces of shit. I have no idea how the community has come to the concensus that this technology is foundational to the distributions used on this thing.
To be fair, Phosh, the DE I've used second-most, has its own litany of problems. Last time I tried it, it was easy to get into convergence mode, but the second you were done and wanted to pop out of it, the system hard crashed. You can set a desktop background and see it once, when you start the system, and then never again. Only GTK3 (but not all, because some GTK3 applications don't integrate libhandy) and GTK4 applications work right. Any qt application of any version, and any GTK2 applications you might have lying around will not integrate properly with the touch controls. This is probably less of a problem now than it was when I used it last, but it still leaves a sour taste in my mouth having to dumpster dive to find alternatives to certain applications that don't use Foot-Approved™ windowing libraries.
Plasma Mobile's basically stillborn. My deepest condolences to the developers. For what it's worth, the red-headed step child is the most Android-like, and on paper, significantly more intuitive to use than Phosh.
Swmo, on top of being a more Wayland sxmo, uses sway instead of dwm. I don't know if it's expected of me to use gestures to switch between desktops/tags, but while it makes sense with a keyboard to do Super+# to switch between them, on a touchscreen device, it's fucking retarded. Being able to tap on 1-4 to switch to that tag in dwm is completely intuitive. S{x,w}mo have enough intuitivity problems, don't introduce more.
This leaves us with sxmo. Discounting Ubuntu Touch, because its filesystem is immutable and nobody uses Mir, and because of that, the application support is even worse than most DEs; and Sailfish, which I just choose not to use; sxmo is the only choice left. As someone who daily drives i3 on the desktop, it didn't take long to get up and running with it. It runs acceptably, and we'll get to that asterisk next, certainly better than any of the aforementioned. It discriminates signficantly less than phosh when it comes with windowing libraries, and using xorg instead of wayland reintroduces xlib applications should you happen to have any. Being dwm under the hood means there's a certain expectation of using a terminal, and the integration with the terminal, along with an extensive virtual keyboard that using terminal applications feels first-class. It's the difference between defaulting to ncmpcpp and having to go spelunking in the Arch Wiki for an mpc client you've never heard of that works with libhandy, and that difference is measurable.
Oh yeah, virtual keyboards. All of them suck. svkbd sucks the least, but it's still super inaccurate. In fact, the only deciding factor that makes svkbd suck the least is the fact that it has so many layers of keyboard and so many keys crammed into such a small space that it provides more options. But, it's not a good typing experience. I'd say "make no mistake," but when using any of them, you're bound to.
Okay, elephant in the room time, I've dodged it long enough. sxmo, despite everything, still sucks. Three reasons: distributions, dmenu edge cases, and dwm edge cases.
Distribution support is the marquee problem with sxmo. You have one and a half options: postmarketOS, and Arch. Arch is the half of an option.
PostmarketOS's failings are entirely attributable to alpine. Apk is not fun to work with. I once tried to install a program, and had a momentary disconnection from wifi. When I reconnected, apk was convinced that it had already downloaded the files (in full, when it hadn't,) would try to install the packages, fail to (because they were half downloaded,) and no amount of fucking with it would get it to either wipe the cache to downoad the files fresh, or pick up where it left off.
Did I mention application support sucks? There's basically none in the repos. It's half a repo problem, half a musl problem. Most rust programs will not compile or run on pmOS, because if it's not a tier 1 supported platform, it's not supported. Thanks, Rust hipsters, I love your software being the only shit available and having to jump through this many flaming hoops to get it working.
This leaves us with our second, basically non-option, danctnix, aka Arch btw. It seems like an obvious choice: it has access to the AUR still, it runs glibc, so no weirdness with musl not working, it's rolling release, so it's always getting the latest and greatest, especially with respect to sxmo and its components. On paper, it's perfect.
Unfortunatey, danctnix is fucking dogshit.
Let's roll back the clock a little bit. It used to be that sxmo was unofficially supported by way of an unoffical script. This mostly worked, that is to say, everything except sfeed worked flawlessly. sfeed is really only used for browsing reddit through dmenu, and both reddit and browsing it through dmenu are fucking awful, so it basically worked flawlessly. All the features worked and everything.
It was great until I tried rerunning it to update, at which point I encountered two problems. One, the script had been deprecated, where it stands now. Two, additional components were necessary to build a full working sxmo environment that the script didn't take into account. My upgrade of sxmo failed, and subsequent installations of sxmo with this script also fail.
That was then, of course, and this is now. Today, you can install sxmo on danctnix offically, through the repo. Sort of. It even comes with sxmo images so you can just install and go! But not really.
Those images first: they're actually swmo despite being labeled as sxmo on the releases page of github. This was very confusing, because it looks just enough like sxmo to make me wonder why st was changed with "foot," and why dmenu looks weird, and why suspend runs like shit. I even complained about it loudly to nobody that cared, completely convinced that I was just dealing with customizations of dwm, dmenu, and a drop-in replacement for st. The different virtual keyboard clued me in after sifting through the PKGBUILDs.
At least I can say that I've tried swmo now, I guess.
But what about sxmo? Surely that's packaged as well. It is. However, if you were to install the dwm option, either by tearing down the swmo image and building it back up, or by using the barebones option, you'd find that it doesn't work. I have two completely unfounded theories.
First, the aforementioned script installed some customizations for xdm. You'd log into sxmo, username and password. By the way, if you develop sxmo and you're reading this, bring this shit back, fuck tinydm and whoever decided to use it. xdm and its customizations have since been deprecated for tinydm, which seems to be a drop-in for it... except you don't log in, it just drops you into sxmo when you boot your phone up. It does this on postmarketOS as well, so it's definitely an upstream thing.
Second, I'm not changing any configuration files. Not that a cursory search of /etc/ turned anything up. I remember using some phosh distro, I think Manjaro, and having to changing both files in /etc/ and the service file for phosh to be able to change default users. Maybe it's the same thing here and I didn't look hard enough.
So, I suspect, when I kill the alarm user, make my own user, and reboot without changing any configuration or service files, tinydm gets fucked up and drops me into a virtual terminal instead. By the way, dropping exec dwm into my ~/.xinitrc doesn't quite work right, and I can't seem to figure out if it's a sxmo upstream issue or a danctnix issue. I suspect the former, because even dropping sxmo's xinit file before the exec line doesn't fix the issue. The issue is hooks, by the way, none of the menus hook into their keybinds correctly.
This real problem here is, of course, signal. The only real way to use this on the pinephone with any modicum of maturity is signal-rs, which is, of course, a rust application, which means it's a nightmare to build and held together with duct tape and bubblegum. Registration didn't work last time I'd use it, but it did compile and run. I had thought to myself, I'll just register on one phone and link to it on another so I can use it. As you can see by the preceeding paragraphs, this turned into a round-hole square-peg problem quickly, but it does help to highlight the insufficiencies of the software situation on the Pinephone.
The corner cases I mentioned are a lot less severe. With dwm and the usual resolutions, it's easy for submenus and pop-up windows to get cut off, making it impossible to navigate through settings. It's better now than it used to be, but it's not perfect. There's also issues with rotation: if I add the rotation hook to my xinit, half of the top bar will be cut off. It'll only be as wide as the bar would be in the vertical orientation, but with the right half information occupying a no-man's zone that isn't displayed. The solutions as I write this are: don't do that and just manually navigate to the rotation setting, or do that and gamble with a 10% success rate, the other 90% of the time needing to navigate to rotation in the settings menu twice.
The dmenu corner cases as a pain in the ass but less severe still, and entirely upstream. At some point, the menu for dial codes changed from a list of numbers and symbols to a menu that accepts user input. The latter of these doesn't work. I've gotten caught on some robocall menus recently and it's a pain in the ass.
One more thing: only very far in the past with early phosh and very recently with postmarketOS have I had inconsistencies with cellular shit. A long time ago, I had weirdness where one phosh distro could make calls, but texts would never dliver, while a second distro had the opposite problem. Recently, I've had sxmo on postmarketOS completely shit the bed on calls, no audio, no way of verifying if the other person can hear me, nothing. Texts currently work, even MMS, which is exciting. It's still really concerning that these issues are still cropping up nearly two years after release. No, I don't care if I chose to get a phone that's still in beta, it's still concerning.
Pro, But Actually
I had intended on writing and publishing this before the Pinephone Pro had come out. Instead, it came out without consulting with me. Despite everything, I do understand why the Pro is just a base model, but slightly thicker and with a hungrier CPU. Most of the tooling is the same, for better or worse, and compatibility with the keyboard is paramount for most people waiting for both that had previously owned neither. However, it doesn't match my expectations.
Therefore, instead, this is my Christmas list, in order of importance, for the Pinephone Pro 2.
Pinephone 2 Pro.
Pinephone S Pro?
Whatever.
First, two USB-C ports. Both of them must support data. If I haven't made my point by now how bad it is to have a charging-only USB-C port by now, I don't know what's going to convince you. I'll even accept a third USB-C port on top in exchange for my headphone jack. I'll happily buy an external DAC if it means my phone gets more USB-C ports than a Macbook.
Second, two micro SD card slots. I don't care if one's easier to change than the other. I just want more storage, and it's easier to have more partitions on more drives than get a bigger SD card. The way that the market is, my current 512GB card is already pushing the maximum the standard can bear.
Third, an integrated keyboard. There's no instance I'm not going to use the keyboard. Integrating it also makes way for...
Fourth, a slotted modem card. Did you know the Quectel modem that's soldered to this thing doesn't quite work right on any American telco? Did I also mention that the lead time on a Librem 5 is one year, as in three-hundred and sixty-five days, if you're lucky and Purism actually delivers? Fuckin' lmao.
What A Long, Strange Journey It's Been
I feel trapped. On one hand, the hardware is fine, usually, most of the time. On the other hand, the software isn't, and when the hardware isn't fine, it's a real showstopper. Something I didn't mention is almost running into this bug. I'm really ashamed to say that it was just a cable plugged in on the keyboard side, but not the power brick side, but I do have a freshly-instilled fear of God in me that the loud screeching my keyboard makes when I charge it will lead to this problem some day. That's what I get for early adopting.
I have spent the last two weeks unironically looking at iPhones. They have too many compromises to actually consider, but I'd be lying if I said that the idea of a phone just working after over a decade of custom ROMs for Android phones and the time spent dicking with the Pinephone isn't alluring. Maybe if the 2016 SE gets another year of software updates, I'll consider pissing away the money it costs to play with it for a week. But probably not.
So I guess I'm stuck with what I've got for now.
So whatever happened to the Pinephone Pro? Funny story: I was dead set on getting one, and ended up with a surprise purchase in the awkward time between it releasing and Chinese New Year. I didn't get paid until CNY had already started, so I figured I'd wait for a month and see how it turned out. Turns out, despite looking identical and using identical tooling, it is exactly where the Pinephone was when it launched, so it'll be on track to half-work as I've described sometime in late 2023. Wonderful. Will I get one eventually anyway? Eventually. Maybe once suspend is all ironed out and MMS is working again I'll think about it.
Or, maybe by the time it works, new Pinephones will be out. Maybe they'll even take my previous section into account, give me everything I've ever wanted, and make me put my money where my mouth is. But, given that I've already had to buy from a competitor to get the ARM ITX motherboard I've always wanted, I won't hold my breath.
I think that's about it. I'll just hold out hope that the next time I write an article like this, it'll be better news than this one.
If you got this far, thanks. See you, space cowboy. Tue, 19 Apr 2022 13:50:40 -0400