Home » mouse-free » Building a custom kernel to use hid-core for a Wacom Bamboo Pad

Building a custom kernel to use hid-core for a Wacom Bamboo Pad

Wacom Bamboo Pad

I have a new Wacom Bamboo Pad. It is not recognised by the wacom drivers in Ubuntu 13.04. These are the wacom modules installed:

$ dpkg --list | grep -i wacom
ii  libwacom-common                           0.7-1                                                                  all          Wacom model feature query library (common files)
ii  libwacom2:amd64                           0.7-1                                                                  amd64        Wacom model feature query library
ii  xserver-xorg-input-wacom                  1:0.19.0-0ubuntu1                                                      amd64        X.Org X server -- Wacom input driver

This is what lsb-usb gives:

$ sudo lsb-usb -v 
Bus 002 Device 006: ID 056a:0318 Wacom Co., Ltd
Device Descriptor:
   bLength                18
   bDescriptorType         1
   bcdUSB               2.00
   bDeviceClass            0 (Defined at Interface level)
   bDeviceSubClass         0
   bDeviceProtocol         0
   bMaxPacketSize0        64
   idVendor           0x056a Wacom Co., Ltd
   idProduct          0x0318
   bcdDevice            1.01
   iManufacturer           1 Wacom Co.,Ltd.
   iProduct                2 Bamboo Pad, USB
   iSerial                 0
   bNumConfigurations      1
   Configuration Descriptor:
     bLength                 9
     bDescriptorType         2
     wTotalLength           84
     bNumInterfaces          3
     bConfigurationValue     1
     iConfiguration          0
     bmAttributes         0x80
       (Bus Powered)
     MaxPower              100mA
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        0
       bAlternateSetting       0
       bNumEndpoints           1
       bInterfaceClass         3 Human Interface Device
       bInterfaceSubClass      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              0
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.10
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength     117
           Report Descriptor: (length is 117)
             Item(Global): Usage Page, data= [ 0x0d 0xff ] 65293
                             (null)
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Main  ): Collection, data= [ 0x01 ] 1
                             Application
             Item(Global): Report ID, data= [ 0x10 ] 16
             Item(Main  ): Collection, data= [ 0x00 ] 0
                             Physical
             Item(Global): Usage Page, data= [ 0x00 0xff ] 65280
                             (null)
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
             Item(Global): Report Size, data= [ 0x08 ] 8
             Item(Global): Report Count, data= [ 0x3f ] 63
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x11 ] 17
             Item(Global): Report Count, data= [ 0x3f ] 63
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x02 ] 2
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0xcc ] 204
             Item(Global): Report Count, data= [ 0x02 ] 2
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0xb0 ] 176
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0xb1 ] 177
             Item(Global): Report Count, data= [ 0x28 ] 40
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x07 ] 7
             Item(Global): Report Count, data= [ 0x06 ] 6
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x08 ] 8
             Item(Global): Report Count, data= [ 0x04 ] 4
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x0a ] 10
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x0b ] 11
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x0c ] 12
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x01 ] 1
                             (null)
             Item(Global): Report ID, data= [ 0x0d ] 13
             Item(Global): Report Count, data= [ 0x3f ] 63
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x81  EP 1 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               3
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        1
       bAlternateSetting       0
       bNumEndpoints           1
       bInterfaceClass         3 Human Interface Device
       bInterfaceSubClass      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              0
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.10
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength      99
           Report Descriptor: (length is 99)
             Item(Global): Usage Page, data= [ 0x0d ] 13
                             Digitizer
             Item(Local ): Usage, data= [ 0x01 ] 1
                             Digitizer
             Item(Main  ): Collection, data= [ 0x01 ] 1
                             Application
             Item(Global): Report ID, data= [ 0x03 ] 3
             Item(Local ): Usage, data= [ 0x02 ] 2
                             Pen
             Item(Main  ): Collection, data= [ 0x00 ] 0
                             Physical
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0x01 ] 1
             Item(Global): Report Size, data= [ 0x01 ] 1
             Item(Local ): Usage, data= [ 0x42 ] 66
                             Tip Switch
             Item(Local ): Usage, data= [ 0x44 ] 68
                             Barrel Switch
             Item(Local ): Usage, data= [ 0x45 ] 69
                             Eraser
             Item(Local ): Usage, data= [ 0x3c ] 60
                             Invert
             Item(Global): Report Count, data= [ 0x04 ] 4
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Input, data= [ 0x03 ] 3
                             Constant Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x32 ] 50
                             In Range
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Report Count, data= [ 0x02 ] 2
             Item(Main  ): Input, data= [ 0x03 ] 3
                             Constant Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Usage Page, data= [ 0x01 ] 1
                             Generic Desktop Controls
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Physical Minimum, data= [ 0x00 ] 0
             Item(Global): Unit, data= [ 0x11 ] 17
                             System: SI Linear, Unit: Centimeter
             Item(Global): Unit Exponent, data= [ 0x0f ] 15
                             Unit Exponent: 15
             Item(Global): Report Size, data= [ 0x10 ] 16
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Local ): Usage, data= [ 0x30 ] 48
                             Direction-X
             Item(Global): Logical Maximum, data= [ 0xc2 0x29 ] 10690
             Item(Global): Physical Maximum, data= [ 0x73 ] 115
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Local ): Usage, data= [ 0x31 ] 49
                             Direction-Y
             Item(Global): Logical Maximum, data= [ 0x18 0x1a ] 6680
             Item(Global): Physical Maximum, data= [ 0x48 ] 72
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Unit, data= [ 0x00 ] 0
                             System: None, Unit: (None)
             Item(Global): Unit Exponent, data= [ 0x00 ] 0
                             Unit Exponent: 0
             Item(Global): Usage Page, data= [ 0x0d ] 13
                             Digitizer
             Item(Local ): Usage, data= [ 0x30 ] 48
                             Tip Pressure
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0xff 0x01 ] 511
             Item(Global): Report Size, data= [ 0x10 ] 16
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
             Item(Main  ): End Collection, data=none
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x83  EP 3 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               8
     Interface Descriptor:
       bLength                 9
       bDescriptorType         4
       bInterfaceNumber        2
       bAlternateSetting       0
       bNumEndpoints           1
       bInterfaceClass         3 Human Interface Device
       bInterfaceSubClass      0 No Subclass
       bInterfaceProtocol      0 None
       iInterface              0
         HID Device Descriptor:
           bLength                 9
           bDescriptorType        33
           bcdHID               1.10
           bCountryCode            0 Not supported
           bNumDescriptors         1
           bDescriptorType        34 Report
           wDescriptorLength     172
           Report Descriptor: (length is 172)
             Item(Global): Usage Page, data= [ 0x01 ] 1
                             Generic Desktop Controls
             Item(Local ): Usage, data= [ 0x02 ] 2
                             Mouse
             Item(Main  ): Collection, data= [ 0x01 ] 1
                             Application
             Item(Global): Report ID, data= [ 0x05 ] 5
             Item(Local ): Usage, data= [ 0x01 ] 1
                             Pointer
             Item(Main  ): Collection, data= [ 0x00 ] 0
                             Physical
             Item(Global): Usage Page, data= [ 0x09 ] 9
                             Buttons
             Item(Local ): Usage Minimum, data= [ 0x01 ] 1
                             Button 1 (Primary)
             Item(Local ): Usage Maximum, data= [ 0x05 ] 5
                             Button 5
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0x01 ] 1
             Item(Global): Report Count, data= [ 0x05 ] 5
             Item(Global): Report Size, data= [ 0x01 ] 1
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Report Count, data= [ 0x03 ] 3
             Item(Main  ): Input, data= [ 0x01 ] 1
                             Constant Array Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Usage Page, data= [ 0x01 ] 1
                             Generic Desktop Controls
             Item(Global): Logical Minimum, data= [ 0x81 ] 129
             Item(Global): Logical Maximum, data= [ 0x7f ] 127
             Item(Local ): Usage, data= [ 0x30 ] 48
                             Direction-X
             Item(Local ): Usage, data= [ 0x31 ] 49
                             Direction-Y
             Item(Global): Report Size, data= [ 0x08 ] 8
             Item(Global): Report Count, data= [ 0x02 ] 2
             Item(Main  ): Input, data= [ 0x06 ] 6
                             Data Variable Relative No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): Collection, data= [ 0x02 ] 2
                             Logical
             Item(Global): Report ID, data= [ 0x09 ] 9
             Item(Local ): Usage, data= [ 0x48 ] 72
                             (null)
             Item(Global): Report Count, data= [ 0x01 ] 1
             Item(Global): Report Size, data= [ 0x02 ] 2
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0x01 ] 1
             Item(Global): Physical Minimum, data= [ 0x01 ] 1
             Item(Global): Physical Maximum, data= [ 0x04 ] 4
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Report ID, data= [ 0x05 ] 5
             Item(Local ): Usage, data= [ 0x38 ] 56
                             Wheel
             Item(Global): Physical Minimum, data= [ 0x00 ] 0
             Item(Global): Physical Maximum, data= [ 0x00 ] 0
             Item(Global): Logical Minimum, data= [ 0x81 ] 129
             Item(Global): Logical Maximum, data= [ 0x7f ] 127
             Item(Global): Report Size, data= [ 0x08 ] 8
             Item(Main  ): Input, data= [ 0x06 ] 6
                             Data Variable Relative No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
             Item(Main  ): Collection, data= [ 0x02 ] 2
                             Logical
             Item(Global): Report ID, data= [ 0x09 ] 9
             Item(Local ): Usage, data= [ 0x48 ] 72
                             (null)
             Item(Global): Report Size, data= [ 0x02 ] 2
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0x01 ] 1
             Item(Global): Physical Minimum, data= [ 0x01 ] 1
             Item(Global): Physical Maximum, data= [ 0x04 ] 4
             Item(Main  ): Feature, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Physical Minimum, data= [ 0x00 ] 0
             Item(Global): Physical Maximum, data= [ 0x00 ] 0
             Item(Global): Report Size, data= [ 0x04 ] 4
             Item(Main  ): Feature, data= [ 0x01 ] 1
                             Constant Array Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Report ID, data= [ 0x05 ] 5
             Item(Global): Usage Page, data= [ 0x0c ] 12
                             Consumer
             Item(Global): Logical Minimum, data= [ 0x81 ] 129
             Item(Global): Logical Maximum, data= [ 0x7f ] 127
             Item(Global): Report Size, data= [ 0x08 ] 8
             Item(Local ): Usage, data= [ 0x38 0x02 ] 568
                             AC Pan
             Item(Main  ): Input, data= [ 0x06 ] 6
                             Data Variable Relative No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
             Item(Main  ): End Collection, data=none
             Item(Main  ): End Collection, data=none
             Item(Global): Usage Page, data= [ 0x01 ] 1
                             Generic Desktop Controls
             Item(Local ): Usage, data= [ 0x06 ] 6
                             Keyboard
             Item(Main  ): Collection, data= [ 0x01 ] 1
                             Application
             Item(Global): Report ID, data= [ 0x06 ] 6
             Item(Global): Usage Page, data= [ 0x07 ] 7
                             Keyboard
             Item(Local ): Usage Minimum, data= [ 0xe0 ] 224
                             Control Left
             Item(Local ): Usage Maximum, data= [ 0xe7 ] 231
                             GUI Right
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0x01 ] 1
             Item(Global): Report Size, data= [ 0x01 ] 1
             Item(Global): Report Count, data= [ 0x08 ] 8
             Item(Main  ): Input, data= [ 0x02 ] 2
                             Data Variable Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Global): Logical Minimum, data= [ 0x00 ] 0
             Item(Global): Logical Maximum, data= [ 0xff 0x00 ] 255
             Item(Local ): Usage Minimum, data= [ 0x00 ] 0
                             No Event
             Item(Local ): Usage Maximum, data= [ 0xff 0x00 ] 255
                             (null)
             Item(Global): Usage Page, data= [ 0x07 ] 7
                             Keyboard
             Item(Global): Report Size, data= [ 0x08 ] 8
             Item(Global): Report Count, data= [ 0x04 ] 4
             Item(Main  ): Input, data= [ 0x00 ] 0
                             Data Array Absolute No_Wrap Linear
                             Preferred_State No_Null_Position
Non_Volatile Bitfield
             Item(Main  ): End Collection, data=none
       Endpoint Descriptor:
         bLength                 7
         bDescriptorType         5
         bEndpointAddress     0x84  EP 4 IN
         bmAttributes            3
           Transfer Type            Interrupt
           Synch Type               None
           Usage Type               Data
         wMaxPacketSize     0x0040  1x 64 bytes
         bInterval               8
Device Status:     0x0000
   (Bus Powered)

Seeking support

I sought support in the ubuntu forums from where I was directed to linuxwacom-discuss, where two options were suggested:

  • try and use input-wacom
  • try and modify hid-core

As someone with a similar model got theirs working using hid-core, I tried to start with that.

Compiling a custom kernel

References: https://wiki.ubuntu.com/Kernel/BuildYourOwnKernel, https://help.ubuntu.com/community/Kernel/Compile

Additional packages required

sudo apt-get source linux-image-$(uname -r)
sudo apt-get build-dep linux-image-$(uname -r)

First, I attempted to build the supplied kernel, without any changes:

cd /usr/src/linux-headers-$(uname -r)
cd /etc/apt/linux-3.8.0
sudo chmod a+x debian/scripts/*
sudo chmod a+x debian/scripts/misc/*
sudo fakeroot debian/rules clean
sudo fakeroot debian/rules editconfigs
sudo fakeroot debian/rules clean
sudo fakeroot debian/rules binary-headers binary-generic

Then, I modified drivers/hid/hid-core.c, by commenting the line

{ HID_USB_DEVICE(USB_VENDOR_ID_WACOM, HID_ANY_ID) },

within

/* a list of devices that shouldn't be handled by HID core at all */
static const struct hid_device_id hid_ignore_list[] = {
...
};

Finally, I rebuilt the kernel

sudo fakeroot debian/rules clean
sudo fakeroot debian/rules binary-headers binary-generic
$ ls ..
linux-3.8.0/
linux-headers-3.8.0-33_3.8.0-33.48_all.deb
linux-headers-3.8.0-33-generic_3.8.0-33.48_amd64.deb
linux-image-3.8.0-33-generic_3.8.0-33.48_amd64.deb
linux-image-extra-3.8.0-33-generic_3.8.0-33.48_amd64.deb

Testing the new kernel

sudo dpkg -i ../linux*3.8*.deb
Error! Bad return status for module build on kernel: 3.8.0-33-generic (x86_64)
Consult /var/lib/dkms/vboxhost/4.1.12/build/make.log for more information.

I didn’t understand the error, and don’t know why I have virtualbox, so I uninstalled it

sudo apt-get remove virtualbox-1.4

repeated the above from rebuilding, and

sudo dpkg -i ../linux*3.8*.deb

ran without errors. Then I did:

sudo reboot

And, upon reboot, my wacom was accessible under system settings.

Advertisements

6 thoughts on “Building a custom kernel to use hid-core for a Wacom Bamboo Pad

  1. Hi,
    Thank you for your article, it was very useful.
    Did you get the touch pad working ? (I mean with fingers)
    Best regards,
    Julien

    • Glad it was useful.

      No, the touchpad doesn’t work. I’m thinking to revisit the wacom module, see if I can get it to recognise this, but I need a couple of spare days to properly dig into it.

  2. Pingback: Compiling a new kernel module to use hid-core for a Wacom Bamboo Pad | Chris Wallace::Code

  3. It works for me as it said in this thread
    https://bugs.launchpad.net/xf86-input-wacom/+bug/1265714/comments/38

    «Got it perfectly running, now someone can help to get it fixed for all by default. So the steps are:
    1. Add usbhid.quirks=0x056a:0x0319:0x40000000 to the grub boot cmdline(/etc/default/grub). Now the tablet is already working with wacom driver but automatically assigned wacom driver doesn’t support touchpad and it’s keyboard part

    2. I have added to 50-wacom.conf (/usr/share/X11/xorg.conf.d/) the line
    MatchIsTablet “on”
    in the first section after
    MatchProduct “Wacom|WACOM|Hanwang|PTK-540WL|ISD-V4”
    This way “evdev” works for keyboard and pad parts of the device and “wacom” only for tablet

    Everything works, including three-finger swipes(which are sent by keyboard driver as Alt-Left, Alt-Right, Super etc) and pressure sensitivity of pen!
    There must be a better way to match Bamboo Pad without breaking the generic wacom file but I have no experience of doing that, still I will try later if no one else does it faster.
    For the wired edition replace 0x0319 with 0x0318 in the grub cmdline
    Hooray :)»

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s