Unusually Pink Impressions: Pinebook Pro

In my last post about not using Chrome OS, I neglected to get into what I was replacing my Chromebooks with since that seemed like a lengthy post in its own right. As the title gave away, my switch went to the Pinebook Pro from Pine 64. I had been interested in the original $99 USD Pinebook when that came out a couple of years ago, but it seemed a bit too basic for what I wnanted. The Pinebook Pro seemed to offer a more compelling experience for $199. The description on the site even seemed to match exactly what I was wanting.

The Pinebook Pro is meant to deliver solid day-to-day Linux or *BSD experience and to be a compelling alternative to mid-ranged Chromebooks that people convert into Linux laptops.

I didn’t want to have to deal with Windows, nor was I wanting to go through a lot of research to find a Windows laptop or Chromebook that I could then convert to a Linux laptop. The Pinebook Pro seemed to take care of this for me while also giving me an outlet to support a great company doing some awesome things for the open source community. I was a little leery on what kind of performance I would get out of an ARM processor and if I would hit any compatibility issues, but so far everything has been buttery smooth.

Hardware

The hardware is absurdly nice for a $199 device. The Magnesium alloy body just feels solid and sturdy. It has enough heft to make the laptop feel more expensive than it is without being a pain to carry around. It also just looks sleek given that there’s literally nothing on the top, not even branding. It’s a spotless, black surface.

I don’t normally leave my laptops completely unemblazoned, so I just ordered some stickers for it earlier today. I’ll share pictures on the socials once those are on.

Under the hood is the a screen that you almost feel has no business being on a $200 machine. It’s a 14″ 1080p IPS display that looks absolutely gorgeous. Everything from typing away in a Terminal or blog post to watching videos looks terrific on it.

The keyboard is also surprisingly nice. It’s spacious, and the keys have an impressive amount of travel to them. Given that these days I rarely use my personal laptop unless I’m doing a lot of typing where I need a physical keyboard, the keys on the Pinebook Pro really deliver. Rarely do I even bother to sit at a desk and connect an external keyboard; the default experience is just fine. The keys have good tactile feedback to go along with that travel distance, so you’re never left doubting if you pressed a particular key or not.

You may notice that the keyboard also features literally the only external branding other than the sticker on the bottom of the device. The super key has a Pine 64 logo on it, which is a nice, subtle touch.

The trackpad is unfortunately not quite as solid as the keyboard. It doesn’t feel particular sensitive and the pointer come across as “floaty”. Hitting big buttons is fine, but it can be annoying to make more precise movements like grabbing the corner of an application to resize it. If I’m using the device for something that’s mouse-intensive, I’ll typically reach for my Logitech MX Ergo trackball, but the trackpad is still workable in a pinch.

The speakers aren’t bad, but they’re about what you expect from laptop speakers. Only Apple seems to posess the voodoo required to make great sounding laptop speakers.

The device comes with a barrel jack charger. You can also charge it via the USB-C port as well, which is what I much more commonly do with the charger which came with my Acer Chromebook 315.

Software

Once the device is booted, you’ll be using a customized Debian Linux version that comes from the factory.

Distributor ID:    Debian
Description:    Debian GNU/Linux 9.12 (stretch)
Release:    9.12
Codename:    stretch

Being that it’s Debian Linux, you can do pretty much anything else that you’d expect with Debian Linux… and that’s awesome. There are some limitations in the packages simply regarding what software supports ARM and which software does not, but everything I’ve tried to do so far has worked fine. That being said, I’m mainly still using the device very similar to a Chromebook; I want a web browser and a Terminal.

The ARM processor and included 4 GB of RAM do an excellent job of keeping everything snappy. It’ll occasionally take a little bit longer to launch a heavier application, but otherwise it’s often easy to forget that I’m on a $200 Linux laptop and not my $2000 MacBook Pro for work. The 64 GB of local storage is a nice change from most Chromebooks as well. Rarely is my system ever bumping its head against the hardware, even when I’m streaming music and have a bunch of browser tabs open.

Need to install something new? Just sudo apt install package-name and you’re good to go! That being said, just like normal with Debian you get a wide array of software out of the box… all of which still only amounts to a 5 GB footprint in what comes from the factory.

To Do

There are a few things to do out of the box when you get a Pinebook Pro; I would highly recommend reading the wiki page about the device so you know what those are instead of trying to do things on your own. For example, there’s no traditional “first run” experience to set things up given that this is a highly customized Debian image. Instead, you log in with the default credentials rock/rock to get things started. It’s highly recommended you rename the rock account if you want to keep all of the customizations. If you make a brand new account, which is totally an option if you want to go that route, you’ll end up in a session that looks much more like a traditional Debian installation.

While the Wiki does an awesome job of covering what to do when you get the device, my recommendations are:

  • Disable the root account.
    • sudo passwd -l root
  • Install and enable ufw for a firewall.
    • sudo apt install ufw
    • sudo ufw enable
  • Run the system update script.
  • Update the rest of the system.
    • sudo apt update && sudo apt upgrade
  • Update the keyboard and trackpad firmware.
  • Check your keyboard version to make sure it’s on the correct language. Mine came as UK English.
    • If that’s not correct, type keyboard at the menu launcher, open the keyboard preferences, go to the Layouts tab, and select the apporpriate layout.
  • Verify if your timezone is correct or needs to be updated.
    • tzselect

Of course, all of this assumes you’re going to keep rolling with the factory Debian image. There’s a wide array of operating systems you can choose from. I’m personally super tempted to give the NetBSD image a shot.

Wrap Up

Overall, I’m extremely pleased with the Pinebook Pro so far. They’ve got a great community, and I’ve spent a little time so far keeping tabs on their IRC server and Discord. If you can’t find something in particular on the wiki (which would be surprising; it’s extremely well-maintained), the helpful folks on IRC can likely assist. If you’re a fan of budget laptops but want to move away from Chrome OS or Windows, the Pinebook Pro seems like a great option if you feel comfortable with Linux.

RIP Chrome OS

If you’ve listened to some of our episodes or read some of my other posts on this site, then you’re likely aware that I’ve historically been a Chromebook fan. I started with the original HP Chromebook 11 and have owned quite a Chromebook collection since then. The speed and simplicity to do the two main things I need in my personal life (interacting with web pages and making SSH connections) coupled with the low cost made them a perfect match.

My feelings about Chrome have been shifting, though, as I elucidated in my post about switching back to Firefox as my main browser on my work laptop. That post was written from the context of Chrome as a browser without really looking specifically at the Chrome OS operating system. In that area Google has also been making some… less than stellar changes which have ultimately caused frustration to the point where I’ve now given up on Chromebooks entirely. The primary culprit: Google’s confusing war on swap.

Note: Really smart people make Chrome and Chrome OS. I don’t mean to throw shade at them. I’m sure there’s well-reasoned thought behind the changes I’m about to describe that is either not posted or not posted in a location I found. The real-world impact is undeniable, though.

The Symptoms

Before diving into the problem, I’d like to discuss the end user experience. I admittedly hadn’t been following the Chrome change logs over the past few months while I’ve been busy with starting a new job and moving; I’d mark those posts as read in Feedly and move on to more interesting things. So it seemed almost out of nowhere that my tabs and PWAs in Chrome OS would simply die and reload on their own. Sometimes it wasn’t a big deal. A tab with a news article or a Reddit post can reload without any dire consequences. In other cases, it was a bit more annoying: the Spotify PWA would reload, causing the music I was enjoying to stop playing. And in some instances it was catastrophic: I’d tab away from Squarespace where I had been working on a post for this site to verify some information, and the tab would reload when I went back to it, causing me to lose my progress. The same thing would happen with the Secure Shell extension, kicking me out of my SSH session and causing me to lose everything if I didn’t have tmux running. Even if I did have tmux running, it’s still insanely annoying to have to log back in every time I flip from an ebook back to my SSH session… assuming the ebook didn’t also reload, causing me to have to find my place again.

As you can likely imagine, this was maddening and quickly made it impossible for me to really do anything with my Chromebooks. At this point, it seemed like my device was in open rebellion against me, and I started doing research into what was happening under the hood to cause this behavior.

The Culprit

The cause of this behavior ended up being a new “feature” referred to as Tab Discarding. The idea seems fine on the surface; not all open tabs in a browser are active tabs. So to avoid low memory conditions, Google was discarding tabs that it deemed inactive. This drops the tab and its contents out of memory but keeps the tab open in the browser. If you open that tab again, the contents are then reloaded. The benefit tot his is that you can keep more memory available for actively utilized tabs without having to drop down to swap.

A Note On Swap

If you aren’t familiar with swap, it’s good to think about what computers do when they run out of memory. Since just crashing isn’t exactly an option, for the past few decades computers have utilized what’s referred to as swap space. In most flavors of Linux, swap is an actual partition on the disk. In Windows you’ll have a pagefile.sys file. The point of both is the same; when the operating system runs out of memory, it’ll take some data currently stored in memory that hasn’t been used in a little while and write that to the disk in either the swap partition or the pagefile. Then that memory becomes available for some new, active process to utilize. Should the content that was swapped be required again, something else will be transferred from memory to disk, and then the previously swapped content can be moved from the disk back to memory. Most systems will give you insight into how much swap you’re using. For example, we can see from running htop on this Linux laptop that I’m not currently leveraging swap:

This matters because reading and writing from/to the disk is slower than just working in memory… though it’s not nearly as slow in the world of SSDs than it was in the world of spinning platter hard drives. The less swap you can use, the snappier things go… though I question if waiting for SSD swap is actually slower than waiting a few seconds for a web page to reload. Regardless, not using swap can be a matter of both adding more physical memory to the system and optimizing the software for it. Okay, back to the main point.

Back To The Culprit

Google was attempting to use software optimizations to make Chrome stop leveraging swap and keep everything in active memory. The problem is that while this is good in theory, it doesn’t pan out so well in practice in a world of Chromebooks that have 2 – 4 GB of memory installed. I was hitting the point on my Acer Chromebook 315 (which has 4 GB of RAM) where two tabs were too much for the system. Flipping between the two would cause the tab I just left to be discarded. I tried to even go so far as to disable the Play Store and Linux support to see if that would help free up additional memory. While it helped a little, in the end I was still experiencing the same problems. My laptop was a paperweight.

Solutions?

I naturally started looking for solutions to this problem. The Chromium project put together a decent FAQ on the behavior. While that confirmed for me why it was happening, it didn’t exactly provide solutions on how to make it stop. For the question of “How can I make it stop?” the answer was:

Close some tabs or uninstall extensions that take a lot of memory. If there’s a specific tab you don’t want discarded, right-click on the tab and pin it.

Except the order of operations for discarding tabs goes:

  1. Internal pages like new tab page, bookmarks, etc.

  2. Tabs selected a long time ago

  3. Tabs selected recently

  4. Tabs playing audio

  5. Apps running in a window

  6. Pinned tabs

  7. The selected tab

So even pinning a tab won’t necessarily prevent it from being discarded; it’s just less likely. It also seems legitimately insane to me to have to temporarily pin any tab you’re actively working in to keep it from being discarded. The behavior is clearly detrimental and needs to be disabled. The original post for the “experiment” mentioned being able to toggle this feature from:

chrome://flags/#enable-tab-discarding

Only that didn’t actually work for me; the option was gone. I noticed that the page was last updated in January of 2019, so I’m sure this behavior had changed. The post had also mentioned going to the flags page in order to enable tab discarding when it was clearly now on by default.

Going further down the rabbit hole, i found some threads on Reddit where users confirmed my fear; starting with Chrome OS 75 this “feature” was forcibly turned on and the flags to disable it removed. Yikes! The only solution present was to install some random browser extension to prevent tab discarding. I can only speculate as to why the ability to turn off such anti-user behavior was removed, but having to install an extension to get it back seems absurd, especially when, as the author of the extension notes, it still isn’t guaranteed to prevent your tabs from being discarded.

At this point I decided that Chrome OS had finally crossed the line of what I was willing to tolerate in the name of simplicity. When I literally can’t use my laptop to author a post for this website, the device is valueless to me. I won’t go into what I’ve opted to replace my Chromebook with in this post (that’s a topic for another post or possibly even a podcast episode), but suffice to say I’ve officially hopped off the Chrome OS train. The good news is that I’m now not using the Chrome browser anywhere, giving Google one less avenue to capture data on what I’m doing online.