The Pinebook Pro is a 14″ laptop built for developers and Linux end-users. It weighs less than 3lbs, which, in my case, replaces a two times heavier laptop. (See my work-laptop history). I’ve not been this excited about receiving a piece of Linux hardware since the Raspberry Pi launch. This very blog post is composed entirely using the Pinebook Pro ANSI.
The plan is to update this blog post in a few weeks with my full review of this laptop. Especially if I stick with the Pinebook Pro or switch to alternatives such as Purism 13, Galago Pro’s 14, or back to Thinkpad T series laptops, but hopefully, it will meet my needs that mostly reside in Terminal emulators and Chromium.
Pinebook Pro first impressions (after 24 hours)
Let’s start with the strong points of this laptop:
Build quality – It looks and feels similar to the Macbook Air without the over-sized touchpad. The lid and bottom of the laptop are made from matte-finish black Magnesium alloy. It’s lovely to look at, and there’s zero flex when moving it around. Very solid. For a $199 laptop, the 1920×1080 screen is also great. The keyboard and touchpad are competent.
Efficiency – With my smartphone having more processing power and memory than this laptop, it is no wonder that it’s pretty green and efficient. It uses eMMC for storage, which uses something like 0.5 watts. You can upgrade to NVMe SSD storage, but NVMe uses a bit more power. With the low CPU clock speed, I’m curious if NVMe would make much of a difference. My thought is, probably not. Let me know if you benchmark this. Battery life is great; I’m getting about
8 to 10 hours 6 to 8 hours.
Value – At just $199 plus shipping, it’s an unbeatable boot-Linux value. When put side by side with other laptops four times its cost, it does not look cheap. Hopefully, Pine64 does not evolve in the way OnePlus did, from a $299 launch price with the OnePlus One to sell for as much as $900.00 today. If Pine64 stay true to their brand, then I doubt it. They are now the Raspberry Pi of laptops. This laptop would be great for kids learning to code, learning Linux, etc. Looking forward to watching this space. Will Raspberry Pi or others jump in? That would be a good thing for us end-users.
Notable issues and challenges over the past 24 hours:
Battery drains with heavy usage while charging (under specific circumstances). Depending on your workload, you may notice that the Pinebook Pro battery will drain slowly or not charge even with the AC adapter connected. I attempted to address this by switching to a charging adapter with more amperage. The OnePlus 6T charger pushes 5v, and up to 4A can be pulled from it. I thought the 1A increase would help reduce the battery’s discharge while under heavy CPU usage, 100% screen brightness, and a battery-operated wireless mouse. That was not the case, which means that the laptop itself is set to only pull only a specific max-amount of amps for charging and the Pinebook Pro charger already meets that max. Therefore, changing charging adapters won’t make much of a difference, if any. There are a couple of forum posts with users having similar issues under differing circumstances.
Update! – This morning, I’m able to charge while using the laptop. My setup is 50% screen brightness, w/ wireless mouse, ZRAM, and Interactive CPU governor. Using Chrome with about 20 tabs open and terminal apps. Performance is great, with no slowdowns. Will try 100% brightness tomorrow to see if the issue returns.
Supports ARM only (no AMD64 support) – ARM architecture based is not entirely a bad thing. In 2013, 10 billion were produced, and today ARM-based chips are found in around 80% to 90% of the world’s smartphones. However, there are important desktop apps that currently do not support arm64 or armhf. This includes Skype, Dropbox, Termius, and others. This means finding alternative workarounds to continue using these services. I’ve listed as many of these application workarounds below as I could find. Installing Android would allow access to Google play and solve the issue and make available millions of additional apps.
Performance, or lack thereof – Due to the combination of low-end performing hardware, namely CPU, storage, and only 4GB of RAM, you will probably be looking for ways to speed up things a bit or ways to avoid performance degradation when opening more than a few apps. If you are a tab-hungry web surfer, Chrome and Firefox will be your worse enemy. That said, the Pinebook Pro specs are public, we know what we are buying. This is NOT a case of the Pinebook Pro performing poorly. Quite the opposite! This laptop actually out-performs it’s spec sheet. However, based on your usage, the low-end specs will be noticeable and something you will have to manage to achieve the best possible experience.
Pinebook Pro First boot setup and tips
You’ll want to refer to the Pinebook Pro Wiki. I don’t want to repeat anything there. The wiki will help you upon your first login, to change user and root passwords, rename the ‘rock’ user account to your name, etc.
Tweak Mate desktop to match your ANSI keyboard – The Pinebook Pro ANSI’s first boot will start you off with some keys such as #, @, \, ~, etc. incorrectly mapped. To fix this, open keyboard preferences, then add the United States English keyboard, aka. English (US). Lastly, remove the default English (UK).
Set CPU Governor to Interactive – I strongly recommend using Interactive Governor. Much like the OnDemand governor, the Interactive governor also dynamically scales CPU clock speed in response to workload. However, the Interactive governor is noticeably more responsive than OnDemand because it scales faster to the maximum frequency. The caveat being, the ‘Interactive’ governor is permitted to spend more time at a maximum frequency than OnDemand (and get there faster). The battery-saving benefits of OnDemand are effectively negated.
The Interactive governor almost always offers superior CPU performance compared to OnDemand, while using less battery/power than the ‘Performance’ governor. When battery life becomes an issue, I run the Conservative governor. When the battery falls below 20%, I switch to the Powersave governor. Due to the low performance of Powersave, when the battery is low, it’s ultimately best to find a power source. I will continue to tweak, test, and read forums, etc. for additional ways to improve performance. As of this morning, I’ve yet to see any slowdowns or any swap bottlenecks thanks to ZRAM, and the battery is still at 100% for the past few hours charged. Loving it!
To set to the CPU governor to default to Interactive instead of OnDemand on boot-up, I did the following:
sudo apt install cpufrequtils echo 'GOVERNOR="interactive"' | sudo tee /etc/default/cpufrequtils
Install ZRAM – The Pine Book Pro comes with a max memory of 4GB. I’m coming from a work laptop with 16GB. This has required some adjustments. But you know what, nothing is wrong with being more efficient. In fact, it’s a large part of my job to squeeze as much performance as I can out of the hardware clients have without forcing them to upgrade. This has become a fun challenge for me to reduce my footprint in memory, CPU, and general performance consumption. To address the large cut in RAM, I’ve setup 2GB of ZRAM (dynamically allocated), and the default /swapfile is now a very last resort. I ended up using this zram-swap script.
Update Oct 12th, 2020: Manajaro i3 for Pinebook Pro now comes with ZRAM enabled by default.
Delay the inevitable (running out of memory), and start preparing for it sooner, rather than leaving it right till the inevitable happens all at once… mad swapping. I’ve added the following lines to /etc/sysctl.conf and rebooted. (Change in real-time with the appropriate commands.) Don’t make this change if you are swapping to SD-card (not using ZRAM). If you are booting from an SD-card, use ZRAM only and remove (comment out) the /swapfile from /etc/fstab.
vm.vfs_cache_pressure=500 vm.swappiness=100 vm.dirty_background_ratio=1 vm.dirty_ratio=50
With the settings above, you will… 1) vm.vfs_cache_pressure=500 – increase cache pressure, which increases the kernel’s tendency to reclaim memory used for caching of directory and inode objects. You will use less memory over a longer period of time. The downside of swapping sooner negates the performance hit. 2) vm.swappiness=100 – Increasing how aggressively the kernel will swap memory pages since we are using ZRAM first. 3 & 4) vm.dirty_background_ratio=1 & vm.dirty_ratio=50 – background processes will start writing right away when it hits the 1% limit but the system won’t force synchronous I/O until it gets to 50% dirty_ratio.
So, in other words, these four lines (when used with ZRAM) will help; if like me, you know that you will eventually end up using more than the installed memory = swapping. Thus, knowing that you will swap and that ZRAM makes swapping less expensive and can also store the same data compressed 3 times smaller, you should begin this swap exchange sooner than later. The cache pressure helps because we are in effect telling the kernel… “hey, look man, I don’t have any extra memory lying around to use for cache, so please get rid of it sooner and only store the most frequently used important data.” Even with reduced caching, if we use most of the installed memory over time, the kernel will start opportunistic swapping to ZRAM much sooner so that CPU (compression) and swap I/O isn’t delayed until too late/all at once. Then, as a last resort, keep the default 500M of swap (the /swapfile on eMMC). If you fill ZRAM and then start to hit disk swap (/swapfile), you will notice performance degradation as before. I’ve yet to hit /swapfile since the changes. In any case, it would be time to reboot or clean memory by closing some apps/tabs or command line clearing.
Here’s what the result of my setup looks like:
(399320 in ZRAM is around 1G of data compressed. Yet to hit the /swapfile):
$ sudo cat /proc/swaps Filename Type Size Used Priority /swapfile file 511996 0 -1 /dev/zram0 partition 2097144 399320 5
Set the correct time – To do this, set your timezone first, run the following command from the terminal:
Speed up boot-up time by 50% – Before you make changes, you can run these two commands to compare before vs. after boot times.
sudo systemd-analyze sudo systemd-analyze blame
Now, this first step is totally optional, but if you don’t care to see the cool “Open Sesame” splash screen for the full 5 seconds during boot, then edit its sleep timer from 5 seconds to 1. Edit /etc/systemd/system/splash_pause.service and change the line:
sudo apt remove samba
Or you can disable and mask the nmbd and smbd services, which, in my case nmbd.service added 20+ seconds sometimes during reboot.
sudo systemctl stop nmbd sudo systemctl disable nmbd.service sudo systemctl mask nmbd
Enable VPN – Use the following commands to enable VPN and PPTP. Then use the NetworkManager applet to add your VPN connections.
sudo apt install network-manager-openvpn-gnome sudo apt install network-manager-pptp-gnome
Change the lock screen wallpaper – To date, this can only be done via command line:
cd /etc/alternatives sudo mv desktop-background desktop-background.old sudo ln -s /path/to/lockscreen/wallpaper.jpg desktop-background
Installing frequently used software
Conclusion (after roughly 24 hours)
Overall, I would recommend the Pinebook Pro to users who enjoy the satisfaction of tweaking things to meet their needs. Similar to my best Linux distro blog post, choosing a Linux laptop will be decided based on user preference, experience level, as well as the type of experience you seek. I’m enjoying my time with the Pinebook Pro immensely!
I’m delighted with it on first boot and even more so as it has evolved into a more usable work tool with what seems to be insane battery life. The downsides mean that this laptop won’t be for everyone. We already knew that. The Pine64 devs clearly state this on their website and during the order process.
That said, if you are still interested, then chances are you will be generously impressed as I’ve been. Impressed especially with its build quality, battery life/low power consumption, value, and the large and fast-growing community of developers and end-users surrounding it!
My Pinebook Pro with Manjaro i3
Update – Oct 12th, 2020: I’ve installed Manjaro i3 on my Pinebook Pro. As I’ve updated above, the Pinebook Pro now launches with ZRAM enabled. Similar to my recommended ZRAM setup. As such, you can skip or check for the install of ZRAM as it’s already in place at least on Manjaro i3. I’ve attached the above screenshot of my current Pinebook Pro desktop.
Update – May 19th, 2020: Two months later, I can report that although my Pinebook Pro still sees some usage, for the most part, I’ve reverted to my old laptop. It’s a competent laptop for the price, and I still strongly recommend ownership! The lack of CPU and graphics performance was the eventual deal-breaker for me. At times loading email messages in Gmail would take ages. Especially those email threads with over 50 emails. When you hit the “expand” option in Gmail, you can prepare to wait for a long time. Some websites, such as Reddit, can be frustratingly slow. As such, I can only recommend this laptop as a battery-life warrior for light use.
From the start, I used an external mouse with my Pinebook Pro. However, two months later and I’ve had the chance to use the touchpad for a couple of hours. I find it difficult to use the touchpad for small movements such as selecting text and image editing in GIMP. That said, a wireless mouse is a great workaround.
I’m very excited to see what’s next from Pine64! One advantage of owning the Pinebook Pro is that I’ve learned a lot over the past two months about ARM and Pine64, which will make for a smoother transition to any future Pinebooks.
Originally posted January 22, 2020.