I received my Pinebook Pro with ANSI keyboard a few weeks ago. It covers my basic needs quite well, has a great battery life and is light. I intended to use it as a travel laptop, but the SSD of my venerable MacBook Pro crashed in the middle of the COVID-19 outbreak, forcing me to use my Pinebook Pro as daily driver.
In this article, I’m not going to tell you whether or not you should buy the Pinebook Pro. Instead, I will explain how to reproduce my setup.
The Pinebook Pro comes with a preinstalled custom Debian. The deal-breaker was the unstable kernel causing infrequent random crashes and, even worse, unusable WiFi.
Therefore, I decided to install Manjaro KDE Plasma. The Manjaro kernel is much more stable and KDE Plasma is performant, user-friendly and visually appealing. It has been chosen as the new default OS.
- Download the latest version of the eMMC installer from this page. The extension is
- Burn the image on a microSD card (you need at least 8 GB). A good software for that is etcher.
- Insert the microSD card in the Pinebook Pro. It should boot from it. Follow the instructions to install Manjaro on the eMMC.
Keyboard/touchpad firmware update
The touchpad is quite buggy, but you can fix it by installing this firmware. Because we are very lucky, you can install it through the
pbp-keyboard-updater-modded package. Note that you don’t need to reinstall it even if you install another OS at it is attached to the hardware.
After rebooting, it’s time to update your packages. You can either use the GUI (Software Update in the launcher menu) or
Configuration and performance tweaks
Swap file and zram
The Pinebook Pro only has 4 GB of RAM and if you use more, your computer will freeze or reboot.
zram compresses the RAM. In other words, at the cost of a slightly higher CPU usage (which is impossible to notice), it makes your RAM usage much more efficient.
You can install and configure it very easily using this PKGBUILD (source). For convenience, I uploaded the file on this blog. Like any AUR package, you can build and install it with
makepkg -isc (
i for install,
s to install dependencies,
c to clean after build).
First install the
base-devel group (they are standard development utilities):
sudo pacman -S base-devel
mkdir zram-swap cd zram-swap curl https://louisabraham.github.io/misc/zram-swap.pkgbuild > PKGBUILD makepkg -isc
You can then clean:
cd .. rm -rf zram-swap
To activate it for the current session and every subsequent reboots:
sudo systemctl daemon-reload sudo systemctl enable zram-swap.service sudo systemctl start zram-swap.service
I recommend to use a swap file to avoid a freeze if you ever use more RAM. 4GB is necessary to be able to suspend to RAM.
Just follow the instruction from the wiki:
sudo dd if=/dev/zero of=/swapfile count=4096 bs=1MiB sudo mkswap /swapfile sudo chmod u=rw,go= /swapfile sudo swapon /swapfile sudo bash -c "echo /swapfile none swap defaults 0 0 >> /etc/fstab"
To monitor your cache usage, you can use the following commands:
hfor human-readable) breaks down the RAM usage
swapondetails the usage of the swap between the zram and the swapfile. If the swapfile is used, it means you use way too much memory. For more details, see
zramctloutputs the content of the zram. For more details, see
Remap Caps Lock to Ctrl
Useful to avoid CTS.
Keyboard -> Advanced -> Caps Lock behiavior -> Caps Lock is also a Ctrl
Activate AUR in Software Manager
This step is not really required but it’s nice to be able to search AUR packages. Just enable AUR in the settings of the software manager (Add/Remove Software in the launcher menu).
At least one WiFi channel (12 for me) is not detected at all in Manjaro whereas it worked in Debian. I just changed my router’s channel to 11. Some users report that it might be due to a region configuration issue but I could not fix it. I am sometimes unable to connect my phone (Redmi Note 7) as a hotspot, maybe because I cannot control what channel it uses.
Once you find a working hotspot, the WiFi is very stable so I cannot complain too much.
The touchpad is very sensitive and will activate while you type. The “Disable while typing” feature doesn’t work for the moment.
My workaround is to use an external mouse and disable the touchpad with Fn-F7.
EDIT (29 April 2020): Joseph Virkin emailed me that installing
xf86-input-synaptics solves the issue. Indeed, it changes the touchpad system settings window and there is a new option “Disable touchpad when typing that works”. However, when you don’t type continuously (e.g. if you stop to think), your palm will still activate the touchpad and move your cursor. So I still preferentially use an external mouse.
There is some static noise (but clearly not as noisy as a fan). The noise might change in unpredictable ways when:
- (un)plugging the barrel port
- switching the sound on or off
- connecting some USB mouses
- moving some USB mouses
Low Bluetooth volume
My Bose Micro Soundlink has a low maximal volume when paired to the PBP and I don’t know how to fix it. Others report no problem with other Bluetooth speakers.
Software and configuration
Firefox just works great, I’m really happy to be able to sync my bookmarks, passwords, history and much more across my devices while protecting my privacy.
When using an external mouse, a nice feature is to be able to scroll on a page by pressing the middle button and moving the mouse. Just type
about:config in the search bar and set
On a system with limited RAM, I really like the extension Auto Tab Discard. It saves RAM by transferring tabs to the disk after some inactivity threshold. You can whitelist some websites, for examples the ones that send you notifications.
I use Messenger, Gmail, Trello and Simplenote and still can open dozens of other tabs without problem.
Chromium is faster than Firefox for some demanding apps and Google products. However, for 99% of internet browsing, the difference is not noticeable.
I recommend installing it (with pacman) as some add-ons, like Skype, are useful and because Firefox cannot download large files from mega.nz.
Finally, hardware acceleration allows Chromium to run some games better than Firefox. Sadly, Aground is still too slow to be playable.
Python 3.8 is already installed. When possible, install packages with pacman rather than pip.
If you need numpy or scipy, first install openblas (
sudo pacman -S openblas) to achieve better performance.
You can then install packages
python-scipy. You can control the number of threads using the environment variable
OMP_NUM_THREADS. If left empty, all 6 cores will be used.
Visual Studio Code - OSS
The open-source version of VSCode works perfectly. Just install
code-headmelted-bin from AUR.
It’s quite slow though and the Python plugin tends to crash when doing real work so I use gedit instead.
Install via pacman. I recommend to hide the userland process threads.
I found those two tools very useful:
bmonmonitors the bandwidth over time
nethogstracks the network usage of every program
You can install them with pacman.
I use rsnapshot. Install via pacman. See ArchWiki for the configuration.
To manually backup to a USB device and keep the last 10 backups, just configure
retain alpha 10 and edit
/etc/fstab according to the instructions for External Drives.
After that, you can simply use
sudo rsnapshot alpha to make a backup on your USB drive.
Warning: you need a filesystem that supports hard links. Most USB drives come with FAT which doesn’t. You can format a partition to ext4 with
rclone is the best solution I found to use Dropbox as the official client does not work on ARM. rclone also supports Google Drive, mega.nz and almost any cloud storage provider you can imagine.
The backups are not automatic and require you to use
rclone copy or
rclone sync. A useful command is
rclone check to avoid erasing important files.
rclone-bin from AUR and follow the easy configuration instructions on the website.
After some effort and the help of marty1885, I could compile the latest version of PyTorch.
First, compile and install sleef: https://sleef.org/compile.xhtml (you will need sudo to install). You should also add the following line to your
.bashrc (or equivalent)
If you are using Python 3.8 and do not want to wait for HOURS, you can download my precompiled wheel here.
Here is how I produced it:
1. Install the dependencies (this command is for arch/manjaro)
pacman -Syu python python-numpy python-yaml python-cffi python-setuptools python-wheel cmake
2. Download source code and compile
git clone https://github.com/pytorch/pytorch --recursive cd pytorch git checkout v1.6.0-rc7 # I chose the latest tag git submodule sync git submodule update --init --recursive
3. Edit CMakeLists.txt to set two flags:
option(USE_PYTORCH_QNNPACK "Use ATen/QNNPACK (quantized 8-bit operators)" OFF) option(USE_SYSTEM_SLEEF "Use system-provided sleef." ON)
export BUILD_TEST=0 export MAX_JOBS=6 # use all the cores, set to a lower number if you want to use your computer while compiling export USE_SYSTEM_NCCL=0 export USE_DISTRIBUTED=0 export USE_QNNPACK=0 python setup.py bdist_wheel
The wheel will be in the
Whether you compiled or downloaded the
.whl, you can install it with
pip install torch-1.6.0a0+b31f58d-cp38-cp38-linux_aarch64.whl
The PBP is great for emulation, I really appreciate snes9x (Super NES emulator) that can be installed from pacman. I recommend using OpenGL (in Preferences > Display > Hardware Acceleration) for a smoother experience.
For PlayStation, PCSX ReARMed is available as a core for libretro (an plugin-based emulation software) but I don’t appreciate PS1 games a lot.
For Nintendo 64, I was able to compile libretro-mupen64plus_next (instructions here) but it’s so slow that most games are unplayable.
You can also play old PC games that have been ported to Linux, e.g. Quake3 (ioquake3) or Morrowind (OpenMW) but you need the game files.
Finally, there is a nice thread about games on the Pine64 forum.
The compilation is not straightforward so I give instructions below. Also, the game data can only be transferred from an existing (PC) installation, so it is much more convenient to download it. It’s probably legal as long as you have a copy of the game so here is a link.
- Install dependencies:
sudo pacman -S openscenegraph sdl2 bullet openal ffmpeg cmake gcc git
- Install MyGUI 3.2.2 without Ogre3D:
git clone https://github.com/MyGUI/mygui && git checkout MyGUI3.2.2 && cmake . -DMYGUI_RENDERSYSTEM=1 -DMYGUI_BUILD_DEMOS=OFF -DMYGUI_BUILD_TOOLS=OFF -DMYGUI_BUILD_PLUGINS=OFF && sudo make install -j6
- Install OpenMW:
git clone --depth=1 https://github.com/OpenMW/openmw && sudo make install -j6
If you want to use your PBP during compilation, you can use
-j4 to compile with 4 cores instead of 6 (but it will take longer).
Finally, a nice trick to improve FPS is to rescale the screen
xrandr --output eDP-1 --scale 0.5x0.5 --filter nearest
xrandr --output eDP-1 --scale 1x1
pamac install libxmp-aarch64-git pamac install openarena-git
In 1080p, the game is choppy, even the menu lags. You can set it to 720p in the console (press ```) with the command
r_mode 12 then
vid_restart to restart the video. I don’t know why this happens. I tried reducing the graphics quality but it looks like the FPS do not correspond to the experience in 1080p (and even the menu is choppy).
I couldn’t compile the following software and don’t have a good replacement:
If you can help, please send me an email.