debian Lenny & wacom cintiq 12wx

559

I recently bought a wacom cintiq 12 wx, after hours of searching, here’s how I, eventually, make it work. Hope these clues will be useful to others.  My config :
a fresh Debian Lenny install on a nvidia card Geforce 6800 with 2 video outputs. After conecting the wacom cintiq on the DVI output and having my primary screen on the other VGA output,  my first step was to set  2 X seperated screens.

1. Install the Nvidia driver and setting seperated X screens

I started to install the nvidia driver from nvidia.com (yes, I did use the restricted driver in that case, avoiding much pain) :

http://us.download.nvidia.com/XFree86/Linux-x86/185.18.29/NVIDIA-Linux-x86-185.18.29-pkg1.run 

many pages and blogs explain how to install this on Debian, I will not get further through that point. The  thing is to have a starting xorg.conf working.   see this link :  http://blog.chewearn.com/2008/10/09/nvidia-separate-x-screen-in-intrepid-ibex-beta/

After installing the package from Nvidia… In gnome or whathever, run in terminal   (as normal user), the nvidia configuration tool:

$ nvidia-settings

click on  the “X Server Display Configuration” left pane, if the second screen is not detected,  click “detect displays”,  the second display should come up. Click on the “configure” button,  set “seperate X screen”. Set your main screen with the resolution of your choice, choose “absolute” option under Position. The NVidia tool detects and auto configures the display for the cintiq (max resolution at 1280 x800), select “RightOf” under Position.

save your X config in your home directory by clicking on “Save to x configuration page” in order to modify it. Backup your old xorg.conf! just in case ..

$sudo cp /etc/X1/xorg.conf xorg.conf.back
$sudo cp ~/xorg.conf /etc/X11/xorg.conf

See my xorg.conf in appendix 1. Note the ‘RightOf’ option in ServerLayout subsection … that can be changed to Leftof

 With this working xorg.conf, restart Xserver :

ctrl+backspace

If X restarts without error, you can breath again, otherwise, recover your xorg.conf backup. Now, after log into X, I had 2 seprate X screens, with 2 gnome desktops and only the mouse can cross.

2. Install the tablet

connect your usb wacom

After setting the dual screen, it’s time to connect your wacom cintiq through one USB output  of your CPU. Then open a terminal, let’s check if the wacom is recognised by using lsusb :

$ lsusb
Bus 001 Device 004: ID 056a:00c6 Wacom Co., Ltd  

the number 00c6  identify the wacom as a Cintiq 12wx

Download last wacom driver and apt-get before compile

first :

$sudo apt-get update

Install the current kernel headers

$sudo apt-get install linux-headers-$(uname -r)

Install  libraries :

$sudo apt-get install build-essential
x11proto-core-dev
libxau-dev libxdmcp-dev
x11proto-input-dev
x11proto-kb-dev xtrans-dev
libx11-dev x11proto-xext-dev
libxext-dev libxi-dev
linux-libc-dev libc6-dev
libncurses5-dev
xserver-xorg-dev tk-dev
tck-dev -y

Install the wacom tools :

$sudo apt-get install wacom-tools xserver-xorg-input-wacom

 From the linux wacom project, get the last driver source code:
http://linuxwacom.sourceforge.net/index.php/dl. When I got the source code, the last package was : linuxwacom-0.8.2-2.tar.bz2. Download and untar in your home directory.

$tar xvfj linuxwacom-0.8.2-2.tar.bz2
$cd linuxwacom-0.8.2-2

3. Now  compile and install the linuxwacom module

before the compilation, I had to (on my system) create or check those following links :

$ sudo ln -s /usr/include/pixman-l/pixman.h /usr/include/pixman.h
$ sudo ln -s /usr/include/pixman-l/pixman-version.h /usr/include/pixman-version.h

In the linuxwacom-0.8.2-2 directory :

$ ./configure -enable-wacom
$ make
and now  install the driver :
$sudo make install

4. xorg config

Backup again your xorg.conf

$ sudo cp xorg.conf xorg.conf.back

Edit xorg.conf in a text editor (gedit, vim, or whatever..) as root or sudo.
According to the xorg.conf, I posted below (see appendix 1), add these lines in “Sever Layout” section and after the lines concerning the keyboard and the mouse :

Section “ServerLayout”
……
    InputDevice    “stylus” “SendCoreEvents”
    InputDevice    “cursor” “SendCoreEvents”
    InputDevice    “eraser” “SendCoreEvents”
    InputDevice    “pad” “SendCoreEvents”

EndSection

For each input devices  given by the cintiq (stylus, eraser, cursor, pad), a section must be added

– the stylus :

Section “InputDevice”
Driver “wacom”
Identifier “stylus”
Option “Device” “/dev/input/wacom”
Option “Type” “stylus”
Option “USB” “on”
Option “Mode” “Absolute”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
Option “PressCurve” “0,15,85,100”
Option “Tilt” “on”
Option “KeepShape” “on”
Option “Speed” “0.5”
EndSection

Note the the option “ScreenNo” “1” limits the input device to the second screen, the cintiq 12wx screen.

– the eraser :

Section “InputDevice”
Driver “wacom”
Identifier “eraser”
Option “Device” “/dev/input/wacom”
Option “Type” “eraser”
Option “USB” “on”
Option “Mode” “Absolute”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
Option “Tilt” “on”
Option “Speed” “0.5”

EndSection

– the cursor:

Section “InputDevice”
    Driver “wacom”
    Identifier “cursor”
    Option “Device” “/dev/input/wacom”
    Option “Type” “cursor”
    Option “USB” “on”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
EndSection

– pad

Section “InputDevice”
    Driver “wacom”
    Identifier “pad”
    Option “Device” “/dev/input/wacom”
    Option “Type” “pad”
    Option “USB” “on”
EndSection  

5. Load the wacom module into the Kernel

 Back to the directory where you compiled the wacom driver (and to the corresponding sub directory of your kernel number), copy the file wacom.ko into the modules kernel directory:

$sudo cp linuxwacom-0.8.2-2/src/src/2.6.27/wacom.ko  /lib/modules/$(uname -r)/kernel/drivers/input/tablet/wacom.ko

Load the module :

$sudo depmod -e

then go back into  the source driver directory and uninstall the old driver :

$cd linuxwacom-0.8.2-2/prebuilt
$sudo ./uninstall
$sudo ./install

 Add Wacom Symlinks to “/etc/udev/rules.d”

first, go to the directory “/etc/udev/rules.d/” and check to see whether a file called “50-xserver-xorg-input-wacom.rules” is present. If not, download the most recent “50-xserver-xorg-input-wacom.rules” from Ron’s Debian repository in your home directory:

$wget -O 50-xserver-xorg-input-wacom.rules “http://git.debian.org/?p=users/ron/wacom-tools.git;a=blob_plain;f=debian/xserver-xorg-input-wacom.udev;hb=e110b046292d6aff63b489c9b1aecec25d470cdb”

then copy it to “/etc/udev/rules.d”

sudo cp 50-xserver-xorg-input-wacom.rules /etc/udev/rules.d/50-xserver-xorg-input-wacom.rules

It’s time to reboot, so everything will be in place … Now, your wacom tablet should work.  check if the stylus cover the  screen and if the pointer moves to the stylus. Of course, it’s not calibrated yet, the stylus is not exactly under the pointer. If no response, your tablet does not work.. and it was my case at this point … argh … so try this,  in a terminal, uninstall wacom-tools :

$sudo apt-get remove wacom-tools xserver-xorg-input-wacom -y

and install again

$sudo apt-get install wacom-tools xserver-xorg-input-wacom -y

then enter again in the wacom driver source directory :

$cd linuxwacom-0.8.2-2/prebuilt

$sudo ./uninstall
$cd ..
$make install

reboot again.

6. Calibrate the wacom : xsetwacom

Xsetwacom is a command line configuration interface, so you can control and change many options of your wacom.  You’ll find all the parameters here : http://linuxwacom.sourceforge.net/index.php/howto/xsetwacom

The main issue here is to get the cursor below the pen. I didn’t find any formula to translate the resolution of the 12wx screen in tablet unit. to figure this out, I used, by trial and error,  xsetwacom, to get the bottom x and y coordinates of the tablet. In a terminal :

$xsetwacom get stylus BottomX

gives you the button coordinate of the cursor on the X axis

$xsetwacom set stylus BottomX 26500

sets and corrects the X coordinate,  by moving those figures, I had, eventually, the cursor bellow the pen. Obviously, the Y axis must be set accordingly.

$xsetwacom set stylus BottomY 33440

Use the same settings for the eraser :

$xsetwacom set eraser BottomX 26500
$xsetwacom set eraser BottomY 33440

 In order to keep these settings at each reboot, make a simple “cintiq.sh” script. Make it executable, so Gnome (or other window manager, see Google for that) can launch in its startup program list. Personnally, I use fluxbox and added a line  to my “~/.fluxbox/startup” file : “cintiq.sh &” .

$touch cintiq.sh

edit the file (gedit, vim ..) and type your settings. Then, make it executable :

$chmod a+x cintiq.sh

With xsetwacom you can set all the extra keys that come with the wacom 12wx (the pad). Again, use xsetwacom and add your settings to the cintiq startup script. My settings, most of them are  set for Gimp: (see this link http://forum.ubuntu-fr.org/viewtopic.php?id=319659)

#!/bin/sh

# right buttons:

#10
——–
#5
#——7
#6
——–
#8

# left buttons:

#9
————
#       1
#3———
#        2
———–
#4

xsetwacom set stylus Suppress “20”
xsetwacom set stylus RawSample “4”
xsetwacom set stylus ClickForce “6”

xsetwacom set stylus PressCurve “0 25 75 100”
xsetwacom set stylus BottomX 26500
xsetwacom set stylus BottomY 33440
xsetwacom set eraser BottomX 26500
xsetwacom set eraser BottomY 33440
xsetwacom set pad StripRDn “CORE KEY -” #zoom out in Gimp
xsetwacom set pad StripRUp “CORE KEY +” #zoom in  in Gimp
xsetwacom set pad StripLDn “CORE KEY ;”
xsetwacom set pad StripLUp “CORE KEY :”
xsetwacom set pad Button10 “CORE KEY =”
xsetwacom set pad Button9 “CORE KEY p” # switch to pen tool
xsetwacom set pad Button8 “CORE KEY ,”
xsetwacom set pad Button7 “CORE KEY SHIFT”
xsetwacom set pad Button6 “CORE KEY CONTROL y” #redo
xsetwacom set pad Button5 “CORE KEY CONTROL z” #undo
xsetwacom set pad Button4 “CORE KEY k” # ink tool
xsetwacom set pad Button3 “CORE KEY SHIFT”
xsetwacom set pad Button2 “CORE KEY CONTROL z” #undo
xsetwacom set pad Button1 “CORE KEY CONTROL y” #redo
xsetwacom set stylus TPCButton “off”
xsetwacom set stylus Button3 “Button 3”
xsetwacom set stylus Button2 “Button 2”
xsetwacom set stylus Button1 “Button 1”

Search Google about using Gimp with Wacom.

Appendix 1: xorg.conf

Section “ServerLayout”
    Identifier     “Layout0”
    Screen      0  “Screen0” 0 0
    Screen      1  “Screen1” RightOf “Screen0”
    InputDevice    “Keyboard0” “CoreKeyboard”
    InputDevice    “Mouse0” “CorePointer”
    InputDevice    “stylus” “SendCoreEvents”
    InputDevice    “cursor” “SendCoreEvents”
    InputDevice    “eraser” “SendCoreEvents”
    InputDevice    “pad” “SendCoreEvents”
EndSection

Section “Files”
    RgbPath         “/etc/X11/rgb”
    ModulePath      “/usr/lib/xorg/modules”
    FontPath        “/usr/share/fonts/X11/misc”
    FontPath        “/usr/share/fonts/X11/cyrillic”
    FontPath        “/usr/share/fonts/X11/100dpi/:unscaled”
    FontPath        “/usr/share/fonts/X11/75dpi/:unscaled”
    FontPath        “/usr/share/fonts/X11/Type1”
    FontPath        “/usr/share/fonts/X11/100dpi”
    FontPath        “/usr/share/fonts/X11/75dpi”
    FontPath        “/var/lib/defoma/x-ttcidfont-conf.d/dirs/TrueType”
EndSection

Section “ServerFlags”
    Option         “Xinerama” “0”
EndSection

Section “InputDevice”
    # generated from default
    Identifier     “Mouse0”
    Driver         “mouse”
    Option         “Protocol” “auto”
    Option         “Device” “/dev/psaux”
    Option         “Emulate3Buttons” “no”
    Option         “ZAxisMapping” “4 5”
EndSection

Section “InputDevice”
    # generated from default
    Identifier     “Keyboard0”
    Driver         “kbd”
    Option        “XkbRules”    “xorg”
    Option        “XkbModel”    “pc105”
    Option        “XkbLayout”    “be”
EndSection

Section “InputDevice”
Driver “wacom”
Identifier “stylus”
Option “Device” “/dev/input/wacom”
Option “Type” “stylus”
Option “USB” “on”
Option “Mode” “Absolute”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
Option “PressCurve” “0,15,85,100”
Option “Tilt” “on”
Option “KeepShape” “on”
Option “Speed” “0.5”

EndSection

Section “InputDevice”
Driver “wacom”
Identifier “eraser”
Option “Device” “/dev/input/wacom”
Option “Type” “eraser”
Option “USB” “on”
Option “Mode” “Absolute”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
Option “Tilt” “on”
EndSection

Section “InputDevice”
    Driver “wacom”
    Identifier “cursor”
    Option “Device” “/dev/input/wacom”
    Option “Type” “cursor”
    Option “USB” “on”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
EndSection Section “InputDevice”
    Driver “wacom”
    Identifier “pad”
    Option “Device” “/dev/input/wacom”
    Option “Type” “pad”
    Option “USB” “on”
Option “TVResolution” “1600×1280,1280×800”
Option “ScreenNo” “1”
Option “Twinview” “horizontal”
EndSection Section “Monitor”
    Identifier     “Monitor1”
    VendorName     “Unknown”
    ModelName      “WAC Cintiq 12WX”
    HorizSync       31.0 – 82.0
    VertRefresh     56.0 – 75.0
    Option         “DPMS”
EndSection

Section “Monitor”
    Identifier     “Monitor0”
    VendorName     “Unknown”
    ModelName      “Hitachi CM766”
    HorizSync       31.0 – 96.0
    VertRefresh     50.0 – 180.0
    Option         “DPMS”
EndSection

Section “Device”
    Identifier     “Device1”
    Driver         “nvidia”
    VendorName     “NVIDIA Corporation”
    BoardName      “GeForce 6800”
    BusID          “PCI:1:0:0”
    Screen          1
    Option      “AddARGBGLXVisuals”    “true”
EndSection

Section “Device”
    Identifier     “Device0”
    Driver         “nvidia”
    VendorName     “NVIDIA Corporation”
    BoardName      “GeForce 6800”
    BusID          “PCI:1:0:0”
    Screen          0
    Option      “AddARGBGLXVisuals”    “true”
EndSection

Section “Screen”
    Identifier     “Screen1”
    Device         “Device1”
    Monitor        “Monitor1”
    DefaultDepth    24
    Option         “TwinView” “1”
    Option         “metamodes” “DFP: nvidia-auto-select +0+0”
    SubSection     “Display”
        Depth       24
    EndSubSection
EndSection

Section “Screen”
    Identifier     “Screen0”
    Device         “Device0”
    Monitor        “Monitor0”
    DefaultDepth    24
    Option         “TwinView” “1”
    Option         “metamodes” “CRT: 1600x1280_70 +0+0; CRT: 1152×864 +0+0”
    SubSection     “Display”
        Depth       24
    EndSubSection
EndSection

Section “Extensions”
    Option “Composite” “Enable”
EndSection