X11vnc on Maemo
How to install
There are two ways to install X11vnx for Maemo devices (N8x0 with Diablo or N900 with Fremantle).
The first way is to install x11vnc as separate product. It is available for Maemo in the extras repository. To install it you should open the Application Manager then go to Menu->Tools->Application Catalog, click on the extras repository and enable it.
Then you should use the application manager to search for the package named x11vnc and install it.
The second (and recommended) way is to install x11vnc as part of Maemo PC Connectivity 2nd Edition product from extras repository. Maemo PC Connectivity is a product that enables integration of Maemo device with host PC. Host PC operating system can be either Linux, Windows or Mac OS X.
How to use it
You should have a vnc client installed on your machine. You can use xtightvncviewer or any other of your preference. To install it on Debian/Ubuntu distributions just run
$ sudo apt-get install xtightvncviewer
on a terminal. To execute it you should first enable the x11vnc server on the device. Open the Menu list->Extras->x11vnc. Then you can run the vcn client with
$ xtightvncviewer <device's ip address>
You can use the connection manager (Menu list->Settings->Connection manager) to get the ip address of the device.
Problems with default configuration
After x11vnc is installed the following problems may happen:
- Mouse pointer does not appear on the client screen
- The menu list, or some other area, does not responds to clicks
- The Enter key does not behaves as expected (it opens the big virtual keyboard)
- It is too slow
There are two possible solutions for #1. One is to enable the mouse pointer in the device. To proceed, open an ssh connection with the device (or open an xterm session) and do a
$ cd /usr/share/icons/xcursor-transparent/cursors/
then rename the transp file
$ mv transp transp-ori
A better option os to enable to mouse pointer in you vnc client if it supports this option. On xtightvncviewer it is provided with the option -x11cursor. Then you can use
$ xtightvncviewer -x11cursor <device's ip address>
To solve problem #2 it is necessary to change the behavior of the X window system of the device. Basically it is necessary to disable the extension that detects if the screen is pressed with the stylus or with the finger. To proceed, open an ssh connection to the device and edit the /etc/init.d/x-server file. Then add -extension XInputExtension to the X options. i.e. replace
ARGS="-mouse tslib -nozap -dpi $DISPLAY_DPI -wr -nolisten tcp"
ARGS="-mouse tslib -nozap -dpi $DISPLAY_DPI -wr -nolisten tcp -extension XInputExtension"
then reboot the device. The reboot is needed because the dsmetool detects when X is stopped and automatically reboots it.
The problem #3 is also easily solved by remapping the Return key to the Keypad Enter key. x11vcn allows it with the -remap options. You should run x11vnc with
$ x11vnc -remap Return-KP_Enter
to do it. Or you can edit the /usr/share/applications/hildon/x11vnc.desktop file and replace
Exec=/usr/bin/x11vnc -remap Return-KP_Enter
and use the extras entry for the x11vnc server.
Finally, problem #4 is a well known limitation of x11vnc reported on .
- "A rate limiting factor for x11vnc performance is that graphics hardware is optimized for writing, not reading (x11vnc reads the video framebuffer for the screen image data). The difference can be a factor of 10 to 1000, and so it usually takes about 0.5-1 sec to read in the whole video hardware framebuffer (e.g. 5MB for 1280x1024 at depth 24 with a read rate of 5-10MB/sec). So whenever activity changes most of the screen (e.g. moving or iconifying a large window) there is a delay of 0.5-1 sec while x11vnc reads the changed regions in."
Note that if you use USB networking instead of WLAN, you will have a better response.