March 9th 2020 update: 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 very capable laptop for the price and I still strongly recommend ownership! More on my 2 month feedback can be read at the end of this article.
Original article, January 22nd 2020:
The Pinebook Pro is a 14″ laptop built for developers and Linux end-users. It weighs less than 3lbs, which in my case replaces two times heavier laptop. (See my work-laptop history). I’ve not been this excited about receiving a piece of Linux hardware since the launch of the Raspberry Pi. 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. Mainly, if I remain 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 which mostly reside in Terminal emulators and Chromium.
Pinebook Pro first impressions (after 24 hours)
Lets 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 is 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 very capable.
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 it’s 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 selling 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) – You may notice, depending on your workload, 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 to prevent slow discharge of the battery 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, 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 worlds smartphones. However, there are important desktop apps which currently do not support arm64 or armhf. This includes Skype, Dropbox, Termius and others. This means finding alternative workarounds in order 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 not only solve the issue, but also make available millions of additional apps. However, I love me some Debian!
Performance, or lack there of – Due to the combination of low-end performing hardware, namely CPU, storage and only 4GB of RAM, you will probably be looking for ways 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 in order 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 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 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, due to the fact that Interactive governor is permitted to spend more time at 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 compared to Performance governor. When battery life becomes an issue, I run the Conservative governor. When 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 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, its 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. As such, 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.
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 then 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 tendency of the kernel to reclaim memory used for caching of directory and inode objects. You will use less memory over a longer period of time. The performance hit is negated by the downside of swapping sooner. 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 over time we use most of installed memory, the kernel will start opportunistic swapping to ZRAM much sooner so that CPU (compression) and swap I/O aren’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 changes. Which in any case, 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 terminal:
Speedup 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 it’s 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
- Skype – There is no arm64 armhf build of Skype, so for now you will have to setup via Chrome extension.
- Termius – Could not install. So for now using Remmina and Terminator.
- Clipboard-indicator – Clipboard history using ClipIt for now.
- Dropbox – Again no arm* support. For now using this Dropbox sync bash script instead.
- Spotify – Installed command line Spotify The GUI Linux client was already slow on much faster hardware so didn’t even attempt to install.
- Installed snap and the snap store.
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 very satisfied 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 it’s build quality, battery life/low power consumption, value and the large and fast-growing community of developers and end-users surrounding it!
March 9th 2020 Pinebook Pro update:
The performance – or lack there of – of the Pinebook Pro was the eventual deal beaker 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.
The touch pad is the only other major gripe. Its difficult to use the touch pad for small movements such as selecting text or editing in GIMP. That said, a wireless mouse was a great workaround for me.
I’m very excited to see what next from Pine64! One advantage of owning the Pinebook Pro is; 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.