Wacom.so unloaded by Xorg server

Help
Anonymous
2010-09-05
2013-04-05

  • Anonymous
    2010-09-05

    I'm running 64-bit, OpenSUSe 11.3. Everything finally compiled okay but the tablet still doesn't work.

    I'm seeing the following message in my xorg.0.log:

    [   389.710] (II) Loading /usr/lib64/xorg/modules/input/wacom_drv.so
    [   389.710] (II) Module wacom: vendor="X.Org Foundation"
    [   389.710]    compiled for 4.3.99.902, module version = 1.0.0
    [   389.710]    Module class: X.Org XInput Driver
    [   389.710]    ABI class: 
    [   389.710] (EE) module ABI major version (2) doesn't match the server's version (9)
    [   389.710] (II) UnloadModule: "wacom"
    [   389.710] (II) Unloading /usr/lib64/xorg/modules/input/wacom_drv.so
    [   389.710] (EE) Failed to load module "wacom" (module requirement mismatch, 0)
    

    Someone suggested adding the following to Xorg.conf but it only killed the Xserver.

    Section "ServerFlags"
       Option "IgnoreABI" "True"
    EndSection
    

    is there another workaround?

     
  • Ping Cheng
    Ping Cheng
    2010-09-06

    How did you compile the driver on driver on the system? Please post your steps along with the outputs here. Thank you.

     

  • Anonymous
    2010-09-06

    The driver was compiled on the same machine that's giving the error. The machine is running this kernel: Linux 2.6.34-12-desktop x86_64.

    The machine is new, the tablet (CTH-661)is now about 6 months old. The machine got a fresh install of OpenSUSe 11.3, 64 bit. I installed the kcm_tablet - KDE 4 KCModule for the Wacom Linux Drivers - v 1.2-1.2 and wacom-kmp-desktop - Kernel modules for Wacom Tablets- v 0.8.1_k2.6.34.0_12-10.1 files that came with the distro. They didn't seem to work, so I went to the LinuxWacom project site and other forums for more information.

    I installed base development & TCL/TK development packages (I'm not a developer and these are "extra" to the basic desktop)
    I verified that ncurses, libtool, libXi and the other development packages were installed.

    Using directions in this thread on the OpenSUSe forums: http://forums.opensuse.org/english/get-help-here/hardware/443230-there-no-x11-input-wacom-packages-opensuse-11-3-a-3.html

    I installed these additional kernel packages: kernel-source, kernel-syms, xorg-x11-server-sdk
    I downloaded xf86-input-wacom-0.10.8.tar.bz2, unpacked it, ran configure, make, & make install
    I downloaded wacomlinux-0.8.8-8.tar.bz2, unpacked it, ran ./configure -enable-wacom -prefix=/usr, and copied the modules to the specified directories

    The directions given for creating symbolic links failed with "file or directory not found" on the Module.symvers, and dbus-arch-deps.h.
    This command seemed to work:[
    code]# cd /usr/src/linux-`uname -r | cut -d- -f1,2`
    # make oldconfig && make modules_prepare

    Things still weren't working - everything pointed to the need for a Xorg.conf file, which OpenSUSe 11.3 doesn't use, so I copied the Xorg.conf.install as Xorg.conf. Then I added the Wacom settings:

    Section "ServerLayout"
      Identifier "Layout"
      Screen  "vboxvideo"
      Screen  "vmware"
      Screen  "cirrus"
      Screen  "fbdev"
      Screen  "vesa"
      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
    Section "InputDevice"
      Driver        "wacom"
      Identifier    "stylus"
      Option        "Device"        "/dev/input/wacom"    # USB ONLY
      Option        "Type"          "stylus"
      Option        "USB"           "on"                  # USB ONLY
    EndSection
    Section "InputDevice"
      Driver        "wacom"
      Identifier    "eraser"
      Option        "Device"        "/dev/input/wacom"    # USB ONLY
      Option        "Type"          "eraser"
      Option        "USB"           "on"                  # USB ONLY
    EndSection
    Section "InputDevice"
      Driver        "wacom"
      Identifier    "cursor"
      Option        "Device"        "/dev/input/wacom"    # USB ONLY
      Option        "Type"          "cursor"
      Option        "USB"           "on"                  # USB ONLY
    EndSection
    # This section is for Intuos3, CintiqV5, Graphire4, or Bamboo without touch
    Section "InputDevice"
      Driver        "wacom"
      Identifier    "pad"
      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/input/wacom-touch"    # USB ONLY
      Option        "Type"          "touch"
      Option        "USB"           "on"                  # USB ONLY
    EndSection
    

    The Wacom rules file at /etc/udev/rules.d didn't have much in it (I think it was 10-wacom.rules) so I replaced it with the 60-wacom.rules from linuxwacom-0.8.8-8/src/util and added the following to it:

    BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="00", ENV{WACOM_TYPE}="stylus"
    BUS=="usb", KERNEL=="event*", SYSFS{bInterfaceNumber}=="01", ENV{WACOM_TYPE}="touch"
    BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}!="touch", SYMLINK+="input/wacom"
    BUS=="usb", KERNEL=="event*", SYSFS{idVendor}=="056a", ENV{WACOM_TYPE}=="touch", SYMLINK+="input/wacom-touch"
    

    The tablet still wasn't working after system restarts. dmesg would show the system knew the tablet was there and it looked like a driver was being loaded, depmod -a didn't make any difference. I ran across a posting saying macros should be installed, so I tried that

    wget http://xorg.freedesktop.org/archive/individual/util/util-macros-1.10.0.tar.bz2
    tar xvfj util-macros-1.10.0.tar.bz2
    cd util-macros
    ./configure --prefix=/usr
    sudo make install
    

    still no response from the tablet.
    checking the xorg.0.log I found the ABI error. Searching forums, I found the code to stop the mismatch-error. It killed the xserver, so I took it back out. They system works, the tablet doesn't.

    if you need any more information, please let me know.

    thanks, nancy

     
  • Favux
    Favux
    2010-09-06

    Hi nancy,

    You don't have a Wacom tablet mouse so remove the cursor section from the xorg.conf and the cursor line from "ServerLayout".  You are correct, the pad should be on the wacom-touch symlink so remove the duplicate pad section with the wacom symlink.  The pad line in "ServerLayout" would be trying to make both active.

    Favux

     

  • Anonymous
    2010-09-06

    Favux

    I removed the pad & cursor lines from xorg.conf and restarted the system. I still get the ABI mismatch (2 versus 9) & the tablet doesn't work.

     
  • Ping Cheng
    Ping Cheng
    2010-09-08

    What is the output of "X -version" on your system?  Please redo the following steps to see what happens:

    download wacomlinux-0.8.8-8.tar.bz2
    unpacked it
    ./configure
    make
    su
    make install
    reboot

     
  • Ping Cheng
    Ping Cheng
    2010-09-08

    Sorry, I meant linuxwacom-0.8.8-8.tar.bz2. It was copied and pasted from your messages ;).

     

  • Anonymous
    2010-09-08

    that's okay - I knew what you meant ;-)

    output from ./config:

    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for a thread-safe mkdir -p... /bin/mkdir -p
    checking for gawk... gawk
    checking whether make sets $(MAKE)... yes
    checking whether to enable maintainer-specific portions of Makefiles... no
    checking for gcc... gcc
    checking for C compiler default output file name... a.out
    checking whether the C compiler works... yes
    checking whether we are cross compiling... no
    checking for suffix of executables... 
    checking for suffix of object files... o
    checking whether we are using the GNU C compiler... yes
    checking whether gcc accepts -g... yes
    checking for gcc option to accept ISO C89... none needed
    checking for style of include used by make... GNU
    checking dependency style of gcc... gcc3
    checking for gawk... (cached) gawk
    checking build system type... x86_64-unknown-linux-gnu
    checking host system type... x86_64-unknown-linux-gnu
    checking for a sed that does not truncate output... /usr/bin/sed
    checking for grep that handles long lines and -e... /usr/bin/grep
    checking for egrep... /usr/bin/grep -E
    checking for ld used by gcc... /usr/x86_64-suse-linux/bin/ld
    checking if the linker (/usr/x86_64-suse-linux/bin/ld) is GNU ld... yes
    checking for /usr/x86_64-suse-linux/bin/ld option to reload object files... -r
    checking for BSD-compatible nm... /usr/bin/nm -B
    checking whether ln -s works... yes
    checking how to recognize dependent libraries... pass_all
    checking how to run the C preprocessor... gcc -E
    checking for ANSI C header files... yes
    checking for sys/types.h... yes
    checking for sys/stat.h... yes
    checking for stdlib.h... yes
    checking for string.h... yes
    checking for memory.h... yes
    checking for strings.h... yes
    checking for inttypes.h... yes
    checking for stdint.h... yes
    checking for unistd.h... yes
    checking dlfcn.h usability... yes
    checking dlfcn.h presence... yes
    checking for dlfcn.h... yes
    checking for g++... g++
    checking whether we are using the GNU C++ compiler... yes
    checking whether g++ accepts -g... yes
    checking dependency style of g++... gcc3
    checking how to run the C++ preprocessor... g++ -E
    checking for g77... no
    checking for xlf... no
    checking for f77... no
    checking for frt... no
    checking for pgf77... no
    checking for cf77... no
    checking for fort77... no
    checking for fl32... no
    checking for af77... no
    checking for xlf90... no
    checking for f90... no
    checking for pgf90... no
    checking for pghpf... no
    checking for epcf90... no
    checking for gfortran... no
    checking for g95... no
    checking for xlf95... no
    checking for f95... no
    checking for fort... no
    checking for ifort... no
    checking for ifc... no
    checking for efc... no
    checking for pgf95... no
    checking for lf95... no
    checking for ftn... no
    checking whether we are using the GNU Fortran 77 compiler... no
    checking whether  accepts -g... no
    checking the maximum length of command line arguments... 1572864
    checking command to parse /usr/bin/nm -B output from gcc object... ok
    checking for objdir... .libs
    checking for ar... ar
    checking for ranlib... ranlib
    checking for strip... strip
    checking if gcc supports -fno-rtti -fno-exceptions... no
    checking for gcc option to produce PIC... -fPIC
    checking if gcc PIC flag -fPIC works... yes
    checking if gcc static flag -static works... yes
    checking if gcc supports -c -o file.o... yes
    checking whether the gcc linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking whether -lc should be explicitly linked in... no
    checking dynamic linker characteristics... GNU/Linux ld.so
    checking how to hardcode library paths into programs... immediate
    checking whether stripping libraries is possible... yes
    checking if libtool supports shared libraries... yes
    checking whether to build shared libraries... yes
    checking whether to build static libraries... yes
    configure: creating libtool
    appending configuration tag "CXX" to libtool
    checking for ld used by g++... /usr/x86_64-suse-linux/bin/ld -m elf_x86_64
    checking if the linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) is GNU ld... yes
    checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking for g++ option to produce PIC... -fPIC
    checking if g++ PIC flag -fPIC works... yes
    checking if g++ static flag -static works... yes
    checking if g++ supports -c -o file.o... yes
    checking whether the g++ linker (/usr/x86_64-suse-linux/bin/ld -m elf_x86_64) supports shared libraries... yes
    checking dynamic linker characteristics... GNU/Linux ld.so
    (cached) (cached) checking how to hardcode library paths into programs... immediate
    appending configuration tag "F77" to libtool
    checking for pkg-config... /usr/bin/pkg-config
    checking pkg-config is at least version 0.9.0... yes
    checking for HAL... no
    checking for arch type... x86_64-suse-linux
    checking for kernel type... Linux
    checking for linux-based kernel... yes
    checking for kernel source/headers... /lib/modules/2.6.34-12-desktop/build
    checking kernel version... 2.6.34-12-desktop
    checking for kernel module support... yes
    checking for Xlib... yes
    checking for XSERVER... yes
    checking for xserver libc-wrapper header-files... no
    checking if scaling tablet to screen size is needed... no
    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... yes
    checking if Xorg server is version 1.6 or later... yes
    checking if Xorg server is version 1.7 or later... yes
    checking if Xorg SDK defined IsXExtensionPointer... yes
    checking if Xorg SDK defines dixScreenOrigins... yes
    checking XInput extension version... >= 2.0
    checking for lib xf86config... found, /usr/include/xorg
    checking for X... libraries /usr/lib64, headers 
    checking whether -R must be followed by a space... neither works
    checking for gethostbyname... yes
    checking for connect... yes
    checking for remove... yes
    checking for shmat... yes
    checking for IceConnectionNumber in -lICE... yes
    checking for tclsh... /usr/bin/tclsh
    checking for tcl version... 8.5
    checking for tcl header files... found, /usr/include
    checking for tk header files... found, /usr/include
    checking ncurses.h usability... yes
    checking ncurses.h presence... yes
    checking for ncurses.h... yes
    checking if libwacomcfg should/can be built... yes
    checking if libwacomxi should/can be built... yes
    checking if wacdump should/can be built... yes
    checking if xidump should/can be built... yes
    checking if xsetwacom should be built... yes
    checking if wacomxrrd should be built... checking X11/extensions/Xrandr.h usability... yes
    checking X11/extensions/Xrandr.h presence... yes
    checking for X11/extensions/Xrandr.h... yes
    yes
    checking for Wacom X driver module path... /usr/lib64/xorg/modules/input
    checking for dynamic driver loading support... yes
    checking if wacom_drv.{o,so} should be compiled... yes
    checking if gcc accepts -fno-merge-constants... yes
    checking if gcc accepts -fno-stack-protector... yes
    configure: creating ./config.status
    config.status: creating Makefile
    config.status: creating mkxincludes
    config.status: creating src/Makefile
    config.status: creating src/util/Makefile
    config.status: creating src/xdrv/Makefile
    config.status: creating src/2.6.16/Makefile
    config.status: creating src/2.6.18/Makefile
    config.status: creating src/2.6.24/Makefile
    config.status: creating src/2.6.30/Makefile
    config.status: creating src/wacomxi/Makefile
    config.status: creating src/wacomxi/wacomcpl
    config.status: creating src/include/xdrv-config.h
    config.status: src/include/xdrv-config.h is unchanged
    config.status: creating src/include/kernel-config.h
    config.status: src/include/kernel-config.h is unchanged
    config.status: creating src/include/util-config.h
    config.status: src/include/util-config.h is unchanged
    config.status: executing depfiles commands
    ----------------------------------------
      BUILD ENVIRONMENT:
           architecture - x86_64-suse-linux
           linux kernel - yes 2.6.30
          kernel source - yes /lib/modules/2.6.34-12-desktop/build
         XFree86 source - no 
               Xorg SDK - yes /usr/include/xorg
              XSERVER64 - yes
               dlloader - yes
                   XLib - yes /usr/lib64
             xf86config - yes
                    TCL - yes /usr/include
                     TK - yes /usr/include
                ncurses - yes
      BUILD OPTIONS:
                wacom.o - no
                wacdump - no 
                 xidump - no 
            libwacomcfg - no
             libwacomxi - no
              xsetwacom - no
              wacomxrrd - no
                  hid.o - no 
           wacom_drv.so - no /usr/lib64/xorg/modules/input 
            wacom_drv.o - no
      wacom*_drv quirks - IsXExtensionPointer key-events dixScreenOrigins
    ----------------------------------------
    You can build the kernel driver from this package by
    ./configure --enable-wacom
    NOTE: this package only supports Xorg server older than 1.7.
              You are running a newer version. 
    Please build the X driver from xf86-input-wacom.
    

    from make:

    Making all in src
    make[1]: Entering directory `/tmp/linuxwacom-0.8.8-8/src'
    Making all in 2.6.30
    make[2]: Entering directory `/tmp/linuxwacom-0.8.8-8/src/2.6.30'
        Building linuxwacom drivers for 2.6 kernel.
    ***Note: Drivers not enabled as modules in your kernel config but requested through configure are NOT built
    make -C /lib/modules/2.6.34-12-desktop/build M=/tmp/linuxwacom-0.8.8-8/src/2.6.30
    make[3]: Entering directory `/usr/src/linux-2.6.34-12-obj/x86_64/desktop'
    make -C ../../../linux-2.6.34-12 O=/usr/src/linux-2.6.34-12-obj/x86_64/desktop/. 
      Building modules, stage 2.
      MODPOST 0 modules
    make[3]: Leaving directory `/usr/src/linux-2.6.34-12-obj/x86_64/desktop'
    make[2]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src/2.6.30'
    make[2]: Entering directory `/tmp/linuxwacom-0.8.8-8/src'
    make[2]: Nothing to be done for `all-am'.
    make[2]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src'
    make[1]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src'
    make[1]: Entering directory `/tmp/linuxwacom-0.8.8-8'
    make[1]: Nothing to be done for `all-am'.
    make[1]: Leaving directory `/tmp/linuxwacom-0.8.8-8'
    

    from make install:

    Making install in src
    make[1]: Entering directory `/tmp/linuxwacom-0.8.8-8/src'
    Making install in 2.6.30
    make[2]: Entering directory `/tmp/linuxwacom-0.8.8-8/src/2.6.30'
    make[2]: Nothing to be done for `install'.
    make[2]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src/2.6.30'
    make[2]: Entering directory `/tmp/linuxwacom-0.8.8-8/src'
    make[3]: Entering directory `/tmp/linuxwacom-0.8.8-8/src'
    make[3]: Nothing to be done for `install-exec-am'.
    test -z "/usr/local/share/man/man4" || /bin/mkdir -p "/usr/local/share/man/man4"
     /usr/bin/install -c -m 644 'wacom.4x.gz' '/usr/local/share/man/man4/wacom.4x.gz'
     /usr/bin/install -c -m 644 'xsetwacom.4x.gz' '/usr/local/share/man/man4/xsetwacom.4x.gz'
    test -z "/usr/local/share/man/man4" || /bin/mkdir -p "/usr/local/share/man/man4"
     /usr/bin/install -c -m 644 'wacom.4x' '/usr/local/share/man/man4/wacom.4x'
    test -z "/usr/local/share/man/man4" || /bin/mkdir -p "/usr/local/share/man/man4"
     /usr/bin/install -c -m 644 'wacom.4x.gz' '/usr/local/share/man/man4/wacom.4x.gz'
    test -z "/usr/local/share/man/man4" || /bin/mkdir -p "/usr/local/share/man/man4"
     /usr/bin/install -c -m 644 'xsetwacom.4x' '/usr/local/share/man/man4/xsetwacom.4x'
    test -z "/usr/local/share/man/man4" || /bin/mkdir -p "/usr/local/share/man/man4"
     /usr/bin/install -c -m 644 'xsetwacom.4x.gz' '/usr/local/share/man/man4/xsetwacom.4x.gz'
    make[3]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src'
    make[2]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src'
    make[1]: Leaving directory `/tmp/linuxwacom-0.8.8-8/src'
    make[1]: Entering directory `/tmp/linuxwacom-0.8.8-8'
    make[2]: Entering directory `/tmp/linuxwacom-0.8.8-8'
    make[2]: Nothing to be done for `install-exec-am'.
    make[2]: Nothing to be done for `install-data-am'.
    make[2]: Leaving directory `/tmp/linuxwacom-0.8.8-8'
    make[1]: Leaving directory `/tmp/linuxwacom-0.8.8-8'
    
     
  • Ping Cheng
    Ping Cheng
    2010-09-08

    Your wacom_drv.so did not build from linuxwacom-0.8.8-8. I wonder what X server you are running. Please post the output of "X -version" here.

     
  • Favux
    Favux
    2010-09-08

    Hi nancy,

    It looks like your Xserver is version 1.7 or higher (that's what Ping wanted to find out with 'Xorg -version') so linuxwacom will not build the X driver wacom_drv.so.  That's why in the config output you see:

    checking if Xorg server is version 1.7 or later… yes

    You need to compile xf86-input-wacom for the X driver.  That's why you see in the BUILD ENVIRONMENT:

    wacom_drv.so - no /usr/lib64/xorg/modules/input

    Also it looks like you forgot the '-enable-wacom' flag this time because it also says:

    wacom.o - no

    So it's not compiling the new wacom.ko you need.  This will give an ABI mismatch.  For instructions see Sections 1 & 2 on this HOW TO:  http://ubuntuforums.org/showthread.php?t=1038949  Although it's for Debian/Ubuntu other Suse users say they are able to follow it.  Just remember in Section 1 after compiling linuxwacom not to do 'sudo make install', just copy the new compiled wacom.ko into place.

    Favux

     

  • Anonymous
    2010-09-08

    Here's the info from the "X -version"aQQQQQQQ

    X.Org X Server 1.8.0
    Release Date: 2010-04-02
    X Protocol Version 11, Revision 0
    Build Operating System: openSUSE SUSE LINUX
    Current Operating System: Linux linux-8iym 2.6.34-12-desktop #1 SMP PREEMPT 2010-06-29 02:39:08 +0200 x86_64
    Kernel command line: root=/dev/sda2 resume=/dev/disk/by-id/ata-ST3750528AS_9VP5BBKL-part7 splash=silent quiet vga=0x31a
    Build Date: 19 August 2010  03:34:22PM
    
    Current version of pixman: 0.18.0
            Before reporting problems, check http://wiki.x.org
            to make sure that you have the latest version.
    

    I compiled the drivers from xf86-input-wacom on an earlier pass, just as I ran the -enable-wacom flag when doing the wacom build (on an earlier pass). I just didn't use the flag on this pass.

    The wacom.ko file I'm running is dated August 31, 2010. I compiled the driver & copied it to the following directories:
    /lib/modules/2.6.34-12-desktop/kernel/drivers/input/tablet/wacom.ko
    /lib/modules/2.6.34-12-desktop/updates/wacom.ko

     
  • Favux
    Favux
    2010-09-08

    Hi nancy,

    The only other thing I can think of, is since you're on 64-bit, you may need to add the 64-bit flag:

    "Using -prefix=/usr installs to /usr instead of the default /usr/local. On a 64-bit install you may need to add another flag. To check see where evdev_drv.so is located. If it is in /usr/lib/xorg/modules/input, then '-prefix=/usr' is correct. If in /usr/lib64/xorg/modules/input, then you need to add '-libdir=/usr/lib64'".  And that would be for both linuxwacom and xf86-input-wacom.

    Otherwise we'll have to see if Ping knows what's wrong.

    Favux

     

  • Anonymous
    2010-09-09

    IT WORKS!!!!!

    I'm going to do a Snoopy dance now!!!!!

    Thank you
    Thank you
    Thank you

     
  • Favux
    Favux
    2010-09-09

    Hi nancy,

    Awesome!  : )

     
  • Ping Cheng
    Ping Cheng
    2010-09-09

    Thank you favux for your awesome help. Thank you Nancy for your patience.