Through the Looking Glass
Notes on the pi-top
I got my pi-top, and it’s already providing an interesting view on what Blackbook could be. There’s a bunch of things that I like about it, like how easy the case is to open, the modrail design, and the inclusion of an (admittedly rinky) “multitool” inside the chassis (also, admittedly, which does work for the screws and μSD card).
Friction and the Main User Interface
The first thing about Polaris, the Linux distribution shipped with the pi-top, is that it boots up single user to the environment with a dashboard. The dashboard has links to a bunch of development and educational resources; it sort of functions as a mobile-like view of what someone who got one of these is likely to want to do. It’s a little slow to boot up, but I like that it goes straight into a frictionless productivity environment. Considering the target user for this is someone who wants to hack some stuff, it’s a pretty good experience. As an Experienced Security Engineer © I have serious qualms with this. Setting aside the risk of laptop theft, this works well for someone.
The two big security threats here are laptop theft (someone ending up with your Github SSH keys, for example), and someone local accessing your laptop (the pranking friend attack). I like the idea of a fingerprint scanner for identity and autologin; but I wonder how to use a physical token to boot the machine up. The slow boot speed means suspension is something I am more likely to do than a powerdown.
Better persistence would help out; if I booted up and the previous state of the machine was restored, the longer reboot time wouldn’t be so bad. Adding up the time it takes to get the stuff I’m working on back to the time it takes to boot, though, and the whole thing becomes a pain. The goal here is really to make powering off the laptop more useful than just suspending it; persistence removes one of the major draws for suspending. Then it becomes a matter of balancing the security benefits of powering off with the speed benefits from suspending.
I like the idea of the fast boot with autologin; I ended up switching to a password because the drive isn’t encrypted. If there was an encrypted drive, I’d be totally fine with just having the boot decryption password.
One of the other challenges with the user interface is how quickly it can lock up when the system is running low on memory or is under a high I/O load. This probably merits an investigation into whether i3 or stumpWM help at all with this. The Pi has 1024M of memory, and Polaris defaults to 256M of graphics memory. This leaves only 768M for the rest of the system and it goes by quick. Just loading Spyder3 puts the system at around 60% memory usage. I’ve been struggling to compile SciPy because building the native parts eats up all the memory. I’m going to have to experiment with tuning the split here and seeing how much I really need graphics-wise.
On disk access
The μSD card has quite limited I/O bandwidth. During the unpacking phase of an
apt-get upgrade, it took 50s to
cargo run a bare Rust program. When the system is under high I/O load, it becomes nearly unusable. There are benefits to using these cards, namely that they’re cheap and easy to stockpile. At the same time, this bandwidth limitation might be frustrating to some people. I looked at hard drives for it; the SSDs all seem to be done using a USB to SATA adapter. The performance benefits are probably not as big as I’d hope for, so I think I’m going to stick with a 128G μSD card for now.
Surfing the ’net
Using this machine has made me keenly aware of how truly terrible, horrible, no good, very bad much of the web is; some of this might just be Chromium - I use Firefox at home, but I haven’t installed it yet on the pi-top (which comes with Chromium). I doubt it, though. I shudder to think what it would be like without uBlock Origin… Tabs typically have between 100 and 200 MB resident, which boggles the mind. netsurf works well, but a lot of the web is “broken” (a lot of places go so far as to flat out refuse to serve you pages) but the total resident size for the same set of tabs in netsurf is under 80M. There’s been plenty of discussion on the subject; suffice it to say that most sites aren’t delivering value commensurate with their resource cost.
The battery life isn’t great. I think under typical workloads so far (which have admittedly involved a lot of installing things), I get 3-4 hours. This raises questions about the suitability of the 3B+ for Blackbook. I could probably finangle a Pi Zero in there. Alternatively, I could look for even lower power boards with a similar footprint under the caveat that the case is pretty optimised for the model 3.
I’ve been doing some half-hearted investigations into the charging circuit, which doesn’t seem to have any docs or good hack points. I’m not sure yet how to get a solar panel on it. I need to do a power budget for the thing, too.
I was able to hook up an Adafruit Feather M4 express with LoRa featherwing inside, making a builtin LoRa radio. It just barely fits; I thought about putting an RFM95 breakout inside, but that would be more work than its worth, I think, and I’m not 100% sure of the modular rail pinout. One thing I need to look into is how this affects the power usage. At first, it was running CircuitPython, but then, surprisingly, PlatformIO worked without problems. It’ll probably end up as a LoRa modem over serial.