NetBSD 10 Aarch64
I've been running NetBSD on a RockPro64 since NetBSD 10-BETA, and I'm still happy with it now with NetBSD 10-RELEASE. I'm always looking for hardware to hack NetBSD though, and I recently watched a FOSDEM 2024 video: NetBSD 10: Thirty years, still going strong!. The Pinebook Pro laptop was mentioned at one point, which has the same RockChip SoC as the RockPro64. That reminded me I'd been wanting to give this inexpensive ARM 64 laptop a try.
It took a week or so to arrive from the PINE64 store in good shape and included a power supply that plugs into the 5V 3A barrel power port. You have to order laptops seperately because of the battery. I seperately ordered a USB Type A adapter that also uses the power port and I now normally use that. You can also power it from the USB C port which is handy.
First boot out of the box starts with Linux Manjaro - not great, not terrible. I used that to test the hardware, including the video cam, ports, speakers, etc. Everything looked good. It was now time to take the bottom cover off to get to the 64gb eMMC card and copy a NetBSD 10 image.
Booting NetBSD 10-RELEASE
I grabbed the image specifically listed for the Pinebook Pro. You also have to grab the U-BOOT for the Pinebook Pro from pkgsrc. I followed the installation documentation, put the eMMC card back in, and the bottom cover back on.
BTW, the PINE64 documentation for the Pinebook Pro is useful, including notes on safely removing the bottom cover.
The first boot is similar to the RockPro64, except of course you don't need a serial console or seperate monitor. Logged in as root, the first thing I did was check dmesg[0].
The included WiFi card is not supported by 10-RELEASE, so I grabbed a Type A USB ethernet adapter ( axen driver) and plugged it in and NetBSD recognized it on the USB2 port. Before I connected a network cable, I edited /etc/dhcpcd.conf with specific interface settings that better suits my IPv6-only network. I started with ethernet first since I knew I'd be installing many binary packages from pkgsrc ( urtwn Edimax USB WiFi is now what I generally use).
Now connected to the network, I ran sysinst and configured everything needed to reboot and start installing binary packages. I played around with the default ctwm window manager, Firefox102, Thunderbird102, NetSurf, xephem, and others.
Cool! I have a NetBSD laptop ????
Hardware
The screen is good and the backlight can be controlled via sysctl. The keyboard is also good once you get familiar using Fn for common keystrokes.
The touchpad is not great but not terrible. I did upgrade the firmware (see PINE64 docs) and it helped with sensitivity. I have 3 main issues with the touchpad:
The way I touch type (most likely with terrible posture), my palm sometimes bumps the touchpad and the cursor goes flying to some random screen location. This is extremly annoying, but infrequent enough I usually get past it. There is no scrolling functionality (e.g. 2 fingers on my Windows laptop touchpad scrolls). No middle mouse button for pasting in X.
It's still adequate though when I don't have a USB wheel mouse attached. To make up for the lack of touchpad scrolling, Fn + up/down arrow navigates effectively on better behaved websites.
For the lack of a middle mouse button gesture on the touchpad, I installed xclip and this has been effective. I usually want to copy/paste something on one xterm to another. Using the touchpad to select and then click on the selection, this will copy to the "primary" X selection. I then use something like $(xclip -o) to include that with a command. I also use the "clipboard" X selection for a copy/paste from, say, Firefox to xterm. For that, I often use xclip -selection clipboard -o in some combination. And finally -- since I'm typing this on my Pinebook Pro right now using gvim -- dmesg | xclip is how I copy/pasted.
Additional notes
If you want a serial console for debugging, etc, there is a board switch that changes the audio stereo jack to a UART. I used a simple audio stereo jack breakout and followed the PINE64 docs to get this to work with a USB serial adapter (mine is a USB RTCP2104 TTL adapter) that can handle a speed of 1500000.
Audio and webcam work fine. For the webcam, I had to specially compile OpenCV 4.9 to get this to work with the webcam. It seems there is an issue with kernel video buffer reallocation when changing cam resolution. I'm still debugging this (AMD64 has the same issue). ffmpeg works though, and I can capture at full resolution. But this is not a work laptop and I have zero desire for video calls ????
I use estd to keep the CPU speed at check until needed. There is no active cooling, so if you do a build, you might want to put a fan over the keyboard and/or create separation between the laptop bottom and the surface it's resting on. To control things further, use schedctl -A 4,5 along with security.models.extensions.user_set_cpu_affinity=1 to use the faster cores.
The USB C port works for charging, but not for much else in my testing. NetBSD did recognize my Lenovo USB C docking station as an ethernet cdce device and this seems stable. I also tried a USB C ure device and that did not work on the USB C port, but did using a USB3 Type C to A adapter on the USB3 Type A port only after boot. It was unstable though so I don't recommend. Ultimately for best stability , I use a USB3 axen on the USB2 port (via USB hub) and a urtwn on the Type A USB3 port.
I pretty quickly replaced the Manjaro Linux that came installed on the eMCC. But you can always install something else on a USB memory stick and that will boot on the USB2 port before the eMMC. This will be handy when I start experimenting with NetBSD-CURRENT.
Summary
It's great to finally have a BSD laptop around the house, and I'm happy with NetBSD 10-RELEASE on the Pinebook Pro.
One motivation was to have a non-work laptop handy for things I need to check on in my home lab. For example, if want to do a late night check on how that ZFS scrub is going on my FreeBSD server, I don't have to use tmux on my phone, I can grab my shiny new NetBSD laptop instead. Perfect.
[0]dmesg