A kernel driver for legacy Wacom serial tablets [linux, driver, wacom, releases]

Update (14/08/20): It looks like this driver will be included in Linux kernel 3.17, thanks to the labors of Hans de Goede. It should no longer be necessary to use the version linked here.

Update (12/03/27): There is a new version of this driver available, which includes a patched version of inputattach, here. This includes support for PenPartner tablets. For Intuos tablets, look here.

Having gotten back to doing some art on computer, I decided to dust off my old Wacom Digitizer II again. It's always a bit of an adventure trying to get it to work on a new system, as some configuration system has always completely changed since the last time I hooked it up. However, this time, I discovered that while the general approach to detecting and configuring input devices had improved a lot, support for these old serial Wacom tablets had been completely removed from the xorg Wacom input driver!

Initially I was pretty irritated, as you can imagine, but after looking at the code that had been excised, it was clear that this was for the best. Given the new(ish) approach to handling input devices in the Linux kernel, having all the support for the device on the X side is now clearly the Wrong Thing. So, I set about reading as much code as possible related to serial Wacom tablets, and writing a serio-based driver.

Along the way, it seemed to me that this would be cleaner if protocol four (like my Digitizer II) and protocol five (newer tablets like the Intuos series) devices were supported separately. So, Intuos owners, I regret to say that the driver presented here does not support your devices, though I wouldn't mind trying to write a driver to support them.

Aside from the inevitable actual bugs to be discovered, this driver currently does not support (at least):

  • pad buttons;
  • tilt;
  • suppression;
  • cursor devices (some things are missing to fully support these devices).

To use it presently, you'll need to do a few things: (instructions apply to Debian systems but should be easily adapted elsewhere)

  1. Unpack and build the module:

    $ tar xzf wacom_serial.tar.gz
    $ cd wacom_serial
    $ make all

    That should produce wacom_serial.ko if you've got things otherwise configured correctly for building modules against your current kernel version. Then:

    $ sudo insmod ./wacom_serial.ko
  2. Patch and build inputattach (in the joystick package) with the included patch:

    $ apt-get source joystick
    $ cd joystick-1.4.1
    $ patch -p1 < ~/wacom_serial/inputattach.patch
    $ dpkg-buildpackage
    $ sudo dpkg -i ../inputattach-1.4.1-1_powerpc.deb

    (Adjust paths to things per your case, of course.)

  3. Add the included 70-serial-wacom.rules file to your local udev rules (put it in /etc/udev/rules.d).
  4. Connect your tablet, turn it on, and run:

    $ sudo inputattach --wacom_iv /dev/ttyS0

    where ttyS0 is the device for the serial port to which the tablet is attached. USB serial adapters usually show up as /dev/ttyUSBn.

At this point, if everything else on your system is fairly current (including the xf86-input-wacom module and its configuration), your tablet should hopefully work in X. Let me know.

So far, I've only tested it on Linux kernel 2.6.39, i386 and powerpc.

You can get the driver here: wacom serial-110702-0.tar.gz. If you have a Wacom serial tablet, please try it out and let me know what happens, success or failure regardless. Please also send any messages logged (usually to /var/log/kern.log) from the point where you attached the device with inputattach.

This driver was developed with reference to much code written by others, particularly:

  • elo, gunze drivers by Vojtech Pavlik;
  • wacom_w8001 driver by Jaya Kumar;
  • the USB wacom input driver, credited to many people (see drivers/input/tablet/wacom.h);
  • new and old versions of linuxwacom / xf86-input-wacom credited to Frederic Lepied, Ping Cheng, and Jon E. Joganic;
  • and xf86wacom.c (a presumably ancient version of the linuxwacom code), by Frederic Lepied and Raph Levien.