[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