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.

Input method window can be moved around, like other windows, or it can be docked to top or bottom edges of screen (by pressing the top-right arrow button). No matter where it is, it will always be covering something, hide it when not needed.

Handwriting recognition works very well with resistive touchscreens and it is almost impossible to use on capacitive. On the other side, the on-screen keyboard is more comfortable to use on capacitive touchscreens. SmartQ5 and SmartQ7 are both resistive.

The graphic below shows the handwritten symbols included by default in the provided root filesystems. It is possible (and recommended) to train the input method with custom samples. When correctly trained it will allow entering text very fast, specially when trained with gestures or simplified symbols. To reset and forget previous samples for one symbol, press on its cell with the secondary action button.

Default symbols for handwriting recognition

Hardware buttons

Some windows may be larger than the screen. Hardware buttons can be used to move them and expose the hidden parts. This is the hardware button configuration:

How to become root

Launch terminal emulator (System Tools > Terminal). Then type:

sudo -i

Default password is password. Probably a good idea to change it after the first boot…

How to change desktop background

There is no desktop interface for changing the background, so even a simple task like this must be done by command line for now. Edit or create file /home/user/.config/zenvoid-desktop/config.


To reload the background image, execute:

echo -n B > /home/user/.config/zenvoid-desktop/fifo

Downloading and installation

The provided filesystem for SmartQ5 and SmartQ7 contains zenvoid-desktop on top of an optimized Debian base system (where almost all included packages are recompiled for armv6 with vfp). It should be installed in the first partition of the SD card, ext3 format, and expects a swap area in the second partition. For other layouts, edit /etc/fstab in the root filesystem before booting it.


d6f582574f96b5eaeb7ee8ab788248fe35816bec3b5995c7a5209b162cb38045  rootfs-smartq5-20121024.tar.xz
9977c43f864a0c1fef8d6174b12a028281ba08852e8571aeec1e8057a8604e31  rootfs-smartq7-20121024.tar.xz

The root filesystem require smartQi bootloader version 20120515. It is very important to install the correct bootloader version, the kernel won’t work properly with older releases.

Source code for all modified and new packages is available in a custom repository:

deb-src zenvoid-source local-source

All other software packages included in the root filesystem archive are taken from the Debian package collection, most of them compiled from sources.


Probably lots of bugs and unfinished features. Top most annoying issues:

What about future?

I don’t know, really. Initially this software was not meant to be released, it was nothing but a quick way to give some use to the piles of old hardware I collect. I would want to rewrite it (or parts of it) for Qt but… who knows.

The is an almost complete root filesystem for Nokia n810, along with experimental versions for Nokia 770 and NookColor. The n8x0 version will be probably released at some point in the future.

Filed under: Embedded, Software — Tags:


  1. Comment by santiago

    2012-09-15 @ 00:45

    great job rob!!

  2. Comment by Cyrille

    2012-11-04 @ 22:45

    Hi Roberto!
    You are simply the BEST!
    I don’t want to bury my SQ5 and would like to try to install your awesome zenvoid-desktop but the link seems to be dead ;-(
    “The requested URL /software/zenvoid-desktop/rootfs-smartq5-20120908.tar.xz was not found on this server.”
    Thanks for your great job!!!

  3. Comment by Roberto

    2012-11-04 @ 23:16

    Links are fixed now, thank you for reporting.

  4. Comment by Cyrille

    2012-11-05 @ 10:52

    Thanks Roberto, you’re a God reviving doomed devices! I’ll try to ijstall your terrific new desktop to my mistreated SQ5! I wish I could participate in the Qt project! But I have NO skills in programming ;-(

  5. Comment by Cyrille

    2012-11-06 @ 10:03

    Hi again Roberto!
    I intend to TRY to install your new tablet-friendly OS on my SQ5 but I wanted to know if you think it a good idea to use a script like this one (with the right changes at the right place ;-)?

    Thanks again for your expertise!

  6. Comment by Cyrille

    2012-11-11 @ 00:44

    Could you please read these steps and add the missing infos?
    1) Partition 1 as EXT3
    2) Partition 2 as SWAP
    3) command line to untar rootfs-smartq5-20121024?? Something like untar rootfs-smartq5-20121024 /dev/sdb?
    4) ./ /dev/sdb smartQi-Q5-20120515.bin

    5)keep the “move” button pressed and then press the “power” button.

    I think steps 1, 2, 3, 5 are correct but the 3rd one I think is faulty…

    Thanks for your precious help!

  7. Comment by Cyrille

    2012-11-11 @ 21:07

    Hi again Roberto!
    I tried again to install your zenvoid-desktop.
    There are warning errors appearing…
    mmc0: host does not support reading read-only switch. assuming write-enable.
    mmc1: idem.
    VFS: Mounted root (ext3 filesystem)
    Warning: unable to open an initial console.
    Kernel panic – not syncing: No init found. Try passing init= option to kernel.

    I probably did a few (many?!) wrong steps!
    1) Partition 1 as EXT3
    2) Partition 2 as EXT3
    3) Partition 3 as SWAP
    4) Not allocated space (for bootloader)
    3) I uncompressed rootfs-smartq5-20121024.tar.xz
    4) I copied the boot uncompressed folder to Partition 1.
    5) I copied the other uncompresses folders to Partition 2.
    6) I ran ./ /dev/sdb smartQi-Q5-20120515.bin
    7)keep the “move” button pressed and then press the “power” button.

    I would be very grateful to you if you could help me install your great work on my NAND-DEAD SQ5!

    Thanks a lot Roberto!

  8. Comment by Roberto

    2012-11-12 @ 00:05

    WOW. Cyrille, I think you are expecting too much about the software. I’m afraid that if you are having trouble to install, it is very likely that you’ll find it hard to use as well. There are no easy to use UI components for configuration, and most things must be done by hand for now (like calibrating the touchscreen…). Anyways, I’ll try to answer your questions:

    Please create only one ext3 partition, not two. Assuming you are using an USB card reader, extract it and plug it again when partitions are created or modified. Then, format the ext3 partition with mkfs.ext3 and the swap partition with mkswap. Mount the ext3 into a temporary place, for example “mount /dev/sdb1 /mnt”. Always mount it by hand with the “mount” command and root user, if your desktop computer automounts it, umount it first. Change to the mount directory and unpack the rootfs there, as root, using “tar xJf”. Umount it and plug the sd card into your SmartQ.

    That should be all. Be very careful when working with device names in the command line, you know, it is very easy to wipe your hard disk by mistake…

  9. Comment by Cyrille

    2012-11-12 @ 00:18

    Thanks Roberto!
    It’s also part of getting used to Linux in a useful manner to me!
    I’ll try tomorrow, but is the ./ /dev/sdb smartQi-Q5-20120515.bin to be run after unpacking the rootfs?
    Thanks again for your precious support! For now I can only use my SQ5 with Qdroid 1. Qdroid 2 is so unstable it’s unusable!
    I wish I could install a Linux version like yours! And then dream of using it regularly even if it’s not (yet ;-) optimized ;-)
    And in another life dream of improving your latest work, Zenvoid-desktop!

  10. Comment by Roberto

    2012-11-12 @ 11:07

    The bootloader can be installed after or before unpacking the rootfs, there is no difference. I hope the desktop is useful to you, I’ll try to make it easier to use and better documented in subsequent versions. Have fun.

  11. Comment by Cyrille

    2012-11-12 @ 14:53

    Thanks to your clear and king messages I managed (easily ;-) to install your zenvoid-desktop! It’s great! Would there be a special way to have a usb keyboard recognized and used under your awesome new desktop? Thanks again for everything!!!
    PS: At the booting log there is this:
    udev requires a kernel >= 2.6.26 not started… Failed

  12. Comment by Cyrille

    2012-11-12 @ 15:39

    Hi again!
    I’m like a kid learning how to ride a bike on a Harley-Davidson without a helmet ;-)
    I remember installing Mer on my SQ5 few years ago and I have the same feeling of a great desktop; yours being much more improved, styled, easy and optimized! Great job!!!
    The thing is I remember I could type on a USB keyboard to use the terminal (and learn how to use Unix commands directly applied to the SQ5); do you think there are some special steps to do to achieve that? Or is there a (bad) chance my USB ports (Yes I unsoldered the BT and replaced it with a standard size USB port) are defective? Is there a quick and reliable way to check that?

    Muchas gracias por todo lo que ha hecho, Roberto, y siga así.

  13. Comment by Cyrille

    2012-11-12 @ 15:47

    I remembered using lsusb but “command not found”. I’ll try an apt-get install usbutils ;-)

    I guess I burnt my USB ports!! When I type lsusb nothing happens other than back to root@smartq5:~#

  14. Comment by Cyrille

    2012-11-12 @ 16:44

    Hi again Roberto!
    I SSHd into my SQ5 from my IBM Thinkpad T42 Debian!
    Now I can begin riding ;-)
    But as I said one of my major worry is the USB port ;-(

  15. Comment by Cyrille

    2012-11-12 @ 22:30

    Hi again!
    I remember when I had Linux on my SQ5 I encountered a problem linked to hibernation! When the device is idle for a few minutes, the screen turns black and when I want it to go back to service nothing happens! The solution might be to force no sleep/hibernation schedule, but I never found a good solution ;-( If you have a few more interesting thoughts…
    Thanks again!

  16. Comment by Cyrille

    2012-11-13 @ 21:08

    Hi Roberto!
    You’re probably fed up with my messages! Let me tell once more how great your work is! Even if the Qdroid2 porting is very fast (but not reliable! I noticed it freezes each time the on-screen keyboard pops up!!!) your zenvoid-desktop is a hit! I guess I’ll continue using it instead of Qdroid1 I used to be using before you transformed my dead-nand SQ5 into a real performant Linux desktop!

  17. Comment by Roberto

    2012-11-15 @ 17:52

    I don’t know where to start answering your questions, I’ll try to summarize all topics:

    udev does not work due to the old kernel, it is a common problem of old devices. Porting smartq patches to newer kernels is too much work, right now I have no plans to make udev work on smartq.

    An USB keyboard requires the USB controller to be changed to host mode, most likely it will boot in device mode by default. In addition, since there is no udev, configuring usb devices may be tricky. The mini-usb port can be easily converted to full usb port by plugging an adapter, they are cheap, around $2.

    You can install any package from Debian repositories if you want. They won’t be optimized for the CPU, but they should work. If you update with apt-get, it may want to replace most packages in the rootfs with armv4t-with-no-fpu packages from Debian armel repositories. Doing that will have a big impact in performance, specially for programs using the fpu which will slow down very noticeably. I’ll try to publish my custom repository of recompiled packages in the future to avoid this.

    I’ve seen the problem with SmartQ5 screen when device is idle (only happens with Q5, Q7 is fine). Seems to be a hardware bug in some units, I’ve ignored this problem because I thought only early Q5 units were affected, but if you are experiencing it, it may be more common than I thought. I will look into it. For now, powering off/on the screen several times is the only workaround that I know.

  18. Comment by Cyrille

    2012-11-15 @ 20:29

    Thanks for your clear, fast and thoroughful answers! I bought a USB adapter but it does not seem to work… No keyboard is being recognized (it used to work when I had the original SQ5 Linux firmware working!) that’s why I think the mini-USB port is dead… I had bought an OTG usb adapter and it used to work…
    Or something else is missing me… How could the USB controller be changed into host mode?
    Anyway I’m very grateful to your devotion, perseverance, patience and very high skills!

  19. Comment by Cyrille

    2012-11-15 @ 21:23

    Hi Roberto!
    I used SmartQ Magic SD to check if my USB port is dead or not (I had not thought about that before ;-(
    It is working! To revive my NAND I guess I would need a file from a sane SQ5…
    But where on this Galaxy is that findable ;-)

  20. Comment by Cyrille

    2012-11-26 @ 23:36

    Hi Roberto!
    Looking desperately for a for my SQ5, I found this, which could be of some interest to you:

  21. Comment by mu3en

    2013-03-30 @ 12:53

    way to kick ass on a solid q5 revival, rocks very hard, awesome vision.
    you mention a method for screen calibration via cli? think it needs some tweaking here.
    produced something similar, though less involved, to offer a workable os/de on the (otherwise pretty unusable) ai touchbook, and contributed on the original q5 mer project with stskeeps.
    have a couple of more in depth questions on some applications and the underlying debian framework, maybe we can link directly via email?

  22. Comment by Roberto

    2013-03-31 @ 14:24

    Hi mu3en, the easier method that I know for screen calibration is to install libts-bin package and execute ts_calibrate program. Of course you can send me email if you want, I may be a little bit slow to answer but I’ll eventually see your messages.

  23. Comment by Gabriel Cabral

    2013-04-09 @ 08:48

    Hi, i got a working debian in a cheap chinese 7″ tablet with a allwinner a10 cpu (Cortex A8). ¿is there any way to get the zenvoid-desktop components running on it?
    Right now i’m working over a LXDE desktop with Florence virtual keyboard, it works pretty fine, but it’s ugly and some things in LXDE are good for desktop pc’s, but not for mobile touch devices.

  24. Comment by Roberto

    2013-04-15 @ 22:19

    Some components may work, but a new hardware adaptation for your tablet is required to have it working properly (hardware buttons mapping, battery and backlight plugins, leds…).

    Get sources from here if you want to experiment:

  25. Comment by Roberto

    2013-08-19 @ 22:31

    Sorry for closing comments, hundred of spam comments per day is not funny. Please send me email from now. If I’ve accidentally deleted your non-spam comment please send it again by email.

RSS feed for comments on this post.

Sorry, comments are closed at this time.

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