0x0f0f0f - Alessandro Cheli

Not really surprisingly, it is quite hard to get a mobile Linux handheld device in 2019. You either have to build your own or try to get your hands on the (discontinued) obscure ones. Would computer manufacturers sell you a device that lasts you 10 years? It is not really profitable from the seller's point of view.

Owning a Linux handheld computer can help you detox from harmful Social Media experiences; using FOSS also means getting rid of bloatware or walled gardens like Android, iOS, MacOS or Windows. This can allow you to run top quality creative software without spending a cent, on hardware that is relatively really cheap!

Also, if you are a daily GNU/Linux user like me this will ease integration between your devices. I'm planning to use the same distro, Void Linux, on every device I own. My desktop, my laptop and this handheld :)

Building a General Purpose Linux Handheld can be a fun and educative experience. You also end up with a device that your kids, parents, friends or sysadmin can enjoy for everyday tasks.

This build is based on the HyperPixel 4 & Raspberry Pi Handheld by Anthony Di Girolamo. I still have to 3D print the keys and assemble the case and electronics all together.

Half assembled build

Features

Things that this device and smartphones can do:

On the roadmap:

Things the handheld can do but your smartphone cannot do very well:

Things the RPI Handheld cannot do (yet!) but a smartphone can do:

By now the build has only the default Raspberry Pi 3 connectivity methods: WiFi and Bluetooth. When you are on the go you can set up an external, portable 4G Hotspot. You should be able to use any portable mobile data WiFi hotspot or smartphone.

Hardware

Soldering and testing the keyboard

I'm building my DIY Linux Handheld basing on Anthony Di Girolamo's design and keyboard: HyperPixel Handheld and Teensy Thumb Board

I've got the Teensy Thumb Board PCB from Anthony's tindie page. The thumb keyboard PCB was that magical piece that was missing to create an usable device. Single board computers, 3d printed cases and touch displays are already widely available, nothing though can be as smooth as using a full layout QWERTY keyboard when using an UNIX interface.

Building and soldering the keyboard can also be a good exercise for electronics beginners thanks to through hole soldering.

Half assembled build

Drivers

Pimoroni open sourced the Hyperpixel 4 Display driver on Github. To install it on Void Linux I had to compile and install the BCM2835 library, then I had to compile, configure and install the driver manually. To reproduce the build on your Raspberry:

./configure
make
sudo make install
make build
# make init OUT OF DATE! new init is written in python

You will need the python3, python3-devel and python3-pip packages installed.

sudo xbps-install -Su python3 python3-devel python3-pip
sudo pip install RPi.GPIO
cd ..
cp src/hyperpixel4.dtbo /boot/overlays/
cp dist/hyperpixel4-init /usr/local/bin

Calibrating the touchscreen was a bit more tedious. I had to open an issue on the Hyperpixel driver repository. (shout out to Francesco149 for helping me calibrate the touch display):

# install evdev driver and xinput_calibrator
sudo xbps-install -S xf86-input-evdev xinput_calibrator xinput
# create xorg config folder
sudo mkdir /etc/X11/xorg.conf.d/
# enable 10-evdev.conf
sudo cp /usr/share/X11/xorg.conf.d/10-evdev.conf /etc/X11/xorg.conf.d/
# list input devices and remember the id number next to "Goodix Capacitive Touchscreen"
xinput list
# now calibrate the touchscreen and save the config to a file. 
# replace HYPERPIXEL_ID with the number you found in the previous step
xinput_calibrator --misclick 0 --device HYPERPIXEL_ID > 99-calibration.conf.temp
# if the display was calibrated correctly, open the config file 
# in a text editor and remove the leading lines until the one beginning with "Section"
# and remember to save the file
nano 99-calibration.conf.temp 
# move the configuration file under its correct directory
sudo mv 99-calibration.conf.temp /etc/X11/xorg.conf.d/99-calibration.conf

You can test the calibration by restarting Xorg or rebooting the Pi. Xorg will crash if you forget to remove the instructions from 99-calibration.conf.temp

Operating Systems

The Raspberry Pi (so the Raspberry Linux Handheld) can run a variety of Operating Systems that provide great, smooth and secure daily usage experiences.

Follow up

In the next posts I'll: