Set up Ubuntu 9.10 Karmic on the HP TC1100

With this tutorial you will be able to make better use of the tablet's features than you would on an out-of-the-box Ubuntu installation.

This guide is for Ubuntu/Kubuntu/Xubuntu 9,10 "Karmic Koala" and other Ubuntu derivatives. If you are not using gnome, replace gedit with kate, mousepad, or whatever text editor your distribution uses.

Click here for the Ubuntu 10.04 guide!

Before we begin

  1. I am not responsible for anything you do with your computer, including following this tutorial.
  2. Copy a command by highlighting it and hitting ctrl+c then paste it into a terminal with ctrl+shift+v.
  3. If you need help or have comments, use this forum thread.

comments look like this

terminal commands look like this

configuration file text looks like this

First things first

Apply all updates through the update manager


Ubuntu 9.10 now makes it easy to login without the keyboard attached because the on-screen keyboard is now integrated into the login menu. Just activate it from the login screen by opening the preferences menu from the icon at the bottom.

Installing NVIDIA graphics driver

The proprietary NVIDIA driver is required for screen rotation, special effects, etc.

Fixing the stylus and graphics

The following xorg.conf will allow for screen rotation.

sudo gedit /etc/X11/xorg.conf

Section "Monitor"
	Identifier	"Configured Monitor"
EndSection

Section "Screen"
	Identifier	"Default Screen"
	Monitor		"Configured Monitor"
	Device		"Configured Video Device"
	DefaultDepth	24
	Option		"AddARGBGLXVisuals"	"True"
EndSection

Section "Module"
	Load	"glx"
EndSection

Section "Device"
	Identifier	"Configured Video Device"
	Driver	"nvidia"
	Option	"NoLogo"	"True"
	Option  "RandRRotation"	"True"
	Option  "NvAGP"		"1"
	Option	"RenderAccel"	"False"
EndSection

Section "ServerLayout"
	Identifier	"Default Layout"
	Screen		"Default Screen"
EndSection

This will fix the stylus right-click and rotation.

gedit /usr/share/hal/fdi/policy/20thirdparty/10-linuxwacom.fdi

<?xml version="1.0" encoding="ISO-8859-1"?>
<!-- this is probably a bit imprecise -->
<deviceinfo version="0.2">
  <device>
    <match key="info.category" contains="input">
      <match key="info.product" contains_outof="Wacom">
	<merge key="input.x11_driver" type="string">wacom</merge>
	<merge key="input.x11_options.Type" type="string">stylus</merge>
	<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
	<append key="wacom.types" type="strlist">eraser</append>
	<append key="wacom.types" type="strlist">cursor</append>
	<append key="wacom.types" type="strlist">pad</append>
      </match>
    </match>
    <match key="info.capabilities" contains="serial">
      <match key="@info.parent:pnp.id" contains_outof="WACf001;WACf002;WACf003;WACf004;WACf005;WACf006;WACf007;WACf008;WACf009;WACf00a;WACf00b;WACf00c;FUJ02e5">
	<append key="info.capabilities" type="strlist">input</append>
	<merge key="input.x11_driver" type="string">wacom</merge>
	<merge key="input.x11_options.Type" type="string">stylus</merge>
	<merge key="input.x11_options.ForceDevice" type="string">ISDV4</merge>
	<merge key="input.x11_options.Button2" type="string">3</merge>
	<merge key="input.device" type="copy_property">serial.device</merge>
	<append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
	<append key="wacom.types" type="strlist">eraser</append>
        <match key="@info.parent:pnp.id" contains_outof="WACf008;WACf009">
	  <!-- Serial tablets with touch capabilities -->
	  <append key="wacom.types" type="strlist">touch</append>
	</match>
        <match key="@info.parent:pnp.id" contains_outof="WACf008">
          <!-- Serial tablets that operate at higher baud rate -->
          <merge key="input.x11_options.BaudRate" type="string">38400</merge>
       </match>
      </match>
    </match>
    <!-- N-Trig Duosense Electromagnetic Digitizer -->
    <match key="info.product" contains="HID 1b96:0001">
      <match key="info.parent" contains="if0">
       <merge key="input.x11_driver" type="string">wacom</merge>
       <merge key="input.x11_options.Type" type="string">stylus</merge>
      </match>
    </match>
  </device>
  <!-- Match the Wacom Bluetooth A5 pen tablet -->
  <device>
    <match key="info.capabilities" contains="input.mouse">
      <match key="info.product" contains="WACOM">
        <match key="info.product" contains="Tablet">
          <merge key="input.x11_driver" type="string">wacom</merge>
          <merge key="input.x11_options.Type" type="string">stylus</merge>
	  <append key="info.callouts.add" type="strlist">hal-setup-wacom</append>
	  <append key="wacom.types" type="strlist">eraser</append>
	  <append key="wacom.types" type="strlist">cursor</append>
        </match>
      </match>
    </match>
  </device>
  <device>
    <match key="input.x11_options.Type" contains="eraser">
      <merge key="info.product" type="string">eraser</merge>
    </match>
  </device>
  <device>
    <match key="input.x11_options.Type" contains="stylus">
      <merge key="info.product" type="string">stylus</merge>
    </match>
  </device>
</deviceinfo>

 

You must reboot for changes to take effect.

Installing useful applications

Cellwriter is a handwriting application used for entering text using the stylus.
Xournal is a note-taking application.
Xbindkeys is used for making the stylus buttons work.


Install them with this command:

sudo aptitude install cellwriter xournal xbindkeys wacomcpl

Make xbindkeys start up automatically.

Configure xbindkeys for custom key mapping

gedit .xbindkeysrc

"rotate"
b:30
"xournal"
b:31
"cellwriter"
b:32
#"customcommand1"
#c:159
#"customcommand2"
#c:151

c:159 and c:151 are the Q and screen-switching buttons respectively. If you want to map them to a command, just remove the #s and enter your command in the appropriate spot.

Other tweaks and fixes

**IMPORTANT** Switch to root so we can enter the following commands without worrying about "sudo" on each one.

sudo su


Load the tc1100 module needed for controlling the jogdial and wireless card status.

modprobe tc1100-wmi
echo "tc1100-wmi" >> /etc/modules


Allow the jogdial to control screen brightness.

This is the only way you can control screen brightness, so this is how I prefer to use the jogdial. If you don't do this step you can keep using it as page up and page down.

gedit /etc/rc.local

echo 0 > /sys/devices/platform/tc1100-wmi/jogdial

Fix stylus calibration after resuming from suspend.

gedit 10_calibrate.sh

#!/usr/bin/env bash

FILE=/tmp/calibration
XSETWACOM=/usr/bin/xsetwacom

function store_value()
{
    value=`$XSETWACOM --display :0.0 get $1 $2`
    echo "$XSETWACOM --display :0.0 set $1 $2 $value" >> $FILE
}

# Store calibration of all devices
function store_devices_calibration()
{
    >$FILE
    store_value "stylus" "TopX"
    store_value "stylus" "TopY"
    store_value "stylus" "BottomX"
    store_value "stylus" "BottomY"
    chmod +x $FILE
}

# Store calibration of all devices
function restore_devices_calibration()
{
    if [[ -e $FILE ]]
    then
	( sleep 2; $FILE )&
    fi
}

MODE=$1

case "$MODE" in
    hibernate|suspend)
	store_devices_calibration
	;;
    thaw|resume) 
	restore_devices_calibration
	;;
    *) exit $NA
        ;;
esac

chmod +x 10_calibrate.sh
mv 10_calibrate.sh /etc/pm/sleep.d/


Make a screen rotation script.

gedit rotate

#!/bin/sh
if [ -n "$(xrandr | grep 768x1024)" ]; then
        xrandr -o normal
        xsetwacom set "stylus" Rotate NONE
else
        xrandr -o left
        xsetwacom set "stylus" Rotate CCW
fi

chmod +x rotate
mv rotate /usr/bin/rotate

This will be used later on after we patch the drivers for the stylus buttons. You must have applied the above xorg.conf and installed the nvidia driver for it to work properly.


Prevent the screen from locking.

It sucks when the screen becomes locked, you don't have a keyboard attached, and you can't access cellwriter.

**NOTE: These commands must be run as your normal login user, not as root/sudo. So if you are in the terminal as root, just type "exit" or open a new terminal to run these.

gconftool -s /apps/gksu/disable-grab -t bool true
gconftool -s /apps/gnome-power-manager/lock/suspend -t bool false
gconftool -s /apps/gnome-power-manager/lock/hibernate -t bool false


Fix the headphone jack.

In the Sound preferences, make sure "jack sense" is enabled. Otherwise sound will still play from the speakers if you have headphones plugged in.

Other notes

Thanks to everyone who made this tutorial possible!

Bug reports:
Tablet input is screwed up after rotation and subsequent suspend/hibernate on thinkpad x61
TI PCI1620 SD card reader not working
[intrepid] suspend/resume with wacom pointers rotated loses calibration
[Hewlett-Packard HP Tablet PC TC1100] hibernate/resume failure [non-free: nvidia]
Tablet stylus right-click not recognized


Was this guide helpful to you? Please see how you can help us.
Posted: May 14th, 2011
The Linux Aisle LLC © 2014