Debian 6.0 (Squeeze) on the Xplore iX104C3 rugged Tablet PC


productid-1444-sku-IX104C3

System specs

A nice review here : http://www.ruggedpcreview.com/3_slates_xplore_ix104c3.html

Users handbook : ftp://Support:Xplore@ftp.xploretech.com/Reports%20and%20Handbooks/iX104C3%20USERS%20HANDBOOK.pdf

Note: my model only has a digitizer (tablet PC model), no touchscreen (dual mode version)

Debian stable to the rescue

First I wanted to install Arch Linux on this system, but soon I encountered a severe setback : the Wacom stylus would not work. Then I tried Ubuntu 12.04 (Precise), everything worked out of the box, except the stylus!
Explanation : it seems the support for this older, serial Wacom tablet has been removed from the X.Org Wacom input drivers, since the 0.10.6 version and up.
(more info can be found here : http://ubuntuforums.org/showthread.php?t=1780154 )

Fortunately Debian Squeeze still uses a working 0.10.5 driver version!

Dual booting

I chose to keep the original Windows XP (Tablet PC edition) so I used PartedMagic / Gparted to shrink the windows partition (40G should be large enough).

If ever needed to restore the original windows sytem, recovery disks and drivers can be found here : http://www.xploretech.com/support/download_center

Debian Installation

This will be an i386 Debian since the Pentium M processor is 32bit only.

Plug an usb keyboard (optional : a mouse if using the graphical installer).

I installed my system from the network (netinstall with PXE booting). The wired network interface (realtek RTL8169sb/8110sb) works out of the box, the Intel wireless adapter (ipw2200) needs a firmware (will be installed later after we enable the non-free repository).

A standard (Gnome 2) desktop environment was selected.

Installation done, reboot into your newly installed system.

Note : when not using an usb keyboard, you will want to :

  • enable automatic login in gdm3
  • disable screen locking

(we will work on these two things a bit later)

System configuration

Still, the Wacom stylus does not work out of the box.

Configuring the Wacom stylus

We need to add some udev rules
# nano /etc/udev/rules.d/70-wacom-serial.rules

ACTION!="add|change", GOTO="wacom_end"

# Match all serial wacom tablets with a serial ID starting with WACf
# Notes: We assign NAME though we shouldn't, but currently the server requires it.
#        We assign the lot to subsystem pnp too because server reads NAME from
#        the parent device. Once all that's fixed, a simple SUBSYSTEM="tty"
#        will do and the ENV{NAME} can be removed.
SUBSYSTEM=="tty|pnp", SUBSYSTEMS=="pnp", ATTRS{id}=="WACf*", ENV{ID_MODEL}="Serial Wacom Tablet $attr{id}", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", ENV{NAME}="Serial Wacom Tab
let $attr{id}"
SUBSYSTEM=="tty|pnp", SUBSYSTEMS=="pnp", ATTRS{id}=="FUJ*", ENV{ID_MODEL}="Serial Wacom Tablet $attr{id}", ENV{ID_INPUT}="1", ENV{ID_INPUT_TABLET}="1", ENV{NAME}="Serial Wacom Tabl
et $attr{id}"

LABEL="wacom_end"

Then we also need to tell X.Org about our tablet
# mkdir -p /etc/X11/xorg.conf.d/
# cat >/etc/X11/xorg.conf.d/50-wacom.conf <<EOF

Section "InputClass"
Identifier "Wacom class"
MatchProduct "Wacom|WACOM|Hanwang|PTK-540WL"
MatchDevicePath "/dev/input/event*"
Driver "wacom"
EndSection

Section "InputClass"
Identifier "Wacom serial class"
MatchProduct "Serial Wacom Tablet"
Driver "wacom"
EndSection

Section "InputClass"
Identifier "Wacom serial class identifiers"
MatchProduct "WACf|FUJ02e5|FUJ02e7|FUJ02e9"
Driver "wacom"
Option "Button1" "1"        # left mouse button
Option "Button2" "3"        # right mouse button
EndSection
EOF

Reboot your system, the stylus should now be working!

Stylus calibration

If needed to perform stylus calibration, we will install xinput_calibrator from the sources (package is not available for Squeeze)
http://www.freedesktop.org/wiki/Software/xinput_calibrator

As a regular user
$ sudo apt-get install build-essential dh-autoreconf libx11-dev libxext-dev libxi-dev
$ cd && wget http://github.com/downloads/tias/xinput_calibrator/xinput_calibrator-0.7.5.tar.gz
$ tar xvzf xinput_calibrator* && cd xinput_calibrator*
$ ./autogen.sh && make && sudo make install

Now run
$ xinput_calibrator –output-type xorg.conf.d

Finally, as root, copy and paste the program’s output (the “option” lines) into your /etc/X11/xorg.conf.d/50-wacom.conf
(restart X for changes to take effect)

Updating the kernel (optional)

Enable the Debian backports
# echo >>/etc/apt/sources.list ‘deb http://backports.debian.org/debian-backports squeeze-backports main’ && apt-get update
# apt-get -t squeeze-backports install linux-image-686-pae

Enabling the non-free repo
# nano /etc/apt/sources.list

(your debian mirror will vary)

deb http://ftp.fr.debian.org/debian/ squeeze main contrib non-free

And installing the non-free firmwares
# apt-get update && apt-get install firmware-linux-nonfree firmware-ipw2x00 firmware-realtek

(reboot system)

Installing a newer Iceweasel (http://mozilla.debian.net/)
# echo >>/etc/apt/sources.list ‘deb http://mozilla.debian.net/ squeeze-backports iceweasel-release’
# apt-get update && apt-get install -t squeeze-backports iceweasel

Interesting add-ons for Iceweasel/Firefox :

FireGestures
https://addons.mozilla.org/en-US/firefox/addon/firegestures/

Accessibility tools

The Gnome On-screen Keyboard (GOK) was installed by default. I found it to be quite annoying to use (and sometimes buggy).
# apt-get remove gok

(There’s also Dasher. Haven’t tried it yet)

brltty (the Braille daemon) was also installed. As I don’t need it (and it takes some CPU time) :
# apt-get remove brltty

Same with Orca, the screen reader
# apt-get remove gnome-orca

So let’s install a nicer virtual keyboard :

Florence ( http://florence.sourceforge.net/english.html )
# apt-get install florence

Matchbox keyboard (light but less integrated into Gnome)
# apt-get install matchbox-keyboard

Enabling Florence at the GDM login screen
# cp /usr/share/applications/florence.desktop /usr/share/gdm/autostart/LoginWindow/

(you may now remove autologin in GDM)

Enable virtual keyboard when screen is locked ( https://live.gnome.org/GnomeScreensaver/FrequentlyAskedQuestions )

For some reason I wasn’t able to use Florence instead of matchbox-keyboard.
In GConf editor :

set /apps/gnome-screensaver/embedded_keyboard_enable to “true”
set /apps/gnome-screensaver/embedded_keyboard_command to “matchbox-keyboard –xid”

Allow virtual keyboard with gksu

Open GConf editor :

Set /apps/gksu/disable-grab to “true”

Some more applications for hand writing/drawing with the stylus

Xournal note taking
# apt-get install xournal

Mypaint drawing
# apt-get install mypaint

Special keys

By default on this hardware :

– the P1 key is mapped to F1
– P2 is mapped to F2
– P3 is mapped to F8
– Fn is mapped to F11
– “screen rotation” key is mapped to F12
– “secure” key is mapped to Ctrl-Alt-Del

How to see the corresponding keycodes? Just start
$ xev

Then try each special key.

P1 is keycode 0x67
P2 is 0x68
P3 is 0x74
Fn is 0x95
“Rotation key” is 0x96
“Secure key” will send the 3 keycodes corresponding to Ctrl-Alt-Del

Now modify your hotkey shortcuts in the Gnome settings.

Screen rotation

Copy this small script to /usr/local/bin/rotate.sh
# cat >/usr/local/bin/rotate.sh <<EOF
#!/bin/bash
#
# Rotate the screen clockwise 90 degrees.
# Also, rotate the wacom pointer so the stylus will still work.
#
# Original script by Ben Wong,  October 1, 2010
# Public domain.  No rights reserved.
#
# Modified by fredo696@gmail.com / https://agentoss.wordpress.com
# for use on Debian 6.0
# February 10, 2013
#

# set your wacom device name here (xsetwacom –list)
stylusdevname=”Serial Wacom Tablet WACf004 PNP0501″

case $(xsetwacom get “$stylusdevname” Rotate) in
CCW)  # Currently top is rotated left, we should set it normal (0°)
xrandr -o normal
xsetwacom set “$stylusdevname” Rotate NONE
;;
NONE)  # Screen is not rotated, we should rotate it right (90°)
xrandr -o right
xsetwacom set “$stylusdevname” Rotate CW
;;
CW)    # Top of screen is rotated right, we should invert it (180°)
xrandr -o inverted
xsetwacom set “$stylusdevname” Rotate HALF
;;
HALF)  # Screen is inverted, we should rotate it left (270°)
xrandr -o left
xsetwacom set “$stylusdevname” Rotate CCW
;;
*)
echo “Unknown result from ‘xsetwacom get $stylusdevname Rotate'” >&2
exit 1
;;
esac
exit 0
EOF

And make it executable
# chmod +x /usr/local/bin/rotate.sh

Now setup the “screen rotation” hotkey in the Gnome2 hotkey settings, to execute this script. Should work nicely 🙂

Gnome hotkey settings are good when you want to launch a program with a hotkey, but is not adapted when you want to remap a key.
To do key remapping we will use xmodmap ( https://wiki.archlinux.org/index.php/Extra_Keyboard_Keys_in_Xorg )

For instance I like the P2 and P3 buttons to act as Page_Up and Page_Down (useful when browsing)

As a regular user
$ nano ~/.Xmodmap

# P2 = F2 key = Page Up
keycode 68 = Page_Up
# P3 = F8 key = Page Down
keycode 74 = Page_Down

To test your .Xmodmap
$ xmodmap ~/.Xmodmap

When login in your next Gnome session, you will be asked if you want to load an .Xmodmap file, we select it and say yes of course.

Note : when using this method of key remapping, you will loose the actual F2 and F8 keys on the virtual keyboard.

TODO : Fingerprint scanner
The fingerprint reader module is a SGS Thomson/UPEK model (usb id 0483:2016). See more at http://www.freedesktop.org/wiki/Software/fprint/libfprint/upekts
# lsusb

Fingerprint GUI project
http://www.n-view.net/Appliance/fingerprint/index.php
# wget http://www.n-view.net/Appliance/fingerprint/download/fingerprint-gui-1.04.tar.gz

or libfprint
http://www.freedesktop.org/wiki/Software/fprint/Installation

Sound

Sound playback works out of the box; recording from the builtin mic needed some fiddling.

You need to enable some controls in the gnome volume control utility. See screenshots below.

Capture-Préférences du contrôleur de volumeCapture-Contrôleur de volume : Intel 82801DB-ICH4 (Alsa mixer)-1 Capture-Contrôleur de volume : Intel 82801DB-ICH4 (Alsa mixer)

Voice control and speech recognition

Google Chrome + speech recognition extension

Web speech API is now available with Chrome version 25 or later
https://www.google.com/intl/en/chrome/demos/speech.html

Download and install the .deb package from the official site, here for the 32 bits version
$ wget https://dl.google.com/linux/direct/google-chrome-stable_current_i386.deb
$ sudo dpkg -i google-chrome*
(if apt complains about missing dependencies)
$ sudo apt-get -f install

Next, install a speech recognition extension. I suggest : “Speech Recognition for Text inputs”
(website at http://www.nonelike.me/2012/03/chrome-speech-recognition-extension.html )

Works nicely 🙂

(sadly, I don’t think Firefox/Iceweasel has a similar working extension yet)

Power Management

The battery has quite a short autonomy on this model, thus it’s important to optimize energy consumption.

CPU frequency scaling works out of the box.

Suspend to RAM (sleep) and Suspend to disk (hibernate) are working fine.

Still we need to install some useful tools
# apt-get install laptop-mode-tools powertop

Configure laptop-mode-tools
# nano /etc/laptop-mode/laptop-mode.conf

ENABLE_AUTO_MODULES=1

Edit LCD brightness settings
# nano /etc/laptop-mode/conf.d/lcd-brightness.conf

TO FIX : does not work. Modifying the value in /sys/class/backlight/intel_backlight/brightness seems to do nothing

# grep . /sys/class/backlight/intel_backlight/*

Enable bluetooth power off
# nano /etc/laptop-mode/conf.d/bluetooth.conf

CONTROL_BLUETOOTH=1

Other modules should have good default settings.

Finally restart the laptop-mode daemon
# /etc/init.d/laptop-mode restart

Also run powertop for other possible optimizations.

Show battery level and health in a terminal:
# acpi -i

TODO : disable GPS for lower energy consumption (kernel module : ftdi_sio)

Optimizations

Filesystem optimizations (noatime, tmpfs)
# nano /etc/fstab

proc            /proc           proc    defaults            0       0
UUID=xxxxxxxxxx /               ext4    errors=remount-ro,noatime 0       1
UUID=xxxxxxxxxx /home           ext4    defaults,noatime        0       2
UUID=xxxxxxxxxx none            swap    sw                  0       0
tmpfs           /tmp            tmpfs   defaults,nosuid,nodev   0       0

Minimize swappiness (for less disk usage)
# sysctl -w ‘vm.swappiness=0’
# nano /etc/sysctl.conf

vm.swappiness = 0

Prelink binaries for faster loading
# apt-get install prelink
# prelink -a

(Remember to run prelink after software updates)

Sensors configuration (optional) for system temperature monitoring
# sensors-detect

Some minor cosmetic changes

Grub bootloader

Choose an image and convert it to PNG format using “convert” from the imagemagick package
$ convert image.jpg boot.png

Change the default background image
# nano /etc/default/grub

GRUB_GFXMODE=1024×768
GRUB_GFXPAYLOAD_LINUX=”keep”
GRUB_BACKGROUND=”path/to/the/boot.png”

Then
# update-grub

GDM3’s default background image can be changed as well
# nano /usr/share/gdm/greeter-config/10_desktop-base

GPS Applications

Install the gpsd GPS daemon
# apt-get install gpsd gpsd-clients

Configure your GPS device
# dpkg-reconfigure gpsd

device should by /dev/ttyUSB0

Start gpsd
# /etc/init.d/gpsd restart

Note: You’ll may have to get outside to properly receive GPS signal!

Navigation software

FoxtrotGPS (lightweight on dependencies)
# apt-get install foxtrotgps

gpsdrive (heavier on dependencies)
# apt-get install gpsdrive

Viking (not as easy to use)
# apt-get install viking

(there are plenty others)

Conclusion

If you own a similar computer running Linux, please share your comments, tips & tricks, etc!

Links

Debian Linux on a Tablet PC Howto
http://risujin.org/debian/

Tablet PC tips from the Arch wiki
https://wiki.archlinux.org/index.php/Tablet_PC

TODO

cellwriter (handwriting recognition)
voice control
navit (gps)

3 thoughts on “Debian 6.0 (Squeeze) on the Xplore iX104C3 rugged Tablet PC

  1. hello,
    upgrade lose the function ‘?
    I noticed also very slow to respond, in general. (use google translator)
    Enzo

Leave a reply to Enzo Cancel reply