Desktop for tablets and mobile devices


Updated: 20121104

This is the public release of zenvoid-desktop, a desktop environment for tablets and mobile devices. It provides a minimal user interface for performing basic operations such as launching applications, switching between running tasks, entering text with an on-screen input method, showing battery status or changing the screen backlight level.

zenvoid-desktop is composed of a small set of packages, everything else is provided by the GNU/Linux distribution laying under it, which is Debian in the provided filesystem images.

I’ve been using several mutations of zenvoid-desktop for several months now, running on diverse hardware. All versions were different, testing different configurations for each one; and due to requests I’ve been receiving, here it is the first attempt to unify and release it.

Applications do not need to be ported, they are the same applications made for traditional desktop computers. Combined with a root filesystem, provides a quick and convenient way to start hacking a device. It is important to notice that, while it is very convenient to run the same full desktop applications without changes, they are definitely not comfortable to use on tablets. No matter how friendly those screenshots seem to be, this is not a finished, friendly environment for daily usage. It can be seen as a bare minimum environment to resurrect otherwise “dead” hardware, when manufacturer does not develop its operating system anymore, or when the original operating system contained proprietary software (almost always sadly).

Basic instructions

Main application windows usually start in maximized state while dialogs or special windows start in a floating window. If the window title is tapped when the “secondary action” button is active, it will reveal a menu with common window operations (maximize, minimize, resize…).

Input method

The purpose of the input method applet is to allow entering text with a touchscreen, either by an on-screen keyboard or by handwriting recognition. It is based on CellWriter, modified for zenvoid-desktop. It can switch between different keyboard layouts, which are installed under /usr/share/zenvoid-input-method/keyboard/. Layout files are currently not documented, if you want to make a new one, try looking at the included layouts, they are plain text files.


Filed under: Embedded, Software — Tags:

Patch for Ubuntu 9.10 in SmartQ 5


This is a continuation to the post about Ubuntu 9.10 in SmartQ 5. I keep getting a constant flood of emails that remind me that I should upload my patches, so here they are :)

Before giving more details I would want to recommend against using Karmic in your SmartQ 5. Installing Ubuntu’s previous version (Jaunty) is straightforward and it performs faster than Karmic.

When I asked in #ubuntu-arm about the performance regression I got no answer. I suspect that default compilation flags are responsible, most likely related to VFP. Slowness is most noticeable and annoying in interpreted languages, like Perl. So, unless some of the new features included in Ubuntu 9.10 (Karmic) are important to you, don’t bother trying.

Anyway, if you are still eager to install Karmic, here is the modified mountall package.

Patches are required because Karmic expects a modern kernel. There are people trying to port SmartQ source and drivers to a recent kernel, which would be the propper way of fixing this issue.

My quick and dirty hack to the mountall package is able to boot with older kernels. It was not meant to be published, but here it is by popular demand. Keep in mind that it is only a workaround and not a proper solution, the contents of /etc/fstab seems to be ignored during boot, other programs may fail or require patches too, and there could be more hidden issues. Fell free to share your fixes.

Filed under: Embedded, Software — Tags: ,

SmartQi bootloader


A new version of the Qi bootloader for SmartQ is available, now called SmartQi bootloader:

I’ve included the excellent patch made by David F. Carlson, so the CPU will run now at 666 Mhz in its maximum performance setting (was previously set to 533) and memory timing parameters are optimized. The result is greatly improved performance.

Linux kernel must be named /boot/linux-SMDK6410.bin and there should be 2 MiB of free, unpartitioned space at the end of the SD card. To install the bootloader, use the script:

./ /dev/SD_CARD_DEVICE qi-smartq-20091126.bin

Currently I have tested on a Q5 with the provided kernel only. Feel free to test and give feedback, but please, before doing so be aware that the software is for people who are not afraid of hacking their devices and maybe taking some risks in the process. It distributed in the hope that it will be useful, but without any warranty.

Source code is now on gitorious too, enjoy hacking:

Filed under: Embedded, Software — Tags:

Cross Toolchain for ARM Ubuntu 9.10 Karmic Koala


This is a cross toolchain for ARM that uses Ubuntu 9.10 compilers and libraries, so it (hopefully) maintains compatibility with the native compiler for ARM. Precompiled binaries for i386 and the complete source code with its build script are here:

It works for me but not warranties, remember to run the DejaGnu test suite if required for your project. Tests results and patches are appreciated.

Filed under: Embedded, Software — Tags: , , ,

Updated Qi bootloader for SmartQ 5


This release has some fixes and helpful changes for debugging. But remember that it is experimental and unsupported code, so be careful. Source code and binaries are here:

The kernel is also updated. It is recommended to use the kernel and modules included in that directory as it has been modified to show Linux console messages on the screen (very useful for locating and fixing problems). To install the bootloader, follow the instructions of the previous release.

When booting, it shows a very short red light, followed by a short yellow, followed by green light. If green light is reached, it means that the bootloader has finished its job and Linux is booting. If you are using my modified kernel, you should see the boot messages from this point. This is the meaning of the LED lights:

Blinking red LED should mean that the battery is too low, but it is not implemented yet.

Photos of the boot messages and Mer distribution running from SD card:

SmartQ 5 - Linux console messagesMer distribution on SmartQ 5

If you are interested in cooperating with the Mer project please join to the #mer channel at

Filed under: Embedded, Software — Tags:

Boot the SmartQ 5 from SD card


Update: This information is old, please read a more recent post on this topic.

I made a modified Qi bootloader for the SmartQ 5 MID that can boot from the
external SD card, as a convenient way of developping or testing OS, or for system rescue purposes in case of internal flash corruption. This is the bootloader operation:

The SmartQ Qi bootloader is written to the end of the SD card. Create partitions to suit your preferences, make at least one ext2/ext3 partition to install the root filesystem and optionally a swap partition, but always remember to reserve 1 MiB of free, unpartitioned space at the end of the SD card. To be precise, at least the latest 1042 blocks (512 bytes each) must be reserved.

The precompiled bootloader and a kernel, installation script and source code are here:

Look at the script in order to make a bootable SD card:

./ /dev/SD_CARD_DEVICE qi-smartq-20090603.bin

To boot from the SD card, keep the “move” (also known as fullscreen) button pressed and then press the “power” button.

There is no battery check at the moment, look for the next release, I’m working in that.

Filed under: Embedded, Software — Tags:

Hack your own cross compiler


I’ve made a custom cross-compilation toolchain for ARM processors. It works either
as a standalone toolchain or within Scratchbox2.

Most precompiled toolchains were not suitable for my own purposes since I needed a very specific version of binutils and glibc, and trying to build CodeSourcery’s toolchains with their included script was too much masochistic.

The source code and build script is included, and unlike the build script
in CodeSourcery toolchains, this one actually works. It is meant to be
hacked, built from source code to create toolchains with custom patches
or with different tool and library versions.


Filed under: Embedded, Software — Tags: , ,

Alone in the Light


Creative Commons License
Unless otherwise stated, articles and their accompanying pictures are licensed under a Creative Commons Attribution 3.0 Spain License.

Roberto Gordo Saez


Latest posts