Graphire USB

History

I have done some work on the Graphire USB Xinput driver for XFree86 (3.3.5, 3.3.6 and 4.0). The original author of the Wacom Serial XInput driver is Frederic Lepied. Frederic's driver was adapted to support the Graphire USB by Daniel Schmitt.

My changes are based on Daniel's version 0.2. They fix the following problems:

Thanks to Enrico Zini (zinie@cs.unibo.it) the last vestiges of the dreaded "staircase effect" have been removed from the driver so that the stylus is now usable for drawings in the Gimp without any limitations.

Installation

Kernel USB Support

As a prerequisite, you must have USB support in the kernel set up and working (see the Linux USB web site). Also, you must create the appropriate event device files in /dev/input. If you have only one USB human interface device (HID) this would be /dev/input/event0. I am using kernel 2.1.15 with the USB backport from the 2.3.xx kernels.

XFree86-3.3.5/3.3.6 Module Installation

This is the pre-compiled module for XFree86-3.3.5 and XFree86-3.3.6 based on version 1.5 of the source (I'm using it with XFree86-3.3.5, but it was compiled in the 3.3.6 source tree). Please copy it to "/usr/X11R6/lib/modules/xf86GraphireUSB_3.so". These are the relevant entries from my XF86Config:

Section "Module"
    Load "xf86GraphireUSB_3.so"
EndSection

Section "XInput"
    Subsection "gmouse"
        Port        "/dev/input/event0"
        DeviceName  "Graphire Mouse"
        Mode        Relative
        AlwaysCore
    EndSubsection
    Subsection "gstylus"
        Port        "/dev/input/event0"
        DeviceName  "Graphire Pen"
        Mode        Absolute
        AlwaysCore
    EndSubsection
    Subsection "geraser"
        Port        "/dev/input/event0"
        DeviceName  "Graphire Eraser"
        Mode        Absolute
        AlwaysCore
    EndSubsection
EndSection

You can add a line "Suppress nn" to each of the subsections (compiled-in default for nn is 40). The suppress value has the following new meaning:

Try to increase the suppress value if there is some jitter. Decrease the suppress value to minimize the stair case effect (see the section "Remaining Problems" below).

XFree86-4.0 Module Installation

These are a precompiled modules for XFree86-4.x based on version 1.5 and 1.7 of the source. Please copy it to the appropriate module directory (as /usr/X11R6/lib/modules/xf86GraphireUSB.so).

These are the relevant additional entries for XF86Config:

Section "ServerLayout"
[...]
	InputDevice    "gstylus" "AlwaysCore"
	InputDevice    "geraser" "AlwaysCore"
	InputDevice    "gmouse" "AlwaysCore"
EndSection

Section "Module"
[...]
	Load "xf86GraphireUSB"
EndSection

Section "InputDevice"
	Identifier  "gstylus"
	Driver      "graphireusb"
	Option      "Device" "/dev/input/event0"
	Option      "Mode" "Absolute"
	Option      "Type" "gstylus"
	Option      "Suppress" "30"
EndSection
Section "InputDevice"
	Identifier  "geraser"
	Driver	    "graphireusb"
	Option      "Device" "/dev/input/event0"
	Option      "Mode" "Absolute"
	Option      "Type" "geraser"
	Option      "Suppress" "30"
EndSection
Section "InputDevice"
	Identifier  "gmouse"
	Driver	    "graphireusb"
	Option      "Device" "/dev/input/event0"
	Option      "Mode" "relative"
	Option      "Type" "gmouse"
	Option      "Suppress" "30"
EndSection

Please also read the comments on the suppress parameter in the previous section (the parameter must be added to the "InputDevice" sections).

Source

The best way to compile this module is to locate the xf86Wacom.c file in the XFree86-3.3.5 or XFree86-4.0 source code and overwrite it with xf86GraphireUSB.c. Then follow the instructions for building the XFree source (somethink like make world). Rename the resulting xf86Wacom.so to xf86GraphireUSB.o.

Warning: I have not personally tested the module with XFree86-4.0, but I think it should work.

Remaining Problems

The graphire mouse has no acceleration (i.e. the arrow speed always grows linearly with the mouse speed, unlike with other mice).

The Xwindow screensaver still doesn't kick in if the mouse is left on the graphics tablet, even though spurious jitter events are filtered out. Probably for the X server activity on the device is relevant - and not if this activity actually results in events being generated. Therefore, the server interprets the Wacom's jitter events as user activity. I'm looking for a workaround. Update: Works now with XFree-4.0.3 and version 1.7 of the module.

There have been reports that sometimes X CPU usage goes up to 99 % when using the module and the X session must be restarted to correct this. This is probably due to interactions with the gpm daemon (a cut and paste utility and mouse server for virtual consoles) that occur when switching to virtual consoles. On my system the problem went away after disabling the gpm service (e.g. using linuxconf). This is just a cure to the symptoms, however, the real reason for this problem is still not known. Note: The problem only occurs with XFree86-3.3.6. 3.3.5 and 4.x do not seem to be affected.

Additionally some people report that the stylus sensitivity is too high, i.e. if the stylus is brought nearby the tablet this is misinterpreted as button click by software packages such as the Gimp. I cannot reproduce this problem, but I have received an email that might contain a solution for this: "[...] I had this problem recently (independently of the program I used), and it turned out to be a mechanical problem, you can eliminate it by rotating the eraser tip slightly."



© 2002 Peter Hofmann
Last Update: 09.05.2002