Spending quality time with the Pi-Top.

05 May 2017

A couple of months ago for my Lesser Feast I decided to treat myself to a toy that I've had my eye on for a couple of months: A Pi-Top laptop kit.  My fascination with the Raspberry Pi aside (which includes, to be honest, being able to run a rack full of servers in my office without needing to install a 40U rack and a new 220 power feed), it strikes me as being a very useful thing to have under one's desk as a backup deck or possibly a general purpose software development computer.  Most laptops have one unique motherboard per model and if you want to upgrade (or need to replace it) you're pretty much limited to buying a brand-new laptop.  To upgrade a Pi-Top you just need to buy a new RaspberryPi, slide a panel aside, and swap a few cables, a system design that I think could be useful indeed.  It also has remarkably few components; the screws and fasteners aside, the PiTop is composed of only a few modules: A base with a battery, a keyboard and touchpad panel, a lid with display, a black lexan access panel, a hub circuit board that ties everything together, and a RasPi.  You can get a couple of modules to go with it, such as a prototype board for electrical engineering experiments and modular speakers, all of which attach to a sliding rail and plug into a unique pinset on the hub.  I'm not an electrical engineer by any means but I have built many a kit over the years, and from eyeballing it it looked like a fairly simple build.  I didn't document the build with photographs or anything because I didn't think to do so at the time.  Sorry.

For starters, I didn't order the protoboard module because, ultimately, I'm not much of an electrical engineer, but I did order a pair of speakers because I don't live without music.  Plus, I have some half-assed ideas for code jamming with the copy of Sonic Pi that comes with PiTop OS.  My PiTop arrived after a couple of weeks as a drop-ship from China; unfortunately there was not much in the way of package tracking at all so it was a surprise when it arrived on my doorstep via DHL one afternoon.  The PiTop has a fairly sturdy case that is more or less normal laptop sized.  By my measurements, it's about 13.5 inches long by 8.25 inches wide.  The back side is about 2 inches high and tapers to a little under 0.5 inches at the front edge at a fairly steep slope.  The somewhat unusual dimensions mean that a PiTop will fit snugly inside your average 15 inch laptop carrybag or sleeve.

Insofar as the build is concerned, most of the tools you need are packed with the PiTop kit.  Just to be safe I had a set of screwdrivers handy in case I needed to adjust anything.  The kit has a slightly tricky display/lid attachment process that accounted for most of the time I spent on the build.  This consisted of figuring out how to mount the hinges correctly.  One of them was no trouble at all, but the other just wouldn't fit no matter how I positioned it.  I had to loosen one of the screws to get it to fit together properly because the easy hinge was already loose but the difficult one had a tighter screw.  Note to self: Never assume everything has the same tension applied to it out of the box.  Popping the keyboard panel into place was a little tricky because some of the pop-mounts took and some just didn't.  This is par for that particular course and doesn't seem to impact either the usability or structural integrity of the unit.

When it comes to connecting all of the wiring harnesses I highly recommend the use of a good flashlight and referring to the PDF of the assembly instructions two or three times.  The connectors are very small and it's sometimes hard to see exactly what you're doing.  I don't think you can mate them incorrectly and damage the jacks but don't take any chances.  Measure twice, cut once.  The unique magnetic panels on the underside of the chassis that cover the RasPi mountings seem sturdy and very solidly attached.  Mounting the RasPi was fairly easy but positioning it correctly so that all of the cables fit into the slots to keep them neat took some fiddling.  It was also tricky because the four USB ports of the RasPi (a version 3) that came with the kit needed to be positioned just right so that the keyboard/mouse board would plug in correctly.  This means that two of the four USB ports are exposed through the window on the right-hand side of the unit but they're maybe an inch back, which makes getting to them a trick.  This also means that the fourth port is usable but not accessible from outside.  The solution is fairly straightforward: Slide the black lexan panel aside and plug things in from above and not the side.  This is not a big deal.  However, this also means that you can't access the RasPi's headphone jack.  I don't have a good fix for this, though I am considering getting a little USB audio device to use for that purpose (and possibly for performing, if I ever do that).  Positioning the RasPi in an optimal way involved a lot of loosening screws, sliding the board, and tightening screws again, over and over.  It's easy to do if you partially open the PiTop and rest it on its side.

The PiTop uses a variant of Raspbian that includes a few custom packages that control Pi-Top specific things, such as the circuit controlling the battery and the hub board itself.  Because it can be difficult to find on the site, a disk image is downloadable from here.  If you know how to use Raspbian in particular or Linux in general, you should be in familiar territory, so don't worry about the learning curve.  A free warning: DO NOT run `sudo apt-get dist-upgrade` to update it to the latest and greatest of everything, because you will mess up some functionality.  I made this mistake and had to re-image the microSD card.  It was not a fatal problem, merely irritating that ate up an hour or so.  Use the command sudo apt-get upgrade command only to update the system's packages.

The PiTop's relatively low price ($300us with a RasPi included) and orientation to the STEM educational market make it seem like it would be pretty chintzy and have a crappy LCD panel, but this is not the case.  In point of fact it has a very crisp and clear display that's easy to look at for a couple of hours at a time.  It boasts a fairly average screen resolution, 1366x768 pixels widescreen, which isn't so high that you need to mess with your font sizes to read everything.  Upon powerup it drops you into a customized workspace environment tailored for the primary use case of the Pi-top - educational use - but you can make this not the default fairly easily.  The desktop environment is LXDE and is about as lightweight as it get, but needs a little customization to be more suited for power users.  If you're not, don't worry about it.  Chromium is the default web browser but if that's not your preference you'll have to install your own.  Firefox, of course, is available in the package repository.

The battery life is said to be roughly 10 hours of constant use.  They're not kidding.  I've never had a laptop with this kind of kick-ass uptime before and I had to work to run it down.  If you look at the bottom panel during assembly you'll see a large, thin metal plate permanently attached.  That entire thing is the battery and is connected to the hub (and thus to the RasPi) by a small connector so it also has finely grained power monitoring of the sort that laptops several times the PiTop's price have.  To prevent the battery from developing a memory and not storing as much charge as it used to, the battery slowly discharges over time.  If you don't use your Pi-Top for a while you'll find that you'll need to plug it in and let the battery recharge.  Do not be alarmed.

True to other people's accounts of the unit, the keyboard is a little dodgy.  Consider disabling the key binding that opens the menu because it can get irritating if you're on a roll.  I recommend using the Obkey utility to do this.  Sometimes a key will fail to register when you press it, which makes it hard to keep going when you're on a roll.  The keyboard is also a little closer to the leading edge of the laptop's body than most laptops so that might take a little getting used to.  The touchpad is in an awkward place on the right-hand side of the keyboard.  If you're used to using a mouse it's not really problematic because you're used to reaching to the side.  What is somewhat problematic is that the touchpad isn't very sensitive; if you're used to tapping, you might need to tap serveral times.  If you're not, the buttons take a little more pressure to register than feels comfortable.  A few people have mentioned these problems to the company on their forums, if anything changes that's the first place they'll be mentioned.

As one might expect of me, I spent some time trying to make Arch Linux for the RasPi3 work on my PiTop using one of the collections of tools for PiTop OS that ostensibly will let you get them running on other distributions.  I never really got them to work.  For reasons unknown to me after a week or so of hacking I was able to get Arch Linux to actually boot once out of every two or three attempts.  Not a few times when I did coax the the PiTop to boot, the screen was in a corrupted text mode - not quite a snow crash but just as not working.  When it did boot I was able to interact with the system for only a short time before it froze up entirely, and I was unable to SSH into the unit from outside.  After a week of tweaking, futzing swearing, and comparing config files across distros to see what PiTop OS did differently, I gave up and went back to using PiTop OS.  If anybody's gotten Arch Linux or any other distribution to work on a PiTop, please contact me, I'd very much like to find out how you did it.  I also think it's interesting that PiTop OS uses a home-grown wireless network configuration utility rather than the more venerable NetworkManager common to just about every distro out there.  I must confess, I wouldn't mind seeing PiTop OS' network utility in more distros because it seems to suck a bit less.

So, that's about it.  While I'll confess to a little frustration with the PiTop, most of it's due to the fact that I like to hack around and try to push boundries a bit, and I had difficulty doing that.  My best hypothesis is that it has to do with the hub board of the RasPi, because I run Arch Linux on one or two of my Raspberry Pi servers around the office and they don't seem to care one way or another.  It weighs a bit more than Windbringer but is a bit smaller on the X coordinate, and the keyboard lived up to its reputation.  For my particular use case (traveling with a laptop to places where carrying my everyday laptop would be inadvisable) I think I can live with the PiTop's quirks.  If you're looking to buy a laptop for a child as a first computer or you have a precocious computer geek for a youngster who's looking for something to take to college or hack around on, I think this would be an ideal computer to purchase.  All things considered, I give it 6.5 out of 10 wrenches: Not perfect, has a few quirks, but perfectly servicable and emminently hackable.

Now I just need to find out what it wants to be called...