Ever since the smartphone became a mainstay in pockets, purses, and hands, I've often wished for something seemingly impossible. I wanted to buy the phone, and then choose which OS I'd like it to run. I wanted, in essence, the same separation of hardware and software that had become commonplace on the desktop in the prior millennium, but for something that could fit in my hand.
For a time, Android seemed as close as we were going to get. It was open source, but lacking the open governance needed to make it a real community project. Google has slowly winnowed down the Android Open Source Project (AOSP) into a shell of it's former self, as more and more components of the OS have been moved to proprietary applications. Then, came the demise of CyanogenMod, signaling the end of this hopeful era. Firefox OS, and other would-be competitors (webOS, Windows Phone) have all died away leaving us in an uncomfortable two party system where neither company offers substantive differences. Apple and Google both stand over users and mock, "What are you gonna do? Use a third-party OS?"
Fortunately, we're not alone in thinking this is unfair. The desire for a truly open source smartphone platform has resulted in multiple independent and now company sponsored projects. Among which, is the PinePhone; a real, practical smartphone running mainline Linux.
You may have heard that "Android is Linux". That's true, to a point. Android does rely on the Linux kernel, but requires multiple patches and modifications for it to run. This is not uncommon for any embedded device, the PinePhone included. However, Android only relies on the Linux Kernel -- the core of the operating system -- rather than any of what makes up the Linux userland and broader ecosystem. Android doesn't run Linux applications. Nor does it run Wayland or XWindows or any of the well-trodden stack which constitutes GNU/Linux.
Even if Android ran the same kernel as Linux, why not just make distributions of Linux on top of that? Creating an OS for an embedded device like a smartphone is difficult to say the least. The drivers to power the System on a Chip (SoC) that power a smartphone are heavily licensed and proprietary. Combined with the swift pace of the smartphone market over the last decade, it's been impossible to put generic Linux on a smartphone in a usable manner. Some piece of the hardware would be lacking necessary drivers. Often this means the camera, the mobile data modem, wifi, or even banal things like the USB interface or battery charging chip.
Thanks to the growing market of ARM based devices like the Raspberry Pi, Linux has slowly become more and more compatible with the hardware stack that's in nearly every smartphone. Eventually, the bridge would become small enough to cross.
It's important to note that the PinePhone isn't a "full" open source phone as many pundits would be quick to point out. The PinePhone does require proprietary drivers and other binary blobs in order to function fully (specifically, the Wifi and Bluetooth). These binary blobs are proprietary, compiled code from device manufactures necessary to run key subsystems of the device. In this way, it's a compromised approach much like how the Raspberry Pi still requires a blob from Broadcom to run their network chip.
A full open source phone does exist, at least in theory. The Librem phone takes a harder idealogical line than the PinePhone, but at a literal and spacial cost. Compared to the PinePhone's $150 USD price for their Braveheart developer edition, the Librem phone is nearly $700 USD. Furthermore, the Librem phone is quite a bit thicker due to internal differences of design and technology. Notably, the use of sockets for many chipsets. By using commonly available ships, the Librem phone would be more open source, but there are distinct downsides.
I would love to review a Librem phone, but my budget would not allow it. I was only able to afford the PinePhone due to a small bit of luck with my finances over the holidays, as well as generous Patreon supporters.
The PinePhone's compromised approach seemed...practical...to me. Rarely have I had a laptop without some proprietary piece in it. As much as I'd rather all of it be open source, practicality wins over ideology for me when it comes to the day to day running of a device. After all, I carried an Android phone since the Nexus One. Any movement to a more open source, community run stack would be an improvement.
Pine64 did an excellent job of producing the box for the PinePhone. It feels very similar to an unboxing of the Pixel 2XL. Given that this was a limited edition, developer's device, I wouldn't have expected them to go to such an effort. On second thought, however, the packaging is more important than the phone itself. My device took almost two weeks to arrive in Minnesota from Shenzhen. Instead of going by sea or air, it took a lengthy, over-land trip via Switzerland, changing hands between multiple parcel handling services. The device arrived pristine regardless. A device is only as good as the condition it arrives in, and the box is a critical component.
Once removed from the box and plastic, the PinePhone is delightfully unassuming. On first glance, it looks a bit like an iPhone 8, complete with a camera bump on the back. The camera bump is notable not just for the camera itself, but for the flashlight LED and the tiny Pine64 logo. I greatly appreciated this humble touch of branding, rather than splattering the entire back as some other manufacturers are prone.
Once you have the PinePhone in your hand, it feels...unremarkable, like any other midrange smartphone. This may sound like a criticism, but I feel it's much the opposite. Getting the feel of a smartphone right is a very difficult thing. There's a lot of trial and error, mistakes, and compromises. The fact the PinePhone feels unremarkable is an achievement in getting all those details right the first time.
The PinePhone has a comfortable weight and thickness. It feels solid and dependable in the hand. Given the similarity in size to my Pixel 2XL, I felt immediately at home. Those with smaller hands or shorter fingers may be frustrated, however, as this is still a phablet size device. The back cover has an excellent texture that seriously had me convinced it was metal for the first few minutes. If the slightest flex around the speaker grill doesn't give it away, the next thing would.
Unlike so. many. devices. today. The back cover of the PinePhone is easily removable with no tools. A fingernail gap between the lid and screen in the lower right corner of the device allows the cover to be removed easily, revealing further open source joys within.
A removable battery. Removable! While battery technology has vastly improved in the last decade, many devices sacrifice removability for a millimeter or two of thinness. I've grudgingly accepted it for my last two phones, but having it back in the PinePhone is a breath of fresh air. In fact, before using the device, you need to remove a protective tab between the battery contacts and the battery itself.
But that's not the only joyful thing.
In addition to the large, shiny metal shielding can below the camera, the inside of the PinePhone has a slot for a MicroSIM, and a MicroSD card. The PinePhone is capable of booting off of the MicroSD, meaning no complicated flashing bootloader like Fastboot or Heimdall is necessary. But the real goodies are just above the slot.
Unheard of in smartphones is a series of tiny switches, each with the ability to kill power to specific parts of the hardware:
- Mobile data and Bluetooth
- Front and rear cameras
- headphone jack
These kill switches may be there for the convince of developers to bypass unimplemented or faulty drivers. Indeed, that may be the intended use case, but this is a huge win for privacy. If you're convinced that your phone may be spying on you, you can kill selected components in hardware, without the OS's permission at all.
Above the switches is an array of six spring loaded contacts. These pogo-pins are intended for user accessories. This isn't a new concept. Other smartphones have tried providing special optional accessories via a pogo-pin like connector on the back. Few of these gained traction long enough to become a mainstay, but I greatly appreciate it here.
Unlike those commercial efforts, the pins here rely on known standards, an are far simpler by comparison:
- An interrupt line to notify the CPU of activity
- A power line to charge the battery
- A 3.3V power line to power the accessory
- An I2C ("eye-squared-see") pin for data transfer
If you've ever worked with an Arduino before, the above pins are immediately familiar. This means that accessories are far easier to companies and DIYer's alike to manufacture. It reminds me of the Raspberry Pi's GPIO pins or even the original BeBox's Geekport.
A key point about the PinePhone is that it's relationship it's operating system is more like the desktop than other smartphones. That is, there's an inherent separation. There is no one OS for the PinePhone; you get to choose that for yourself.
Fortunately, the PinePhone Braveheart addition is really the second PinePhone available. The first, "Don't Be Evil", was a raw developer board of components not yet molded into a smartphone shape. This was made available to the communities for several open source OSes ahead of time, so some basic compatibility is already available.
There are several OSes, but I settled only a a subset of them for my testing:
- Sailfish OS
- Ubuntu Touch
PostmarketOS is a project intended to recycle old smartphones by replacing their OS with something smaller, open source, and more nimble. Under the covers, PostmarketOS is based on Alpine Linux, a small, security focused distribution most popular for it's use in Docker and Kubernetes containers. There's nothing preventing using it for a smartphone, however.
Unlike all the other OSes I tried, PostmarketOS also has one of the nicest list of choices and installations available. After installing the script for your OS, you can run through a list of options on the command line to build your preferred OS image. Then, flashing it to an SD card is only one additional command.
While the graphic above shows PostmarketOS running the XFCE user environment, I did so more for humor's sake than practical use. The recommended user environment, Phosh, is much more familiar when compared to other smartphones.
Phosh comes from the Librem project, and the preferred user environment for that device. I can see why too. It's a beautiful and minimal recast of GNOME3 to a touch-centric form. Controls and interactions are immediately obvious as soon as you pick up the device. However, a lot of work needs to be done on it yet. Even setting up the Wifi immediately dropped me into a window I'd expect on my laptop which also runs GNOME3. Worse, the giant window is not repositionable, making it a guessing game if you are entering the password correctly or need to press and off-screen button. (Update: In the week since I last looked at Phosh, this was fixed.)
Phosh seems like...a compromise to me. Much of what I see in it looks promising, but I'd rather have this be part of a dedicated "mobile mode" in baseline GNOME3. Some may cry, "but that'll make it so much more complicated for GNOME developers!" I'm sorry, I don't buy that line of reasoning. If website develoeprs can make forms and page contents responsive to a variety of device sizes and interaction modalities, user environment developers have no excuse. Will this require more thought when designing applications? Yes, of course, but it's worth it.
Manjaro Linux is based on my preferred laptop distro, Arch Linux. It's a friendlier version of Arch, and it's built with KDE's Plasma Mobile for a user environment on the PinePhone.
Compared to any other OS I tried, Manjaro was by far the most functional. The Wifi, Mobile data, sound, and web browser all worked. Charging the battery, however, didn't. This was rather unfortunate, but not entirely unexpected. With everything else working, the phone almost seemed useful, but that use was limited. While the browser did work, it was sluggish. The terminal worked perfectly, but no other applications could be loaded.
Plasma Mobile also felt...wrong to me. There were too many desktopisms in small corners of the user environment. Large notification popups had far too many needless icons and information for the phone's smaller screen. The design seemed to be more concerned with translating KDE's UI components to a phone size, rather than making an effective phone experience. It worked, but it was always too-much-information.
I would love to see Majaro's build with Phosh instead.
I had high hopes that Sailfish would work on this device. I didn't have the fortune to get a Jolla phone when it was briefly available. The flashing script was also similar, if not simpler, than PostmarketOS. As a preexisting commercial OS, I was hoping they'd at least get the UI right.
Unfortunately the OS didn't work at all for me. I get a start up splash, then nothing. Eventually the device restarts itself and goes through the same process again. I did try downloading and reflashing several times, each met with the same result.
I honestly wasn't planning on trying Ubuntu Touch. I had assumed, wrongly, that the project was no longer being maintained. This is fortunately incorrect. Instead, it's still going, although being supported by another team outside of Canonical, UBPorts. Installation is like Manjaro, you download an OS image and use the
dd command to write it to the SD card.
Out of all the OSes I tried, Ubuntu Touch impressed me the most. Perhaps it's because I was so dismissive earlier, but the OS feels much more ready to use than the alternatives. True, the sound and mobile data doesn't work, but the rest of the system feels responsive and functional.
Aside from one hilarious problem, that is. After connecting the wifi, any attempt to browse to a site using HTTPS will result an an expired certificate error. At first I thought this was because proper root certificates weren't added to the device due to a licensing issue. The explanation turned out to be even more rudimentary. Ubuntu Touch can't seem to reset the time or timezone correctly using network time. Even manually setting it in the UI doesn't work, leaving the phone believing it's January 1st, 1970
You can set the time using the terminal however. Once corrected, the certificate errors go away and you can browse as normal. More hilarious than annoying, I'm sure that'll get fixed eventually.
While Ubuntu Touch was the most pleasant of the OS experiences on-device, I'm concerned about it's longevity. Unlike Plasma Moble, there's no large community behind the underlying user environment. Phosh benefits from GNOME's continued efforts, although it is a separate project. Since Ubuntu moved back to GNOME, the Unity user environment on which Ubuntu Touch is based is only being maintained by UBPorts. There's a smaller community there, and less interest throughout Linux at large.
Then again, it is the only one I tried that had a working app store. That's no small feat.
The PinePhone Braveheart is not a consumer phone, and it's not intended to be. It's name was well chosen, as so many things simply don't work on the phone. This was known and expected, and I think Pine64 did an excellent job communicating that much like Pimoroni did for the 32Blit Beta.
What is there, however, is tantalizing. So much of the phone feels right. The shape, the handling, even the box it came in. If the software can be sorted out -- which is the intention of the device -- I think I could finally move off of Android. Even then, it's not a phone for everyone. The chorus of smartphones is app store, app store, app store. The PinePhone wouldn't have as much of an app store to to leverage, and users would rely on the web more often than not. That can be a good thing, provided site developers aren't arm-twisted into locking out anyone not using an app on a smartphone shaped device.
I'm really excited to see where it goes in coming months.