The Linux Wacom Project
| ![]() |
![]() | |
![]() | |
Main | News | FAQ | Downloads | Help | Development | TOC | All | Jul 13, 2010 |
![]() | |
![]() |
Linux Wacom Project HOWTOPermission is granted to copy, distribute and/or modify this document under the terms of the GNU GENERAL PUBLIC LICENSE as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. A copy of the license is included in the section entitled GNU Free Documentation License. 1.0 - IntroductionThis document began in November 2002 as a HOWTO for setting up a USB Wacom Intuos2 on Redhat 8.0. It has since grown to cover all Wacom tablets, USB and serial, running on various different Linux distributions. As of December 2002, this project has transformed into the Linux Wacom Project. Work on this document is on-going so if you find an error, have a question, or have something to add, please send an email to: linuxwacom-discuss@lists.sf.net. 1.1 - How To Use This DocumentIn terms of document organization, if you have not figured it out already, you can browse the document one page at a time, or you can click on the ALL link and view the entire thing in one long page.
Also, it bears mentioning since it's a detail often missed: there are two drivers in the Linux Wacom Project- wacom.o and wacom_drv.o. The first driver is the USB kernel driver. The second driver is the XFree86 Wacom driver. Serial users need only be concerned with the wacom_drv.o driver. USB users need both. If you try to use the wacom_drv.o driver in place of the wacom.o kernel driver or visa-versa, things generally won't work. Next, this document was written with the assumption that you are starting from scratch with a relatively recent distribution of the Linux kernel. Also, if you have already added lines to your XFree86/Xorg configuration file (XF86Config/XF86Config-4 or xorg.conf), you should comment them out and restart X. Since we'll be stepping through the entire process, we need X to ignore the tablet until we're ready. Otherwise, X will just get in the way. Finally, if you know what you're doing, you can leave your X settings intact, print this out, switch to runlevel 3, and follow along from the console. An HTML version of this document can be found in the docs directory at docs.html. 1.2 - Wacom Driver Theory of OperationSerial Tablet Operation - The Short Story USB Tablet Operation - The Long Story Embedded Device Operation - Tablet PC with Wacom Digitizer Refer to Tablet PC page for detail. 2.0 - Getting It TogetherUSB users will need to pay specific attention to discussions related to kernel drivers and modules. Serial tablet users have it much easier, and can bypass this. Both users will need to make changes to the XFree86/Xorg configuration file. 2.1 - Before We StartIf you have a USB tablet, you need to check Wacom kernel drvier first The USB Kernel Driver. Serial tablet or Tablet PC users can go directly to the next section Downloading the Code page. 2.2 - Downloading the CodeThe file linuxwacom-0.8.8-5.tar.bz2 is the stable package and contains files that you will need to get your serial or USB tablet working. The current beta package linuxwacom-0.8.7-2.tar.bz2 is also available and may be used by people who are willing to help test new features. I will never put a beta package on this site that I am not running myself on my primary development machine. So you can be certain that if there are any obvious show stoppers, they will be fixed before you get to see them. Unpacking the tarball is usually a one-step process, but I show both steps in case the typical -jxf option doesn't work with tar. Once in the package directory, you need only to configure and build the code. This is described in more detail as you continue. The executables and wacom_drv.o are installed automatically; the kernel drivers have different installation procedures depend on the kernel source you use.[jej@ayukawa jej]$ bunzip2 linuxwacom-0.8.8-5.tar.bz2 [jej@ayukawa jej]$ tar -xf linuxwacom-0.8.8-5.tar [jej@ayukawa jej]$ cd linuxwacom-0.8.8-5 If you are interested, the following tables contain the package contents and release dates. Otherwise, let's continue. Stable files included for linuxwacom-0.8.8-5:
Stable Packages by Version and Date:
Beta Packages by Version and Date:
2.3 - The Root AccountNormal users do not have /sbin in their path, so running modprobe directly fails. Running the program using the full pathname (/sbin/modprobe) will solve this, as will adding /sbin to the path. But there is another problem, as we will see:[jej@ayukawa jej]$ modprobe foo bash: modprobe: command not found [jej@ayukawa jej]$ locate modprobe /sbin/modprobe [jej@ayukawa jej]$ echo $PATH /bin:/usr/bin: ... :/home/jej/bin Normal users are not allowed to run this command. For that, we need to be root. The su command stands for "substitute user" since it can be used to become any user on the system, but it is generally known by the incorrect but very memorable mnemonic "superuser."[jej@ayukawa jej]$ /sbin/modprobe foo foo.o: create_module: Operation not permitted [jej@ayukawa jej]$ su Password: [root@ayukawa jej]# whoami root [root@ayukawa jej]# modprobe foo bash: modprobe: command not found [root@ayukawa jej]# export PATH=$PATH:/sbin [root@ayukawa jej]# modprobe foo [root@ayukawa jej]# [jej@ayukawa src]$ pwd /home/jej/src/linuxwacom/src [jej@ayukawa src]$ su - [root@ayukawa root]# cd /home/jej/src/linuxwacom/src [root@ayukawa src]# echo $PATH /bin:/sbin:/usr/bin: ... :/root/bin So that leaves you with two immediate options, and one potential long-term option: Option One: Become root and add /sbin to the path. Option Two: Become root using root's environment and cd back.[jej@ayukawa src]$ su [jej@ayukawa src]# export PATH=$PATH:/sbin Option Three (recommended): Add /sbin to your personal account's path[jej@ayukawa src]$ su - [root@ayukawa root]# cd /home/jej/src/linuxwacom/src [jej@ayukawa src]$ export PATH=$PATH:/sbin [jej@ayukawa src]$ su [root@ayukawa src]# echo $PATH /bin:/usr/bin: ... :/home/jej/bin:/sbin [root@ayukawa src]# exit [jej@ayukawa src]$ If any of this is not explained clearly, drop me a line and let me know where you got stuck. I'd be happy to clarify directly and update this page for future readers. 2.4 - Install from Prebuilt[jej@ayukawa jej]$ cd linuxwacom-0.8.8-5/prebuilt [jej@ayukawa prebuilt]$ su [jej@ayukawa prebuilt]# ./uninstall [jej@ayukawa prebuilt]# ./install Serial tablet (most Tablet PCs are serial) users can skip the rest sections and go to Viewing Wacom Data (wacdump) page for details on viewing the tablet output now. If you use an older USB tablet and your running kernel was released 6 months later than your tablet was first seen in market, you most probably can skip next section of this chapter and the whole chapter 4 too. If you would like to make certain, continue to next section. Note:If the prebuilt driver doesn't work for you, you would probably end up building your own driver in the following sections. Kory Prince has provided a Python script, getwacom.py, to download, compile, and install the latest linuxwacom release. Please try Kory's script if you like to take a shortcut to install the driver. 2.5 - Configuring the PackageBuilding Kernel Modules - USB OnlyNote, for kernel 2.6.18 and later, no need to build hid any more. Refer to Testing Tablet Detection to see if you need to build hid or not. Module Versioning - USB OnlyThe script attempts to discover if the kernel is using module versioning by detecting the presence of version numbers in the hid.o module of the currently active kernel. Recent package versions also check for hid.o.gz which exist on Mandrake systems. The configure script may not be able to determine if kernel module versioning should be enabled or not, in which case it will say "unknown, assuming no." If module versioning is disabled when it should be enabled, depmod will complain about missing symbols but otherwise, things will probably work fine. If it is enabled when it should be disabled, the code may not compile, and it almost certainly will not load properly. If the configure script fails to determine the correct value, the default action of disabling module versioning is the better choice, and you can allows enable it manually and rebuild if depmod complains. The XFree86/Xorg XInput Driver - USB and SerialGenerally, you will not need to build wacom_drv.o since it ships in binary form in the prebuilt directory. There are prebuilt binaries for XFree86 and Xorg corresponding to x86 and x86-64 systems, respectively. If no one works for you, building from source may be your only option. See the Building wacom_drv.o from Scratch page for more information. Library Dependencies - ncurses and XLibVarious utilities in the linuxwacom package require not only specific libraries, but their development header files as well. The ncurses package is one such example. Most distributions install the ncurses libraries by default, but the header files are often located in a separate package. You will need both. Similarly, if you wish to test your tablet using xidump to view XFree86/Xorg input events, you will need the XFree86/Xorg development headers. On Redhat/Fedore Core, they are contained in the XFree86-devel/xorg-sdk package. If any packages are missing, the configuration will warn you and disable building any programs that depend on them. Processor TypeThe processor type is determined by the script and used to build the kernel modules. If it guesses incorrectly, or you would prefer a different setting, use the --with-arch option described below. Linux Specific FeaturesThe Linux wacom driver uses the Linux input subsystem, as does the USB portions of the XFree86/Xorg driver. Consequently, if you are building on a non-Linux system, the USB code will not work for you. This is detected, and a comment to that effect is added to the configuration summary. I recognize that FreeBSD and similar systems have USB support; however, until someone can bridge the gap between the FreeBSD kernel and the XFree86/X.org driver, the problem is largely unsolved. Contributions are of course welcome. The Linux-specific features can be enabled/disabled using the --with-linux argument. Configuration OptionsThe following options are provided as reference. Normally, you will only need a few of these options. Some obscure systems or you want to build a driver for another platform may need all of them. Each section of the document identifies which options are needed and when.
Configuration SamplesHere is a sample output of the script on a Fedora Core 5 system: [jej@ayukawa linuxwacom]$ ./configure checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ... checking for arch type... i386-redhat-linux checking for kernel type... Linux checking for linux-based kernel... yes checking for kernel sources... /lib/modules/2.6.20-1.2320.fc5/source checking for kernel module support... yes checking for kernel module versioning... yes checking for valid Xorg SDK... ok checking for X... libraries , headers ... checking for X lib directory... found checking for tclsh... /usr/bin/tclsh checking for tcl version... 8.4 checking for tcl header files... /usr/include/ checking for tk header files... found checking ncurses.h usability... yes checking ncurses.h presence... yes checking for ncurses.h... yes ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i386-redhat-linux linux kernel - yes 2.6.18 module versioning - yes -DCONFIG_MODVERSIONS -DMODVERSIONS -include /lib/modules/2.6.20-1.2320.fc5/source/include/linux/modversions.h kernel source - yes /lib/modules/2.6.20-1.2320.fc5/source Xorg SDK - yes /usr/include/xorg XSERVER64 - no dlloader - yes XLib - yes /usr/lib TCL - yes /usr/include TK - yes /usr/include ncurses - yes BUILD OPTIONS: wacom.o - no wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes hid.o - no usbmouse.o - no evdev.o - no mousedev.o - no input.o - no tabletdev.o - no wacom_drv.so - yes /usr/lib/xorg/modules/input wacom_drv.o - no wacom*_drv quirks - libc-wrapper key-events dixScreenOrigins ---------------------------------------- If the configure script fails to find something that it is looking for, it may disable some options that you previously enabled on the command-line. If this happens, check the output for a warning like the following: checking for valid XFree86/X.org build environment... xf86Version.h missing Tried /usr/programs/Xserver/hw/xfree86 and /usr/xc/programs/Xserver/hw/xfree86 ... *** *** WARNING: *** Unable to compile wacom_drv.{o,so} *** without Xorg SDK or XFree86 build environment *** wacom_drv.o will not be built *** In this particular case, the X driver was enabled. The --with-x-src option was not specified. And the configure can not find the header file, xf86Version.h, under any of the predefined paths. Without the build environment, the module cannot be compiled and was consequently disabled. The following sample command-line will build everything but wacdump while disabling module versioning. It also has a user-specified kernel source directory: [jej@ayukawa linuxwacom]$ ./configure --enable-wacom --disable-wacdump checking for a BSD-compatible install... /usr/bin/install -c checking whether build environment is sane... yes ... checking for HAL... yes checking for arch type... i586-suse-linux checking for kernel type... Linux checking for linux-based kernel... yes checking for kernel source/headers... /lib/modules/2.6.25.20-0.7-default/source checking kernel version... 2.6.25.20-0.7-default checking for kernel module support... yes checking for Xlib... yes checking for XSERVER... yes checking for xserver libc-wrapper header-files... yes checking if scaling tablet to screen size is needed... yes checking if Xorg server is version 1.4 or later... yes checking if Xorg is 7.3 or earlier... no checking if Xorg server is version 1.5.2 or later... no checking if Xorg server is version 1.6 or later... no checking if Xorg SDK defined IsXExtensionPointer... yes checking if Xorg SDK defines dixScreenOrigins... yes ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i686 linux kernel - yes 2.6.24 module versioning - no kernel source - yes /lib/modules/2.6.25.20-0.7-default/source XFree86 - no Xorg SDK - yes /usr/include/xorg XSERVER64 - no dlloader - yes xf86config - no XLib - yes /usr/X11R6/lib TCL - yes /usr/local/ActiveTcl TK - yes /usr/local/ActiveTcl ncurses - yes BUILD OPTIONS: wacom.o - yes wacdump - no xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes wacom_drv.so - yes wacom_drv.o - no wacom*_drv quirks - hal libc-wrapper tablet-screen-scaling IsXExtensionPointer key-events dixScreenOrigins Uninit-called ---------------------------------------- Notice that the configure script guessed module versioning was enabled by default, but was disabled by the command-line option --disable-modver. Similarly, the wacdump program which is enabled by default was also disabled. All the kernel modules and the XFree86 wacom driver are enabled. 3.0 - The USB Kernel DriverSerial tablet users rejoice: you can skip this entire section. Please go to the Viewing Wacom Data (wacdump) page for details on viewing the tablet output. USB users stay put; we need to tweak your kernel. Kernel modules must be recompiled for each new kernel so I can't just provide binaries. By the time you read this, my present kernel will be entirely out of date with yours. In any event, many new features are available in the latest drivers from the Linux Wacom Project, so I wholly recommend using them over the drivers provided by your standard distribution. Rest assured, continuous efforts are being made to get these changes merged back into the Linux kernel. However, the changes can normally only merged into the next kernel release, instead of the current one. For those who don't like upgrading kernels, here is a safe statement: if you are not using a newly released tablet model and you are running a recently released kernel version, chances are that you don't need to update your kernel driver from linuxwacom. Note: If your system is running on a 2.6.9 or older kernel and you want to use a new Wacom device, upgrading to a newer version (preferablely 2.6.18 or later) is required since we do not support kernels older than 2.6.9 any more. 3.1 - Testing Tablet Detection[jej@ayukawa wacom]$more /proc/bus/usb/devices T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=056a ProdID=0042 Rev= 1.15 S: Manufacturer=Tablet S: Product=XD-0608-U C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=140mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=wacom E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=5ms On newer 2.6 systems, more /proc/bus/input/devices gives you [jej@ayukawa wacom]$more /proc/bus/input/devices I: Bus=0003 Vendor=056a Product=0042 Version=1.15 N: Name="Wacom Intuos2 6x8" P: Phys=usb-0000:00:1d.1-2/input0 H: Handlers=event3 B: EV=1f B: KEY=1cff 0 1f00ff 0 0 0 0 0 0 0 0 B: REL=100 B: ABS=f00017b B: MSC=1 This is Suse 10.2 (2.6.25.20-0.7): If all went well like above, the USB device was successfully detected and handled by the wacom driver. This presumably means that information like pressure and tilt will be received on /dev/input/event3. You are ready to configure the X driver Downloading the Code. If instead you got any of the following lines in your log, the wacom driver did not get control. Either your wacom driver doesn't support your tablet or hid is in control. input0,hiddev0: USB HID v1.00 Mouse [Tablet PTK-640] on usb1:5.0 input0: Tablet PTK-640 on usb1:5.0 3.2 - Updated wacom.cBelow are examples from Debian GNU/Linux distribution: 60-wacom.rules on systems using ATTRS 1. Systems with only one Wacom device 2. Systems with more than one Wacom devices 60-wacom.rules on systems using SYSFS 1. Systems with only one Wacom device 2. Systems with more than one Wacom devices 3.3 - Building wacom.cTo build the wacom.ko kernel module, you need to configure wacom as a kernel module under your kernel source tree first. The kernel sources are required as described on the configuration page.Then, you need to configure the package with --enable-wacom option. Here's how the configuration should generally look: [jej@ayukawa linuxwacom]$ ./configure --enable-wacom ... checking for valid kernel source tree... ok ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i686 linux kernel - yes 2.6.9 module versioning - yes kernel - yes /usr/src/linux XFree86 - no XLib - yes /usr/X11R6 TCL - yes /usr TK - yes /usr ncurses - yes GTK - 2.0.6 BUILD OPTIONS: wacom.o - yes wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes hid.o - no wacom_drv.o - no ---------------------------------------- As shown above, the kernel directory was detected and the wacom kernel module will be built. If the kernel option shows "no", you will need to specify the --with-kernel option and the correct directory.
If you wanted to build the kernel driver and you do not see
the yes after "wacom.o -" in the the "BUILD OPTIONS:", run 'make oldconfig;
make prepare; make' on your kernel source should fix the issue.
To build the driver, just run make. If everything works properly, you'll see the following from the make: [jej@ayukawa linuxwacom]$ make ... Making all in 2.6.9 make[3]: Entering directory `/home/jej/linuxwacom/src/2.6.9' Building linuxwacom drivers for 2.6 kernel. make -C /usr/src/linux M=/home/jej/linuxwacom/src/2.6.9 make[4]: Entering directory `/home/jej/linux-2.6.9' LD /home/jej/linuxwacom/src/2.6.9/built-in.o CC [M] /home/jej/linuxwacom/src/2.6.9/wacom.o Building modules, stage 2. MODPOST CC /home/jej/linuxwacom/src/2.6.9/wacom.mod.o LD [M] /home/jej/linuxwacom/src/2.6.9/wacom.ko make[4]: Leaving directory `/usr/src/linux' make[3]: Leaving directory `/home/jej/linuxwacom/src/2.6.9' ... This part is for those who want to manually build the
wacom kernel driver in source tree. If you already followed the steps
above, you can move on to next page.
Please backup wacom.c in your kernel tree first. Then copy wacom.c (or wacom_wac.c, wacom_wac.h, wacom_sys.c, and wacom.h if defined) from the related linuxwacom directory to the source tree (if 4 files were copies, you need to add wacom-objs := wacom_sys.o wacom_wac.o to the Makefile under your kernel source input directory) and rebuild the kernel. An example for kernel 2.6.9 is as following: [jej@ayukawa linuxwacom]$ cp /usr/src/linux/drivers/usb/input/wacom.c /usr/src/linux/drivers/usb/input/wacom.c.2.6.9 [jej@ayukawa linuxwacom]$ cp src/2.6.9/wacom.c /usr/src/linux/drivers/usb/input/ [jej@ayukawa linuxwacom]$ cd /usr/src/linux [jej@ayukawa linux]$ make [jej@ayukawa linux]$ su [jej@ayukawa linux]#make install [jej@ayukawa linux]#make modules_install [jej@ayukawa linux]#reboot 3.4 - Testing If wacom.(k)o Will LoadBefore we install the wacom driver, we need to test that it will load properly. We do this by loading the driver manually. We will also need to be root to do this. WARNING: there is a small chance that this will bomb your kernel, so we run sync to write all the stale buffers to the disk. People using ext3 have little to worry about, but it's always good to be prepared for the worst. At the very least, save your work. [root@ayukawa linuxwacom]# sync From the package's associated kernel directory, we unload any previous modules and load the new one. The following example is from a kernel 2.6.24 system. [root@ayukawa linuxwacom]# cd src/2.6.24 [root@ayukawa 2.6.24]# /sbin/rmmod wacom [root@ayukawa 2.6.24]# /sbin/insmod ./wacom.ko Well, if you did not bomb, then good. And if you did, well, sorry. So far, we have not had any reports of this happening, so please send in yours. Incidentally, if you run "/sbin/insmod wacom.ko" and happen to be in the wrong directory, the old driver reloads, sometimes without warning. I therefore changed this to read "/sbin/insmod ./wacom.ko" which seems to prevent this from happening. To be certain, you can check the log file for the correct version number. [root@ayukawa src]# tail /var/log/messages Jul 13 20:34:41 ayukawa kernel: usb.c: registered new driver wacom Jul 13 20:34:41 ayukawa kernel: Reporting max 30480, 31680 Jul 13 20:34:41 ayukawa kernel: wacom.c: Setting tablet report for tablet data Jul 13 20:34:41 ayukawa kernel: input0: Wacom Intuos2 12x12 on usb2:3.0 Jul 13 20:34:41 ayukawa kernel: wacom.c: $1.43-0.8.8-5 Vojtech Pavlik <vojtech@suse.cz> Jul 13 20:34:41 ayukawa kernel: wacom.c: USB Wacom tablet driver The important detail is the version number. A version number like "1.52" is an original kernel version and not from the linuxwacom package. The correct version should also have the -j#.# or -pc#.# portion as well. This is to help differentiate between the stock kernel driver and those available from the Linux Wacom Project. If you get errors inserting the module, then you may need to reconfigure and build with module versioning disabled. If it loads without a hitch, move on to the next part. 3.5 - Installing wacom.(k)oWhen should I install the driver? When you're comfortable that the driver will not crash your system. If you really know what you're doing, just load the drivers manually like in the previous section Testing If wacom.(k)o Will Load. On some distributions, Mandriva (a.k.a Mandrake) included, the wacom.ko driver that appears in the kernel modules directory appears to be compressed. If you cannot find wacom.ko using the method below, try locating wacom.ko.gz instead. People who encountered this problem were able to run gzip on the module and copy that instead. Installing the driver requires knowing where it belongs. A little research will help here. By using the locate command, you can find all copies of the original driver on the computer. On this computer, there are two kernels installed. uname identifies the currently active kernel as 2.6.17-1.2157_FC5. The correct driver to replace is therefore at /lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input/wacom.ko. You will need to be root to replace this file, and it is a very good idea to make a backup copy.jej@ayukawa wacom]$ locate wacom.ko /lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input/wacom.ko /lib/modules/2.6.17-1.2174_FC5/kernel/drivers/usb/input/wacom.ko [jej@ayukawa wacom]$ uname -r 2.6.17-1.2157_FC5 Here, I've saved the original to wacom_old.ko and copied my new driver over it. You should substitute directory names as appropriate.[jej@ayukawa wacom]$ su [jej@ayukawa root]# cd /lib/modules/2.6.17-1.2157_FC5/kernel/drivers/usb/input [jej@ayukawa usb]# cp wacom.ko /home/jej/linuxwacom/src/2.6.16/wacom_old.ko [jej@ayukawa usb]# cp /home/jej/linuxwacom/src/2.6.16/wacom.ko wacom.ko NOTE: Don't leave the backup copy in the same directory as the original. depmod will treat both as valid drivers, regardless of their names. Copy the original somewhere outside of the kernel module directory to ensure that this does not happen. In at least one case, the backup driver was loaded instead of the new one due to a curious dependency issue. Finally, it is always a good thing to update the module dependencies. This is where you find out if the module was compiled without kernel module versioning. The following command, even if it generates errors is relatively benign. If it fails, then there is no harm done. It just means that you will have to load modules in the correct order since the system will not be able to guess for you. [jej@ayukawa usb]# depmod -e If you get no errors and no output, everything is fine, and the module was compiled, linked, and installed properly. If you received unresolved symbols like usb_set_idle or printk, then you need to reconfigure with module versioning enabled and recompile. 3.6 - Loading the wacom Driver
[jej@ayukawa usb]# rmmod wacom [jej@ayukawa usb]# modprobe usb-uhci (or usb-ohci) [jej@ayukawa usb]# modprobe input [jej@ayukawa usb]# modprobe mousedev [jej@ayukawa usb]# modprobe wacom (or insmod mydir/src/wacom.o) [jej@ayukawa usb]# modprobe evdev [jej@ayukawa usb]# grep -i wacom /var/log/messages | tail Jul 13 21:23:35 ayukawa kernel: usb.c: registered new driver wacom Jul 13 21:23:35 ayukawa kernel: wacom.c: v1.43-0.8.8-5 Vojtech Pavlik <vojtech@suse.cz> Jul 13 21:23:35 ayukawa kernel: wacom.c: USB Wacom Graphire and Wacom Intuos tablet driver (MODIFIED) 3.7 - Building (usb)hid.koIn the linuxwacom-0.8.8-5.tar.bz2 file, you will find hid-core.c, which have special exceptions for wacom. This file is not built by default, so you will need to reconfigure the package and run make again. Note, for kernel 2.6.18 and later, no need to build hid any more. For other kernels, refer to Testing Tablet Detection to see if you need to build hid or not. You need to configure usbhid as a module under your kernel source tree before configuring linuxwacom. On some distributions, Mandrake or Mandriva included, the (usb)hid.ko driver that located in the kernel modules directory appears to be compressed. You need to run gzip on the module and copy (usb)hid.ko.gz instead. [jej@ayukawa wacom]$./configure --enable-hid --with-kernel=your-kernel-src-dir ... BUILD OPTIONS: hid.o - yes ... Kernel 2.6.11 and 2.6.12 are in src/2.6.11. Kernels 2.6.16 and 2.6.17 are handled in src/2.6.16. Kernels 2.6.18/19/20/21/22 are in src/2.6.18. All the other kernels are processed in its own src/2.6.x. New 2.6 directories will be created when compatibility issue occurs.
If everything works properly, you'll see the following from the make: [jej@ayukawa linuxwacom]$ make ... Making all in 2.6.9 make[3]: Entering directory `/home/jej/linuxwacom/src/2.6.9' Building linuxwacom drivers for 2.6 kernel. make -C /usr/src/linux M=/home/jej/linuxwacom/src/2.6.9 make[4]: Entering directory `/home/jej/linux-2.6.9' LD /home/jej/linuxwacom/src/2.6.9/built-in.o CC [M] /home/jej/linuxwacom/src/2.6.9/hid-core.o CC [M] /home/jej/linuxwacom/src/2.6.9/hid-input.o LD [M] /home/jej/linuxwacom/src/2.6.9/usbhid.o Building modules, stage 2. MODPOST CC /home/jej/linuxwacom/src/2.6.9/usbhid.mod.o LD [M] /home/jej/linuxwacom/src/2.6.9/usbhid.ko make[4]: Leaving directory `/usr/src/linux' ... Then, use the following steps to install the driver: [jej@ayukawa linuxwacom]$su [jej@ayukawa linuxwacom]#cd src/2.6.9 [jej@ayukawa 2.6.9]#cp usbhid.ko /lib/modules/your-kernel-ver/kernel/drivers/usb/input [jej@ayukawa 2.6.9]#reboot This part is for those who want to manually build the kernel drivers from source tree.
If you already followed the steps above, you can move on to next page.
Please backup your related kernel files first then copy the source from the related linuxwacom directory to the source tree and rebuild the kernel. An example for kernel 2.6.9 is as following: [jej@ayukawa linuxwacom]$ cp /usr/src/linux/drivers/usb/input/hid-core.c /usr/src/linux/drivers/usb/input/hid-core.c.2.6.9 [jej@ayukawa linuxwacom]$ cp src/2.6.9/hid-core.c /usr/src/linux/drivers/usb/input/ [jej@ayukawa linuxwacom]$ cd /usr/src/linux [jej@ayukawa linux]$ make [jej@ayukawa linux]$ su [jej@ayukawa linux]# make install [jej@ayukawa linux]# make modules_install [jej@ayukawa linux]# reboot 3.8 - Unknown Tablet?To determine whether your device is listed in the driver, we need to determine the device identifier. It can be discovered by issuing more /proc/bus/usb/devices:[jej@ayukawa linuxwacom]# more /proc/bus/usb/devices T: Bus=01 Lev=01 Prnt=01 Port=01 Cnt=02 Dev#= 3 Spd=12 MxCh= 0 D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1 P: Vendor=056a ProdID=0044 Rev= 1.15 S: Manufacturer=Tablet S: Product=XD-1212-U C:* #Ifs= 1 Cfg#= 1 Atr=80 MxPwr=140mA I: If#= 0 Alt= 0 #EPs= 1 Cls=03(HID ) Sub=01 Prot=02 Driver=wacom E: Ad=81(I) Atr=03(Int.) MxPS= 10 Ivl=5ms /* ignore all Wacom devices */ if (dev->descriptor.idVendor == USB_VENDOR_ID_WACOM) return NULL; The next section assumes you have things working up to this point. 3.9 - Viewing the Raw Data (xxd)[root@ayukawa usb]# cd /dev/input [root@ayukawa input]# xxd event0 0000000: e65d c33d 597d 0100 0100 4101 0100 0000 .].=Y}....A..... 0000010: e65d c33d 5c7d 0100 0400 0000 b701 2800 .].=\}........(. 0000020: e65d c33d d9bb 0100 0100 4101 0000 0000 .].=......A..... 0000030: e65d c33d dcbb 0100 0400 0000 b701 2800 .].=..........(. (Ctrl-C) [jej@sasami root]# /sbin/rmmod wacom [jej@sasami root]# /sbin/modprobe wacom (or /sbin/insmod mydir/src/wacom.o) [jej@sasami root]# tail /var/log/messages Jul 13 17:31:31 sasami kernel: usb.c: deregistering driver wacom Jul 13 17:31:34 sasami kernel: usb.c: registered new driver wacom Jul 13 17:31:35 sasami kernel: input0: Wacom Intuos2 12x12 on usb1:2.0 Jul 13 17:31:35 sasami kernel: wacom.c: v1.43-0.8.8-5 Vojtech Pavlik <vojtech@suse.cz> You should also try running xxd on /dev/input/mouse0. You should get streams of data when the mouse and pen are moved around the surface of the tablet. It is this device that X will look at for mouse movement. Use Ctrl-C to exit xxd. 4.0 - Viewing Wacom Data (wacdump)The command line usage of wacdump is pretty simple: Usage: wacdump [options] device Options: -h, --help - usage -c, --class device_cls - use specified class (see below) -f, --force device_name - use specified device (see below) -l, --list - list all supported devices -v, --verbose - increase log output; multiple OK -V, --version - display version number --logfile log_file - output log to file Example devices: /dev/input/event0 - usb tablet device /dev/ttyS0 - serial tablet on com1 /dev/ttyUSB0 - serial tablet on USB adapter Supported device classes: serial, usb Supported device names: serial: art, art2, dig, dig2, pp, gr, pl, int, int2, c100 usb: pp, gr, gr2, int, int2, pl, vol Older versions of wacdump assumed the device to be /dev/input/event0. This is now deprecated. You should instead specify which device to use on the command line directly. If you get an end-of-file error or the device does not exist, then the wacom may be attached to a different event. Serial users may experience a timeout error which indicates that either the tablet is not responding or X server has it open. Access denied errors probably indicate that you are not root. If you get different types of errors, let me know so we can get them documented. Serial users are advised that now is a good time to plug in your tablet, if you haven't already. Let's run wacdump. Here are some command line examples: [jej@ayukawa src]$ ./wacdump /dev/input/event0 # typical USB tablet [jej@ayukawa src]$ ./wacdump /dev/input/event1 # USB tablet on event1 When you run wacdump, it will attempt to initialize and query the tablet. For a number of reasons, it may not display anything immediately, but if you place a mouse or pen near the surface, the screen should update. You will then be presented with a screen similar to the following: wacdump v0.4.0 MODEL=Wacom Intuos2 12x12 ROM=1.1-5 CLS=USB VNDR=Wacom DEV=Intuos2 SUB=XD-1212-U TOOLTYPE=NONE SERIAL=0x00000000 IN_PROX=+00000 (+00000 .. +00000) BUTTON=+00000 (+00000 .. +00000) POS_X=+00000 (+00000 .. +30480) POS_Y=+00000 (+00000 .. +31680) ROT_Z=+00000 (-00900 .. +00899) DISTANCE=+00000 (+00000 .. +00015) PRESSURE=+00000 (+00000 .. +01023) TILT_X=+00000 (+00000 .. +00127) TILT_Y=+00000 (+00000 .. +00127) ABSWHEEL=+00000 (+00000 .. +01023) RELWHEEL=+00000 (-00001 .. +00001) THROTTLE=+00000 (-01023 .. +01023) LEFT= MIDDLE= RIGHT= EXTRA= SIDE= TOUCH= STYLUS= STYLUS2= The top portion identifies the tablet, and unless you specifically override the device type with the -f option, it should be auto-detected from the tablet directly. In this case, the model is XD-1212-U, a USB Intuos2 12x12. The next section describes the dynamic attributes of the tablet, including the current position of the pointer, the type of tool in proximity to the surface, its pressure, and tilt. Some tablets (Protocol V tablets, such as Intuos 1, 2, and 3 as well as Cintiq 21UX) provide serial numbers for their tools. When a button is pressed, the button heading will change to something like "STYLUS=DOWN". Some tablet tools report wheel movements as single increments forward and reverse, while others provide absolute positions. The 4D mouse has a throttle instead of a wheel. All three cases are reported independently. Different tablets will have different options. Here is the lowly ArtPadII for comparison. wacdump v0.4.0 MODEL=Wacom ArtPadII 4x5 ROM=1.3-6 CLS=Serial VNDR=Wacom DEV=ArtPadII SUB=KT-0405-R TOOLTYPE=NONE IN_PROX=+00000 (+00000 .. +00000) BUTTON=+00000 (+00000 .. +00000) POS_X=+00000 (+00000 .. +06400) POS_Y=+00000 (+00000 .. +04800) PRESSURE=+00000 (+00000 .. +00255) LEFT= MIDDLE= RIGHT= EXTRA= SIDE= TOUCH= STYLUS= STYLUS2= Notice that this tablet has no tilt, and the pressure range is considerably reduced. This version of wacdump does not distinguish between tablets with mice, so the left, right, and middle buttons are present, even though the tablet itself has no mouse. 5.0 - Configuring X11Two steps must be completed to get X to recognize your tablet. First, you need to add some lines to XF86Config/xorg.conf to inform X of the tablet's existence. Second, you need to update the XInput driver that pertains to the tablet since the one that ships with XFree86/Xorg is not very functional. Neither driver holds a candle to the windows driver though, so you'll have to take what you get for the time being. Updates to the XFree86/Xorg driver are available in the stable and beta releases on the Downloading the Code page.5.1 - Adding the InputDevicesThe X Window system identifies the stylus (tip and side switches of your pen), eraser (the other end of your pen if it is clickable), cursor (your Wacom mouse), and pad (buttons, strips and rings on your tablet if your tablet has any) as XInput devices. Most settings, such as stylus pressure level and system cursor movement mode can be done in /etc/X11/XF86Config or /etc/X11/xorg.conf configuration file before X server starts or live through command-line xsetwacom or the simple GUI control panel wacomcpl while Wacom driver is running. However, adding the InputDevice sections to your XF86Config/ xorg.conf file for Wacom devices is required. You should add these devices to the ServerLayout section of your XF86Config/xorg.conf file too. We assume you are running Either XFree86 4.2 or later Or Xorg. On some distributions, this file is called XF86Config-4. Notice that the serial and USB configurations are different, so only include the appropriate lines. The default serial devices are given. For serial Tablet PCs, options "ForceDevice" should be included. You should also change the device (e.g. ttyS0 or /dev/input/wacom) to the correct one for your tablet. Tablet PC and Cintiq/PL/DTF models don't support cursor type. All the new driver options are listed in the manual page below. Section "InputDevice" Driver "wacom" Identifier "stylus" Option "Device" "/dev/ttyS0" # SERIAL ONLY Option "Device" "/dev/input/wacom" # USB ONLY Option "Type" "stylus" Option "USB" "on" # USB ONLY Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "eraser" Option "Device" "/dev/ttyS0" # SERIAL ONLY Option "Device" "/dev/input/wacom" # USB ONLY Option "Type" "eraser" Option "USB" "on" # USB ONLY Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY EndSection Section "InputDevice" Driver "wacom" Identifier "cursor" Option "Device" "/dev/ttyS0" # SERIAL ONLY Option "Device" "/dev/input/wacom" # USB ONLY Option "Type" "cursor" Option "USB" "on" # USB ONLY Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY EndSection # This section is for Intuos3, CintiqV5, Graphire4, or Bamboo without touch Section "InputDevice" Driver "wacom" Identifier "pad" Option "Device" "/dev/ttyS0" # SERIAL ONLY Option "Device" "/dev/input/wacom" # USB ONLY Option "Type" "pad" Option "USB" "on" # USB ONLY EndSection # This section is for USB Bamboo with touch Section "InputDevice" Driver "wacom" Identifier "pad" Option "Device" "/dev/input/wacom-touch" # USB ONLY Option "Type" "pad" Option "USB" "on" # USB ONLY EndSection # This section is for the TabletPC that supports touch Section "InputDevice" Driver "wacom" Identifier "touch" Option "Device" "/dev/ttyS0" # SERIAL ONLY Option "Device" "/dev/input/wacom-touch" # USB ONLY Option "Type" "touch" Option "ForceDevice" "ISDV4" # Serial Tablet PC ONLY Option "USB" "on" # USB ONLY EndSection The above four sections identify the stylus, eraser, cursor, touch, and pad devices to XInput. Notice that all four reference the same device /dev/ttyS0 or /dev/input/wacom depending on whether its a serial or USB tablet. Please refer to Testing Tablet Detection and Updated wacom.c pages to see which port your tablet is actually mapped to. The configuration options listed by your system's man page may be way out of date. Below is an updated wacom man page which will be installed by default when you issue make install. WACOM(4) WACOM(4) NAME wacom - Wacom input driver SYNOPSIS Section "InputDevice" Identifier "idevname" Driver "wacom" Option "Device" "devpath" ... EndSection DESCRIPTION wacom is an X input driver for Wacom devices. The wacom driver functions as a pointer input device, and may be used as the X server's core pointer. SUPPORTED HARDWARE This driver supports the Wacom IV and Wacom V protocols. Serial tablets only need this driver. USB tablet support is available on some Linux platforms. USB tablets needs wacom Linux kernel driver being loaded before this driver starts. Please check linuxwacom.sf.net for latest updates of Wacom X and kernel drivers. CONFIGURATION DETAILS Please refer to xorg.conf(5x) for general configuration details and for options that can be used with all input drivers. This section only covers configuration details specific to this driver. Multiple instances of the Wacom devices can cohabit. It can be useful to define multiple devices with different active zones. Each device supports the following entries: Option "Type" "stylus"|"eraser"|"cursor"|"touch"|"pad" sets the type of tool the device represents. This option is mandatory. The core options, such as "SendCoreEvents" or "AlwaysCore", are unnecessary in Gimp if you don't need to move system cursor outside of Gimp drawing area. "pad" is for Intuos 3 and CintiqV5 ExpressKeys and menu strips, or Graphire 4 and Bamboo tablet buttons and wheel/ring. It is required for Intuos3, CintiqV5, Graphire 4, or Bamboo if you want to use keystroke features. "pad" is reported as a second tool in the driver. "touch" is for the tablet with touch support. Right now only a few Tablet PCs have this feature. Option "Device" "path" sets the path to the special file which represents serial line where the tablet is plugged. You have to specify it for each subsection with the same value if you want to have multiple devices with the same tablet. This option is mandatory. Option "USB" "on" tells the driver to dialog with the tablet the USB way. This option is mandatory for USB tablets. Option "ForceDevice" "ISDV4" tells the driver to dialog with the tablet the serial Tablet PC way. It is a special Wacom IV protocol, called ISDV4 protocol. This option is mandatory for serial Tablet PCs only. Option "DeviceName" "name" sets the name of the X device. Option "Suppress" "number" sets the position increment under which not to transmit coordinates. This entry must be specified only in the first Wacom subsection if you have multiple devices for one tablet. The default value is 2. If you don't specify this entry or your value is less than the default vaule or greater than 100, the default value will be used. To disable suppression, the entry should be specified as 0. When suppress is defined, an event will be sent only when at least one of the following conditions is met: the change between the current X coordinate and the previous one is greater than suppress; the change between the current Y coordinate and the previous one is greater than suppress; the change between the current pressure and the previous one is greater than suppress; the change between the current degree of rotation and the previous one of the transducer is greater than suppress; the change between the current absolute wheel value and the previous one is equal to or greater than suppress; the change between the current tilt value and the previous one is equal to or greater than suppress (if tilt is supported); relative wheel value has changed; button value has changed; proximity has changed. Option "Mode" "Relative"|"Absolute" sets the mode of the device. The default value for stylus and eraser is Absolute; cursor is Relative; pad mode is decided according to its core option due to its nature of not moving system cursor: Relative if it is a core device; Absolute, otherwise. Option "TopX" "number" X coordinate of the top corner of the active zone. Default to 0. Option "TopY" "number" Y coordinate of the top corner of the active zone. Default to 0. Option "BottomX" "number" X coordinate of the bottom corner of the active zone. Default to width of the tablet. Option "BottomY" "number" Y coordinate of the bottom corner of the active zone. Default to height of the tablet. Option "ButtonsOnly" "on"|"off" disables the device's motion events. Default to off. Option "ButtonM" "AC" reports an action AC when button M is pressed, where M is one of the device supported button numbers, it can be 1 to 32. The default action reported to Xinput is mouse button M click. To ignore the button click, i.e., to not report any button click event to Xinput, use "0" or "button 0". Option "TPCButton" "on"|"off" enables the stylus buttons as Tablet PC buttons, i.e., reports stylus button event only when its tip is pressed. Default to "on" for Tablet PCs; "off" for all other models. Option "Touch" "on"|"off" enables the touch device for models that support touch feature. Default to "on" for tablets with touch; "off" for all other models. Option "Gesture" "on"|"off" enables the touch gestures for tablets that support two finger touch. Three gesture modes are supported: Add-a-Finger, Scroll, and Zoom. Once the driver is in gesture mode, it stays in the same mode until both fingers leave the tablet. When second finger taps on the tablet, Add-a-Finger mode is in and a right-click event will be issued upon the leaving of the second finger; When two fingers moving in the same direction and parallel vertically or horizontally, Scroll mode is in and a vertical or horizontal scroll event will be issued; When both fingers stay on the tablet and at least one finger moves away from its initial position or both fingers move in different directions, Zoom mode is in. Default to "on" for Tablet PCs that support two finger touch; "off" for all other models. However, this option can be turned on for those tablets that support two finger touch. Option "ZoomDistance" "integer" minimum distance required before starting a zoom gesture (default is 50). Option "ScrollDistance" "integer" minimum finger motion distance required for starting a scroll gesture (default is 20). Option "TapTime" "integer" maximum time between taps required for a right mouse click (default is 250 ms). Option "Speed" "Rspeed" sets the cursor's relative movement speed to Rspeed. The default value is 1.0. A Rspeed greater than 1.0 will speed up the cursor's relative movement. A Rspeed less than 1.0 but greater than 0 will slow down the cursor's relative movement. A Rspeed too close to 0 is not recommanded. Option "Twinview" "horizontal"|"vertical"|"leftof"|"aboveof" |"xinerama"|"none" sets the orientation of TwinView to map the tablet to one screen and to be able to move the screen cursor from one screen to the other when tool reaches the edge of the tablet. The cursor can be constrained in a specific screen if "ScreenNo" option is added. If you want to map the tablet to the whole desktop, you should NOT add this option. The default is "none". Note: due to historic reason, "horizontal" represents the "RightOf" and "vertical" represents the "BelowOf" in acutal TwinView setup. Option "TVResolution" "res0,res1" specifies different resolutions for the two screens in TwinView setup. For example, if the resolution of screen 0 (res0) is 1024x768 and screen 1 (res1) is 1280x1024, the option will be set to: Option "TVResolution" "1024x768,1280x1024" This option is used only when TwinView option is not none. It is unnecessary to add this option if your screens are displaying in the same resolutions. Option "ScreenNo" "n" In a multi-monitor environment, specifies the screen number in which the cursor can move. Here n starts from 0, which indicates the first screen. Option "MMonitor" "on"|"off" turns on/off across monitor movement on a non-TwinView multi-monitor desktop. A system mouse or utility program is needed to change screens when MMonitor is set to off. The default is "on". Option "Rotate" "CW"|"CCW"|"HALF"|"NONE" rotates the tablet orientation counterclockwise (CCW) or clockwise (CW) or 180 degrees (HALF). If you have specific tablet mappings, i.e. TopX/Y or BottomX/Y were set, the mapping will be applied before rotation. The default is "NONE". Option "PressCurve" "x1,y1,x2,y2" sets pressure curve by control points x1, y1, x2, and y2. Their values are in range from 0..100. The input for linear curve (default) is "0,0,100,100"; slightly depressed curve (firmer) might be "5,0,100,95"; slightly raised curve (softer) might be "0,5,95,100". Option "KeepShape" "on" When this option is enabled, the active zone begins according to TopX and TopY. The bottom corner is adjusted to keep the ratio width/height of the active zone the same as the screen while maximizing the area described by TopX, TopY, BottomX, BottomY. Option "DebugLevel" "number" sets the level of debugging info reported for the defined device. There are 12 levels in use, specified by the integers between 1 and 12. Once it is defined, all the debug messages with a level less than or equal to the "number" will be logged into /etc/X11/XFree86.0.log or /etc/X11/Xorg.0.log. Option "CommonDBG" "number" sets the level of debugging info for all devices defined for the same tablet. There are 12 levels in use, specified by the integers between 1 and 12. Once it is defined, all the debug messages with a level less than or equal to the "number" will be logged into /etc/X11/XFree86.0.log or /etc/X11/Xorg.0.log. Option "CursorProx" "number" sets the max distance from tablet to stop reporting movement for cursor in relative mode. Default for Intuos series is 10, Graphire series (including Volitos) is 42. Option "Serial" "number" sets the serial number associated with the physical device. This allows to have multiple devices of the same type (i.e. multiple pens). This option is only available on wacom V devices (Intuos series and Cintiq 21UX). To see the serial number associated with a device, run xsetwacom. Option "Threshold" "number" sets the pressure threshold used to generate a button 1 events of stylus. The default is MaxPressure*3/50. SEE ALSO Xorg(1x), xorg.conf(5x), xorgconfig(1x), Xserver(1x), X(7). AUTHORS Frederic Lepied <lepied@xfree86.org>, Ping Cheng <pingc@wacom.com>, John E. Joganic <jej@jâ€arkadia.com>, Magnus Vigerlöf <Magnus.Vigerlof@ipbo.se> X Version 11 linuxwacom 0.8.4 WACOM(4) 5.2 - Mouse1 (for some 2.6 systems)There is one exception however. If you have no other mouse device in your ServerLayout section, do not remove Mouse1. XFree86 will not start without at least one core pointer, and the tablet does not count unless it is specifically identified as a "CorePointer" rather than merely "SendCoreEvents." 5.3 - ServerLayoutSection "ServerLayout" Identifier "Default Layout" Screen 0 "Screen0" 0 0 InputDevice "Mouse0" "CorePointer" InputDevice "Keyboard0" "CoreKeyboard" InputDevice "stylus" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents" InputDevice "cursor" "SendCoreEvents" # For non-LCD tablets only InputDevice "touch" "SendCoreEvents" # Only a few TabletPCs support this type InputDevice "pad" # For Intuos3/CintiqV5/Graphire4/Bamboo tablets EndSection You have completed the XF86Config/xorg.conf file changes. But aware that if you reboot your computer with the Wacom plugged in and Redhat's Anaconda program notices, it may treat the tablet as a USB mouse and reconfigure this file incorrectly. You may need to go back and check the file to ensure that everything is still correct afterwards. Rebooting with the device detached is not recommended since X server doesn't properly support hotplugging yet. My recommendation is to tell Anaconda to ignore the tablet until the device detection works properly. 5.4 - Restart XFinally, restart X. You may wish to do this from runlevel 3 for testing purposes. If the X server dies, you can always back-out the changes to the XF86Config or xorg.conf file and try again. But first, look at the X log file (XFree86.0.log for XFree86 and Xorg.0.log for Xorg) for clues. You might want to do this even if everything works correctly. When things are running right, the following lines appear in my log file.[root@ayukawa root]# init 3 ...processes starting and stopping... [root@ayukawa root]# startx Notice the driver version 47-0.8.8-5 above. This is the new stable wacom_drv.o driver. The beta driver is currently 47-0.8.7-2.[root@ayukawa root]# grep -i wacom /var/log/XFree86.0.log (II) LoadModule: "wacom" (II) Loading /usr/X11R6/lib/modules/input/wacom_drv.o (II) Module wacom: vendor="The XFree86 Project" (II) Wacom driver level: 47-0.8.8-5 $ (II) XINPUT: Adding extended input device "eraser" (type: Wacom Eraser) (II) XINPUT: Adding extended input device "stylus" (type: Wacom Stylus) (II) XINPUT: Adding extended input device "cursor" (type: Wacom Cursor) (==) Wacom Kernel Input device name: "Wacom Intuos2 12x12" (==) Wacom tablet maximum X=30480 maximum Y=30480 X resolution=0 Y resolution=0 suppress=0 (==) Wacom Cursor top X=0 top Y=0 bottom X=30480 bottom Y=30480 (==) Wacom Stylus top X=0 top Y=0 bottom X=30480 bottom Y=30480 (==) Wacom Eraser top X=0 top Y=0 bottom X=30480 bottom Y=30480 If X server failed to start and you are running the prebuilt wacom_drv.(s)o, you may have to go back to Configuring the Package page to build the driver on your system. 5.5 - Check the Pointer Status[root@ayukawa log]# xsetpointer -l "eraser" [XExtensionDevice] "stylus" [XExtensionDevice] "cursor" [XExtensionDevice] "Mouse0" [XPointer] "keyboard" [XKeyboard] 5.6 - Hotplugging the deviceWacom X server driver, wacom_drv.so, has enabled the hotplugging feature since version 0.8.5. On Xorg servers older than 1.7 <?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> <append key="wacom.types" type="strlist">touch</append> </match> </match> <match key="info.capabilities" contains="serial"> <match key="@info.parent:pnp.id" contains_outof="WACf;FUJ02e5;FUJ02e7;FUJ02e9"> <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.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;WACf00A;WACf00B;WACf00C;WACf00D;WACf00E;WACf010;FUJ02e7;FUJ02 e9"> <!-- Serial tablets with touch capabilities --> <append key="wacom.types" type="strlist">touch</append> </match> </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> <append key="wacom.types" type="strlist">pad</append> </match> </match> </match> </device> </deviceinfo> Note: If a Wacom device is defined in /etc/X11/xorg.conf, the same Wacom device that is also defined in the wacom.fdi will be ignored.<?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;WACOM"> <merge key="input.x11_driver" type="string">wacom</merge> </match> </match> <match key="info.capabilities" contains="serial"> <match key="@info.parent:pnp.id" contains_outof="WACf;FUJ02e5;FUJ02e7"> <append key="info.capabilities" type="strlist">input</append> <merge key="input.x11_driver" type="string">wacom</merge> <merge key="input.x11_options.ForceDevice" type="string">ISDV4</merge> <merge key="input.device" type="copy_property">serial.device</merge> </match> </match> </device> </deviceinfo> If you are running an Xorg server older than 1.4 or even an
XFree86 server, you can try the following workaround to bring the device live
without restarting your X server or the whole system:
pressing "Ctrl Alt F1", all three keys, the same time, then "Ctrl Alt F7". First we had to add the following lines to the Xorg.conf ServerLayout section: Option "AutoAddDevices" "on" Option "AutoEnableDevices" "on" Option "AllowEmptyInput" "on" After restarting the X server the following procedure brought the display back again: - Turn off display - Turn on display - Switch virtual terminal to 1 and back (CTRL+ALT+1 and then CTRL+ALT+2 while the virtual terminal 2 has the X server running) After switching the terminals, the display can be used as usual. Having this working we added the virtual terminal switch to udev /etc/udev/rules.d/60-wacom.rules to perform it automatically everytime the display is switched on: -------------------------------------------------------------------------------- # First set type BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus" BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch" # Then fire the vt switch BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", RUN+="/usr/bin/wacom-display-recalibrate" -------------------------------------------------------------------------------- And this is the /usr/bin/wacom-display-recalibrate script which only runs the vt toggle when the currently active vt is the number 2. -------------------------------------------------------------------------------- #!/bin/bash # +------------------------------------------------------------------+ # | wacom-display-recalibrate | # | Copyright (c) 2010 - Mathias Kettner GmbH | # | | # | Author: Lars Michelsen <lm@mathias-kettner.de> | # +------------------------------------------------------------------+ # # Sylo is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation in version 2. Sylo is distributed # in the hope that it will be useful, but WITHOUT ANY WARRANTY; with- # out even the implied warranty of MERCHANTABILITY or FITNESS FOR A # PARTICULAR PURPOSE. See the GNU General Public License for more de- # ails. You should have received a copy of the GNU General Public # License along with GNU Make; see the file COPYING. If not, write # to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, # Boston, MA 02110-1301 USA. # Only switch the terminal when the currently active terminal is the target # terminal. This prevents display switches while booting. # The "2" might be replaced if X runs on another virtual terminal. VT=2 if [ $(/usr/bin/fgconsole) -eq $VT ]; then /usr/bin/chvt 1 /usr/bin/chvt $VT exit 0 else exit 1 fi -------------------------------------------------------------------------------- 6.0 - Viewing XInput Events (xidump)Note: The device identifiers (input_device) are case sensitive. [jej@ayukawa src]$ ./xidump -l eraser extension stylus extension cursor extension Mouse0 disabled keyboard keyboard [jej@ayukawa src]$ ./xidump -l -v eraser eraser extension key: min=8, max=39, num=32 btn: num=1 val: axes=6 mode=abs buf=0 axis[0]: res=2540, min=0, max=30480 axis[1]: res=2540, min=0, max=30480 axis[2]: res=1, min=0, max=1023 axis[3]: res=1, min=-64, max=63 axis[4]: res=1, min=-64, max=63 axis[5]: res=1, min=0, max=1023 [jej@ayukawa src]$ ./xidump -u raw stylus 14.56291895: Proximity In 14.56305595: Motion: x= +5978 y=+28728 p= 0 tx= +64 ty= +64 w= +0 ID: 2323 Serial: -60 ... 16.87158095: Motion: x= +4941 y=+27842 p= 225 tx= +41 ty= +67 w= +0 ID: 2323 Serial: -60 16.87164395: Button: 1 DOWN 16.87169595: Motion: x= +4964 y=+27844 p= 398 tx= +42 ty= +66 w= +0 ID: 2323 Serial: -60 ... 17.27328395: Motion: x= +5261 y=+27543 p= 3 tx= +48 ty= +64 w= +0 ID: 2323 Serial: -60 17.27334395: Button: 1 UP 17.27515995: Motion: x= +5348 y=+27451 p= 4 tx= +48 ty= +63 w= +0 ID: 2323 Serial: -60 ... 17.35933795: Motion: x= +7089 y=+27061 p= 4 tx= +48 ty= +63 w= +0 ID: 2323 Serial: -60 17.37444395: Proximity Out <Ctrl-C> [jej@ayukawa src]$ ./xidump stylus InputDevice: stylus Valuators: Absolute ID: 2323 Serial Number: -60 x-axis y-axis pressure x-tilt y-tilt wheel data: +10826 +09919 +00084 +00058 +00065 +00000 min: +00000 +00000 +00000 -00064 -00064 +00000 max: +30480 +30480 +01023 +00063 +00063 +01023 res: +00000 +00000 +00039 +00001 +00001 +00001 ******** Proximity: IN Focus: Buttons: 1-DOWN Keys: For completeness sake, here are the command line options: Usage: xidump [options] input_device -h, --help - usage -v, --verbose - verbose -V, --version - version -l, --list - list available input devices -u, --ui ui_type - use specified ui, see below Use --list option for input_device choices UI types: curses, raw There are not many options, but the --list option is helpful for identifying devices, and the --ui option allows you to switch between curses and raw modes. Adding the --verbose option increases the amount of output, and when used in conjunction with --list, displays the device capabilities. 7.0 - Tablet PCThe Wacom digitizer that is embedded in the Tablet PCs can be a serial or USB tablet. The USB Tablet PCs follow the same configuration steps as the other Wacom USB tablets. This page is dedicated to serial Tablet PCs. The embedded serial Wacom digitizers utilitizes a special protocol IV, ISDV4. Similar to the conventional serial tablets, serial tablet PCs use a serial controller (UART). But, on older Linux kernels, they are not set to a logical serial port. They are effectively serial devices, but require special configuration (setserial) under Linux. The good news is on newer Linux kernels, most serial Tablet PCs don't need the setserial step anymore since the kernel is taking care of them now. However, you still need to figure out which serial port your tablet has been mapped to before update the xorg.conf. You can use xxd to see if your tablet has been mapped onto a serial port or not. To do so, follow the steps below: [jej@ayukawa ~]$su Password: [jej@ayukawa ~]# xxd /dev/ttyS0 Move your pen on your tablet PC. If you see output from the terminal while you move the pen, your tablet has been mapped to port 1. Quit xxd by Ctrl+c. Then ignore the rest of this page and go to (see Configuring X11) page. Otherwise, apply xxd to port 1 to 4. If none of them show output, you need to manually map the tablet to a serial port or update your kernel serial driver. If you have installed the kernel source that your system was based on, check the source under drivers/serial to see if you have 8250_pnp.c or not. If the file exists, please add: /* Wacom tablets */ { "WACFXXX", 0 }, to the end of pnp_dev_table (or replace all entries that start with WACF). Then compile and install your kernel from source. Once you launch the newly installed kernel, your serial tablet should be mapped to a ttyS port. Use xxd to decide which port is associated with your device. If your kernel doesn't have 8250_pnp.c or you don't like to rebuild your kernel, here is a sample command to set your port manually. The IO port is most probably different from your Tablet PC, which you have to figure it out. This is the trade-off for not updating the kernel serial driver. [jej@ayukawa src]$ setserial /dev/ttyS2 port 0x93f8 autoconfig This command needs to be excuted with each reboot before X server starts. You can add the command into one of your favorite start scripts. I normally add it into /etc/rc.d/rc.local. Here is how my rc.local looks like: #!/bin/sh # # This script will be executed *after* all the other init scripts. # You can put your own initialization stuff in here if you don't # want to do the full Sys V style init stuff. touch /var/lock/subsys/local setserial /dev/ttyS2 port 0x93f8 autoconfig After installing wacom_drv.o and other programs, such as wacomcpl and wacdump, restart X server. Now you can view raw tablet data by: [jej@ayukawa util]$ ./wacdump -f tpc /dev/ttyS2 # Wacom digitizer on fake COM3 If everything looks right from wacdump (see Using wacdump), you can update /etc/X11/XF86Config or /etc/X11/xorg.conf to load wacom X driver (see Configuring XFree86/X11R6). Please note that in Wacom InputDevice section, the following 2 options are required for serial Tablet PC: Option "Device" "/dev/ttyS2" # SERIAL ONLY Option "ForceDevice" "ISDV4" # Tablet PC ONLY Refer to Adding the InputDevices for more information. 8.0 - GUI-Based (tcl/tk) Wacom Control Panel(wacomcpl)However, it is reported that there are older systems on which can not run wacomcpl due to some XFree86 interface error. The workaround is to add the configuration options to your X config file, refer to Configuring X11 page for details. Running wacomcpl If wacom_drv.(s)o was running while installing wacomcpl, wacomcpl can be launched immediately after make install and exit. If wacom_drv.(s)o is installed by the same make install as wacomcpl is, restarting X server is required to use the newly built wacom_drv.(s)o. We strongly recommand to build and install the wacom_drv.(s)o and wacomcpl from the same release package since the out of sync wacom_drv.(s)o and wacomcpl may crash your X server. 9.0 - Command Line Configuration Interface (xsetwacom)The basic usage and options can be viewed by issuing man xsetwacom. [jej@ayukawa linuxwacom]$xsetwacom Usage: xsetwacom [options] [command [arguments...]] Options: -h, --help - usage -v, --verbose - verbose output -V, --version - version info -d, --display disp_name - override default display -s, --shell - generate shell commands for 'get' -x, --xconf - generate X.conf lines for 'get' Commands: list [dev|param] - display known devices, parameters list mod - display supported modifier and specific keys for keystokes set dev_name param [values...] - set device parameter by name get dev_name param [param...] - get current device parameter(s) value by name getdefault dev_name param [param...] - get device parameter(s) default value by name If you want to change Stylus's mode from absolute (default) to relative, then: [jej@ayukawa linuxwacom]$xsetwacom set Stylus mode relative If you want to change button 2 to left-double-click, then: [jej@ayukawa linuxwacom]$xsetwacom set Stylus button2 "dblclick 1" If you want to change button 2 to button 5, then: [jej@ayukawa linuxwacom]$xsetwacom set Stylus Button2 "button 5" or [jej@ayukawa linuxwacom]$xsetwacom set Stylus Button2 5 If you want to change button 3 to ModeToggle, then: [jej@ayukawa linuxwacom]$xsetwacom set Stylus button3 modetoggle If you want to know what the current (or default) pressure sensitivity setting is, then: [jej@ayukawa linuxwacom]$xsetwacom -s get Stylus PressCurve (output in xsetwacom format) xsetwacom set stylus PressCurve "0 15 85 100" or [jej@ayukawa linuxwacom]$xsetwacom -x get Stylus PressCurve (output in xorg.conf Option format) Option "PressCurve" "0,15,85,100" [jej@ayukawa linuxwacom]$xsetwacom -x getdefault Stylus PressCurve Option "PressCurve" "0,0,100,100" If you want to set the pressure sensitivity a bit softer, then: [jej@ayukawa linuxwacom]$xsetwacom set Stylus PressCurve 0 15 85 100 [jej@ayukawa linuxwacom]$xsetwacom set Stylus TPCButton on If you want to change pad's button 1 to ctrl alt F2, then: [jej@ayukawa linuxwacom]$xsetwacom set pad Button1 "core key ctrl alt F2" If you want to change pad's button 2 to ctrl alt backspace, then: [jej@ayukawa linuxwacom]$xsetwacom set pad Button2 "core key ctrl alt backspace" xsetwacom supported parameters param [values...] results ------------------------------------------------------------------ Mode Relative|Absolute sets the mode of the device TopX integer sets the X coordinate of the top corner of the active zone TopY integer sets the Y coordinate of the top corner of the active zone BottomX integer sets the X coordinate of the bottom corner of the active zone BottomY integer sets the Y coordinate of the bottom corner of the active zone STopXi integer returns screen i left coordinate in pixels STopYi integer returns screen i top coordinate in pixels SBottomXi integer returns screen i right coordinate in pixels SBottomYi integer returns screen i bottom coordinate in pixels ButtonM integer|keystroke sets button M to button integer click or keystroke ButtonM 0 ignores button M click RelWUp integer|keystroke sets relative wheel up to button click or keystroke RelWDn integer|keystroke sets relative wheel down to button click or keystroke AbsWUp integer|keystroke sets absolute wheel up to button click or keystroke AbsWDn integer|keystroke sets absolute wheel down to button click StripLUp integer|keystroke sets left strip up to button click or keystroke StripLDn integer|keystroke sets left strip down to button click or keystroke StripRUp integer|keystroke sets right strip up to button click or keystroke StripRDn integer|keystroke sets right strip down to button click or keystroke PressCurve i1 i2 i3 i4 sets the pressure bezier curve, where i1+i4=100; i2+i3=100 DebugLevel integer (0 - 12) sets the level of debugging trace for the specified tool CommonDBG integer (0 - 12) sets the level of debugging trace for all tools associated with the same tablet Suppress integer (0 - 100) number of data trimmed for the tools associated with the same tablet Screen_No integer (-1 - 5) sets screen number the tablet is mapped to TwinView none|xinerama|vertical |horizontal|leftof |aboveof sets the mapping to TwinView. Tablet mappings applied after this command will be based on the new tablet orientation. TVResolution0 width x height sets MetaModes option for TwinView Screen 0 TVResolution1 width x height sets MetaModes option for TwinView Screen 1 SpeedLevel integer (1 - 11) sets relative cursor movement speed ClickForce integer (1 - 21) sets tip/eraser pressure threshold with clickforce scale Threshold integer sets tip/eraser pressure threshold directly to the pressure default is (2048 / 75) xyDefault resets the bounding coordinates to default in tablet units mmonitor on|off turns on/off across monitor movement on (non-TwinView) multi-monitor desktop TPCButton on|off turns on/off the buttons as Tablet PC buttons Touch on|off turns on/off Touch events (default is enable/on for tablets with touch) Gesture on|off turns on/off Touch Gesture (default is enable/on for tablets with two finger support). ZoomDistance integer minimum distance required before starting a zoom gesture (default is 50) ScrollDistance integer minimum finger motion distance required for starting a scroll gesture (default is 30 for Tablet PC and 20 for the others) TapTime integer (1 - 500) maximum time between taps required for a right click gesture (default is 250 ms) CursorProx integer (distance) sets cursor distance margin for proximity-out in distance from the tablet surface Rotate none|cw|ccw|half sets the rotation of the tablet ToolID returns the ID of the associated device ToolSerial returns the serial number of the associated device GetTabletID/TabletID returns the tablet ID of the associated device NumScreen returns number of screens configured for the desktop ------------------------------------------------------------------ Event description format: [CORE] [EVENT TYPE] [MODIFIERS] [CODE] CORE: Emit core events irrespective of the SendCoreEvents setting EVENT TYPE: the type of event to emit: KEY: Emit a key event BUTTON: Emit a button event DBLCLICK: Emit a double-click button event MODETOGGLE: Toggle absolute/relative tablet mode DISPLAYTOGGLE: Toggle cursor movement among all displays which include individual screens plus the whole desktop for the selected tool if it is not a pad. When the tool is a pad, the function applies to all tools that are asssociated with the tablet SCREENTOGGLE: Toggle cursor movement among all screens for the selected tool if it is not a pad. When the tool is a pad, the function applies to all tools that are asssociated with the tablet MODIFIERS: use "xsetwacom list mod" to see a list of modifiers and specific keys CODE: Button number if emit a button event or specific keys and any other keys not listed as mod Associating parameters to physical devices Following is a list of the parameters that are associated with the elements of devcies. param tools -------------------------------------------------------------------------- Button# All Wacom styli/pucks buttons Tablet ExpressKeys RelWUp/RelWDn Graphire4 tablet wheel Wacom puck Fingerwheel AbsWUp/AbsWDn Intuos puck Thumbwheel Intuos Airbrush Fingerwheel Bamboo tabelt Touch Ring StripLUp/StripLUp Left Touch Strip on Intuos3 and V5 Cintiq (Cintiq 21UX/12WX/20WSX) tablets StripRUp/StripRUp Right Touch Strip on Intuos3 and V5 Cintiq (Cintiq 21UX/12WX/20WSX) tablets -------------------------------------------------------------------------- Automatically excuting predefined xsetwacom commands at logging in Below is an example of my .xinitrc: [jej@ayukawa jej]$ more .xinitrc xsetwacom set Stylus TopX 10 xsetwacom set Stylus TopY 67 xsetwacom set Stylus BottomX 7170 xsetwacom set Stylus BottomY 5778 xsetwacom set Stylus TPCButton 1 # run the primary system script . /etc/X11/xinit/xinitrc To see what's under your home directory, use ls -al ~. It has been reported that xsetwacom can not run on some older systems due to a XFree86 interface error. A generic solution to this issue is directly adding your configuration options to the /etc/X11/XF86Config file. Please refer to Configuring X11 for details. More examples If you are confused with the usages above, let's see some more confusing examples. 1. Usage of keystroke and modifiers keystroke and modifiers can be used through buttons, ExpressKeys, wheels, Touch Strips, and Touch Ring. A list of supported modifiers and special keys can be viewed through xsetwacom list mod. Special keys are symbols that go together to represent one XInput key event. In the following example, Up represents the up arrow key: [jej@ayukawa jej]$ xsetwacom set cursor button4 "key core Up" When you press button4 on your Wacom puck, Xinput will receive an up arrow event. If you want to send the Up keystroke, the universal escape character \ has to be used: [jej@ayukawa jej]$ xsetwacom set cursor button4 "key core \Up" If you press button4 on your Wacom puck, Xinput will receive an U and a p events, i.e., Up would be displayed on your active console or application. Sending down arrow event when button5 is pressed: [jej@ayukawa jej]$ xsetwacom set cursor button5 "key core Down" Sending PageUp event when tablet wheel scrolls up: [jej@ayukawa jej]$ xsetwacom set pad RelWUp "key core pgup" Sending PageDown event when tablet wheel scrolls down: [jej@ayukawa jej]$ xsetwacom set pad RelWDn "key core pgdn" The same functions work for parameters AbsWUp, AbsWDn, StripLUp, StripLDn, StripRUp, and StripRDn. 2. Changing debug level while driver is running xsetwacom supports 2 ways of enabling/disabling debugging information, for individual device and/or for all tools associated with the same tablet, through parameters DebugLevel and CommonDBG. For example, [jej@ayukawa jej]$ xsetwacom set cursor DebugLevel 10 Turns debugger on to level 10 for device "cursor" only. Other devices will not report information to Xorg.0.log file. [jej@ayukawa jej]$ xsetwacom set cursor CommonDBG 3 Turns debugger on to level 3 for all devices associated with the same tablet as "cursor" does. But only common debug information will be reported. 3. Configuring TwinView setup while system running TwinView parameter sets the mapping of TwinView to horizontal/vertical/none. The current TwinView setup can be retrieved by the corresponding get command. For example: which means device cursor was not set to TwinView display.[jej@ayukawa jej]$ xsetwacom -x get cursor TwinView Option "TwinView" "none" [jej@ayukawa jej]$ Two other parameters, TVResolution0 and TVResolution1, made the change of MetaModes option in TwinView setup possible when system is running. TVResolution0 sets MetaModes option for TwinView Screen 0, while TVResolution1 sets MetaModes option for TwinView Screen 1. However, you need to make sure that the MetaModes you are going to set is the same as the TwinView setup in your xorg.conf for Nvidia Graphic card driver. 4. Changing Suppress and RawSample to filter the raw data Use of Suppress will reduce the number of raw data we process in the driver. So, unless you know what you are doing, changing Suppress is not recommended. Valid values for Suppress is 0 to 100, where 0 means raw data is used as is. Suppress less than 101 means data will be used only when its change compared to the last processed event is larger than Suppress in points. Default is 2. RawSample was originally introduced to smooth x/y coordinates to a certain degree. A four-points averaging was tested and convinced to be effective. In 0.7.8, we made RawSample changeable through xsetwacom. However, same as with Suppress, changing RawSample is not recommended. The maximum value can be as large as 20. But the default stays at 4. Both Suppress and RawSample apply to the devices on the same tablet, that is, it is global to all devices associated with the same tablet. 10.0 - Working With GimpNote: Gtk does not handle extended devices in relative mode. Please
don't use Gimp in relative mode.
11.0 - Tablet-Screen MappingThere are four kinds of tablet-to-screen mappings in this setup: 1. map the tablet to the whole desktop; 3. map the tablet to a specific screen when dual display is in TwinView setup. 4. map the tablet to a specific screen when dual display is in non-TwinView setup with Nvidia card. Option "ScreenNo" "theScreenNumber" Xinerama setup1. map the tablet to the whole desktop; 3. map the tablet to a specific screen. Only option "ScreenNo" is needed to configure Wacom driver in this setting. non-TwinView and non-Xinerama setup X11 InputDevices Options details all options for your Wacom device that we mentioned above. Xorg RandR This support is provided by Novell developers. A daemon called wacomxrrd is added to src/util to map Wacom LCD tablet to its own screen under extended RandR mode. The daemon can be launched by "wacomxrrd $dev" and managed through your prefered desktop interfaces.
On SLED 11, it is done by adding the following script, wacomxrrd-start, to /usr/bin
#!/bin/sh grep -q -i wacf /sys/bus/pnp/devices/*/id && exec wacomxrrd -i touch exit 0and putting wacomxrrd.desktop to /usr/share/gnome/autostart. 12.0 - ContactsPing Cheng can be contacted at the following email address: pinglinux@gmail.com. 13.0 - AppendixThis section is for everything that is either not critical or simply too complex to describe in the document above without becoming overly distracting. 13.1 - Building wacdump and xidumpwacdump is enabled by default in the configure script, so let's do that now: [jej@ayukawa linuxwacom]$ ./configure ... ---------------------------------------- BUILD OPTIONS: wacom.o - no wacdump - yes hid.o - no usbmouse.o - no wacom_drv.o - no ---------------------------------------- [jej@ayukawa linuxwacom]$ ./configure checking for XLib include directory... found checking for XLib header files... found checking for ncurses.h... yes ... ---------------------------------------- BUILD ENVIRONMENT: ... XLib - yes ncurses - yes ... BUILD OPTIONS: ... xidump - yes ... ---------------------------------------- When you run make, the xidump program will be built along with any other programs that are specified in the build options. The output file is called 'xidump' and is located in the linuxwacom package's src/util directory. It is installed by running make install. 13.2 - Building xsetwacom[jej@ayukawa linuxwacom]$./configure ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i586-suse-linux linux kernel - yes 2.6.24 module versioning - no kernel source - yes /lib/modules/2.6.25.20-0.7-default/source XFree86 source - no Xorg SDK - yes /usr/include/xorg XSERVER64 - no dlloader - yes XLib - yes /usr/lib xf86config - no TCL - yes /usr/include TK - yes /usr/include ncurses - yes BUILD OPTIONS: wacom.o - no wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes wacomxrrd - yes hid.o - no wacom_drv.so - yes /usr/lib/xorg/modules/input wacom_drv.o - no wacom*_drv quirks - hal libc-wrapper tablet-screen-scaling IsXExtensionPointer key-events dixScreenOrigins Uninit-called ---------------------------------------- If wacom_drv.o is installed by the same make install as xsetwacom is, restarting X server is required to use the newly built wacom_drv.(s)o. We strongly recommand to build and install wacom_drv.(s)o and xsetwacom from the same release package since the out of sync wacom_drv.(s)o and xsetwacom may crash your X server. 13.3 - Building wacomcpl[jej@ayukawa linuxwacom]$./configure ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i686 linux kernel - yes 2.6 module versioning - yes kernel source - yes /usr/src/linux XFree86 - no XLib - yes /usr/X11R6 TCL - yes /usr TK - yes /usr ncurses - yes BUILD OPTIONS: wacom.o - no wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes hid.o - no usbmouse.o - no evdev.o - no mousedev.o - no input.o - no tabletdev.o - no wacom_drv.o - no ---------------------------------------- [jej@ayukawa linuxwacom]$./configure ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i686 linux kernel - yes 2.6 module versioning - yes kernel source - yes /usr/src/linux XFree86 - no XLib - yes /usr/X11R6 TCL - no TK - no ncurses - yes GTK - 2.0.6 BUILD OPTIONS: wacom.o - no wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - no xsetwacom - yes hid.o - no usbmouse.o - no evdev.o - no mousedev.o - no input.o - no tabletdev.o - no wacom_drv.o - no ---------------------------------------- ... checking for tcl header files... not found; tried /usr/include/tcl.h *** *** WARNING: *** The tcl development environment does not appear to *** be installed. The header file tcl.h does not appear *** in the include path. Do you have the tcl rpm or *** equivalent package properly installed? Some build *** features will be unavailable. *** checking for tk header files... not found; tried /usr/include/tk.h and /include/tk.h *** *** WARNING: *** The tk development environment does not appear to *** be installed. The header file tk.h does not appear *** in the include path. Do you have the tk rpm or *** equivalent package properly installed? Some build *** features will be unavailable. *** checking ncurses.h usability... yes checking ncurses.h presence... yes checking for ncurses.h... yes *** *** WARNING: *** libwacomxi requires tcl environment; libwacomxi will not be built. *** ... Then I run configure with option --with-tcl=/usr/local/ActiveTcl: [jej@ayukawa linuxwacom]$./configure --with-tcl=/usr/local/ActiveTcl ... ---------------------------------------- BUILD ENVIRONMENT: architecture - i686 linux kernel - yes 2.6 module versioning - yes kernel source - yes /usr/src/linux XFree86 - no XLib - yes /usr/X11R6 TCL - yes /usr/local/ActiveTcl TK - yes /usr/local/ActiveTcl ncurses - yes BUILD OPTIONS: wacom.o - no wacdump - yes xidump - yes libwacomcfg - yes libwacomxi - yes xsetwacom - yes hid.o - no usbmouse.o - no evdev.o - no mousedev.o - no input.o - no tabletdev.o - no wacom_drv.o - no ---------------------------------------- Note: You may need to issue the following commands before running wacomcpl: [jej@ayukawa linuxwacom]$export LD_LIBRARY_PATH=/usr/local/ActiveTcl/lib:$LD_LIBRARY_PATH [jej@ayukawa linuxwacom]$su [jej@ayukawa linuxwacom]#cd /usr/local/ActiveTcl/lib [jej@ayukawa lib]#ln -s libtcl.8.4.so libtcl.so.0 [jej@ayukawa lib]#ln -s libtk.8.4.so libtk.so.0 [jej@ayukawa linuxwacom]$./configure --with-tcl=/usr/local/tcl8.4 --with-tk=/usr/local/tk8.4 [jej@ayukawa linuxwacom]$export LD_LIBRARY_PATH=/usr/local/tcl8.4/lib:/usr/local/tk8.4/lib:$LD_LIBRARY_PATH [jej@ayukawa linuxwacom]$su [jej@ayukawa linuxwacom]#cd /usr/local/tcl8.4/lib [jej@ayukawa lib]#ln -s libtcl.8.4.so libtcl.so.0 [jej@ayukawa lib]#cd /usr/local/tk8.4/lib [jej@ayukawa lib]#ln -s libtk.8.4.so libtk.so.0 Next, run make. The output will be stored in the linuxwacom package's src/wacomxi and src/wacomxi/.libs directories. They will be installed by running make install (you need to switch to superuser to run this command). 13.4 - Building wacom_drv.o from ScratchIntroductionI should tell you out-right that this is a time consuming process.
You will need the X source code to rebuild the wacom_drv.o driver. The build configuration for X generates a number of header files that are necessary but not installed by default on most distributions. Consequently, you will need to not only get the source, but build it, practically in its entirety. Then, after all that, the configure script can be instructed to hook into the X build tree and rebuild wacom_drv.o at any time without having to rebuild X again. Since I am running Redhat 8.0 and cannot really pull down the original XFree86 4.2.0 source code, compile it, and expect it to work on my system, I need to instead use the source RPM provided by Redhat. If you choose to go this route, I provide pretty detailed instructions for making this work. If your distribution works differently, or you are using Gentoo where most everything is source code by default, you'll need to handle this as best as possible according to your particular situation. Step One: Get The SourceOn Redhat 8.0, I discovered the version number for my currently installed XFree86 packages by running rpm -q XFree86. This reported version 4.2.0-72, therefore the source package is XFree86-4.2.0-72.src.rpm. I downloaded the package from Redhat directly and installed it to the system as follows: [root@sen src]# rpm -ivh XFree86-4.2.0-72.src.rpm 1:XFree86 ########################################### [100%] This installs a number of files to the /usr/src/redhat directory, particularly in the SOURCES and SPECS subdirectories. Other distributions undoubtedly install elsewhere. Look for the XFree86.spec file which should be located in the SPECS directory. This file contains all the information necessary to patch the orginal XFree86-4.2.0 source code to the level that Redhat is distributing in their regular binary package. The source code and patch files are located in SOURCES. Step Two: Build the SourceThis step describes how to build the source from the RPM itself. If you are building from some other mechanism, I honestly cannot offer much assistance since I generally don't build my X system from scratch. If you'd like to write up a short section on building the server for your particular distribution, I would be happy to include it here. Next, you don't actually have to build the entire thing. The point at which the xf86Wacom.c driver can be built however, is not until somewhere in the middle of the build process. The driver depends on a number of header files that are created dynamically so until they are generated, wacom_drv.o cannot be compiled. My solution was to open a separate terminal in the wacom driver directory and periodically attempt to build it. When it successfully built, I stopped the X build process. Here's how to build the source for an RPM that's been exploded out into the SPECS and SOURCES directories. [root@sen root]# cd /usr/src/redhat [root@sen redhat]# rpmbuild -bc SPECS/XFree86.spec Not every distribution has rpmbuild; try using just rpm instead. At some point, Redhat split the build functionality into separate programs. If after looking through the rpm man page, you still cannot get this to work, send me some email, and I'll look into it. The important item is the "-bc" option of rpmbuild which unpacks, patches, and builds the source without actually installing. While it is also possible to simply unpack and patch using the "-bp" option, there does not seem to be a way to just build. The "-bc" option simply deletes all the files provided by "-bp" and recreates them again. The downside of this is that if you wanted to simply unpack, patch, and then copy the new xf86Wacom.c file over the old one, you'll find that the build step deletes it and starts over again. I have gotten this to work by creating a new patch file, but this requires a bit more effort, so I don't recommend it right off. Step Three: Build the Original DriverThe xf86Wacom.c file is buried pretty deep in the X build tree. If it is in a different location than the one I have provided below, try using find . -name xf86Wacom.c from the BUILD directory. The "a25-update" file is the original xf86Wacom.c file before Redhat's patch. If you open xf86Wacom.c, you'll find that it is version 25, at least as of this writing and this distribution. The presence of the Makefile means that the configuration has at least been run for this directory. If you have built a sufficient portion of the X source files, then all the header files that you need have been generated, and you can build xf86Wacom.c. Try it, and if it does not build, wait a bit. The absence of xf86Version.h for instance, is a good indication that the build process is not ready.[root@sen redhat]# cd BUILD/XFree86-4.2.0/xc/programs/Xserver/hw/xfree86/input/wacom [root@sen wacom]# ls Imakefile wacom.man xf86Wacom.c.Wacom-USB-driver-a25-update Makefile xf86Wacom.c [root@sen wacom]# make rm -f xf86Wacom.o gcc -O2 -march=i386 ... -c xf86Wacom.c ld -r xf86Wacom.o -o wacom_drv.o Step Four: Automating the Build ProcessBy configuring the package with the --with-xf86 option set to the XFree86 build tree, you can build the driver outside of the X build tree. [jej@ayukawa wacom]$ ./configure \ --with-xf86=/usr/src/redhat/BUILD/XFree86-4.2.0 ... BUILD ENVIRONMENT: XFree86 - yes BUILD OPTIONS: wacom_drv.o - yes [jej@ayukawa wacom]$ make The makefile rule which builds the driver is contained within src/Makefile.am and is modified according to the configuration to generate a rule similar to this in src/Makefile: xf86Wacom.o: xf86Wacom.c gcc -O2 -march=i386 -mcpu=$(ARCHITECTURE) -pipe -ansi \ -pedantic -Wall -Wpointer-arith -fno-merge-constants \ -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ -I$(XF86_DIR)/programs/Xserver/include \ -I$(XF86_DIR)/programs/Xserver/mi \ -I$(XF86_DIR)/exports/include/X11 \ -I$(XF86_DIR)/include/extensions \ -I$(XF86_DIR) \ -I$(XF86_DIR)/exports/include \ -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE \ -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ -DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ -DNARROWPROTO -DIN_MODULE -DXFree86Module -DLINUX_INPUT \ -o xf86Wacom.o -c xf86Wacom.c
The options and directories specified come directly from the output of the make command in the previous step. All the root and parent directories have been replaced with the macro XF86_DIR which in this case is set by the configuration script to /usr/src/redhat/BUILD/XFree86-4.2.0/xc. If the options that you see in your build are identical to those above, then the default rule will work for you now. If not, you'll need to make some alterations. You can update the Makefile.am file and rerun automake, update the Makefile.in and rerun configure, or just update the Makefile directly. So long as the X build tree exists, the include directories will point to the correct locations, and the driver will build. If space is an issue, you can probably remove all the non-essential directories, but be careful; the dependency tree in X is huge. 13.5 - Installing wacom driver On DebianThe following documentation for building wacom driver on Debian was written by Olivier Lecarme. You can also refer to Olivier's page here for updates.Copyright (C) June 14, 2005 Olivier Lecarme. I'm using the Sid version of Debian, but I was told that the Sarge distribution, recently become the stable one, already contains what is necessary. Version 2.6.11 of the kernel is the highly preferred one by people maintaining the Linux Wacom software. Download the 2.6.11 kernel I was completely unsuccessful when trying to configure and compile my own kernel: certainly I omitted some capital module, but I could not decide what it was. Thus, I chose the last pre-compiled kernel. 1. apt-get kernel-image-2.6.11-1-686 2. apt-get kernel-headers-2.6.11-1-686 If you use Lilo, configure your /etc/lilo.conf file, taking into account that this kernel needs an initrd= line. Optionally If your case is irrelevant, please skip this section and the following one. 1. I Have a Broadcom NetXtreme BCM5751 Ethernet card, which needs the tigon3 driver, unavailable in Debian kernel 2.6.11. The solution is here. Thus I got the package: 1. cd /usr/src 2. wget http://www.acm.rpi.edu/~dilinger/kernel-source-nonfree-2.6.11 /kernel-nonfree-modules-2.6.11-1-686-2.6.11-1_i386.deb 2. I have an ATI X 300 video card, whose driver is not available in Debian kernel 2.6.11. The solution is here. Thus I got the packages: 1. for the driver: wget http://www.stanchina.net/~flavio/ debian-fglrx-xfree86/fglrx-driver_8.12.10-1_i386.deb 2. and for the kernel module: wget http://www.stanchina.net/~flavio /debian-fglrx-modules/fglrx-kernel-2.6.11-1-686-smp_8.12.10-1+2.6.11-2_i386.deb Install the optional packages 1. cd /usr/src 2. dpkg -i kernel-nonfree-modules-2.6.11-1-686_2.6.11-1_i386.deb 3. dpkg -i fglrx-driver_8.12.10-1_i386.deb 4. dpkg -i fglrx-kernel-2.6.11-1-686_8.12.10-1+2.6.11-2_i386.deb Install the wacom tools package 1. apt-get install wacom-tools 2. dpkg-reconfigure wacom-kernel-source Since your debconf configuration probably did not ask for the lowest priority questions, this step is needed. You might also use it later if you update your kernel, for instance. When asked whether you want to build the modules, answer yes, and tell where the headers are located (normally /usr/src/kernel-headers-2.6.11-1-686). Prepare for the /dev/input/wacom link In /etc/udev/rules.d/10-wacom.rules, add the following line: KERNEL="event*", SYSFS{idVendor}="056a", NAME="input/%k", SYMLINK="input/wacom%e" Thus the drivers will find the Wacom tablet, whatever its /dev/input/eventX address is. Change your XF86Config-4 file The important sections are: 1. The ServerLayout section: Section "ServerLayout" [ ... ] InputDevice "stylus" "SendCoreEvents" InputDevice "eraser" "SendCoreEvents" InputDevice "cursor" "SendCoreEvents" InputDevice "pad" EndSection 2. The InputDevice sections: Section "InputDevice" Identifier "stylus" Driver "wacom" Option "Type" "stylus" Option "USB" "on" Option "Threshold" "10" Option "Device" "/dev/input/wacom" EndSection Section "InputDevice" Identifier "eraser" Driver "wacom" Option "Type" "eraser" Option "USB" "on" Option "Threshold" "10" Option "Device" "/dev/input/wacom" EndSection Section "InputDevice" Identifier "cursor" Driver "wacom" Option "Type" "cursor" Option "USB" "on" Option "Threshold" "10" Option "Device" "/dev/input/wacom" EndSection Section "InputDevice" Identifier "pad" Driver "wacom" Option "Device" "/dev/input/wacom" Option "Type" "pad" Option "USB" "on" EndSection 3. The section dealing with your normal mouse must be considered too. See Mouse1 (for some 2.6 systems). I didn't use /dev/psaux nor /dev/input/mice. /dev/input/mouse0 works for a PS/2 mouse. For a USB mouse, there is a problem mentioned in the Remaining problems. 4. If you use the ATI X300 card, you need to change also the Device section: Section "Device" Identifier "ATI" Driver "fglrx" Option "VideoOverlay" "on" Option "OpenGLOverlay" "off" Option "UseInternalAGPGART" "no" EndSection Final steps 1. Reboot. This will also restart the X server, of course. 2. Enjoy! If you want to use the expresskeys of your Intuos tablet If you do nothing more, the pad is not usable at all. However, you will find here a specific tool for having the pad available in various programs, for example XTerm, Gimp, or Blender. This tool is very easy to compile, install, and use. If you want to use the pad in Gimp, do not enable it in "Preferences -> Input Devices -> Configure the extended input devices", contrarily to the three other tools (stylus, eraser, and cursor). You can easily configure what the expresskeys send, according to your tastes, and use only them for the tasks that need a good control of the stylus or eraser. Remaining problems If your tablet is always plugged, everything works perfectly. If you want to plug it out, for example in order to move it onto another computer, and then to plug it back later, problems begin. For the present, you must take care of the following things: 1. If you plug in the tablet again, the corresponding driver is not informed of this, thus you must restart the X server. 2. If the tablet is plugged when you reboot, and you have an USB mouse, maybe the /dev/input address of this mouse is not the same as the previous time. Thus you will have to change this in your XF86Config-4 file. 3. If you use GDM or KDM or XDM, you should plug in the tablet after rebooting, but before the X server starts, which is somewhat difficult! Thus you will be forced to restart the X server, i.e. kill it (Ctrl+Alt+Backspace) and not simply logging out. Final remarks I would like to thank all persons who helped me, on the LinuxWacom or the Gimp-user discussion lists, especially Carol Spears, Karine Delvare, Ping Cheng, and Ron. 13.6 - Building wacom driver On PowerMacThe following documentation for building wacom driver on PowerMac [silver] was written by Joseph E. Sacco. If you have any problems or questions, go ahead and post them to the list, or send email to me directly. I'll forward your email on to Joseph.Copyright (C) 2004 Joseph E. Sacco System: << Hardware >> * PowerMac [silver] with dual 533 MHz G4 [7410] CPU's, 1GB RAM, (3) 73 GB SCSI drives * Contour UniMouse [USB, optical, three button] * Wacom Intuos Tablet [USB]: GD-1218-U * 4-d mouse * pen * air brush << Software >> * Yellow Dog Linux 3.0.1 [Redhat variant for PPC] * kernel: 2.4.25-ben1 * linuxwacom-0.6.1 * XFree86-4.3.0-2.1e * atk-1.6.0-1 * freetype-2.1.3-4 * gcc-3.3 * gtk+-2.4.0 * glib2-2.4.0 * ncurses-5.2-28 * pango-1.4.0 ============================================================ I have a Wacom Intuos tablet "working" [after a fashion] on a PPC running Yellow Dog Linux 3.0.1. << What works >> * input devices: * cursor movement * button clicks * wheel rotation [as seen from wacdump] * pressure [as seen from wacdump & gimp] * tilt [as seen from wacdump] * applications: * wacdump * xidump * xev * xinput-1.2 * gimp-1.25 & gimp-2.0 * dia-0.9.2 < What does *not* work >> * input devices: * Mode "Relative" for pen & air brush [should it???] * applications: * xsetwacom * wacomcpl [because of xsetwacom] There are some issues I would like to report. ---------------------------------------------------------------------------------------------------------------------------------------- * Makefiles The makefiles are set up for Intel architecture. Some options are not applicable for PPC's. [ from ./src/2.4.22/Makefile.in ] KCFLAGS = -Wall $(DEBUG_FLAGS) -D__KERNEL__ \ -DMODULE -DEXPORT_SYMTAB $(MODS) \ -Wstrict-prototypes -Wno-trigraphs -O2 \ -fno-strict-aliasing \ -fno-common -fomit-frame-pointer -pipe \ ===> -mpreferred-stack-boundary=2 \ ===> -march=$(ARCHITECTURE) The last two options are not applicable to a PPC. A more appropriate set of flags, taken from building the 2.4.25 kernel modules, might be: KCFLAGS = -Wall $(DEBUG_FLAGS) -D__KERNEL__ \ -Wstrict-prototypes -Wno-trigraphs -O2 \ -fno-strict-aliasing -fno-common -fomit-frame-pointer \ -fsigned-char -msoft-float -pipe -ffixed-r2 \ -Wno-uninitialized -mmultiple -mstring \ -DMODULE -DMODVERSIONS -iwithprefix [ from ./src/Makefile.in ] $(XF86OBJS): xf86Wacom.c Makefile ==> gcc -O2 $(DEPFLAGS) -march=i386 -mcpu=$(ARCHITECTURE) -pipe -ansi \ -pedantic -Wall -Wpointer-arith $(NO_MERGE_CONSTANTS) \ -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ -I$(XF86_DIR)/programs/Xserver/include \ -I$(XF86_DIR)/programs/Xserver/mi \ -I$(XF86_DIR)/exports/include/X11 \ -I$(XF86_DIR)/include/extensions \ -I$(XF86_DIR) \ -I$(XF86_DIR)/exports/include \ ==> -Dlinux -D__i386__ -D_POSIX_C_SOURCE=199309L -D_POSIX_SOURCE \ -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ -DX_BYTE_ORDER=X_LITTLE_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ -DNARROWPROTO -DIN_MODULE -DXFree86Module $(LINUX_INPUT) \ -o $@ -c $(subst .o,.c,$@) A more appropriate set of flags, taken from building XFree86-4.3.0, might be: $(XF86OBJS): xf86Wacom.c Makefile gcc -O2 $(DEPFLAGS) -mcpu=$(ARCHITECTURE) -pipe -ansi \ -pedantic -Wall -Wpointer-arith $(NO_MERGE_CONSTANTS) \ -I. -I$(XF86_DIR)/programs/Xserver/hw/xfree86/common \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/loader \ -I$(XF86_DIR)/programs/Xserver/hw/xfree86/os-support \ -I$(XF86_DIR)/programs/Xserver/include \ -I$(XF86_DIR)/programs/Xserver/mi \ -I$(XF86_DIR)/exports/include/X11 \ -I$(XF86_DIR)/include/extensions \ -I$(XF86_DIR) \ -I$(XF86_DIR)/exports/include \ -Dlinux -D__powerpc__ -D_POSIX_C_SOURCE=199309L \ -D_POSIX_SOURCE \ -D_XOPEN_SOURCE -D_BSD_SOURCE -D_SVID_SOURCE -D_GNU_SOURCE \ -DSHAPE -DXINPUT -DXKB -DLBX -DXAPPGROUP -DXCSECURITY \ -DTOGCUP -DXF86BIGFONT -DDPMSExtension -DPIXPRIV -DPANORAMIX \ -DRENDER -DGCCUSESGAS -DAVOID_GLYPHBLT -DPIXPRIV \ -DSINGLEDEPTH -DXFreeXDGA -DXvExtension -DXFree86LOADER \ -DXFree86Server -DXF86VIDMODE -DXvMCExtension \ -DSMART_SCHEDULE -DBUILDDEBUG -DXResExtension \ -DX_BYTE_ORDER=X_BIG_ENDIAN -DNDEBUG -DFUNCPROTO=15 \ -DNARROWPROTO -DIN_MODULE -DXFree86Module $(LINUX_INPUT) \ -o $@ -c $(subst .o,.c,$@) where $(ARCHITECTURE) = powerppc [ppc will not work] * Kernel modules I experimented with different ways of building [and loading] the kernel modules: * evdev.o * hid.o * mousedev.o * wacom.o I settled on building the modules within the existing framework for building the Linux kernel rather than using the makefiles provided by linuxwacom-0.6.1. I did so to insure that I got all the PPC dependency stuff right. * Hotplug kernel module issues I had some issues using 'modprobe' to load the wacom kernel module that forced me to reconfigure and rebuild the 2.4.25-ben1 kernel. A typical YDL kernel build for a PowerMac statically links most of the input core support into the kernel: [from .config file provided by YDL] # Input core support # CONFIG_INPUT=y CONFIG_INPUT_KEYBDEV=y CONFIG_INPUT_MOUSEDEV=y CONFIG_INPUT_MOUSEDEV_SCREEN_X=1024 CONFIG_INPUT_MOUSEDEV_SCREEN_Y=768 CONFIG_INPUT_JOYDEV=m CONFIG_INPUT_EVDEV=y I had initially built only wacom.o as a loadable module. The other modules were statically linked into the kernel. When wacom.o was loaded using: $ /sbin/insmod wacom.o all went well: [output from /var/log/messages] Mar 24 10:26:33 plantain kernel: usb.c: registered new driver wacom Mar 24 10:26:33 plantain kernel: Reporting max 45720, 31680 Mar 24 10:26:33 plantain kernel: wacom.c: Setting tablet report for tabletdata Mar 24 10:26:33 plantain kernel: input4: Wacom Intuos 12x18 on usb2:3.0 Mar 24 10:26:33 plantain kernel: wacom.c: v1.30-j0.6.1 Vojtech Pavlik 13.7 - Building wacom driver On RHEL 5 / CentOS 5The following documentation for building wacom x.org and kernel modules on RHEL 5 / CentOS 5 was written by Sylvain Giasson. If you have any problems or questions, go ahead and post them to linuxwacom-discuss@lists.sourceforge.net.Copyright (C) August 2009 Sylvain Giasson Summary When installing a driver, you will not always get an rpm package to install it. You may have to compile it for the kernel and architecture you are using. This document will show you how to compile the wacom driver from source. Download the binaries You will need to download the source for the wacom driver. You need to go on the linux wacom web page: http://linuxwacom.sourceforge.net. In this example, you download it into /usr/tmp. Uncompress the binaries Once downloaded, the wacom driver source package are TARed and compressed as bz2 archives. They must extracted and uncompressed unsing the following commands. su - root cd /usr/tmp tar xjvf linuxwacom-0.8.4.tar.bz2 Note: tar options: x=extract; j=extract bz2 before tar; v=verbose; f=the file you are going to uncompress. Updating/installing pre-requisite packages with yum before compiling Before compiling the driver for your workstation, you need to be sure to have some pre-requisites modules installed. The easiest way to install them is by using yum. This utility allows you to automatically download and install the kernel headers and development package, the X server software development kit and source, as well as the libXi development package. (Note: Your workstation must have internet access). yum install kernel-devel kernel-headers yum install xorg-x11-server-source xorg-x11-server-sdk libXi-devel Once yum found everything it needs, press "y" to begin the installation process. Compiling the driver 1. Compiling the driver is simple. You need to configure a custom installer, create it, and install it. Type the following commands: su - root cd /usr/tmp/linuxwacom-0.8.4 ./configure --enable-wacom If some dependencies aren't resolved, the configure step will not be completed successfully. Once dependancies are resolved, run ./configure again. 2. When the "configure" step succeeds, continue to the next steps. Type: ./make 3. This will create the actual installer using the configuration from the previous step. Type: ./make install This will install the driver. 4. Install kernel driver (create a backup copy) cp /lib/modules/`uname -r`/kernel/drivers/usb/input/wacom.ko /lib/modules/`uname -r`/kernel/drivers/usb/input/wacom.ko.old.$$ cp src/`uname -r | cut -d- -f1`/wacom.ko /lib/modules/`uname -r`/kernel/drivers/usb/input/ 5. Reboot the workstation 13.8 - Building wacom driver On Suse 9.2Nico Kadel-Garcia has provided a changed SPEC file for SuSE 9.2. You can download the spec here."There are only a few needed changes: use the new software, throw out an old patch, teach it to use the right options for x86_64 compilation, and stop it from generating symlinks into /usr/include/X11 at compilation time, and it's done. ". Nico said on Mar 21 2005. 13.9 - Building wacom driver On Ubuntu 9.04 64-bit systemThe steps on this page are taken from the following posts:-http://ubuntuforums.org/showthread.php?t=1215979&page=3 #22 http://ubuntuforums.org/showthread.php?t=1038949&page=11 #104 Section 1 http://ubuntuforums.org/showthread.php?t=967147&page=18 #176Craig Stevens summarized the steps below for his Wacom Intuos4 M on a 64-bit Ubuntu 9.04 (Aug. 26, 2009). Craig also wanted to credit Favux and Eric Honaker for their help. If you have any problems or questions, please post them to linuxwacom-discuss@lists.sourceforge.net. Process from start to finish:- 1. Installed "wacom-tools" and "xserver-xorg-input-wacom" using synaptic. 2. "cd ./Desktop" 3. "wget http://prdownloads.sourceforge.net/linuxwacom/linuxwacom-0.8.4.tar.bz2" 4. "sudo apt-get update" 5. "sudo apt-get install build-essential libx11-dev libxi-dev x11proto-input-dev xserver-xorg-dev tk8.4-dev tcl8.4-dev libncurses5-dev" 6. "sudo apt-get upgrade" 7. Then got the kernal version with: "uname -r" (needed in steps 8 and 14) 8. I had the generic kernel so: "sudo apt-get install linux-headers-generic" (or it would have been: "sudo apt-get install linux-headers-rt for the rt kernel") 9. "tar xjvf linuxwacom-0.8.4.tar.bz2" 10. "cd linuxwacom-0.8.4" 11. "./configure --enable-wacom" 12. "make" 13. "sudo make install" 14. Then copied the wacom.ko built in step 12 over the existing one in lib/modules..., "sudo cp ./src/2.6.28/wacom.ko /lib/modules/`uname -r`/kernel/drivers/input/tablet/wacom.ko" where `uname -r` is the kernel version from step 7. 15. Changed /usr/share/hal/fdi/policy/20thirdparty/10-wacom.fdi for a new one attached to http://ubuntuforums.org/showthread.php?t=967147&page=18 #176 which clearly explains the procedure (just swapping out the file contents in a text editor, after backing up!) 16. In a text editor added the line "wacom" to the end of the /etc/modules file 17. Rebooted and it worked.This has got the tablet as far as working like a mouse in Ubuntu Gnome desktop and also working in Photoshop in XP on a VirtualBox VM. The Touch Ring zooms in Firefox. 13.10 - Laptop Suspend/Resume TipsThomas Netter (tnetter at iniDOTunizhDOTc) kindly provided a solution to the following problem:The peoblem lies in the step that when unplugging tablet cable while the laptop is entering Suspend Mode. The proper steps to plug/unplug, suspend/resume a Wacom tablet on a laptop are:When laptop recovers from suspend/resume, XFree86/X.org no longer registers the tablet. The laptop, however, receives all the tablet data (I can "cat /dev/input/event2" and see the data). The only way I know for X to recover the tablet is to restart X. - Fold the laptop's screen - Wait 4 or 5 seconds for the tablet's orange LED to extinguish - Unplug the tablet's USB cable THEN you can recover the tablet functionalities after resuming the laptop and repluging the tablet. However, If you: - Fold the laptop's screen - Immediately unplug the tablet's USB cable before the LED extinguishes THEN you cannot recover the tablet functionalities after resuming the laptop and replugging the tablet, even if you replug the tablet before resuming the laptop. Therefore, old airline operations apply: Extinguish LEDs before take-off! -Thomas 13.11 - GNU Free Document LicenseGNU GENERAL PUBLIC LICENSEVersion 2, June 1991 Copyright (C) 1989, 1991 Free Software Foundation, Inc. 675 Mass Ave, Cambridge, MA 02139, USA Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed. Preamble |