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.

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.

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.

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 install-smartq-qi.sh script:

./install-smartq-qi.sh /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.

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:

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:

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:

Search for a valid ext2/ext3 partition in the SD card (4 primary partitions).

If the file /boot/noboot-SDMK6410 exists, it will skip that partition and try the next one. Useful for disabling partitions temporary.

Load and run the kernel image from file /boot/linux-SMDK6410.bin (if it exists). It should be on uImage or zImage formats.

The optional file /boot/append-SMDK6410 can be used to specify additional kernel arguments.

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:

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.