Getting Started with the PinePhone Pro

PUBLISHED ON JUL 30, 2022 / 8 MIN READ — PRIVACY

Why I Bought a PinePhone

For years, there has been a growing movement around gaining control of phone hardware, running completely open source software on phones, and generally regaining privacy and control over phones. Being that phones go with us everywhere, knowing every place we visit, everything we say, everyone we communicate with, privacy is paramount. It’s so commonly understood that our phones are spying on us, yet we do so little to fight against this. We must keep pushing and supporting open source efforts so that someday, we might have open source options that are as easy, powerful, and affordable as the spy devices we carry around with us.

In my own life, I have made meek attempts to regain privacy in the past. Years ago I had tried out Ubuntu’s phone OS. More recently, I installed GrapheneOS on my old Pixel. However, that phone had a very coincidental hardware failure shortly after, leaving me needing to figure out what to do next. My options were:

  1. Get some hardware from a big name manufacturer and install GrapheneOS or similar alternative OS
  2. A Purism phone
  3. PinePhone

Option 1 was really not appealing to me. For sure, it would be the easiest and likely the most stable experience. However, I hate that I don’t have greater control over what’s running under the hood, that the manufacturer still controls what can be installed, and that ultimately I have low confidence that I am skirting around the spyware.

Between options 2 and 3, I went with the PinePhone, primarily because they’ve been shipping hardware more reliably. I also like their focus on the hardware, leaving the software up to others. This to me means they are more likely to be successful, focusing all their energy on doing one thing right.

Whether you go with the PinePhone or Librem, however, a final compelling reason for these systems is that they are far more powerful than a typical smartphone. Ultimately, you are running a full Linux system, one that works exactly as the desktop works. This video gives a great breakdown on this topic.

Choosing an Operating System

I know Linux very well, I have used it exclusively for over ten years, but I am new to using it on the phone (except for my brief stint with Ubuntu mobile years ago). Upon receiving the PinePhone Pro, it has Manjaro installed, but there are other options. Unlike the non-Pro PinePhone, however, the Pro version has many fewer options, at least at the time I went through this. The options are:

  • Arch Linux ARM
  • Gentoo
  • GloDroid
  • LuneOS
  • Manjaro ARM (default)
  • Mobian
  • Nemo Mobile
  • NixOS
  • postmarketOS
  • Various DPA Images

One difficulty here is not knowing which of these have an active community, have some level of stability, have apps built for them, etc. From my bit of research over the past day, the mainstream options appear to be Manjaro (since it’s the default) and Mobian, a distribution of Debian.

The non-Pro PinePhone has a few other options that are not ready for the Pro yet, unfortunately. For example, Sailfish OS has a wider number of apps, has a lot of support behind it, but it’s much more of a phone operating system than a pure Linux distro. Similarly, GloDroid is supposed to get you Android, but aside from also being a purely mobile OS, I have no idea how mature or trustworthy it is. I personally am not interested in installing a mobile operating system, I want my phone to be an extension of my desktop experience, so these are not great options for me anyway.

Ubuntu Touch looks like it may have some very basic functionality working (at least for the PinePhone, not sure about the Pro), but they say:

The device is not able to perform as a phone. If you need complete calling and cellular data functionalities, consider choosing a different device.

Unlike most people out there, my app requirements are fairly minimal. I have been working on reducing my phone addiction and dependence, so my non-negotiables come down to:

  • Signal
  • A password manager (I use 1Password, but BitWarden appears to have an app that works on several OS options. I have considered switching back to BitWarden already, so this may finally seal the deal.)
  • Podcast client

Also, since my Linux experience is almost entirely on Debian-based systems, continuing to use Debian, Ubuntu, etc. is preferable.

The phone comes installed with Manjaro, which I know little about. Almost immediately, I ran into some issues that made me question the stability. They weren’t major and may not have been the software, but it got me worried. For one, the phone abruptly restarted once or twice; there was no update going on or anything else that appeared to trigger it. Later, I was running into some strange issue where the screen was not appearing. It wasn’t clear if I was using the wrong charger, it seemed like the issue began when I tried plugging the phone into my old phone’s wall charger. Eventually I thought I could be running into a known issue when the battery is drained, see here. I followed those instructions and then the phone worked. As far as I can tell, this isn’t due to the operating system, but rather the hardware and/or bootloader.

What put the nail in the coffin was coming across this Reddit post where at least there, the consensus is that Mobian is the most stable option. The Mobian wiki shows that there are two builds of Signal available and there is a Bitwarden app and a Podcast client. Looks like all the boxes are checked.

Installing Mobian

I’m not going to give a tutorial here on installing Mobian; the docs are the way to go. I will give a brief rundown of what you can expect when installing, just to give you a mental model of what the process is like. The starting point for this process is the Mobian Wiki, where you can find a link to the installation instructions, and within there, a link to the PinePhone Pro specific docs.

Make sure to read the docs for all of this, as I left out plenty of details that you will need to be successful.

Firstly, there’s a thing called Tow-Boot, which you must install before installing Mobian. This is the bootloader, which is basically the program that runs when the phone is turned on in order to get the operating system running. Installing Tow-Boot boils down to downloading an image file, writing it to a micro-SD card, putting that SD card into the phone, and then booting up the phone while holding in the RE button on the back panel. You’ll need a pencil or some other item with a point in order to press the RE button. Once you get the blue screen to install Tow-Boot, things are pretty straightforward.

After Tow-Boot is installed, you need to install the operating system. For me, the easiest way to do this was to download the OS installer image, write it to the same micro-SD card from the previous step, then once again turn the phone on after putting the SD card in. This time, you’ll need to hold the volume down button when turning the phone on in order to override the boot option. This will get you to the installer for the OS.

From there, following the installer menu is straightforward. Choosing to encrypt the disk seems like a no-brainer. Not much point in having a more secure phone if the disk can be easily read once you have access to the phone.

Installing Signal

The Mobian wiki, as indicated above, shows two different Signal builds meant for Mobian. I decided to use this one over the other due to:

  1. It appears to have put a little more effort into making Signal work well on mobile. My only evidence here though is that there are a few patch scripts to change default dimensions.
  2. I have slightly more confidence in its security since it pulls directly from arm64v8/debian as its base image, whereas the other is pulling an image built by some random Gitlab user, as far as I can tell.

Unfortunately, because of the same concern around trusting random Gitlab users, I wasn’t about to use the pre-built packages provided by the author, resorting instead to building it myself. There were some headaches in doing this, one my fault, the other not:

  1. I failed to install the dependencies, so I ran into an issue with the Docker image trying to run ARM 64, but my machine running AMD 64. This was easily solved by properly installing the required packages outlined in the README.
  2. This one was far hairier and annoying: the deps/sqlcipher.tar.gz file was corrupted. The author of this repo had copied the file from the upstream better-sqlite3 repository. I decided to download from that repo so I once again didn’t have to trust the Gitlab user. Downloading that using my browser and replacing the one from the gitlab repo then fixed the issue.

After building and installing the package onto the PinePhone, Signal is working! The experience is quite ugly, but it works.

Impressions

This is pretty much as far as I have gotten. I have installed my SIM card and just today began carrying the phone with me. Texting seem to work, as do phone calls. I was able to install Geary using Flatpak to get an email client, though the application is not always registering where I am clicking properly. I am not sure why installing with apt-get didn’t work.

It’s not yet clear to me if there’s a way to use the camera. That’s probably what I’ll focus on next.

Another issue I have run into in a few places is when applications haven’t been resized for mobile. For example, some of the windows within Settings have this issue. If you try to change the timezone, I had to hold the phone horizontally in order to be able to click the eastern time zone portion of the map, but then there was no way to click to exit the menu.

There’s plenty more to do and plenty of rough edges, but overall I am excited about what this will bring. Ultimately, it seems to me we must be willing to put up with a little bit of pain, since the behemoths in the space with the time and money have no interest in privacy or giving more control to the user. I guess dealing with some of this pain will be my own small part in trying to make the world I want become a reality.