Wacom Intuos USB on Linux

Allin Cottrell, January 2002

 

How I got my Wacom Intuos 9x12 graphics tablet (USB version) working, with Linux kernel 2.4.17 on ix86, XFree86 version 4.1.0, GTK+ 1.2.10 and gimp 1.2.2.

This is basically a distillation of more extensive information found at
http://www.runkel-it.de/wacom_tablet_howto.html and a few other sites. [Note added Jan 8, 2003: the most up-to-date site for this sort of thing now seems to be the Linux Wacom Project, linuxwacom.sourceforge.net.]

0. Contents

  1. Linux kernel
  2. XFree86
  3. GTK+
  4. Operation - gimp

1. Linux kernel

As of 2.4.17 the stock Linux kernel has a functional wacom driver (for the Intuos at any rate).

Configure the kernel source for input support:

CONFIG_INPUT=m
CONFIG_INPUT_EVDEV=m

(This will result in the creation of the modules input.o and evdev.o.)

Also configure kernel USB support. Here is a relevant extract from my grep USB /usr/src/linux/.config:

# USB support
CONFIG_USB=m
# CONFIG_USB_DEBUG is not set
# Miscellaneous USB options
CONFIG_USB_DEVICEFS=y
# CONFIG_USB_BANDWIDTH is not set
# USB Controllers
CONFIG_USB_UHCI=m
# CONFIG_USB_UHCI_ALT is not set
# CONFIG_USB_OHCI is not set
# USB Device Class drivers
# CONFIG_USB_AUDIO is not set
# CONFIG_USB_BLUETOOTH is not set
# CONFIG_USB_STORAGE is not set
# CONFIG_USB_ACM is not set
# CONFIG_USB_PRINTER is not set
# USB Human Interface Devices (HID)
CONFIG_USB_HID=m
# CONFIG_USB_KBD is not set
# CONFIG_USB_MOUSE is not set
CONFIG_USB_WACOM=m

This will result in the creation of the usb modules hid.o, usb-uhci.o, usbcore.o and wacom.o. Actually I believe that hid.o may be redundant for this purpose, but having it around does no harm.

You must then rebuild the kernel and modules; install them; run /sbin/lilo; and reboot.

I created a little script which I called /etc/rc.d/rc.wacom to load the relevant kernel modules:

modprobe usb-uhci
modprobe wacom
modprobe evdev

These lines automatically bring in usbcore.o and input.o, if your module dependencies are in order.

2. XFree

You should replace the /usr/X11R6/lib/modules/input/wacom_drv.o module which is supplied with the XFree86 4.1.0 binary package for Linux with the updated version available from Frederic Lepied's site (version alpha 25 as of this writing). Without this update I was unable to get any action at all from the tablet. [Update, Jan 2003: Try linuxwacom.sourceforge.net for the current driver.]

Then get your /etc/X11/XF86Config right.

Add three "InputDevice" sections, one each for the Wacom stylus (or pen), the Wacom eraser (the other end of the pen) and the Wacom 4D mouse. These sections should look something like the following:

Section "InputDevice"
  Driver        "wacom"
  Identifier    "cursor"
  Option        "Device"        "/dev/input/event0"
  Option        "Type"          "cursor"
  Option        "Mode"          "relative"
  Option        "USB"           "on"
  Option        "Speed"         "3.0"
EndSection

Section "InputDevice"
  Driver         "wacom"
  Identifier     "stylus"
  Option         "Device"        "/dev/input/event0"
  Option         "Type"          "stylus"
  Option         "Mode"          "absolute"
  Option         "USB"           "on"
  Option         "Tilt"          "on"
#  Option         "TiltInvert"    "on"
  Option        "Threshold"     "5"
EndSection

Section "InputDevice"
  Driver        "wacom"
  Identifier    "eraser"
  Option        "Device"        "/dev/input/event0"
  Option        "Type"          "eraser"
  Option        "Mode"          "absolute"
  Option        "USB"           "on"
  Option        "Tilt"          "on"
#  Option        "TiltInvert"    "on"
  Option        "Threshold"     "5"
EndSection

I found that it's important to include the "Threshold" setting for the stylus and eraser: without it, moving the pen produced cursor motion but I couldn't actually draw in the gimp (no marks appeared). You may want to experiment with the "TiltInvert" setting.

You also need to add references to the new Input Devices into the "ServerLayout" section of XF86Config (the ellipsis below indicates the standard material that was there before, for keyboard and regular mouse):

Section "ServerLayout"
    ...
    InputDevice   "cursor"  "SendCoreEvents"
    InputDevice   "stylus"  "SendCoreEvents"
    InputDevice   "eraser"  "SendCoreEvents"
EndSection

Note you don't need a "Load" line for the wacom driver in the "Module" section. The wacom_drv.o module is auto-loaded by XFree.

3. GTK+

If you built GTK+ from source, the default configuration for version 1.2.10 (and earlier), does not include support for Xinput, which is required if you're going to use the Wacom tablet with the gimp. Thus you must rebuild and reinstall GTK. At the ./configure stage be sure to add the flag

  --with-xinput=xfree

If you installed GTK+ as part of a Linux distribution, Xinput support may well be present already.

4. Operation - gimp

To actually use the tablet I find this order of events works:
  1. Plug the tablet into your USB port
  2. Run rc.wacom (above), or somehow load the relevant kernel event and usb modules
  3. Start X
  4. Fire up gimp

Under gimp's File/Dialogs... menu, open the Input Devices dialog. You should see a drop down list at the top left of the window showing the input devices that you configured for XFree86 (in my case, "stylus", "eraser" and "cursor"). Each has a mode associated with it, which can be set from the drop down list on the right. I set "Screen" mode for all 3 devices. (I had some weird stuff go on when I tried "Window" mode.)

To see what's going on while you're using gimp, open the Device Status box (under File/Dialogs). You should see icons showing the status of each input device (e.g. which gimp tool is in use with each).


Allin Cottrell<cottrell@wfu.edu>
Last modified: Tue Jan 15 17:46:38 EST 2002