One of the things I did early during the COVID shutdown was buy myself a Raspberry Pi 400 (the one built into a keyboard) along with the camera module and some lenses. I did not realize that the Pi 400 did not have the required hardware interface to work with the camera (if I recall, the 8GB Pi 4 was already sold out, because a lot of people decided to play with Raspberry Pi devices during the lockdown).

Anyway, I never got to play with the camera module and in any event I think I lost track of it during my move to Finland. Maybe it will show up.

The Pi 4 was pretty much perpetually out of stock ever since, with scalpers reselling the device for steep markups on Amazon. But, the Pi 5 seems to be easy to get, at least for the moment. As I type this, my microSD image is being verified…

When I got my previous Raspberry Pi, I was working at Google which means I was spending a lot of time using Linux, so messing around with the Pi was fun and easy. I got b8rjs working on it and played around. I’ve since tested xinjs on my old Raspberry Pi, and even found a bug (if I recall correctly, I assumed browsers supported MathML and the Pi’s browser does not).

Out of box experience

First thing, I received the Raspberry Pi 5 kit in a ridiculously large, nearly empty box that was mostly full of padding paper. Next, it was hard to open the white cardboard boxes without tearing them, so I just gave up.

The case doesn’t include screws (which it seems designed for) or instructions, so I googled the instructions and they were a bit poor (e.g. they told me to make sure the fan was plugged into the socket marked “FAN” rather than providing a diagram (it’s not in the obvious place and it comes with a piece of plastic blocking it, so it doesn’t look like a socket. Luckily I had a set of tools for mucking around with computers that includes a good set of tweezers.

Anyway, it assembles very easily (I think I slightly misaligned the heat sink… oh well).

First nice surprise is that the keyboard is actually, like old wired Mac keyboards, a USB hub. And in fact it one ups Apple by providing three extra USB sockets (although it loses points for having a mini-or-micro-USB socket vs. a type-C socket for the cable coming from the computer. Is that even allowed in the EU these days?

The first type I had to type an “@” symbol I had a “wow this is super spongy” reaction to keyboard. It may be a nice USB HUB but it’s not a great keyboard.

It all Just Works

I plugged it in and the Pi 5 immediately powered on (and the fan started spinning, so I’m relieved not to have to spend upwards of two minutes disassembling and reseating the connector). What’s a nice contrast to my Pi 400 experience was that I assumed that once I plugged in the monitor, keyboard, and mouse I’d need to reboot because I seem to recall that my old Raspberry Pi didn’t send a signal to the monitor if it didn’t have a monitor plugged in during boot. But, no, as soon as the monitor was plugged in (still micro-HDMI sockets) everything Just Worked.

The Mac-like menubar at the top of the screen has three icons in the top-left corner, an app menu, a browser button, and a terminal button. Perfect.

Oh yeah and when I created the image for the machine on my Mac it offered to copy my WiFi credentials onto the image (and triggered a security dialog when I said yes) and it Just Worked. This was a conspicuous pain point for the Quest, and I let it slide because I assumed that Meta must have had some issue with Apple’s security stuff that stopped them smoothing it over. But, apparently, Raspberry Pi can do it (and their imager tool looks far more polished than the Meta support apps for the Quest 3 do).

I quickly got into my Google and Apple iCloud accounts thanks to the new Passkey stuff which isn’t an option for the Quest (and of course Meta hasn’t put any effort into helping with this because it’s the kind of thing anyone seriously using their product would quickly get frustrated by, and no-one internally seems to be using their product much).

So I was up-and-running much faster than with my Quest 3. Also the thing seems way faster than the Quest 3… it certainly dealt with iCloud Drive and Google Photos very nicely. So now I have a nice desktop picture. Super important.

My next step was to install NodeJS and another nice surprise is that it runs nodejs 20.x (I also note that the Chromium that is preinstalled was v116.x which is pretty recent. I imagine at some point I’ll have to do a massive update (apt tells me there’s a lot of stuff to update, and I can’t be bothered right now). I’m looking forward to seeing if I can build out electron or nwjs apps.

I do find the partially transparent Chromium window to be a bit nasty looking.

A quick dip into the Chromium inspector shows that MathML and SVG are there. ui.xinjs.net and b8rjs.com both load and run their most challenging demos pretty decently (the babylon3d demo on the b8rjs.com site is a bit sluggish, but reflections and shadows are working). Also timezones.xinjs.net runs very nicely (and that’s a pretty gnarly collection of SVGs).

b8rjs.com has stress tests which I ran and it seems to be about 25% as fast as my 2021 Macbook Pro M1 Max on the create and render 10k table rows (~1300ms vs. ~350ms), and 20% as fast at the create 100k rows with the virtual data-table test (~1800ms vs. ~360ms).

So I’m about to hit the sack, but overall a much better initial experience that with the Quest 3, despite this being very much not a product for ordinary consumers. Not having to deal with Meta is a huge bonus, of course. Given how well all the Raspberry Pi stuff works, Meta’s Quest team should really should hang their heads in shame.