[1]Login [2]Logout [3]Login / Get an account [4]Logout
* [5]view
* [6]edit
* [7]history
* [8]discuss
[9]PinebookProSixMonthsIn
* [10]Introduction
* [11]Context
* [12]Hardware
+ [13]Build
+ [14]Ports
+ [15]Keyboard
+ [16]Touchpad
+ [17]Display
+ [18]Power and heat
+ [19]Storage and memory
+ [20]Sound and microphone
+ [21]Wifi + Bluetooth
* [22]Software
+ [23]OS support
+ [24]Performance
+ [25]Graphics
o [26]Graphics nerd time
+ [27]Misc. niggles
* [28]Conclusion: Is it worth it?
* [29]Appendix: Conversations
+ [30]Hardware investigations
+ [31]Radio interference from USB3
+ [32]Audio hardware
Introduction
There’s been a lot of excited reviews among the more nerdly segments of
society about the [33]Pinebook Pro, a 14-inch, $200 Linux laptop using
an ARM CPU and generally open-source hardware. Rumors are it’s
extremely solid for a piece of hardware that’s far below the “bargain”
price range and into the “fell off the back of a truck” pile. However,
I recently read someone complaining that there’s been lots of “fresh
new user” blog posts and no “how does this actually work six months in”
write-ups. It just so happens that I’ve had my Pinebook Pro as my main
laptop for nearly six months now, so I thought I’d write up my
experiences with it so far.
This was written in early June 2020.
Context
Different people want different things from laptops. I mainly want
something that runs Linux, is light enough to carry around anywhere
without a lot of fuss, and that I can use for programming, game
development and gaming. That said, I’m usually about as happy playing
roguelikes or old DOS games as Doom Eternal or XCom 2, so I’m willing
to be pretty flexible on the “gaming” front.
I bought the Pinebook Pro as a toy in December 2019. I ordered it as a
Christmas present for myself and had some buyer’s remorse about it
immediately after. At the time I had a Dell XPS 15, which I absolutely
loved. 15 inches, tough metal, light enough to haul around easily,
great CPU, pretty good battery management, very good (though not
perfect) Linux support. Why the heck did I waste money on another
laptop? Then early in January my XPS 15 got stolen out of my car in an
IHOP parking lot and the Pinebook Pro was my only laptop. (Pro tip:
When a Lyft driver says a neighborhood is bad, take their word for it
even if it looks fine.) Time to adapt fast! It HAS taken some
adaptation, and a fair amount of work – it is not plug-and-play yet,
the hardware and drivers are fairly young, so this is still very much a
project computer. But it’s served me well, so here’s my experiences.
Also note that I got my PBP at the end of 2019, and not every PBP is
the same; it is very new hardware and a very small company compared to
most laptop manufacturers. They seem to manufacture them in batches do
minor hardware and process revisions/fixes between batches. These are
usually at least vaguely announced on the [34]monthly news blog.
Hardware
Build
The top and bottom of the case are metal, the keyboard surface and
screen bezel are plastic. The whole thing weighs about 1.3 kg, so it’s
light as heck, and less than a centimeter thick. As everyone’s
mentioned, the build quality is pretty awesome, and it generally feels
good. I’ve had $800 laptops that felt far cheaper. There’s no sharp
edge right where your wrist rests (ahem, Dell XPS 15 designers), the
hinge for the screen is nice and stiff, and in all it’s so light and
rigid it feels like you can just toss it into a bag or backpack and not
worry about it. Which is exactly what I want to be able to do.
You can open the thing up with just a Phillips screwdriver, which is
lovely, but the screws are so tiny that I worry about damaging them.
(Though if I do damage them, well, I can order replacements.) The
delicacy is a bit of a theme on the internals of this thing though:
there’s quite a lot of empty space inside the case, but everything is
so small, filmy and delicate that I’m not sure I would quite call it
“hackable”. The main board is about the size of your palm, and most of
the rest of the space is filled with battery. Wires and connectors are
all these fairy-thin things that fit in to tiny slots, lots of things
are held down with kapton tape or tucked into itty bitty notches. Feel
free to open it up, but be slow and gentle. All the designs and such
are online – there’s a cute sticker on the inside that directs you to
their wiki for hardware diagrams. But to actually do any real hardware
mods you’re probably going to need a good assortment of tweezers, a
steady hand, and the nerves to handle tiny parts.
Which isn’t to say that any of this is bad, per se. It’s protected
thoroughly enough that I don’t expect anything to break from everyday
(ab)use, and if it does break a new main board is about $100. And hey –
it weighs 1.3 kg. This is how you get a laptop that weighs 1.3 kg. I’ve
used this as my main machine for 6 months and haven’t broken anything
yet (much; see the Sound section for more), and I’m pretty rough on my
machines. I installed the M.2 expansion board pretty darn easily. So,
on the whole I’m a fan.
Speaking of which, there’s no fan. There’s no vents or holes in the
case at all besides the speaker grilles, so now that I think of it this
thing may actually last quite a long time due to lack of dust or other
gunk getting into it. Taking a laptop on a desert camping trip or into
an underground mine is a great way to be in the market for a new
laptop, but with this thing I’d probably slap some duct tape over the
speaker grilles, keep the keyboard and screen clean and call it good.
One cool thing is though, I’m pretty sure that the main board is a
99%-unmodified [35]RockPRO 64 SBC. It’s a pretty good board if so,
definitely worth considering over a Raspberry Pi for your next
small-single-board-computer project. The only thing that looks
different is the connectors; all the big chonky ones have been removed
to make it fit in the skinny case, and some of them moved to a breakout
board to reach the ports on the far side of the machine. It uses the
same SoC as the PBP, so, why not the whole board?
Ports
Right side: USB 2 port, combined headphone/mic 3.5 mm audio jack (that
also can be used as a serial port via an adapter and a hardware
switch), microSD card.
Left side: Power connector barrel jack, USB 3 port, USB-C port which
can also be used to charge the thing and as a DisplayPort video output.
Never tried to use it for video output though, so I don’t know if it
actually works.
All and all it’s basic but workable. It’d be nice to have another USB 2
port, but on the other hand, it already has more USB ports than a 4th
gen Macbook Pro of similar size. I’d prefer a mini-HDMI or mini-DP
output rather than trying to shunt it through USB-C, but that’s just me
being a curmudgeon. People need to stop trying to make USB-C do
everything. (If you want to have a real shit time, try to use a USB-C
video camera (like an Intel Realsense, for example) next to a sensitive
GPS receiver or long-range wifi. Not with the PBP, just with anything.)
Keyboard
Upon contemplation, I think it’s about as good as any non-mechanical
laptop keyboard you’ll find. Doesn’t feel as good as an oldschool
Thinkpad but probably at least as good as any other laptop I’ve used.
The layout and general feel is in fact almost identical to the XPS 15.
There’s a full row of function keys, control and alt on either side of
the spacebar, all that good stuff. Nothing weird like an itty-bitty
backspace key or cramming tilde somewhere strange or such. One odd
thing is there’s no Menu key, but, who uses the Menu key for anything
anyway? Not me, at least.
One annoyance with layout: The power button is a soft-button mapped to
a key right above the backspace key, where the XPS 15 puts Delete.
Instead Delete is mapped to fn-backspace. a) I don’t care for power
being a soft-button on the keyboard and would much prefer a discrete
power button, b) I would like to have a delete key that doesn’t require
pressing the Fn chord, and c) that position is easy to hit by accident.
In fact I did just that while writing this article. It’s a nuisance.
I WOULD also like dedicated pageup and pagedown buttons instead of
fn-up arrow and fn-down arrow. But not if it required having a keyboard
that wasn’t built as well.
There’s some weirdness with certain key combos involving the
feature-key (aka Windows key) and fn-key though. I used to map
feature-left and feature-right to swap desktops left and right, and I
am partial to the ctrl-pageup/pagedown key bindings for switching tabs
in Firefox. Feature-left and feature-right didn’t work though, and for
some reason ctrl-fn-down (aka ctrl-pagedown) works but ctrl-fn-up
doesn’t work. Apparently the keyboard driver is a custom firmware of
some kind instead of just hooking into an internal USB port, and like
all the rest of the firmware on the thing, is open-source. I kind of
want to dig into the code and see if I can fix it, or at least see
what’s going on with it, as if I needed another side-project.
I did download a newer keyboard firmware and flash it in February or
so, to see if it made any difference, but it didn’t at the time. Maybe
I should see if there’ve been any updates. Also I didn’t quite realize
at first that updating the firmware was a two-step process with a
reboot in the middle, so it DID introduce me to the heart-stopping
experience of rebooting my laptop and having the keyboard only output
gibberish into the console login prompt. …For about three minutes
before I said “hey wait a minute…” and plugged a USB keyboard in, at
least.
Touchpad
It’s a touchpad. It has two buttons beneath the surface because that’s
how we make touchpads now, despite it being entirely inferior to having
separate buttons. Tap-to-click doesn’t seem to work by default, or
maybe I turned it off at some point and forgot. Two-finger scrolling up
and down works by default. I’ve read some complaints that people don’t
like this touchpad but while it’s maybe a little rough, to me it seems
fine. It isn’t the magical silky Apple touchpad feel, which I hate, but
it feels okay with a matte finish, it hasn’t gotten a hole worn into
its finish after a few months of use like some cheap laptops I’ve used,
or like a few rather expensive laptops I’ve used (ahem, Lenovo). The
default settings feel a little slow to me so you might want to crank up
the pointer sensitivity a little in your desktop environment settings.
That said, I use an external mouse 95% of the time anyway, because mice
are better than touchpads. And before any Thinkpad lovers give me guff,
mice are better than the little nub things too. Either is perfectly
acceptable for a while, but for long usage? Mouse.
Display
It’s a very nice 1080p display. It’s matte rather than glossy, which is
objectively better, and I recall having to pay more than a little bit
extra for a matte display from various other laptop manufacturers in
the past. The backlight is evenly lit with no bright or dark spots I
can really notice. It’s too dim in full sunlight but is perfectly fine
anywhere else, including in the shade right next to full sunlight.
Unlike some, I am perfectly happy with a 1080p display on a laptop,
especially a $200 laptop. My work laptop has a 4K display and it’s nice
but not nice enough I really notice the difference. What I can not
stand is a 720p display, which is a resolution that needs to just die
in a fire, so good on the manufacturers for doing the right thing here.
Not much else to say about it the display, which is a good thing.
Power and heat
The Pinebook Pro has no fan; the metal bottom of the case is used as a
heat spreader. It’s nice. Unlike most laptops with fans, you can leave
it on a blanket or on your lap without any spacing and it won’t suffer
unless you’re doing something that keeps the CPU cranked to max all the
time.
The battery lasts anywhere from 5-8 hours depending on usage. Maybe 3-4
hours if you’re really hammering it constantly. Probably not quite as
long as we would want but certainly long enough to use it constantly
for an afternoon plus some comfortable extra. The backlight on the
screen accounts for like half its average power usage, so turning the
screen brightness down when possible helps a lot. The power supply is
15 watts, so this is really quite a low-power device.
Linux support for the CPU’s power management is firmly okayish. I
strongly recommend setting the default power mode of the Linux kernel
to performance rather than the default balanced. cpufreq is the tool
you want for playing with that, and you might have to edit a config
file to get it to apply your chosen setting at boot. If I recall
correctly, on Debian it’s a variable in /etc/init.d/cpufrequtils.
The default power supply comes with a 1 meter cable, which is too
short. I should get around to shelling out the $15 for a longer one.
Found a compatible one on Mouser at one point but it seems to have
vanished… oh, you can get a [36]longer cable from the manufacturer that
just plugs into a 3A USB-A phone charger. Or you can charge it via the
USB-C port with a 3A USB-C charger. One of those is probably the easy
choice.
My only real protest is that it often doesn’t suspend correctly; if you
close the lid on it it’ll either hang and require a reboot, or sit
there forever still on and sucking power. My XPS 15 used to do the same
quite routinely, so I’m honestly not sure whether this is a
hardware/driver problem or a Linux problem.
Storage and memory
The model I got has 64 GB of eMMC flash memory on it, which acts as the
main OS boot drive. I thought it was soldered on but they sell
replacements so maybe it just slots in somehow. Performance of it is
so-so-ish by flash standards, which means it’s objectively quite
excellent. Far better than a Raspberry Pi running on an SD card or USB
stick or any of that nonsense, so no ugly architectural I/O bottlenecks
there. I also shelled out a whole $7 for the M.2 adapter, and got a 512
GB M.2 SSD to use for /home. Installing it was trivial, though there’s
no big arrows saying “M.2 ADAPTER HERE” so you’ll want to look up the
diagram before opening the laptop up, and maybe print out a copy or
have it ready on your phone.
The Pinebook Pro can’t (currently) boot from the M.2 drive due to
something in how the bootloader is configured, and also can’t boot from
USB. But setting it up to have the eMMC as / and the M.2 as /home works
well. It does boot from microSD card just fine; when I was trying out
different distro’s it was convenient to have the distro I was trying
booting from a microSD card, then install it to the eMMC when I decided
I liked it. Installing to eMMC is touch harrowing for fear of bricking
the thing, but it worked out fine. Currently the u-boot bootloader is
on a set of small partitions on the eMMC drive, so if you nuke those
during the install process you might brick the laptop. I’m fairly sure
it’s possible to unbrick it if you do, but that will probably involve
pulling out the serial cable and u-boot manual, and I don’t really want
to bother with that. There’s apparently a few megs of flash storage on
a separate chip that’s intended for a bootloader to live on, but
nothing actually uses it for anything yet. Another fun side-project, as
if I needed another side-project.
A couple times I have had mysterious hard-locks that required a forced
reboot, which appeared to be related to writing a lot of data to the
M.2 drive. Very infrequent though. Someday I may try to track it down.
It has 4 GB of RAM soldered in. It’s Enough, if you’re a little
circumspect, though web browsers do their best to make that difficult.
Sound and microphone
This is probably the most annoying part, honestly. Sound on Linux is
always a giant clusterfuck for some reason, and for me the Pinebook Pro
is no different.
First off, good news, all the hardware seems to register more or less
as it should in ALSA. Or at least, if you select the
rockchip-es8316-codec device in alsamixer, you will get far more
settings and details than you would ever want, full of low-level
nonsense like “DAC Attack Time” and “ADC Soft Ramp” and other such
things. I’ve never had any good ever come of trying to dick around with
any of it, I’ve only had anything ever actually work by going through
PulseAudio. Doing that is basically plug-and-play, though came with
more issues that will be described in a moment.
Second… well. When I first got the Pinebook Pro almost the first thing
I did was open it up and install the M.2 adapter and drive. During this
I somehow gave one of the speakers a good yoink and it popped out of
its slot in the casing, dangling by its hair-thin wires. It slotted
back just fine, but my Pinebook’s external speakers, already in the
“acceptable but tinny” category, have alway produced a horrible,
gut-disturbing hiss that made me feel like there was a high-pitched
whine happening just past my auditory perception. It was like a music
class I had where the teacher used a synthesizer to play sound outside
my range of hearing, and was thoroughly unpleasant while at the same
time not being audible at all as anything other than faint white noise.
I often questioned whether I was imagining it – but if I tried to play
something, or even had it sitting with the speakers on but not playing
anything, I could tell and it was uncomfortable as hell after only a
few minutes. I screwed around with everything I could think of with no
effect: if the speakers were on, it was there. I couldn’t find anyone
else online mentioning something like this, so I wonder if I damaged
something by pulling that speaker out. I never tried to play sound
before I opened the thing up though, so I have zero basis for
comparison.
(Oh, I remember where else I’ve experienced that sort of thing: wearing
high-powered noise-cancelling headphones in a helicopter. Your eardrum
is like “I KNOW there’s lots of noise going on out there but I can’t
feel any of it.” It’s definitely not the same as something actually
being quiet!)
Anyway. In the end, I opened the Pinebook Pro back up and disconnected
the speakers entirely. Problem solved; if I want to listen to something
I use headphones. It works just fine. There’s still a little bit of
background hiss, but it’s just barely-noticable white noise, with no
migraine-inducing edge to it.
Also, back when the speakers were connected for some reason it only
seemed to detect one audio output device even when I have headphones
plugged in. Instead of letting me choose whether to output to speakers
or to headphones, any sound just played through both, all the time.
Rather defeats the purpose, doesn’t it?
Also, whenever the sound turns off it does so with an audible click or
pop. This HAS had complaints from other people about it, and maybe if I
tried I could find a solution, but with headphones it’s barely audible
so I’ve stopped caring about it.
Microphone… You know, I don’t think I’ve ever tried to use the built-in
microphone? I just tried the Pinebook Pro’s external mic, and can’t get
it to work at all. On the other hand, I’ve never had a built-in laptop
microphone that wasn’t awful. My work machine is some $2000 high-end
thing that came in a lovingly printed box hand-folded by artesinal
cardboardéures or something, and the built-in microphone is still
worthless. An external headset plugged into the Pinebook Pro’s
headphone jack works just fine.
Note again that this is with a slightly jank Debian install as of June
2020, after I gave the speaker hardware a good yank. So your milage may
vary based on hardware and software. These things tend to get better
over time.
Wifi + Bluetooth
Wifi Just Works. It has both 2.4 and 5 GHz bands, and according to the
spec should theoretically get up to 433 Mbps. From my bedroom, right
now, it easily tops 120 Mbps, so it’s officially Fast Enough.
Bluetooth, I’ve never tried, because I’ve never ever gotten Bluetooth
to work reliably with any computer, on any OS, using any device, ever.
I have a single set of very nice bluetooth headphones that are paired
to my cell phone, and that setup works great as long as I never, ever
touch anything about it. For everything else, there’s copper.
Software
OS support
Things on the software side have gone from “installer images are best
built with this shell script a random community member put together” to
“official support from several large Linux distro’s” extremely quickly.
Currently I am using a mostly-unmodified Debian Bullseye install and
all in all it works great. Things were a lot rougher in January, but by
now the only real caveat is that you want at a Linux install with at
least kernel 5.4, IIRC, since it includes a lot of Rockchip-specific
stuff in it that the manufacturer contributed. Earlier kernel version
than that and you have to faff around with a patched kernel, one way or
another. That said, I did this install using the aforementioned
[37]community shell script and it worked great. There’s apparently now
an official Debian installer for it as well, I should try it out
someday.
Apparently the official default OS is now Manjaro linux. I tried it
once, it worked fine. Playing with different distro’s is no longer as
interesting as it once was. Sorry.
Performance
Performance is, uh… pretty bad. It’s a 6-core asymmetric CPU with 2 big
and 4 little cores, and I’d really prefer if it was just 3 or 4 big
cores. The smaller cores are probably a lot more useful on a cell phone
that spends most of its time idle, but on a laptop you’re probably
going to have at least one of the big cores on basically all the time.
(Though it’s interesting that both the PinePhone and PineTab use the
Allwinner SoC used by earlier Pine64 boards, rather than the ROCKPro
used in the Pinebook and Pinebook Pro. Weird.) I’ve ad-hoc benchmarked
it as being about 75% the speed of an old laptop with a Core 2 Duo from
like 2008. On the other hand, that old laptop weighed 7 lbs and its
battery lasted 90 minutes tops, so, progress is not necessarily
one-dimensional. And it had a 720p screen. Ugh.
Graphics performance is also nothing to write home about either, which
might or might not be due to the open-source drivers being not as good
as ARM’s official ones. (More on that later.) The drivers aren’t bad,
there might just be room for improvement.
Using modern (bloat-y) desktop environments, the Pinebook Pro chugs. No
two ways about it. GNOME chugs, though it’s more or less usable when
you turn all the shiny unnecessary distracting effects off. KDE chugs;
I’ve never perceived KDE to be particularly lightweight, so I think
it’s madness that the official default OS install uses Manjaro with
KDE. Cinnamon chugs, though not as bad. MATE chugs a bit, though really
is pretty usable. I was rather miffed when even very lightweight things
like AwesomeWM had a small but noticeable delay when swapping desktops.
Not enough to actually get in your way, but far from perceptually
instant. I mean, come on, what does it take to make this thing run
well?
Then I decided to mess around with Wayland on a whim, and tried sway, a
lightweight compositor. (Currently the lightweight compositor, really.)
And it works like a dream. Absolutely perfectly, with no fighting with
graphics settings and no apparent lag or delay in any way. So I
switched to using that. I suspect the slightly chuggy nature of all the
X11 WM’s is due to a combination of X11’s fundamental inefficiency, and
the X11 stack and graphics drivers not being terribly well optimized on
this hardware. If sway runs fine then AwesomeWM or Fluxbox really
should too. It’s obviously possible for a Pinebook Pro to run a desktop
environment in a reasonably performant manner, it just seems not to
when using X11.
I didn’t like sway at first. I’ve used keyboard-heavy WM’s in the past
and always eventually gave up on them when I had to do some cruel and
unusual task such as, you know, be able to function on a computer that
I hadn’t spent two hours customizing Just Right. But sway just worked
so well on the Pinebook Pro that I put the time in to learn it, and now
I like it enough to use it by choice on my massive beefy desktop as
well. It’s nice, and works well even on complicated screen layouts and
such once you get a handle of how to customize it. So I use it even if
there is no conceivable circumstance in which I would want my tabbed
window container to contain another tabbed window container, and I have
no idea how to undo it once I’ve accidentally gotten it into that
state. Maybe I’ll get sick of it and switch back to Cinnamon in a few
years, who knows.
Ok, so all that aside, here’s what the Pinebook Pro can do just fine:
* Run Firefox half-decently with a few dozen tabs that aren’t full of
bloat (ie, not Medium, Reddit, or mainstream news sites)
* Browse Imgur, if you only have it open in one tab
* Run Discord in the browser
* Run Youtube
* Play video with vlc or something
* Run Dosbox at 40 MHz or so, which is about as fast as you need to
play DOS games.
* Emulate any game console less than or equal to a Playstation 1.
(Haven’t tried N64 actually, but it should be okay.)
* Run cargo check on 10,000 lines of Rust in ~3 seconds.
* Have a pile of terminals with SSH and tmux sessions to various
other machines where the real heavy lifting happens
* Run Krita or GIMP vaguely decently
Here’s what it can’t do:
* Compile rustc using all 6 cores at once – you’ll use up all your
memory far before anything useful gets done.
* Play video games newer than 2003 or so – Plenty of good games out
there older than that though
* Run Wine using qemu to userland-emulate the x86 code – It works,
incredibly enough, but you won’t get anything useful done.
So all in all, now that I’ve trimmed the fat off my workflow I’m pretty
happy with it.
Graphics
Ok, so here’s the skinny. The Rockchip RK3399 system-on-chip uses a
Mali T860 MP4 GPU, which is ARM’s cellphone-grade GPU from about 2015.
The microarchitecture is “Midgard 4th gen”, which you may see if you
try to rummage around in too many graphics driver docs. From all the
information I can find, it should be a quite decent GPU. ARM even
provides a Linux driver in the form of an open-source portion and a
closed-source blob, which is frankly better support than I ever
expected from them. It doesn’t support desktop-profile OpenGL 4, but it
does support OpenGL ES 3.2 which is pretty much the same thing, as well
as Vulkan 1.0 and apparently Direct3D 11 if you have a way to run
Windows on it.
The problem is that, as far as I can tell, ARM seems to supply these
drivers in a toss-over-the-fence way. There’s a limited set of
downloads for a limited set of platforms, and for everything else they
basically say “here’s the pieces, have fun putting them together”. In
Debian and Manjaro it looks like the pieces haven’t been put together
yet. In Ubuntu 20.04, in fact, it looks like maybe they have; there’s
mali-t76x-* packages available for install. Maybe I should try it out
and see how it works. It also looks like the official ARM drivers might
end up as an option in Debian someday, as there’s a mali-midgard-dkms
package that appears to contain the open-source portion of the driver.
Until that happens though, instructions for how to put the pieces
together properly appear to be out of the reach of mere mortals, or at
least mere mortals who don’t have a few weeks to put into figuring it
out. As if I needed another side project.
So how good is the Mali T860? Well, there’s two axes to measure it by.
Users care about performance, programmers care about features.
Performance? It’s probably fine, as embedded GPU’s go. Vague
specifications and a lot of guessing put it at something like 2/3 of
the Adreno 506 in my cell phone, 1/5 of the Intel Iris HD 530 that was
in my XPS 15, or 1/64th of an AMD RX 480. But I like doing gamedev for
fun, so I’m going to talk about features. If you don’t care about that,
skip the next section.
Graphics nerd time
So, like I said, the Midgard GPU architecture is basically the
successor to the venerable Mali-400 series of chips, which are still
common in low-cost applications where OpenGL ES 2.0 is Good Enough. The
Pine64 board, ancestor of the ROCKPro 64 the Pinebook Pro contains,
uses the Mali 400. Tons of old/cheap phones use it. The ODroid C2 and a
ton of other Raspberry Pi knockoffs use it. In terms of technology, the
Mali-400 is about on par with the Intel HD3000 series: it supports
OpenGL ES 2.0 and OpenGL 2.1 or maybe 3.mumble if you’re lucky, which
basically means you can use vertex buffers and old-fashioned shaders.
If you just want to display some stuff on the screen it works fine.
Honest. There’s nothing wrong with it.
Apart from the fact that you’re basically stuck using 2005 graphics
programming and it’s a pain in the ass. OpenGL has been a fustercluck
for 20 years and it really hasn’t been even remotely good or sensible
until OpenGL 4/OpenGL ES 3, which is when [38]Things Mysteriously
Started Sucking Less. Before that you’re lost in an endless morass of
poorly-defined feature compatibility, inconsistent API’s and shader
language versions that are constantly missing just the one feature that
would make life convenient. So I was really looking forward to having
the Mali-T series chip available and being able to write code using
OpenGL ES 3. It isn’t MUCH better, but it’s still a step in the right
direction. Plus, AS EVERYONE KNOWS BECAUSE THESE VERSION NUMBERS MAKE
SENSE AND ALWAYS HAVE, WebGL 2 is a strict subset of ES 3, and ES 3 is
a strict subset of OpenGL 4.3, so you can pretty much write OpenGL ES 3
and have it run on a wide variety of different platform, which is
supposedly the whole point of OpenGL anyway. Plus if you have hardware
that can run OpenGL ES 3, you also have hardware that can run Vulkan,
and there is no better way than writing Vulkan code to turn huge
amounts of blood, sweat and tears into mysterious graphics bugs for a
month or three until suddenly it all clicks and you have a fast, solid
graphics engine.
But you can’t do that on the Pinebook Pro without figuring out the ARM
drivers, which I don’t feel like doing. In lieu of that the fine folks
at Mesa, overworked and underloved as always, have a pure open-source
driver called panfrost (as it targets both the Midgard and newer
Bifrost GPU architectures). As is typical with most
non-vendor-supported open-source drivers, it takes zero setup and works
pretty well for the average use case, but doesn’t seem to be exactly a
speed demon – and it only supports OpenGL ES 2.0. It appears that they
are [39]hard at work on OpenGL ES 3 support, which is certainly
exciting; maybe that will be usable for everyday life in a year or so.
I kinda want to help them, it would be a fun chance to actually dig
into how graphics drivers are made and contribute to something Real And
Useful. As if I needed another side project.
In the mean time, it works fine for driving the display and running old
games, but you’re not going to be able to use Shadertoy or play
Sandspiel.
As a sidenote, all the ARM GPU architecture names are from Norse
mythology. From oldest to newest they are:
* Utgard: The Mali 200/300/400 architecture, the far-flung fortress
of wicked and tricky giants
* Midgard: The Mali TXXX architecture, the world of humans
* Bifrost: The Mali GX1/GX2/GX6 architecture, the bridge of rainbows
connecting Midgard to the world of the gods
* Valhall: The Mali GX7 architecture (ARM version names make about as
much sense as OpenGL), the golden palace of the gods
I feel like the ARM hardware devs might have Opinions about the
progress of technology and the quality of the systems they’re creating.
:-D
Misc. niggles
Recently I’ve noticed that once in a while it fails to boot; it gets
into the Linux kernel but can’t load a particular Rockchip-specific
firmware or kernel module. I reboot and it’s fine. I might be pissed
about this, but my fancy expensive AMD Ryzen motherboard forgot that
its M.2 drive existed last week and I still haven’t figured out why or
how, so, I’ll take it. All software sucks, all hardware sucks.
The webcam probably works? I’ve never bothered trying, since… well,
Skype has no ARM64 builds, Zoom has no ARM64 builds, Discord only works
with webcams in Chrome, and I don’t use webcams all that much anyway.
Conclusion: Is it worth it?
So, after six months of this being my daily driver laptop, what’s my
conclusion? It’s certainly not painless or the best computer in all
possible circumstances, but I quite love the little beast. Should you
spend $200 on this featherweight, slow, well-built, immature,
vigorously-developed, partially supported pile of hardware? That’s up
to you. It’s a bit like a classic sports car: It’s not the fastest or
most trouble-free thing around, but everyone should own one once just
for the experience. So:
* If you want to spend $200 on a small laptop, there’s probably
Chromebooks out there that more powerful and more featureful, but
maybe not ones with better build quality, better selection of I/O
ports or better Linux software/hardware support. By the time you
rip ChromeOS off of it and install a Real Operating System you may
be in the exact same place in terms of having to fiddle around to
get anything to work.
* If you want to spend $200 on a powerful laptop, you can get a good
used one at Goodwill or some other secondhand electronics place,
but it will weigh 3x as much, probably have a 720p screen, and a
max 2 hour battery life if the battery works at all. By the time
you replace the battery and throw an SSD in it, you’ll have spent
almost the cost of the laptop over again, and chances are the GPU
will still suck.
* If you want to spend $200 on a cool laptop with great fundamental
capabilities, a lot of promise, a growing OSS community, and a good
manufacturer, the Pinebook Pro is a good choice.
Appendix: Conversations
From [40]
https://lobste.rs/s/rkfd2e/pinebook_pro_six_months
Hardware investigations
Two-finger scrolling up and down works by default
What is the touchpad? i2c-hid generic multitouch, I hope? What’s
touchpad related in dmesg? What does libinput list-devices say about
it?
I didn’t like sway at first. I’ve used keyboard-heavy WM’s in the past and alway
s eventually gave up on them
Check out Wayfire — it’s based on the same library as sway (wlroots)
but is much more flexible. Tiling is an optional plugin, by default
it’s a normal stacking desktop — with wobbly windows :) which are also
a plugin of course.
Run Firefox half-decently
Which graphics backend are you using in Firefox? Software, legacy GL or
WebRender? (about:support to check, MOZ_WEBRENDER=1 to try WR,
about:config layers.acceleration.force-enable to try GL) Also, I hope
you’re running native (MOZ_ENABLE_WAYLAND=1) not xwayland?
(UPD: WebRender doesn’t work on GLES2 yet it seems)
[Panfrost] doesn’t seem to be exactly a speed demon
huh, I think some of the dev blog posts mentioned outdoing the
proprietary driver in some places already?
Maybe the GPU hardware is just weak.
__________________________________________________________________
What is the touchpad? i2c-hid generic multitouch, I hope? What’s touchpad relate
d in dmesg? What does libinput list-devices say about it?
[ 3.339108] hid-generic 0003:258A:001E.0001: input,hidraw0: USB HID v1.10 Key
board [HAILUCK CO.,LTD USB KEYBOARD] on usb-fe3a0000.usb-1/input0
[ 3.361825] input: HAILUCK CO.,LTD USB KEYBOARD Mouse as /devices/platform/fe
3a0000.usb/usb3/3-1/3-1:1.1/0003:258A:001E.0002/input/input1
[ 3.363213] input: HAILUCK CO.,LTD USB KEYBOARD Touchpad as /devices/platform
/fe3a0000.usb/usb3/3-1/3-1:1.1/0003:258A:001E.0002/input/input2
[ 3.364559] input: HAILUCK CO.,LTD USB KEYBOARD System Control as /devices/pl
atform/fe3a0000.usb/usb3/3-1/3-1:1.1/0003:258A:001E.0002/input/input3
[ 3.429245] input: HAILUCK CO.,LTD USB KEYBOARD Consumer Control as /devices/
platform/fe3a0000.usb/usb3/3-1/3-1:1.1/0003:258A:001E.0002/input/input4
[ 3.430852] input: HAILUCK CO.,LTD USB KEYBOARD Wireless Radio Control as /de
vices/platform/fe3a0000.usb/usb3/3-1/3-1:1.1/0003:258A:001E.0002/input/input5
[ 3.432646] hid-generic 0003:258A:001E.0002: input,hiddev96,hidraw1: USB HID
v1.10 Mouse [HAILUCK CO.,LTD USB KEYBOARD] on usb-fe3a0000.usb-1/input1
So it looks like I was wrong about the keyboard not being USB, in fact.
Looks like there’s a USB HID controller with inputs for several devices
(some of which don’t exist). Thank you for the tip on libinput
list-devices; that’s a great tool! Here’s what it has to say about the
touchpad:
Device: HAILUCK CO.,LTD USB KEYBOARD Touchpad
Kernel: /dev/input/event2
Group: 2
Seat: seat0, default
Size: 48x32mm
Capabilities: pointer gesture
Tap-to-click: disabled
Tap-and-drag: enabled
Tap drag lock: disabled
Left-handed: disabled
Nat.scrolling: disabled
Middle emulation: disabled
Calibration: n/a
Scroll methods: *two-finger edge
Click methods: *button-areas clickfinger
Disable-w-typing: enabled
Accel profiles: none
Rotation: n/a
Also for the webcam, since it was nearby:
[ 3.048761] usb 2-1.2: new high-speed USB device number 3 using ehci-platform
[ 3.149294] usb 2-1.2: New USB device found, idVendor=0c45, idProduct=6321, b
cdDevice= 0.00
[ 3.150050] usb 2-1.2: New USB device strings: Mfr=2, Product=1, SerialNumber
=0
[ 3.150697] usb 2-1.2: Product: USB Camera
[ 3.151063] usb 2-1.2: Manufacturer: Sonix Technology Co., Ltd.
It’s then followed by a USB disconnect message for that device, so I
expect you just have to do something specific to turn it on.
Which graphics backend are you using in Firefox? Software, legacy GL or WebRende
r? (about:support to check, MOZ_WEBRENDER=1 to try WR, about:config layers.accel
eration.force-enable to try GL)
Whatever the default is on Firefox 68.8.0esr. In about:config it does
say HW_COMPOSITING: blocked by env: Acceleration blocked by platform so
I expect it’s either software, or legacy GL with some features turned
off. Attempting to force acceleration in about:config
layers.acceleration.force-enable results in the same message for that
section. If it’s worth anything, since I’m not ACTUALLY sure what I’m
looking for, AzureCanvasBackend is set to skia.
Also, I hope you’re running native (MOZ_ENABLE_WAYLAND=1) not xwayland?
Annoyingly, when I use firefox MOZ_ENABLE_WAYLAND=1 I get this:
dbus[6672]: arguments to dbus_message_new_method_call() were incorrect, assertio
n "_dbus_check_is_valid_path (path)" failed in file ../../../dbus/dbus-message.c
line 1366.
This is normally a bug in some application using the D-Bus library.
D-Bus not built with -rdynamic so unable to print a backtrace
Redirecting call to abort() to mozalloc_abort
I’d stumbled across that before, then forgotten about it. So I was
using xwayland. Apparently it’s this bug:
https://bugzilla.mozilla.org/show_bug.cgi?id=1551664 Easy workaround is
to run Firefox with MOZ_ENABLE_WAYLAND=1 firefox –no-remote . Now that
I’m doing that performance seems… about the same really, but I’ll keep
playing with it.
huh, I think some of the dev blog posts mentioned outdoing the proprietary drive
r in some places already? Maybe the GPU hardware is just weak.
That’s quite possible! Experience has just taught me to assume that if
you have anemic GPU performance on Linux, the driver is the first
bottleneck. I haven’t done any actual graphics benchmarks on it, mainly
due to the annoyance with having to find/write interesting programs
that don’t assume a newer version of OpenGL is available.
__________________________________________________________________
Huh, wow, USB, but still standard HID multitouch, nice.
Annoyingly, when I use firefox MOZ_ENABLE_WAYLAND=1 I get this:
That’s what you get for using old “stable” versions: “Firefox
68.8.0esr” — that’s 10 major versions behind Nightly (78.0a1) :P
Radio interference from USB3
(If you want to have a real shit time, try to use a USB-C video camera (like an
Intel Realsense, for example) next to a sensitive GPS receiver or long-range wif
i. Not with the PBP, just with anything.)
What would happen? I don’t own a sensitive GPS receiver or long-range
wifi :)
__________________________________________________________________
Unless you had very good quality USB hardware, they would get totally
swamped by the radio interference radiating from the USB
cable/connector. You know, the way that it’s theoretically not supposed
to do to be able to pass US FCC regulations. I do wonder how long
before it causes a problem for an airplane; it can certainly cause
problems for a drone navigating by GPS.
[Some back-and-forth skipped]
I was referring to items in the aircraft or mounted on the aircraft,
sorry that wasn’t clear.
Also the problem isn’t interference in the CPU, the problem is the
antennas for the communication or GPS system.
Citation:
[41]
https://www.intel.com/content/www/us/en/products/docs/io/universal-
serial-bus/usb3-frequency-interference-paper.html . Also I’ve tried to
fly a drone with a small computer and USB3 camera attached to it. USB2
camera? Fine. Other sensors that transfer their data over ethernet?
Fine, even with gigabit ethernet and unshielded cables. USB3 camera?
Drone’s GPS gets swamped with noise and it gets lost, even with
expensive “shielded” cables. Can happen with wifi as well; you can find
lots of people complaining about it if you search.
Audio hardware
Thanks for the detailed writeup. Seems like the machine still needs
some more polish in the audio department. Having a lot of low-level
options via ALSA sound interesting to me, actually. As someone who
produces music on Linux, I prefer to give ALSA a good kicking until it
works, rather than dealing with Pulseaudio’s latency issues. Is it
possible to record the internal stereo mix directly, ie. can you select
it as a recording source without resorting to jackd trickery?
__________________________________________________________________
Is it possible to record the internal stereo mix directly, ie. can you select it
as a recording source without resorting to jackd trickery?
I have no idea, but if you can give me some pointers on how to find out
I can try. If it’s worth anything, the full dump from the alsa-info
script is here:
[42]
http://alsa-project.org/db/?f=5363202956bb52364b8f209683f813c662079
d84
__________________________________________________________________
Thanks. Judging from this output, it is not possible to record the
internal mix out of the box. That’s somewhat disappointing. It’s not
surprising considering this has been the norm for off-the-shelf laptops
for several years now, but I would have expected an open hardware like
the Pinebook Pro to fare better.
* [43]computer
* [44]hardware
powered by [45]gitit
[46][logo.png]
Site
* [47]Front page
* [48]All pages
* [49]Categories
* [50]Random page
* [51]Recent activity
* [52]Upload a file
* [53]Help
____________________ Search
____________________ Go
This page
* [54]Raw page source
* [55]Printable version
* [56]Delete this page
[LaTeX_____] Export
References
1.
https://wiki.alopex.li/_login
2.
https://wiki.alopex.li/_logout
3.
https://wiki.alopex.li/_login
4.
https://wiki.alopex.li/_logout
5.
https://wiki.alopex.li/PinebookProSixMonthsIn
6.
https://wiki.alopex.li/_edit/PinebookProSixMonthsIn
7.
https://wiki.alopex.li/_history/PinebookProSixMonthsIn
8.
https://wiki.alopex.li/_discuss/PinebookProSixMonthsIn
9.
https://wiki.alopex.li/PinebookProSixMonthsIn
10.
https://wiki.alopex.li/PinebookProSixMonthsIn#introduction
11.
https://wiki.alopex.li/PinebookProSixMonthsIn#context
12.
https://wiki.alopex.li/PinebookProSixMonthsIn#hardware
13.
https://wiki.alopex.li/PinebookProSixMonthsIn#build
14.
https://wiki.alopex.li/PinebookProSixMonthsIn#ports
15.
https://wiki.alopex.li/PinebookProSixMonthsIn#keyboard
16.
https://wiki.alopex.li/PinebookProSixMonthsIn#touchpad
17.
https://wiki.alopex.li/PinebookProSixMonthsIn#display
18.
https://wiki.alopex.li/PinebookProSixMonthsIn#power-and-heat
19.
https://wiki.alopex.li/PinebookProSixMonthsIn#storage-and-memory
20.
https://wiki.alopex.li/PinebookProSixMonthsIn#sound-and-microphone
21.
https://wiki.alopex.li/PinebookProSixMonthsIn#wifi-bluetooth
22.
https://wiki.alopex.li/PinebookProSixMonthsIn#software
23.
https://wiki.alopex.li/PinebookProSixMonthsIn#os-support
24.
https://wiki.alopex.li/PinebookProSixMonthsIn#performance
25.
https://wiki.alopex.li/PinebookProSixMonthsIn#graphics
26.
https://wiki.alopex.li/PinebookProSixMonthsIn#graphics-nerd-time
27.
https://wiki.alopex.li/PinebookProSixMonthsIn#misc.-niggles
28.
https://wiki.alopex.li/PinebookProSixMonthsIn#conclusion-is-it-worth-it
29.
https://wiki.alopex.li/PinebookProSixMonthsIn#appendix-conversations
30.
https://wiki.alopex.li/PinebookProSixMonthsIn#hardware-investigations
31.
https://wiki.alopex.li/PinebookProSixMonthsIn#radio-interference-from-usb3
32.
https://wiki.alopex.li/PinebookProSixMonthsIn#audio-hardware
33.
https://www.pine64.org/pinebook-pro/
34.
https://www.pine64.org/blog/
35.
https://www.pine64.org/rockpro64/
36.
https://store.pine64.org/?product=2-meters-length-usb-to-type-h-barrel-power-cable
37.
https://github.com/daniel-thompson/pinebook-pro-debian-installer
38.
https://wiki.alopex.li/TheStateOfGGEZ2020#opengl
39.
https://www.collabora.com/news-and-blog/blog/2020/02/27/experimental-panfrost-gles-3-support-has-landed/
40.
https://lobste.rs/s/rkfd2e/pinebook_pro_six_months
41.
https://www.intel.com/content/www/us/en/products/docs/io/universal-serial-bus/usb3-frequency-interference-paper.html
42.
http://alsa-project.org/db/?f=5363202956bb52364b8f209683f813c662079d84
43.
https://wiki.alopex.li/_category/computer
44.
https://wiki.alopex.li/_category/hardware
45.
http://github.com/jgm/gitit/tree/master/
46.
https://wiki.alopex.li/
47.
https://wiki.alopex.li/
48.
https://wiki.alopex.li/_index
49.
https://wiki.alopex.li/_categories
50.
https://wiki.alopex.li/_random
51.
https://wiki.alopex.li/_activity
52.
https://wiki.alopex.li/_upload
53.
https://wiki.alopex.li/Help
54.
https://wiki.alopex.li/_showraw/PinebookProSixMonthsIn
55.
https://wiki.alopex.li/PinebookProSixMonthsIn?printable
56.
https://wiki.alopex.li/_delete/PinebookProSixMonthsIn