How to Unleash the Power of the DevTerm Portable Hacking Console

The ClockworkPi DevTerm is a peculiar portable Linux device with numerous delightful features, albeit some frustrating ones as well. This guide will demonstrate how to configure the DevTerm to overcome its limitations, such as the small screen size and the somewhat challenging trackball. Additionally, it will provide instructions on using the DevTerm with an iPad Pro.

June 2023

In 2021, I got the ClockworkPi DevTerm. This is a very portable Linux machine that comes as a kit. It is easily assembled, and you get a handy battery-powered portable computer with a small but usable keyboard and a wide screen.

Despite its ClockworkPi name, the DevTerm model I got is not based on the Raspberry Pi. When I ordered, only three models were available: the Pi CM3-based model with 1GB of RAM, a low-power A-04 model with two cores, and the one I got with the A-06. All models can be powered by two 18650 batteries that you have to get separately.

The A-06 CPU is an ARM64-bit Dual-core Cortex-A72 combined with Quad-core Cortex-A53. It comes with 4GB RAM. The DevTerm A-06 runs a variant of Armbian.

Since last year, ClockworkPi also offers two newer models. The DevTerm based on the Pi CM4 board is the one I'd get if I didn't already have the A-06 model. And ClockworkPi even offers a model with an "open-source" RISC-V CPU. Though they carefully call it experimental.

ClockworkPi DevTerm fully assembled and in kit form

The ClockworkPi DevTerm. Left: fully assembled. Right: in its original kit form (Source: ClockworkPi.com)

ClockworkPi DevTerm A-06

The DevTerm A-06 is a fully-featured Linux PC you could theoretically use as a primary machine. It runs most Linux software, only limited to the compatibility with Armbian and the CPU architecture. This is admittedly a bit more limited than the thriving Raspberry OS ecosystem or the mature and widespread Ubuntu catalog. Unfortunately, I could never get the UI for the package manager to work. This is not an issue because nearly everything I need is easily installed using the CLI.

You also get a clip-on thermal printer that is fun to play around with, but I ultimately never found a use for it and regard it as a gimmick. I ended up removing it. The printer attaches to the wide expansion port, reminding me of the old 8-bit computers from the 1980s. The DevTerm comes with a surprisingly good assortment of ports, including three USB type-A ports, a USB type-C port for charging, a headphone jack, and a micro HDMI port (that can drive displays of up to 1080p since one of last year's OS updates). A MicroSD card is used as the main storage.

It has onboard Bluetooth and Wifi connectivity. Unfortunately, no 4G/5G option is available unless you use a USB modem.

How does the DevTerm hold up in daily use?

The Good

The mainstays like Chromium, LaTex, LibreOffice, Gimp, and even Blender work fine. And the latest version of the OS even comes with VSCodium, the open variant of VSCode. So the DevTerm can be used as a complete web development setup. The machine's performance is more than enough for NodeJS and React development. Apart from that, the device has many uses, including running emulators for the Atari ST, the Commodore Amiga, and many others, as well as fantasy consoles like the Pico-8.

I'm a stickler for tiny computers. They allow me to work while on the go. And I don't mean just where there is a desk like in a café or bar. I can use it pretty much anywhere, standing up as a thumb keyboard, on my lap, while sitting in the metro, or in the confines of a bus, train, or plane on the small folding trays. I love the DevTerm's small package.

Ideally, I'd use it in its super-portable mode and connect to a larger setup to continue using it. Below I describe what I came up with using the iPad Pro as a large screen, keyboard, and trackpad.

The Bad

Typing on the keyboard is a bit finicky. I'd describe it as just about adequate to get things done. The keys are very close together, and some are in different positions. I definitely wouldn't use it for National Novel Writing Month. Unfortunately, it is not backlit.

The odd screen size, with its resolution of 1280 x 480, makes the dialog boxes of some applications unusable because, in some cases, the button to submit or cancel is just outside the screen. There is a solution for this that I describe below.

The Ugly

You control the mouse cursor with a ridiculous trackball in the style of the old Blackberries. This is a source of frustration. The trackball is very imprecise. Moving the mouse pointer from one end of the screen to the other is a chore because the trackball is so tiny and unpleasant.

At first, I used a wireless mouse until I found a better solution. To remedy the terrible trackball, there is a solution described below. It uses a set of arrow keys in a game controller's style and accompanying buttons along the top of the device.

Pimping the ClockworkPi DevTerm

While using the ClockworkPi completely on the go works to an extent there are three things I wanted to improve

  1. Terrible Trackball: I needed a way to avoid using the atrocious trackball. Using a mouse is great, but you need a surface to move the mouse around on. I wanted to find a solution to the DevTerm itself.
  2. Small Screen: The integrated screen is usable in most contexts, but the low vertical resolution cramps everything. Using an external monitor via HDMI works great, but that is not an option on the go.
  3. Small Keyboard: The built-in keyboard is usable, and the external USB keyboard work great with the DevTerm. But I didn't want to lug around another device.

Using the Game Pad Instead of the Trackball

The DevTerm has a gamepad-like assortment of directional keys and fire buttons in the upper left & right corners. These default to key inputs that can be used for games and retro emulators.

On the ClockworkPi forum, a user found a way to use the gamepad to control the mouse pointer. The mouse can be emulated by installing the following:

apt install xserver-xorg-input-joystick

After this reboot the DevTerm.

This provides a much easier control of the mouse pointer. You can move across the screen faster and more comfortably. Though precise small movements are harder. You can still use the trackball for those.

If you want to use the gamepad as a controller in a game, you will need to install xinput (install with sudo apt install xinput) and then run the following command to deactivate mouse emulation:

xinput set-prop pointer:'ClockworkPI DevTerm' 'Generate Mouse Events' 0

You can reactivate it again with this command:

xinput set-prop pointer:'ClockworkPI DevTerm' 'Generate MouseEvents' 1

Using Panning for More Vertical Screen Real Estate

As described above, using some applications is very cramped due to the low vertical resolution. In some cases they become unusable because controls are postioned outside of the screen becoming inaccessible.

There is a solution for that. You can increase the virtual vertical screen resolution. Then the screen will pan down and up whenever the mouse pointer reaches the edge.

This is done using xrandr (install with sudo apt install xrandr). Then you increase the vertical resolution and activate screen panning with this command:

xrandr --output DSI-1 --fb 1280x720 --rotate right --panning 720x0 ### (you can replace the vertical resolution of 720 with anything up to 1080)

The command above activates panning but the rendering of the screen is impeded by compositor. When the mouse reaches the bottom edge, the screen pans down but remains black and does not show the actual content. You will need to deactivate compositor to fix this with this command:

xfwm4 --replace --compositor=off

The main use of compositor on the DevTerm is to enable you to zoom in and out on the screen using the trackball. I can live without that.

Panning demonstrated on ClockworkPi DevTerm

Panning the whole screen area on the DevTerm using the game pad to control the mouse pointer

Using the iPad Pro as the DevTerm's Monitor, Keyboard and Mouse

Most Linux user know that you can SSH into a machine and then use a VNC solution as a graphical desktop sharing system and remotely control the machine over a network connection including keyboard and mouse access.

SSH Access

So let us look at how to do this on the DevTerm. By default, SSH access is deactivated. The "flag" for this during bootup is an empty file called sshd_not_to_be_run. If a file with this name is present in the ssh directory during bootup then SSH is not enabled. A user on the ClockworkPi forum describes all the steps to enable SSH on the A-06 DevTerm running Armbian.

We need to remove this file like this:

sudo rm -f /etc/ssh/sshd_not_to_be_run

Then we activate SSH access:

sudo systemctl enable ssh
sudo systemctl start ssh

The DevTerm needs to be connected to a network, then it will have an IP address. Just enter ip a to see what the IP address is.

Please note that the DevTerm has a default admin password. Make sure to change that before activating SSH. You don't want someone else to access your DevTerm and steal all your secrets (I keep the true identity of JFK's killer on mine). Once enabled, SSH access will remain open across reboots.

With SSH enabled, we can connect to the DevTerm using another machine. I do this on my iPad Pro with the Magic Keyboard. The iPad has a largish screen and the Magic Keyboard provides a... well... keyboard and a trackpad. (Make sure that both machines have a network connection, though they don't have to be on the same network.)

Using a terminal application like Panic's Prompt app (or alternatively Blink), you SSH into the DevTerm with:

ssh username@ip_address

(You replace the username with the one you use on the DevTerm, by default it is cpi, and the IP address you got from ip a).

Then you enter the password and can use the DevTerm via the iPad (or the guest computer of your choice).

This is already very useful solution. You can run any terminal apps you like on the DevTerm and use them on the iPad's large screen and use the comfortable Magic Keyboard. But we can also use VNC for full access to the DevTerm's graphical user interface.

VNC Access

On the ClockworkPi DevTerm community forum, a user has described how to set up a VNC client on the DevTerm. First you need to install the VNC client x11vnc on the DevTerm:

sudo apt -y install x11vnc

Then you need to setup the the x11vnc to remember your password when you enter it the first couple of times.

x11vnc -storepasswd

Then we need to create our own little startvnc command. You can either use nano or any other text editr to create your own startvnc.sh in your home directory and then populate it with:

#!/bin/bash
x11vnc -display :0 -forever -shared -o /home/cpi/x11vnc.log -bg -rfbauth /home/cpi/.vnc/passwd

Or you can create and populate the file with:

echo '#!/bin/bash' > startvnc.sh
echo 'x11vnc -display :0 -forever -shared -o /home/cpi/x11vnc.log -bg -rfbauth /home/cpi/.vnc/passwd' >> startvnc.sh

In both cases, you will need to make it executable:

chmod +x startvnc.sh

When everything is set up, you SSH into the DevTerm and then run ./startvnc.sh. This will start the VNC server on port 5900.

Now you can use a remote desktop client on the iPad to have full access to the user interface of the DevTerm. I use the Edovia Screens 4 app but that is not free of charge. You can also user Microsoft's free Remote Desktop app.

In your app of choice, set up a new VNC connection. Enter the DevTerm's IP address and port 5900. Then select the authentication method VNC password and enter your password.

Then you can connect remotely and use the DevTerm on the iPad.

iPad Pro connected to DevTerm with the standard resolution

iPad Pro connected to DevTerm with the standard resolution

Unless you activated screen panning on the DevTerm as described above, you will see a comically small vertical screen resolution. I strongly suggest to increase the vertical screen resolution and activate panning by running the xrandr command shown above.

iPad Pro connected to DevTerm with an increased vertical resolution

iPad Pro connected to DevTerm with an increased vertical resolution

Faking a Large Screen with an HDMI Dummy

I understand that some folks might find it to be a bit of a hassle to run the xrandr command only for a larger screen real estate in VNC. There is an alternative... without any configuration, you can set the screen resolution to full HD 1920x1080 by connecting an HDMI dummy dongle to the DevTerm's micro HDMI port.

HDMI Dummy Adapter and Converter to Micro HDMI

HDMI Dummy Adapter and Converter to Micro HDMI

Please bear with me. It is a bit of a hack. You get an HDMI dummy (e.g. this one) and an HDMI adapter for micro HDMI (e.g. this one). When you connect this contraption to the DevTerms HDMI port, it "thinks" that it is connected to an external monitor and forces itself into 1080p. And the VNC connection on the iPad shows this in all its glory.

Please note that if you boot up your device with the HDMI Dummy already inserted the display won't be mirrored but extended. This means that there will be the large 1920x1080 display and the DevTerms internal 1280x480 display. This makes it unpractical during a VNC session because you get a large screen on the left and a narrow screen attached to it on the right. It is best to start up the DevTerm and only after booting attach the HDMI Dummy.

iPad Pro connected to DevTerm with the resolution automatically increased due to the connected HDMI dummy

iPad Pro connected to DevTerm with the resolution automatically increased due to the connected HDMI dummy

No matter which solution you use (xrandr to increase the virtual screen size or the HDMI dummy), there is a caveat. By default the DevTerm's OS is not well suited to handle resolutions higher than the integrated screen. When you maximize an application window by clicking on the respective widget in the top right, it will expand to only occupy the puny 1280x480 pixels. If you don't click on the window's maximize widget but instead just use the mouse to expand the window then you can make use of the full screen's real estate.

The Best of Both Worlds

Using the ClockworkPi DevTerm on the go has many advantages. It is convenient and portable. Despite its slightly subpar keyboard, you have a complete Linux system to develop anywhere you like.

You can compensate for some of its shortcomings. The gamepad can be configured as a mouse emulator instead of the terrible trackball. The low vertical screen resolution can be increased by activating screen panning.

Then you have a much more usable device when you are out and about.

When seated at a desk or in a café, you can use another device like an iPad with a Magic Keyboard to continue work using a much larger screen and proper keyboard and trackpad through a VNC connection to the DevTerm. I am pretty happy with this solution because I love the iPad but am well aware of some of its shortcomings. I also adore the DevTerm warts and all. By combining both devices, I get a workable setup.

The iPad is an excellent device for creative work using Procreate, the Affinity apps for pixel and vector graphics, and LumaFusion for video editing. The DevTerm has the advantages of an open system for web development. Now they complement each other.

Other Options at Present and in Future

That being said, ClockworkPi has announced another device called the uConsole. It is smaller than the DevTerm. It's keyboard is backlit and the screen has a native resolution of 1280x720. The uConsole even has an integrated 4G modem. There will be a model using the Raspberry Pi CM4. It will be an even better and more portable setup. It even has a dedicated 4G modem, so you are not reliant on Wifi.

I've already ordered the uConsole CM4 model and can't wait to try it.

ClockworkPi uConsole, announced but not yet released

The ClockworkPi uConsole (Source: ClockworkPi.com)

This particular model has additional advantages. The Raspberry Pi CM4 supports USB gadget mode through the USB-C connector. The iPad can connect through USB-C as ethernet, then SSH and VNC into the device instead of "roundtripping" through Wifi.

Additionally, you independently set the CM4 as a server to access its file system using the Files app on the iPad, all through the USB connection.

Using a Raspberry Pi4 with an iPad Pro

I have a similar setup running on a regular Raspberry Pi4. In this case, the iPad even supplies the Pi4 with power through the USB-C port. This was my previous development setup.

In contrast to the DevTerm A-06, the disadvantages are that you need to use the Pi4 with the iPad. If you want to use it independently, you need a keyboard, a mouse and a screen. The Pi4 reduces the iPad's battery life by drawing power from it. Furthermore, the connection via the USB cable should never be interrupted during use because then the Pi4 shuts down. So this setup is better suited for a desk or table. I've put velcro on the iPad's Magic Keyboard and the Pi4's case which allows me to physically attach the two devices but this not secure enough for truly mobile work.

Connecting through USB type-C requires USB gadget mode. Power and the network connection are fed through USB. This is available on the Pi4 but not on Pi3 and previous models. The DevTerm A-06 does not support this. Its USB-C port can only be used for charging.

Will USB Gadget mode work with the DevTerm CM4 which is based on the Pi4? I haven't tried it myself, but it is unlikely that this works. The DevTerm CM4 uses an adapter to connect the CM4 to the DevTerm's internal connector port which was conceived to use the CM3. So it is unlikely. Though I would be curious if someone could try it.

If you want to use the Raspberry Pi4 with an iPad through USB type-C, please find further information here.

TechCraft Video: "Pi4 as an iPad Pro Accessory"

Ben Hardill's Blog Post: "Pi4 USB-C Gadget"

Video Demo of the iPad Pro Connected to a Pi4

Why Not Simply Use a Notebook?

I know that in the closing section of this article, I might be making matters confusing by introducing these different options without addressing the most obvious questions: Why not use an actual notebook running Linux, MacOS or Windows? Or if I really want to keep using the iPad why not use it with a virtual machine in the cloud?

Of course, the main reason is because I can. But that is not a satisfactory answer.

I just really like the iPad, yet I don't want to make do without a real Linux machine. I use my iPad with a 5G connection, so I don't rely on having Wifi. There is a splendid immediacy in being out and about and then getting an idea, popping open the iPad and just doing whatever came to mind without the friction of having to tether to mobile phone or having to find a place with Wifi to sit down. The iPad with the Magic Keyboard is also much faster in certain operations. And I don't mean raw performance. Simple things like opening it up and replying to an email are ever so slightly faster and frictionless than doing the same thing on a notebook. Jotting down notes or drawings with the Apple Pencil while standing in line in a queue or while waiting for the metro is much more direct and non-intrusive.

And using a device like the DevTerm to complement the iPad in the very same settings is just liberating. I can use the DevTerm standing or seated in a cramped space. And when space allows for it, I can use it connected to the iPad.

There are not many notebooks that have an integrated cellular modem. Certain models of Microsoft's Surface devices come to mind. Oddly enough none of the Macs have integrated cellular networking (yet). Even on the fastest and slickest Windows device, wake from sleep is much clunkier. Depending on the duration of sleep or hibernation, the mobile modem needs to reconnect to the cellular network after fully awakening. Contrast this level of friction with opening and laglessly waking an iPad, getting a minute of work done, then closing it and moving on.

I understand that this is not the way most people work. Admittedly, I don't work like this some of the time. Often, I need a real desk, a full laptop connected to an external monitor and a external keyboard and mouse. When given the opportunity this is a much more productive setup. But when I am on the move and I still want to remain productive, I find that the solution described in this article suits me the best at the moment.

Alternatives on Android and ChromeOS

I could use an Android tablet with a keyboard case instead. This provides 4G/5G connectivity and the full tablet experience. Many of the same apps are available both on Android and iPadOS. Then you install Termux and AndroNix from the F-Droid store.

Using the Termux application in tandem with AndroNix, you can create a Linux environment directly on your Android smartphone or tablet. This allows you to run various Linux-based UI applications and use terminal-based Linux functionalities. You can run a full Ubuntu on your Android tablet. Find out more about how to do this in this article on makeuseof.com.

This is definitely a workable option. Unfortunately, it is also not entirely as frictionless as it seems. After getting everything set up correctly, you need to launch Termux and then, from inside it, launch the Linux distro with AndroNix. Then you need to open a VNC application and connect it to the locally running Linux. The performance of Linux on Android could be better. Even on fast tablets, it is a bit worse than on a DevTerm A-06 or a Raspberry Pi4. If you keep Linux running, then the battery life of the Android tablet suffers greatly. Of course, the battery life is much longer if you use two separate, very portable devices with their batteries and specialization.

Additionally, using Termux/AndroNix with a Linux distribution is oddly similar to connecting the iPad to the DevTerm or Raspberry Pi4. Even though you run Linux locally on the Android table, you still VNC into Linux running on your local machine! That is not only weird, and it also has an even worse performance.

Please don't think that I'm poopooing the Android option. I've become very appreciative of Android tablets. This works great for some folks.

Okay... So if you, like me, want portability, responsiveness, pen input, and full Linux in a tablet form factor with a physical keyboard, there is another option. You could get a Chromebook or tablet running ChromeOS with a keyboard/trackpad combo. One that comes to mind is the compact 11" Lenovo Chromebook Duet 3 (sold as the Lenovo IdeaPad Duet 3 in some markets). It is inexpensive. It is compatible with a pen stylus. It comes with the keyboard/trackpad cover with a kickstand out of the box. It has 4GB of RAM. There is a model with 4G connectivity. And ChromeOS lets you install full Linux natively!

Lenovo Chromebook Duet 3

Lenovo Chromebook Duet 3 with keyboard/trackpad cover and pen (Source: Lenovo)

I have yet to try this. But it combines the best of both worlds: the usability and responsiveness of ChromeOS and Android apps and the power and flexibility of Linux desktop applications. I have no idea what the performance is like or how much Linux cuts into the battery life of this device. Still, color me curious!

The DevTerm and iPad combination described in this article is the one I chose for me. To quote Full Metal Jacket: "There are many others like it, but this one is mine."


Bonus: Close Resemblance to the Tandy TRS-80 Model 100/102

A commenter on Youtube noted that the DevTerm looks similar to the Tandy TRS-80 Model 100. This was an early portable computer introduced in 1983. Equipped with a 2.4 MHz processor and 8KB by default (expandable to 32KB of RAM). It featured a monochrome LCD screen, full-size keyboard, and built-in software including a text editor and communications program. It was powered by batteries. The Model 102 was its successor introduced a few years later. It had a slimmer case and more RAM, but otherwise the same features. I own the latter.

The DevTerm definitely hommages the design but due to the small size of its keyboard does not provide the greatest advantage of the TRS-80 Model 100/102: the large and comfortable keyboard. The DevTerm's keys are quite mushy. They are also so small and close together that users sometimes inadvertently press two keys at the same time. While the Model 100/102 has clicky keys with a good travel and that are well spaced out. I'm sure that ClockworkPi chose to quote the Model 100/102's design deliberately to evoke a retro feel.

Please find below a comparison between the two.

This photo shows the Tandy TRS-80 Model 102 next to the ClockworkPi Devterm
The DevTerm (right) really resembles the Tandy TRS-80 Model 100 (though this photo shows the model 102 on the left)