DIGImend / digimend-kernel-drivers

DIGImend graphics tablet drivers for the Linux kernel
GNU General Public License v2.0
1.18k stars 175 forks source link

XP_Pen 13.3v2, almost everything works except for button 3 on stylus sends BTN_TOUCH when clicked. #204

Open DanielJoyce opened 6 years ago

DanielJoyce commented 6 years ago

That button appears to be sending BTN_TOUCH events along with button 1 ( the nib ). Could be a driver issue, or maybe a bad pen.

Hmm, going from the XP-Pen site, this might be intentional?

Everything else seems to work just fine.

DanielJoyce commented 6 years ago

Release info:

daniel@Durandal:~$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.1 LTS"

daniel@Durandal:~$ uname -a
Linux Durandal 4.15.0-36-generic #39-Ubuntu SMP Mon Sep 24 16:19:09 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

uc-logic tools:

daniel@Durandal:~$ sudo uclogic-probe 3 3
[sudo] password for daniel: 
M 58 00 50 00 2D 00 50 00 45 00 4E 00
P 41 00 52 00 54 00 49 00 53 00 54 00 20 00 31 00 33 00 2E 00 33 00
S 64 0C 03 C0 72 8C 40 06 00 FF 1F EC 09
S 65 04 03 00 74
S 6E 04 03 30 00
S 79 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S 7A 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S 7B 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
daniel@Durandal:~$ sudo uclogic-probe 3 3 | uclogic-decode
  Manufacturer: XP-PEN
       Product: ARTIST 13.3
         Max X: 29376
         Max Y: 16524
  Max pressure: 8191
    Resolution: 2540
Internal model: F60 _UG_VAR13_R0713
Buttons status: F60 _UG_VAR13_R0713

X11 Device mapping

daniel@Durandal:~$ cat /etc/X11/xorg.conf.d/50-xp-pen-13.3V2.conf 
# XP-Pen 13.3V2 config

#Section "InputClass"
#    Identifier "XP-Pen 13.3 V2 keyboard"
#    Driver "evdev"
#    MatchDevicePath "/dev/input/event*"
#    MatchIsKeyboard "on"
#    MatchUSBID "28bd:000b"
#EndSection

#Section "InputClass"
#    Identifier "XP-Pen 13.3 V2 pointer"
#    Driver "evdev"
#    MatchDevicePath "/dev/input/event*"
#    MatchIsPointer "on"
#    MatchUSBID "28bd:000b"
#EndSection

Section "InputClass"
    Identifier "XP-Pen 13.3v2"
    Driver "wacom"
    MatchDevicePath "/dev/input/event*"
    MatchIsTablet "on"
    MatchUSBID "28bd:000b"
EndSection

xinput

daniel@Durandal:~$ xinput 
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN24EE:00 04F3:24EE                     id=12   [slave  pointer  (2)]
⎜   ↳ DELL07E6:00 06CB:76AF Touchpad            id=13   [slave  pointer  (2)]
⎜   ↳ XP-PEN ARTIST 13.3                        id=14   [slave  pointer  (2)]
⎜   ↳ XP-PEN ARTIST 13.3 stylus                 id=15   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=20   [slave  pointer  (2)]
⎜   ↳ XP-PEN ARTIST 13.3 pad                    id=21   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=11   [slave  keyboard (3)]
    ↳ Intel HID events                          id=16   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=17   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=18   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=19   [slave  keyboard (3)]

What I see when clicking what should be button 3:

Event: time 1539317779.526757, -------------- SYN_REPORT ------------
Event: time 1539317779.530752, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045
Event: time 1539317779.530752, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1539317779.530752, -------------- SYN_REPORT ------------
Event: time 1539317779.644894, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045
Event: time 1539317779.644894, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0

This is what is produced the nib is tapped on the tablet.

Event: time 1539317866.368031, type 1 (EV_KEY), code 320 (BTN_TOOL_PEN), value 1
Event: time 1539317866.368031, type 3 (EV_ABS), code 0 (ABS_X), value 7425
Event: time 1539317866.368031, type 3 (EV_ABS), code 1 (ABS_Y), value 10348
Event: time 1539317866.368031, -------------- SYN_REPORT ------------
Event: time 1539317866.381998, type 3 (EV_ABS), code 0 (ABS_X), value 7433
Event: time 1539317866.381998, type 3 (EV_ABS), code 1 (ABS_Y), value 10332
Event: time 1539317866.381998, -------------- SYN_REPORT ------------
Event: time 1539317866.391887, type 3 (EV_ABS), code 0 (ABS_X), value 7434
Event: time 1539317866.391887, type 3 (EV_ABS), code 1 (ABS_Y), value 10315
Event: time 1539317866.391887, -------------- SYN_REPORT ------------
Event: time 1539317866.401913, type 3 (EV_ABS), code 0 (ABS_X), value 7418
Event: time 1539317866.401913, type 3 (EV_ABS), code 1 (ABS_Y), value 10302
Event: time 1539317866.401913, -------------- SYN_REPORT ------------
Event: time 1539317866.407930, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1539317866.407930, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1
Event: time 1539317866.407930, type 3 (EV_ABS), code 0 (ABS_X), value 7398
Event: time 1539317866.407930, type 3 (EV_ABS), code 1 (ABS_Y), value 10296
Event: time 1539317866.407930, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4401
Event: time 1539317866.407930, -------------- SYN_REPORT ------------
Event: time 1539317866.411922, type 3 (EV_ABS), code 0 (ABS_X), value 7377
Event: time 1539317866.411922, type 3 (EV_ABS), code 1 (ABS_Y), value 10294
Event: time 1539317866.411922, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 4085
Event: time 1539317866.411922, -------------- SYN_REPORT ------------
Event: time 1539317866.417990, type 3 (EV_ABS), code 0 (ABS_X), value 7354
Event: time 1539317866.417990, type 3 (EV_ABS), code 1 (ABS_Y), value 10297
Event: time 1539317866.417990, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 3624
Event: time 1539317866.417990, -------------- SYN_REPORT ------------
Event: time 1539317866.421889, type 3 (EV_ABS), code 0 (ABS_X), value 7333
Event: time 1539317866.421889, type 3 (EV_ABS), code 1 (ABS_Y), value 10301
Event: time 1539317866.421889, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 2935
Event: time 1539317866.421889, -------------- SYN_REPORT ------------
Event: time 1539317866.427886, type 3 (EV_ABS), code 0 (ABS_X), value 7315
Event: time 1539317866.427886, type 3 (EV_ABS), code 1 (ABS_Y), value 10307
Event: time 1539317866.427886, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 2347
Event: time 1539317866.427886, -------------- SYN_REPORT ------------
Event: time 1539317866.431897, type 3 (EV_ABS), code 24 (ABS_PRESSURE), value 1338
Event: time 1539317866.431897, -------------- SYN_REPORT ------------
Event: time 1539317866.435995, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0042
Event: time 1539317866.435995, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0

Whats weird is right before each BTN_TOUCH event, the button 3 click produces a MSC_SCAN with value d0042, while an actual tablet touch producs d0045

Otherwise working great!

DanielJoyce commented 6 years ago

Also, stylus does not show up in ubuntu desktop Wacom Settings. Works, but I have to set it up manually via xsetwacom. And i can only set up the 'middle' button.

I'll get some raw low-level captures later. I suspect its something with the driver and what the tablet sends.

spbnick commented 6 years ago

The desktop Wacom settings won't work with those tablets unless support for them is added to libwacom, and then it probably won't that well, because Huion reuses VID:PID pairs.

By "Button 3" do you mean the top side button on the pen?

DanielJoyce commented 6 years ago

Yes, top half of rocker-button on stylus. I have most everything else working via a libwacom tablet-definition file, including the side express-keys. The only thing not working is the top part of the rocker button on the stylus and stylus recognition. It's sending a weird code.

DanielJoyce commented 6 years ago

stream.txt

Capture of button clicks, button 0 ( nib ) messages start with 07 A1, button two ( lower half of stylus rocker ) sends 07 A2, and button 3 ( upper half of stylus rocker ) sends 07 A4.

DanielJoyce commented 6 years ago

It comes up as UGEE brand, 0x28bd 0x000b

DanielJoyce commented 6 years ago

hid-dump:

daniel@Durandal:~$ sudo usbhid-dump 
003:006:002:DESCRIPTOR         1539645817.698192
 06 0A FF 09 01 A1 01 85 02 09 02 75 08 95 07 15
 00 26 FF 00 81 02 09 03 75 08 95 07 15 00 26 FF
 00 91 02 C0 06 01 FF 09 00 A1 01 85 08 15 00 26
 FF 00 09 00 75 08 95 05 B1 02 C0

003:006:001:DESCRIPTOR         1539645817.699325
 05 0D 09 02 A1 01 85 07 09 20 A1 00 09 42 09 44
 09 45 15 00 25 01 75 01 95 03 81 02 95 02 81 03
 09 32 95 01 81 02 95 02 81 03 75 10 95 01 35 00
 A4 05 01 09 30 65 13 55 0D 46 2D 2D 27 C0 72 00
 00 81 02 09 31 46 69 19 27 8C 40 00 00 81 02 B4
 09 30 45 00 26 FF 1F 81 02 C0 C0 09 0E A1 01 85
 05 09 23 A1 02 09 52 09 53 25 0A 75 08 95 02 B1
 02 C0 C0 05 0C 09 36 A1 00 85 06 05 09 19 01 29
 20 15 00 25 01 95 20 75 01 81 02 C0

003:006:000:DESCRIPTOR         1539645817.701310
 05 01 09 02 A1 01 85 08 09 01 A1 00 05 09 19 01
 29 03 15 00 25 01 95 03 75 01 81 02 95 05 81 01
 05 01 09 30 09 31 09 38 09 00 15 81 25 7F 75 08
 95 04 81 06 C0 C0 05 01 09 02 A1 01 85 09 09 01
 A1 00 05 09 19 01 29 03 15 00 25 01 95 03 75 01
 81 02 95 05 81 01 05 01 09 30 09 31 26 FF 7F 95
 02 75 10 81 02 05 0D 09 30 26 FF 1F 95 01 75 10
 81 02 C0 C0 05 01 09 00 A1 01 85 04 A1 00 26 FF
 00 09 00 75 08 95 07 B1 02 C0 C0
DanielJoyce commented 6 years ago

The product page for the XP-PEN 13.3 mentions easy one-click erasing. I'm thinking they have their tablet firmware send something non-standard for third-button click, or they provide a wonky HID descriptor and then their driver handles it special. So it might be something as trivial as providing a HID override map in the driver, or special casing the button handling.

DanielJoyce commented 6 years ago

Analyzing the second hid dump, I get

0x05, 0x0D,        // Usage Page (Digitizer)
0x09, 0x02,        // Usage (Pen)
0xA1, 0x01,        // Collection (Application)
0x85, 0x07,        //   Report ID (7)
0x09, 0x20,        //   Usage (Stylus)
0xA1, 0x00,        //   Collection (Physical)
0x09, 0x42,        //     Usage (Tip Switch)
0x09, 0x44,        //     Usage (Barrel Switch)
0x09, 0x45,        //     Usage (Eraser)  

So its saying it has an eraser but thats the second barrel button ( upper half of rocker ).

DanielJoyce commented 6 years ago

So I may be able to improve my xorg mapping, and get it working as an eraser ( as it reports eraser ), or I can submit a patch to digimend and have it remap the hid descriptor I think...

spbnick commented 6 years ago

Looking at stream.txt. I see absolutely normal button reports. If the driver initializes correctly, normal button clicks should be reported. However, I see that your tablet has a VID:PID pair that the driver doesn't know about and that is the problem, most likely.

I threw together a basic patch to try to support your tablet. Could you please try to download, install, and use this version of the driver to verify: https://github.com/spbnick/digimend-kernel-drivers/archive/add_xp_pen_13_3_v2.zip

Also, could you please post the output of lsusb -v for your tablet, and, please download, build, and run the fresh version of uclogic-probe from https://github.com/DIGImend/uclogic-tools/archive/master.zip Please post the output here.

Thank you.

DanielJoyce commented 6 years ago

Will do. I'll check it out in a bit.

It does still seem that the second rocker button is reported as eraser in the HID profile, which fits with what the website says, but may not be what people want.

spbnick commented 6 years ago

@DanielJoyce well, what's in HID report descriptor is entirely to the kernel to interpret, and AFAIK, there's not much, if anything, to handle buttons like that in the kernel.

DanielJoyce commented 6 years ago

I know, which I was wondering if the driver can remap the behavior.

DanielJoyce commented 6 years ago
$ sudo lsusb -v -d 28bd:000b

Bus 003 Device 003: ID 28bd:000b  
Device Descriptor:
  bLength                18
  bDescriptorType         1
  bcdUSB               1.10
  bDeviceClass            0 (Defined at Interface level)
  bDeviceSubClass         0 
  bDeviceProtocol         0 
  bMaxPacketSize0        64
  idVendor           0x28bd 
  idProduct          0x000b 
  bcdDevice            0.00
  iManufacturer           5 XP-PEN
  iProduct                6 ARTIST 13.3
  iSerial                 0 
  bNumConfigurations      1
  Configuration Descriptor:
    bLength                 9
    bDescriptorType         2
    wTotalLength           91
    bNumInterfaces          3
    bConfigurationValue     1
    iConfiguration          0 
    bmAttributes         0xa0
      (Bus Powered)
      Remote Wakeup
    MaxPower               70mA
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        0
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     139
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x81  EP 1 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        1
      bAlternateSetting       0
      bNumEndpoints           1
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      1 Boot Interface Subclass
      bInterfaceProtocol      2 Mouse
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength     140
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x82  EP 2 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0010  1x 16 bytes
        bInterval               2
    Interface Descriptor:
      bLength                 9
      bDescriptorType         4
      bInterfaceNumber        2
      bAlternateSetting       0
      bNumEndpoints           2
      bInterfaceClass         3 Human Interface Device
      bInterfaceSubClass      0 No Subclass
      bInterfaceProtocol      0 None
      iInterface              0 
        HID Device Descriptor:
          bLength                 9
          bDescriptorType        33
          bcdHID               1.00
          bCountryCode            0 Not supported
          bNumDescriptors         1
          bDescriptorType        34 Report
          wDescriptorLength      59
         Report Descriptors: 
           ** UNAVAILABLE **
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x83  EP 3 IN
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval               2
      Endpoint Descriptor:
        bLength                 7
        bDescriptorType         5
        bEndpointAddress     0x03  EP 3 OUT
        bmAttributes            3
          Transfer Type            Interrupt
          Synch Type               None
          Usage Type               Data
        wMaxPacketSize     0x0008  1x 8 bytes
        bInterval              10
Device Status:     0x0000
  (Bus Powered)
DanielJoyce commented 6 years ago
$ sudo ./uclogic-probe  003 003
M 58 00 50 00 2D 00 50 00 45 00 4E 00
P 41 00 52 00 54 00 49 00 53 00 54 00 20 00 31 00 33 00 2E 00 33 00
S 64 0C 03 C0 72 8C 40 06 00 FF 1F EC 09
S 65 04 03 00 74
S 6E 04 03 30 00
S 79 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S 7A 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S 7B 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S C8 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S C9 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
S CA 28 03 46 00 36 00 30 00 20 00 5F 00 55 00 47 00 5F 00 56 00 41 00 52 00 31 00 33 00 5F 00 52 00 30 00 37 00 31 00 33 00
DanielJoyce commented 6 years ago

Okay, so second-button right click works now, but now the xorg conf / wacom driver support doesn't get set up. lsub also looks the same.

$ lsusb
Bus 004 Device 003: ID 0bda:8153 Realtek Semiconductor Corp. 
Bus 004 Device 002: ID 2109:0813 VIA Labs, Inc. 
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 006: ID 2109:0100 VIA Labs, Inc. 
Bus 003 Device 005: ID 05e3:0752 Genesys Logic, Inc. 
Bus 003 Device 004: ID 05e3:0618 Genesys Logic, Inc. 
Bus 003 Device 003: ID 28bd:000b  
Bus 003 Device 002: ID 2109:2813 VIA Labs, Inc. 
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 0489:e0a2 Foxconn / Hon Hai 
Bus 001 Device 002: ID 0bda:58f4 Realtek Semiconductor Corp. 
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
DanielJoyce commented 6 years ago

The device usb ids look the same, so the previous tablet config should work. xsetwacom list-devices no longer lists anything though.

DanielJoyce commented 6 years ago
$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN24EE:00 04F3:24EE                     id=12   [slave  pointer  (2)]
⎜   ↳ DELL07E6:00 06CB:76AF Touchpad            id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=18   [slave  pointer  (2)]
⎜   ↳ XP-PEN ARTIST 13.3 Pen Pen (0)            id=20   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=11   [slave  keyboard (3)]
    ↳ Intel HID events                          id=14   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=15   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=17   [slave  keyboard (3)]
    ↳ XP-PEN ARTIST 13.3 Pen                    id=19   [slave  keyboard (3)]
DanielJoyce commented 6 years ago

It appears something has subtly changed because the old x config to set the wacom driver for the device no longer seems to work.

DanielJoyce commented 6 years ago
[ 2104.427558] input: XP-PEN ARTIST 13.3 as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.0/0003:28BD:000B.0003/input/input32
[ 2104.489908] hid-generic 0003:28BD:000B.0003: input,hidraw2: USB HID v1.00 Mouse [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input0
[ 2104.490564] input: XP-PEN ARTIST 13.3 as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.1/0003:28BD:000B.0004/input/input33
[ 2104.491427] hid-generic 0003:28BD:000B.0004: input,hiddev0,hidraw3: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input1
[ 2104.492073] hid-generic 0003:28BD:000B.0005: hiddev1,hidraw4: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input2
[ 2104.494060] PKCS#7 signature not signed with a trusted key
[ 2104.494490] PKCS#7 signature not signed with a trusted key
[ 2104.494585] PKCS#7 signature not signed with a trusted key
[ 2104.537068] uclogic 0003:28BD:000B.0005: interface is invalid, ignoring
[ 2104.594337] input: XP-PEN ARTIST 13.3 Pen as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.1/0003:28BD:000B.0004/input/input34
[ 2104.662077] uclogic 0003:28BD:000B.0004: input,hidraw2: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input1
[ 2104.665856] uclogic 0003:28BD:000B.0003: interface is invalid, ignoring

Okay, I think its a secureboot issue maybe?

DanielJoyce commented 6 years ago

No dice,Signing error went away, but uclogic still says interface invalid

[   53.907340] input: XP-PEN ARTIST 13.3 as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.0/0003:28BD:000B.0003/input/input30
[   53.907559] hid-generic 0003:28BD:000B.0003: input,hidraw2: USB HID v1.00 Mouse [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input0
[   53.907887] input: XP-PEN ARTIST 13.3 as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.1/0003:28BD:000B.0004/input/input31
[   53.908182] hid-generic 0003:28BD:000B.0004: input,hiddev0,hidraw3: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input1
[   53.908415] hid-generic 0003:28BD:000B.0005: hiddev1,hidraw4: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input2
[   53.936966] uclogic 0003:28BD:000B.0005: interface is invalid, ignoring
[   54.002811] input: XP-PEN ARTIST 13.3 Pen as /devices/pci0000:00/0000:00:1c.4/0000:03:00.0/0000:04:02.0/0000:39:00.0/usb3/3-2/3-2.1/3-2.1:1.1/0003:28BD:000B.0004/input/input32
[   54.044440] uclogic 0003:28BD:000B.0004: input,hidraw2: USB HID v1.00 Device [XP-PEN ARTIST 13.3] on usb-0000:39:00.0-2.1/input1
[   54.045951] uclogic 0003:28BD:000B.0003: interface is invalid, ignoring
DanielJoyce commented 6 years ago

Hmm, tablet 'works' in a generic sense. But xsetwacom still not seeing it...

DanielJoyce commented 6 years ago

Okay, it seems the tablet buttons are no longer working or seen by libinput at all. Would that be something done by the driver patch?

DanielJoyce commented 6 years ago
$ xinput
⎡ Virtual core pointer                      id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ ELAN24EE:00 04F3:24EE                     id=12   [slave  pointer  (2)]
⎜   ↳ DELL07E6:00 06CB:76AF Touchpad            id=13   [slave  pointer  (2)]
⎜   ↳ SynPS/2 Synaptics TouchPad                id=18   [slave  pointer  (2)]
⎜   ↳ XP-PEN ARTIST 13.3 Pen stylus             id=19   [slave  pointer  (2)]
⎣ Virtual core keyboard                     id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Power Button                              id=6    [slave  keyboard (3)]
    ↳ Video Bus                                 id=7    [slave  keyboard (3)]
    ↳ Power Button                              id=8    [slave  keyboard (3)]
    ↳ Sleep Button                              id=9    [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=10   [slave  keyboard (3)]
    ↳ Integrated_Webcam_HD: Integrate           id=11   [slave  keyboard (3)]
    ↳ Intel HID events                          id=14   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=15   [slave  keyboard (3)]
    ↳ Dell WMI hotkeys                          id=16   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=17   [slave  keyboard (3)]
$ cat /etc/X11/xorg.conf.d/52-xp-pen-13.3V2.conf 
# XP-Pen 13.3 config

#Section "InputClass"
#    Identifier "XP-Pen 13.3 keyboard"
#    Driver "wacom"
    #MatchProduct: "ARTIST 13.3"
    #MatchVendor: "XP-PEN"
#    MatchDevicePath "/dev/input/event*"
#    MatchIsKeyboard "on"
#    MatchUSBID "28bd:000b"
#EndSection

#Section "InputClass"
#    Identifier "XP-Pen 13.3v2 pointer"
#    Driver "wacom"
#    MatchDevicePath "/dev/input/event*"
#    #MatchIsPointer "on"
#    MatchUSBID "28bd:000b"
#EndSection

Section "InputClass"
    Identifier "XP-Pen 13.3"
    Driver "wacom"
#    MatchProduct: "ARTIST 13.3"
#    MatchVendor: "XP-PEN"
    MatchDevicePath "/dev/input/event*"
#    MatchIsTablet "on"
    MatchUSBID "28bd:000b"
EndSection
DanielJoyce commented 6 years ago

Pad and pad buttons no longer appear or work.

spbnick commented 6 years ago

@DanielJoyce, thank you for the detailed information, but it's a bit hard for me to follow what comes after what. Let's try to back-track a little.

I see that the driver is loading, which is good. The "interface is invalid, ignoring" message simply says that some of the USB interfaces the tablet provides don't make sense to the driver, so it doesn't add them to the system. That should be OK so far, but let's see what the pad buttons actually do.

Did I get it right, that you have the pen working with the wacom driver and everything is fine with it, but the buttons on the side of the tablet don't work? Is there anything else that doesn't work?

Regarding the buttons, please run sudo usbhid-dump -m 28bd:000b -es with your tablet connected, and press the buttons one by one, top-to-bottom, with the tablet oriented to have the buttons on the left. Post the output here.

DanielJoyce commented 6 years ago

Everything was working with the stock drivers that came with ubuntu 18.04 except the 'right mouse click' button on the stylus ( top half of rocker button on the stylus ). It was all picked up by the wacom drivers and working except for that part of the rocker. I just had to create the proper xorg conf file to load the wacom driver, and the wacom config file.

With the patched drivers you gave me, the tablet and pen still work in a default manner, and the right click using the top half of the rocker works now, but I can't get the wacom driver config to work anymore. None of screen buttons work either ( since wacom can no longer find the devices ). Xsetwacom list devices now only sees the pen.

DanielJoyce commented 6 years ago

digimend drivers installed via dkms

$ cat out.txt 
003:006:001:STREAM             1541997436.641599
 06 01 00 00 00

003:006:001:STREAM             1541997436.857522
 06 00 00 00 00

003:006:001:STREAM             1541997437.475545
 06 02 00 00 00

003:006:001:STREAM             1541997437.659706
 06 00 00 00 00

003:006:001:STREAM             1541997438.305575
 06 04 00 00 00

003:006:001:STREAM             1541997438.511588
 06 00 00 00 00

003:006:001:STREAM             1541997438.977734
 06 08 00 00 00

003:006:001:STREAM             1541997439.155773
 06 00 00 00 00

003:006:001:STREAM             1541997439.499721
 06 10 00 00 00

003:006:001:STREAM             1541997439.673697
 06 00 00 00 00

003:006:001:STREAM             1541997440.035659
 06 20 00 00 00

003:006:001:STREAM             1541997440.167804
 06 00 00 00 00
DanielJoyce commented 6 years ago

Digimend drivers installed via dkms

sudo evtest 
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Sleep Button
/dev/input/event3:  Power Button
/dev/input/event4:  AT Translated Set 2 keyboard
/dev/input/event5:  Video Bus
/dev/input/event6:  SynPS/2 Synaptics TouchPad
/dev/input/event7:  Intel HID events
/dev/input/event8:  Intel HID 5 button array
/dev/input/event9:  Dell WMI hotkeys
/dev/input/event10: ELAN24EE:00 04F3:24EE
/dev/input/event11: DELL07E6:00 06CB:76AF Touchpad
/dev/input/event12: HDA Intel PCH Headphone Mic
/dev/input/event13: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event14: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event17: HDA Intel PCH HDMI/DP,pcm=10
/dev/input/event18: Integrated_Webcam_HD: Integrate
/dev/input/event19: Integrated_Webcam_HD: Integrate
/dev/input/event20: XP-PEN ARTIST 13.3
/dev/input/event21: XP-PEN ARTIST 13.3 Pen
/dev/input/event22: XP-PEN ARTIST 13.3 Mouse
/dev/input/event23: XP-PEN ARTIST 13.3 Mouse
DanielJoyce commented 6 years ago

Uninstalling and using kernel drivers that come with 18.04:

sudo evtest 
[sudo] password for daniel: 
No device specified, trying to scan all of /dev/input/event*
Available devices:
/dev/input/event0:  Lid Switch
/dev/input/event1:  Power Button
/dev/input/event2:  Sleep Button
/dev/input/event3:  Power Button
/dev/input/event4:  AT Translated Set 2 keyboard
/dev/input/event5:  XP-PEN ARTIST 13.3
/dev/input/event6:  XP-PEN ARTIST 13.3
/dev/input/event7:  Video Bus
/dev/input/event8:  SynPS/2 Synaptics TouchPad
/dev/input/event9:  Intel HID events
/dev/input/event10: Intel HID 5 button array
/dev/input/event11: Dell WMI hotkeys
/dev/input/event12: HDA Intel PCH Headphone Mic
/dev/input/event13: HDA Intel PCH HDMI/DP,pcm=3
/dev/input/event14: HDA Intel PCH HDMI/DP,pcm=7
/dev/input/event15: HDA Intel PCH HDMI/DP,pcm=8
/dev/input/event16: HDA Intel PCH HDMI/DP,pcm=9
/dev/input/event17: HDA Intel PCH HDMI/DP,pcm=10
/dev/input/event18: ELAN24EE:00 04F3:24EE
/dev/input/event19: DELL07E6:00 06CB:76AF Touchpad
/dev/input/event20: Integrated_Webcam_HD: Integrate
/dev/input/event21: Integrated_Webcam_HD: Integrate

Wacom mappings work again.

DanielJoyce commented 6 years ago

Uninstalled digimend, grepping for 'hid', i see the following:

hid_multitouch         20480  0
intel_hid              16384  0
sparse_keymap          16384  2 intel_hid,dell_wmi
mac_hid                16384  0
hid_generic            16384  0
usbhid                 49152  0
i2c_hid                20480  0
hid                   118784  4 i2c_hid,usbhid,hid_multitouch,hid_generic

Doesn't appear to use uc-logic drivers at all. Or is it because they are compiled into the kernel? If only I could get right-click working... Is there some other maintainer I should contact?

Barracuda77 commented 6 years ago

@DanielJoyce What command do you run to get this? Event: time 1539317779.526757, -------------- SYN_REPORT ------------ Event: time 1539317779.530752, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045 Event: time 1539317779.530752, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 1 Event: time 1539317779.530752, -------------- SYN_REPORT ------------ Event: time 1539317779.644894, type 4 (EV_MSC), code 4 (MSC_SCAN), value d0045 Event: time 1539317779.644894, type 1 (EV_KEY), code 330 (BTN_TOUCH), value 0

Barracuda77 commented 5 years ago

@DanielJoyce Did you manage to resolve this? I have the Artist 22E pro and facing the same issue.

DanielJoyce commented 5 years ago

No, I'm just gonna make do with the rocker switch being slightly 'broken' for right now. The Digimend drivers provide worse support for this tablet than the kernel drivers which seem to work fine except for part of the rocker switch.

Barracuda77 commented 5 years ago

@DanielJoyce I managed to fix it. I am on Ubuntu 18.04 LTS I am using evdev drivers. also, I am using a udev .hwdb file to remap my tablet buttons as described here. except my scan codes are slightly different and most probably yours will be too. https://gist.github.com/loentar/1aa83e9e76fa34735133dc4d07eeb529

and to that file, I just added a command to remap that rocker as a right click. KEYBOARD_KEY_d0045=273

Edit: from your logs, I see that your rocker has the same scan code. so this line should work for you too.

DanielJoyce commented 5 years ago

Ahhh, awesome!!!!!! :D :D

You can add templates then to the xwacom to get gnome wacom mapping working too...

I'll dig around on that half.

Is there an upstream place to submit the evdev mappings?

Barracuda77 commented 5 years ago

@DanielJoyce Interested to know more about the xwacom templates. update me please with that. as for a place to submit evdev mappings am still looking.

DanielJoyce commented 5 years ago

/usr/share/libwacom/layouts/

This where the templates are kept, stored as svgs.

https://github.com/linuxwacom/libwacom/tree/master/data/layouts

Following the above, just create a new file, add the mappings, and put in /usr/share/libwacom/layouts/

DanielJoyce commented 5 years ago

You just need to remap the rocker switch in your evdev hwdb entry, then once you add a libwacom config file you can remap the buttons there if you want, providing a bit more flexibillity...

Would be nice if we could remap buttons per-application, outside of said application ( some don't support it inside )...

DanielJoyce commented 5 years ago

I think if you get the libwacom driver working, you'll be able to really override the ctrl-shift behavior of the keys and not have to the multi-keycode remapping you're doing in hwdb, ie crippling ctrl & shift.

DanielJoyce commented 5 years ago

Hmm, that right-click remapping isn't working. Even after sudo systemd-hwdb update and udevadm trigger

DanielJoyce commented 5 years ago

Hmm, I can get d0045 to emit 273 but x doesn't pick it up.

DanielJoyce commented 5 years ago

Apparently its bound to the keyboard and not the device and not the mouse, while the nib and lower rocker switch is bound to the mouse.

DanielJoyce commented 5 years ago

Yeah, its reported on the wrong 'channel'

DanielJoyce commented 5 years ago

YAY!

$ cat /etc/udev/hwdb.d/10-xp-pen-keyboard.hwdb 
evdev:input:b0003v28BDp000B*
 KEYBOARD_KEY_d0045=332

Works!

332 is BTN_STYLUS2, which is 'right-click' for tablets. The events are seperate but unified by X. This works!

I noticed the lower half of the rocker sent 331, or 0x14b

#define BTN_STYLUS      0x14b
#define BTN_STYLUS2     0x14c

So I had the upper rocker button send 332 and it works! :)

Barracuda77 commented 5 years ago

@DanielJoyce Great you made it work. Very strange as I tried 332 first and it didnt work. so I used the same code the mouse is producing and it did. obviously, each model is a little bit different.

DanielJoyce commented 5 years ago

What is are you using? I have Ubuntu using xfree86 with libinput and systemd.

Also I only override one code in hwdb. And I use libwacom to map everything else. Are you looking for support in one particular program?

Barracuda77 commented 5 years ago

@DanielJoyce I am on Ubuntu 18.04 LTS Gnome using evdev drivers. I am overriding all the keys with hwdb. but it is not optimum. When I first connected the tablet to my system I had it running by libinput but it didnt work. very interested in how you use libwacom to map the rest. I mainly use Blender and 3D coat for sculpting and I use Krita occasionally for some quick sketching and rough paints.

Barracuda77 commented 5 years ago

@DanielJoyce I tried to run it using the Wacom driver but the Gnome UI didn't recognize it. it worked but I couldn't remap any keys using the ui tool as it didn't see it. although xsetwacom list did list it.