The fam got me a Pi 400 for Christmas. I have been intrigued by this new Raspberry device because I don't understand it. My experience with Raspberry Pi's in the past has been using them for what they are, Single-board Computers supporting various operating systems and allowing everyday users such as myself the ability to have a low-cost entry point for building or developing specialized systems.

Almost all of my RPI projects have encompassed connecting it to a monitor and keyboard just long enough to set it up for whatever I might be doing, then disconnecting it from these devices and only controlling it remotely via ssh or some specialized web interface such as OctoPrint. As a matter of fact, other than my first foray into Raspberry Pi several years back I don't believe I have used a desktop GUI interface to interact with one.

I have seen many projects across the web with people embedding RPIs into various keyboards or other devices/peripherals. One of my favorites being an RPI built into a vintage Apple keyboard. I have also enjoyed reading through several projects attempting to use an RPI as a desktop replacement, but I have always seen these projects as novelties or learning experiments.

I guess the novelty is wearing off as the Raspberry Pi Foundation keeps making it easier to build one of these devices with minimal effort. First with the Raspberry Pi keyboard and hub, and now with the Raspberry Pi 400 unit. This harkens back to the early days of personal computers when the main CPU and components were predominately embedded into a husk alongside a keyboard. Notable examples of this bygone design aesthetic are the original Apple computers, the Commodore 64, the Amiga, and the one I began my journey into this digital landscape with, the TRS-80.

Other than nostalgia, what exactly is the benefit of this new Raspberry Foundation product? To answer this I decided to dive in and see where the day takes me.

After connecting to a spare monitor and fully updating the system, the first thing I did with the Pi 400, is install and configure Conky so I could easily monitor what's going on while I am messing around. This allows me to see system information such as CPU utilization and temperature, memory utilization as well as what's hammering my ethernet connection, etc.

Currently, I am using the config file from novaspirit.com however I may end up customizing this config file in the future.

Now that I can see what's going on, what else do I want to do? Raspberry Pi OS is Debian-based so it already has apt available however, I have been playing around with snap recently and have found it quite user-friendly, so let's see about installing snap first.

sudo apt update
sudo apt install snapd
sudo reboot

After rebooting we can ensure we have the latest snapd version using

sudo snap install core

As per the instructions at snapcraft.io, we can test our snap installation using

sudo snap install hello-world
hello-world

Hiccup number 1. Running the hello-world application resulted in the correct output but gave an error message regarding /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so which is an entry in /etc/ld.so.preload. The snapcraft forum indicates that this is due to a "hack" used by the maintainers of Raspberry Pi OS to increase performance and that other than displaying the annoying error message it shouldn't cause any issues.

Since this has a GUI, let's also install the Snap Store interface.

sudo snap install snap-store

Now that I have snap up and running... Let's see how well the Pi 400 handles video. For this, I installed vimix from the snap-store and downloaded a video from videvo.net.

Unfortunately just loading and playing this file in vimix pegged the CPU utilization out to 100% without producing much of anything on the screen. This is of course as I expected for the low-power device lacking a GPU but it did solidify my belief that I would not be able to use the RPI for video editing.

Since the Pi 400 comes with Raspberry OS 32 bit preloaded I decided to repeat all of the same steps above with 64 bit to ensure that 32 bit wasn't a bottleneck. The results came out the same. The only difference encountered is when setting up and using snapd, the error message regarding /usr/lib/arm-linux-gnueabihf/libarmmem-${PLATFORM}.so no longer appears. I checked /etc/ld.so.preload and found that the "hack" used in the 32bit version of the OS does not exist in the 64 bit version. Now to try snap install VScode again.

Having established that the Pi 400 was not going to be a good (or even decent) replacement for my existing system, I decided to move on to something that plays to the Pi's strengths. Embedded development and the GPIO pins. For this, I wanted a familiar and comfortable IDE that supports multiple languages. I of course chose VSCode.

sudo snap install code

Unfortunately, it appears that there is not currently an ARM (or ARM64) snap package for VS Code. No matter, we can manually download the deb package and install it. Next stop, code.visualstudio.com. Select Other Platforms, then the deb package for ARM (or ARM 64).

The file I downloaded at time of writing is code_1.52.1-1608136325_arm64.deb. You can install it via the terminal using

sudo apt install ./Dowloads/code_1.52.1-1608136325_arm64.deb

The installation seemed to complete without error. So far so good, but will it run?

SUCCESS!!

VSCode opened without issue. I was able to open a folder, create a file called app.py, VSCode asked me if I wanted to install the common Python Extension, and the extension installed properly. Let's run some code.

Ok, I have a dev environment setup......... lets make an LED blink.

from gpiozero import LED
from signal import pause
green = LED(17)
green.blink()
pause()

Conclusion

I had quite a bit of fun playing with the Pi 400 but I still don't believe it is a tool I need in my arsenal. I can see the nostalgic draw of this device for the older crowd that started off with something like a Commodore 64 or Apple II. I can even see how it could be very useful as a console for a retropie setup, but for my use cases, this thing is too bulky and overpriced as I can have the same performance with better hardware options in a smaller package for less money. For me, the Pi 400 is nothing more than a novelty item.

I do like the Pi 400's mainboard form factor. The elongated board with the IO ports all on a single side opens the doors for additional possibilities. I especially like the GPIO pins facing the side rather than straight up as in the other Pi's. As with the Pi 400, this allows the GPIO pins to be easily exposed on the side of slim devices.

Several years back my son was involved with a junior robotics program designed for kids under 13. The idea behind this program was to introduce children to programming and robotics at an early age. An amazing program that I hope continues to gain steam around the nation.

My biggest issue with this program was the basic robotics equipment package. We didn't have to purchase our own equipment as the school-sponsored robotics team itself had several kits however, me being me, I bought one anyway. I found the main control unit to have very poor build quality, to be overly complex, but most importantly, overly expensive. At the time I believed that the "robot controller" in these kits could easily be replaced by an RPi and a small 4 or 5-inch touchscreen.

The Pi 400's mainboard form factor has caused me to revisit this idea. Rather than selling a Pi embedded in a keyboard, I believe the hobbyist community would be better served with a Pi "tablet". A 5-inch touch screen device with the GPIO pins exposed and enough battery to power small projects. This would be the ultimate electronics prototyping or small scale robotics development controller.