Three Months With a Google Pixel, or the Case for a Linux Smartphone

August 6, 2022

I’m not a huge fan of ditching my devices in favor of some new ones, but recently my low-budget 2017 Android phone started really showing its age. We had a lot of fun together, but everything must come to an end at some point.

In hopes of never having to go through with such painful breakups in the future, I’ve decided to look for something higher-end. I’ve looked around in the local stores and decided to go with a Pixel. It looked pretty powerful, had a nice screen and some weird bulge around the cameras. One of its greatest advantages, however, was the ability to easily flash some alternative ROM like Calyx or Graphene. I was never really into this sort of thing, but I was never really satisfied with my Android experience, too.

Dealing with limitations and hoping for a better future

You see, it always felt like I could do only so many things with my phone. I could browse memes on social media and chat with people on messengers. Anything more complicated stayed out of my reach: my phone at the time simply didn’t have enough memory to accommodate more apps. My last phone had 16 GBs of internal storage, which initially allowed me to have pretty much everything I wanted, but then the space just vanished and never came back, so I had to say goodbye to Super Bunny Man and a lot of other nice things.

But then, not long after such sacrifices, I’d get a notification saying something along the lines of “hey, I don’t know what, but you’ve got to delete something, and now”. At some point I just ran out of things to delete: everything was either important or preinstalled (aka useless garbage). At that point I’ve stopped paying attention to these notifications and just accepted the slowdowns caused by the lack of free storage.

I’m still curious where all that space went, by the way. If only there was a way to inspect the file system and clean it up a bit :thinking:.

Another little issue has been my certain mistrust towards the software my phone was running. I’m a somewhat privacy-conscious person, so the idea of some corporation (Google or my phone manufacturer) monitoring my emails and other potentially sensitive data doesn’t excite me all that much. There is free and open source software for Android, but what’s the point of that when the system itself isn’t trustworthy?

It almost looks like all my issues stem from the closed nature of the OS on my phone, huh?

Actually, I considered alternative ROMs before, but all my phones were never really supported by any of the big-name ones. If I were to reflash my phone with something, I’d have two options:

  1. Trust some dude who had the same phone model and posted his port of some well-known ROM on a specialized forum.
  2. Figure out how to create my own ports.

Truth be told, I actually went with option 1 quite some time ago. It was my first Android phone and it started becoming really slow, so I decided to experiment a bit. The ROM didn’t really work on my phone, and I suppose that’s not the worst scenario. Who knows what some rando could’ve put in there. So yeah, never again.

Option 2 is pretty cool if you care about the Android ecosystem and have a lot of time to spare. Sadly, that’s not the case with me. Android always felt messy every time I tried to get to know it more intimately. The whole development process is pretty bad, to be frank. To me, it appears very bloated and unnecessarily complicated. It’s probably simple enough after you’ve mastered the whole process and know all its inner workings, but why should I bother when there’s a better alternative on the horizon anyway? You probably know what I’m talking about, more on that later.

Alright, liar liar pants on fire, I haven’t listed all my options before. There’s at least another one that’s sort of interesting:

  1. Just buy a phone with first-tier support for some well-known and good-looking alternative ROMs.

Was it this easy all along? I’ve seen some videos about CalyxOS and GrapheneOS. They appeared to be interesting privacy-oriented ROMs, so I checked their phone compatibility lists. Both of them pretty much claimed to support only the Google Pixel phones. That sure narrows things down, doesn’t it?

At that point, all my phones had been low-budget, but I was ready to try something more pricy if it meant I could future-proof my phone and allow me to do some cool things with it. So, after some thought and struggle, I’ve gotten this new Google Pixel 6.

The first week

The first thing I noticed when I started using this device was this: it comes with no extra stuff preinstalled. No Twitter, no Facebook, just some default Google apps. That’s pretty nice, I like this approach. Good job, Google, I guess.

My previous phone had Android 7, this one has Android 12, which definitely needed some getting used to:

  1. The controls are now gesture-based, as opposed to the old “bottom bar” thing. Not going to lie, adapting to this new system took me a bit longer than I’d like to admit, but now I’m very much comfortable with it. I suppose using gestures makes much more sense with larger screens, since they basically allow you to perform the “back” action at any place along the left or the right side of the screen instead of that specific button at the bottom.

  2. I really like turning off WiFi and “mobile data” when I’m not using them. The “curtain” menu used to have two separate buttons for them, but now it’s just one button that leads you to a menu where you can actually turn them on and off. I don’t understand this decision. For me, it’s annoying, but I guess people just don’t need this functionality readily available to them.

  3. Apparently these days Android allows you to globally disable your mic and camera access. That a great thing, obviously. However, if you receive or start a phone call with mic access disabled, the person on the other side of the line won’t be able to hear you. Sure, you’ll get a little dialog window asking if you want to enable your mic, but regardless of your answer, your current call won’t see any difference. So you have to either be careful and never forget to enable the mic access manually, or just keep it enabled at all times. Sadly, I chose the latter.

Almost immediately after setting up the phone, I got myself a trial month of Google Play Pass. I’ve always been curious to see what mobile gaming looked like these days, but could never really get into it due to the limitations of my phones, and this subscription seemed like a good opportunity.

I’ll probably write another blog post about that experience, so for now I’ll just say that the potential is there. Most of the games that are at least a little bit worthwhile are actually mobile ports of PC/console games, which makes sense.

But I suppose the important part for us right now is that the phone performed great. I don’t think I managed to find a game it wouldn’t be able to handle. Well, Genshin Impact didn’t run that great on the highest settings but I’m fine with that, I wouldn’t play this game anyway probably.

But ultimately it doesn’t really matter because there’s no way to properly connect this phone to a TV or any other external screen. The hardware just doesn’t have any circuitry for HDMI or DisplayPort output. Looks like Google really wants to push their Chromecast thing, but I’m very skeptical about it.

You can use a DisplayLink-compatible USB-C hub to connect the phone to an external screen, but from what I’ve seen on the internet, this just means streaming a compressed video signal over USB with a noticeable latency, which doesn’t sound appropriate for anything, to be honest.

Speaking of missing features, Pixel 6 doesn’t have a 3.5mm jack or SD card support. These aren’t very popular these days but I’m still not entirely ready to let them go. I got myself some USB-C earplugs and 256 GB of internal storage so I’m good but not perfect.

Installing GrapheneOS

After using this phone for a while, I decided it was time: the original ROM had to go. After some brief thought, I decided to install GrapheneOS. It seemed to be more advanced in its security features and didn’t come with Signal preinstalled.

The installation process was surprisingly simple: you just connect your phone to your PC with a USB cable, visit some page on the GrapheneOS website, press a couple of buttons in the right order and you’re done. All thanks to WebUSB.

I’ve got some mixed feelings about all that, though. It’s nice that it’s possible to reflash your phone like that, but I can’t be the only one who finds it a bit scary, right? Web standards sure are all-encompassing these days.

But anyway, the process took less than 15 minutes and anyone could do it. At the end of the day, I suppose that’s a good thing.

My GrapheneOS Experience

One of the main potential benefits of using a privacy-oriented ROM is the ability to get as far away from Google services as humanly possible. Sadly, most of your apps are likely to require them anyway, at least to some extent.

You practically lose access to any kind of push notifications. Understandable, but not many apps provide their own alternatives. My bank app, for example, won’t tell me about incoming transactions. Different social media apps won’t let me know when I’ve got a new message. I believe they could pull notifications once in a while, but I suppose that’s too much work for such a small group of users who would care about that.

Telegram has its own implementation of push notifications, and it works, but with one little caveat: the notifications are silent for some reason. At least the phone vibrates when a new message is received, but yeah, not perfect.

The good news is that GrapheneOS provides you with its Sandboxed Google services. This is an optional package that you can install from the default “package manager”. Actually, this is pretty much the only thing that you can install from there. The idea is that with the help of a special compatibility layer, Google services are put into the same sandbox as the regular apps, severely limiting all access privileges these services usually have. All while still allowing other apps to work as usual, but in a way that is much less spooky.

This can be combined with Android’s “work profile” feature, which creates a completely isolated environment for a group of apps. If you want, you can dedicate this work profile to apps that absolutely require Google services to function. This way your “regular” apps will be absolutely protected from your favorite big brother. This is what I’m doing, and I trust this setup enough to actually use email from this device.

It would be better if I could have more different profiles, so that I could isolate the apps from each other too. But I guess it’s not too important right now.

Overall, this system is definitely usable and greatly increases my freedom. I’m yet to invest some time into setting up my termux environment to allow me to manage my servers over SSH.

But it can still be better

There is a system that I’m more familiar with, which I find more enjoyable, and which provides me with pretty much everything I need. As you might have guessed, I’m talking about Linux. Well, Linux distributions, GNU/Linux and so on, you get the idea.

My love for this family of operating systems warrants a separate post, which I will definitely write at some point. For now, it should suffice to say that open and extensible systems have the potential to provide their users with the greatest degree of comfort. This comfort has its price, sure, but it’s not that much, especially if you’re actually interested in computers.

Of course, my current Linux setup would not be usable on a smartphone. The GUIs provided by most of the apps are just too desktop-centric. But I’m absolutely convinced that it’s possible to create programs that would be usable on both a desktop PC and on a smartphone. Telegram is pretty good at handling different resolutions, why shouldn’t the other apps be able do the same?

Other than the GUI issue, the software I already use on my PC would be amazing to have on my phone because it’s the software that I trust, that is customized to my tastes, and that I’ve mastered over the years.

There are some Android ports of (or wrappers around) things like GPG, but all I’ve managed to find on F-Droid was severely outdated. I didn’t look in third-party repos yet, but if I’m actually required to do that, then it’s starting to become too much effort for such basic functionality.

Speaking of effort, I’m a software developer, so I’m very much interested in being able to develop software. As I’ve already mentioned, if I want to make something for Android, I’m limited to a particular set of technologies that appear to be unnecessarily bloated and overcomplicated. When it comes to Linux, however, building stuff is a pretty simple process for the most part.

The number of technologies available to the programmer on Linux is probably a couple of orders of magnitude larger than on Android. Moreover, these technologies will allow you to do all your development directly on your phone, at least as long as you are used to minimalistic tooling. I’m not saying that writing code on a phone is a dream of mine, but it means more freedom for me, which is a good thing. I doubt I’d exercise this freedom for anything besides some small fixes here and there, but you never know. I have written this entire wall of text on my phone, after all.