Wacom Graphire3 vs X Server 1.8

A recent Arch Linux update introduced Version 1.8.1 of the X server, which jettisons the whole HAL infrastructure in favor of udev. This is almost certainly a step in the right direction, but once again it’s time to figure out exactly how to get my Wacom Graphire3 tablet running.

The solution turns out to be putting all the configuration options back in /etc/X11/xorg.conf, exactly where they started out before they moved into HAL FDI files. Not that any of this is obvious, mind you, but that’s how it works out.

So.

At this point, the Arch Linux linuxwacom-bamboo-cth-ctl package installs the only Wacom driver version (0.10.7-4) that works with X 1.8+.

In /etc/udev/rules.d/10-wacom.rules the two highlighted lines match the Graphire and throw the evdev driver overboard if it got control. The top line was the original file; I commented it out and inserted the rest based on a thread in the Arch wiki; I think the original would work fine.

###KERNEL=="event*", ID_VENDOR_ID=="056a", NAME="input/%k", SYMLINK="input/wacom"
# udev rules for wacom tablets.

KERNEL!="event[0-9]*", GOTO="wacom_end"

# Multiple interface support for stylus and touch devices.
DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus"
DRIVERS=="wacom", ATTRS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch"

# Convenience links for the common case of a single tablet.  We could do just this:
#ATTRS{idVendor}=="056a", SYMLINK+="input/wacom-$env{WACOM_TYPE}"
# but for legacy reasons, we keep the input/wacom link as the generic stylus device.
ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom"
ATTRS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch"

# Check and repossess the device if a module other than the wacom one
# is already bound to it.
ATTRS{idVendor}=="056a", ACTION=="add", RUN+="check_driver wacom $devpath $env{ID_BUS}"

LABEL="wacom_end"

When X wakes up, it stitches together a bazillion snippets of config options that used to live in /etc/X11/xorg.conf. This default snippet in /etc/X11/xorg.conf/50-wacom.conf seems to be OK, although only the highlighted stuff applies to my setup.

Section "InputClass"
	Identifier "Wacom class"
# WALTOP needs a patched kernel driver, that isn't in mainline lk yet,
# so for now just let it fall through and be picked up by evdev instead.
#	MatchProduct "Wacom|WALTOP|WACOM"
	MatchProduct "Wacom|WACOM"
	MatchDevicePath "/dev/input/event*"
	Driver "wacom"
EndSection

... snippage ...

Meanwhile, back in /etc/X11/xorg.conf, the tablet requires two InputDevice stanzas and their corresponding ServerLayout entries.

Section "ServerLayout"
    Identifier     "RotatedPortrait"
    Screen      0  "Landscape" 0 0
    Screen      1  "Portrait" RightOf "Landscape"
    InputDevice     "Wacom - stylus"
    InputDevice     "Wacom - eraser"
EndSection

Section "InputDevice"
    Identifier      "Wacom - stylus"
    Driver          "wacom"
    Option          "Device" "/dev/input/wacom"
    Option          "USB" "on"
    Option          "Type" "stylus"
    Option          "Button2" "3"
    Option          "Button3" "2"
    Option          "MMonitor" "off"
    Option          "ScreenNo" "0"
    Option          "BottomX" "16725"
    Option          "BottomY" "11893"
EndSection

Section "InputDevice"
    Identifier      "Wacom - eraser"
    Option          "Device" "/dev/input/wacom"
    Driver          "wacom"
    Option          "USB" "on"
    Option          "Type" "eraser"
    Option          "MMonitor" "off"
    Option          "ScreenNo" "0"
    Option          "BottomX" "16725"
    Option          "BottomY" "11893"
EndSection

I haven’t checked to see if the driver still requires the BottomX / BottomY values to keep the cursor from crashing X when it enters the crack between the displays.

Most of that is documented in the man pages for xorg.conf and wacom.

The corresponding FDI file for the previous X Server is there, just in case you want to compare notes.

Advertisements