Software development on Pinebook Pro using Debian and device impressions (2022)

Jacob David C. Cunningham
6 min readNov 11, 2022
Debian 11 Bullseye i3-wm on Pinebook Pro, webcam taped

Note: all of the info below is with the PBP using a SanDisk Extreme SD card for its OS.

Notes for Manjaro/AArch64

I was able to reproduce the build. The only package I was missing is javascriptcoregtk-4.0(use webkit2gtk) like Debian below.

First build eg. npm run tauri dev took about 12 minutes on eMMC.

Context

So I did get this device two years late from when it was new/people had interest in it. I got the Pinephones (both) prior to this. I felt some FOMO with this device so here we are.

First thing I’ll mention is I prefer the apt package manager so that’s why I generally use something Debian related. Just a personal preference/makes things easier for me.

With regard to what kind of software, mostly web however native-like eg. cross platform with Tauri (React with Rust and Sqlite). Also I am getting into C/GTK directly but I’m new on that side.

About the device

Physically it is a nice design, I like the all-black color. It’s tapered (side profile) like an old Macbook Air. The display is great, it’s 1080P on a not-too-big 14" screen and it has a matte coating so not much glare and it has pleasant look/texture to the display if that makes sense. The keyboard is okay, it’s plastic chiclet… the main gripe I have is the touchpad. It’s poor in terms of tracking but that can be addressed with software. The trackpad is also of poor quality physically. If you’re used to clicking down in the middle of a trackpad, it’s rough near the middle/towards the top (I think you’re not suposed to). It’s the type of trackpad where you click on the bottom left/right parts of it.

I have only had this laptop for a few days. I will say you would be crippling yourself in terms of productivity if you chose this laptop on purpose/have anything serious to do development wise. It’s a hobby device for me. Anything trivial you would expect like using YouTube or sound/external monitor, has issues. The YouTube thing is just hardware performance (not a lot you can do) but the other stuff might be better depending on what OS/DE you’re using. YouTube works but you’ll see lag/delay in loading the website… things slowly appear. Video playback has issues in HD but improvements can be made.

I received mine with Manjaro and I immediately bricked it by trying to flash my own Manjaro ARM Team image — I believe you need Tow-boot for it to work. It’s technically a “soft brick” as in I did recover from it. I ended up frantically trying random distros to get my laptop to boot again. The ones that worked as is (pre-built image) were Kali and PostmarketOS. I stuck around with PostmarketOS more since it was pretty much complete out of the box (specifically WiFi) but I ended up leaving it because of Alpine (issues with musl/glibc = can’t use VS Code). There is code spaces now (GitHub browser editor) that’s like an exact clone of VS Code but in a browser, that’s pretty cool. But local VS Code is my jam.

Update: apparently there is VS Code on PostmarketOS.

https://pkgs.alpinelinux.org/package/edge/testing/aarch64/code-oss

Anyway I mentioned I like apt-based package managers so I got help from this arm/debian-img-builder group (their discord). They made a Pinebook Pro image for me to use. Since I tried to compile my own and it either took way too long or I had issues.

This gets you a bootable CLI image. You then go through the config menu and get yourself a desktop environment setup eg. XFCE through tasksel.

Note that I have PostmarketOS still on my eMMC that may be relevant to being able to boot from SD card.

The steps I performed referencing the images above:

  • login to fresh Debian CLI
  • run menu-config
  • I did every step except 3) keyboard 8) software
  • locales check only one eg. en-US UTF-8
  • run sudo tasksel --new-install

Getting Tauri to run

npm run tauri dev — Pinebook Pro Debian 11 Bullseye with XFCE

At the moment I’m using an SD card to work out of which does introduce issues with IO speed eg. eMMC is better and NVME is even better.

  • Install rust, node/npm, then in your create tauri app, do npm install, try to run rust and react eg. npm run tauri dev
  • Missing deps: glib-2.0 (libglib2.0-dev), gdk-3.0 (libgtk-3-dev), libsoup-2.4 (libsoup-2.4–dev), libjavascriptcoregtk-4.0-dev, libwebkit2gtk-4.0-dev,

Fix for finding/installing missing deps

  • update /etc/apt/sources.list duplicate all lines except security and change deb to deb-src in new lines
  • run apt update, (no errors), run apt install apt-file
  • now can run apt-file search name.pc ex. libjavascriptcoregtk-4.0.pc maps to libjavascriptcoregtk-4.0-dev for standard apt install

The build speed is brutal, although strangely running the same app in Windows 10 i9 3080ti 80GB RAM NVME it’s still slow as sh*t. Well subsequent runs are 8 seconds. It starts running in 1min 36 seconds from fresh install in Win 10 case. I have already ran it before though is the issue. Point is even in Windows 10/good computer, the first run of Tauri can be slow (minutes). Pinebook Pro it took 10 minutes lol for the first run.

Subsequent runs though Tauri pops up in 2 mins. This is not React only, it is also running Rust for the “local backend”. Next run popped up in 15 seconds I don’t understand… I’ll just say the first run is the most brutal. For example I’ll do an npx create-react-app app-name run for a test. Actually that was not that bad took about 3 minutes, second try 1.5 minutes… so seems like something’s being cached.

Other thoughts about Pinebook Pro

I don’t have a suspend/hibernate configured. So if you simply close the lid, it logs you out but it loses power overnight. About 50% charge is lost overnight (6-8 hours roughly). Otherwise you would have to shut it down.

The other thing is Tow-boot which I have not taken the time to look into and setup yet. This is helpful for distro hopping since if you don’t have a proper boot “mechanism” eg. uboot, the device appears to be bricked. The status LEDs eg. RGB power on, that is controlled by software. Something has to be successfully booted for it to show as being turned on eg. just a basic red when you push down on the power button.

Audio through speakers is not working, have to mess around with Alsamixer. I should point out this is not how this device ships to you (assumed works out of the box), this is after putting a new OS on it.

Battery life

This varies depending on use, hate to be vague. You could squeeze out super long battery life by throttling down your CPU. I measured a “normal load” for me with Powertop and it was pulling around 9 watts… the battery is just over 36Wh so about 4 hours of life in that example. I think it was 80% screen brightness, no CPU throttling, 6 tabs open in Firefox, VS Code open and a couple of terminals.

Other dev thoughts

I had problems on Pinephone Pro (assuming related to PBP since similar chip) trying to use GTK4 (gtkmm), as initially I was trying to go with C++ and GTK4 but now I’m just going with C and GTK3 since Phosh is written with that. (Phosh) As an example of a tangible/successful piece of software for this environment.

Videos on this device so far

Unboxing

3D printing an internal support for mushy keyboard

I will make another video of me writing code with it using i3-wm once I’m making progress again.

Tauri (ReactJS & Rust) running on Debian 11 XFCE/i3-wm

--

--