libwacom icon indicating copy to clipboard operation
libwacom copied to clipboard

XP-Pen Deco 01 V2 buttons not recognized

Open tockudex opened this issue 4 months ago • 3 comments

  • Device name: XP-Pen Deco 01 V2

  • Device model identifier: UGTABLET 10 inch PenTablet Pad

  • libwacom version: 2.16.1

  • [X] I understand that libwacom does not affect whether the device works (see Troubleshooting)

Bug description

libwacom-list-local-devices returns 2 buttons for my tablet, whereas it should have 10 (2 for the pen and 8 for the tablet itself).

Looking at the unique /usr/share/libwacom/xp-pen-deco01-v2.tablet file does show 8 buttons on the left (A to H).

When I press a tablet's button, the light indicates the keypress has been registered, but they do not appear in when debugging with sudo libinput debug-events.

Additionally, the buttons remapping options in the KDE Plasma system settings does not appear (the tablet "Display" and "Pen" tabs are available).

The issue might be related to libinput, but being uncertain, I preferred to start here.

tockudex avatar Sep 28 '25 16:09 tockudex

The XP Pen tablets only work if the uclogic kernel driver supports them or, alternatively, there is a BPF driver in udev-hid-bpf. The latter is the recommended solution for newer device support.

Without that support the various GUI configurations and libinput to some degree won't work correctly.

libwacom-list-local-devices returns 2 buttons for my tablet

can you post the output here please.

whot avatar Oct 08 '25 03:10 whot

I look into udev-dih-bpf. Just installing it, doesn't fix the issue.

libwacom-list-local-devices

devices:
  - name: 'UGTABLET 10 inch PenTablet Pad'
    bus: 'usb'
    vid: 0x28bd
    pid: 0x0905
    nodes: 
      - /dev/input/event19: 'UGTABLET 10 inch PenTablet'
      - /dev/input/event18: 'UGTABLET 10 inch PenTablet'
      - /dev/input/event17: 'UGTABLET 10 inch PenTablet'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []

tockudex avatar Oct 08 '25 07:10 tockudex

There's this MR in udev-hid-bpf that added the Deco 02, chances are the Deco 01 isn't that different and could be adjusted. I can't find the 0x905 VID in udev-hid-bpf which means it's just not supported yet.

    buttons: 2

that line refers to the buttons on the pen. The .tablet file for this lists 8 buttons, so in theory that should be correct then.

whot avatar Oct 08 '25 23:10 whot

I've been experiencing this issue too on my Deco 01 v2. I'm sure it worked in the first few months of this year as I bounced between libinput and xp-pen-tablet and made a fuss of moving button mappings over.

$ libwacom-list-local-devices 
devices:
  - name: 'UGTABLET 10 inch PenTablet Pad'
    bus: 'usb'
    vid: 0x28bd
    pid: 0x0905
    nodes: 
      - /dev/input/event24: 'UGTABLET 10 inch PenTablet'
      - /dev/input/event23: 'UGTABLET 10 inch PenTablet'
      - /dev/input/event4: 'UGTABLET 10 inch PenTablet'
    styli:
      - id: 0xffffd
        vid: 0x0000
        name: 'General Pen with no Eraser'
        type: 'general'
        axes: ['x', 'y' , 'pressure']
        buttons: 2
        erasers: []

I'm not sure what event4 (on my system at least) is responsible for, and event23 seems to be the pen input. Its buttons and pressure sensitivity work fine. event24 appears to be the buttons as seen below when using libinput record:

$ libinput record
Available devices:
/dev/input/event0:      Power Button
/dev/input/event1:      Power Button
/dev/input/event2:      ckb1: Corsair K95 RGB Gaming Keyboard vKB
/dev/input/event3:      ckb1: Corsair K95 RGB Gaming Keyboard vM
/dev/input/event4:      UGTABLET 10 inch PenTablet
/dev/input/event5:      Logitech G502 HERO Gaming Mouse
/dev/input/event6:      Logitech G502 HERO Gaming Mouse Keyboard
/dev/input/event7:      Bigbenmic Bigbenmic
/dev/input/event8:      Bigbenmic Bigbenmic Consumer Control
/dev/input/event9:      MSI MYSTIC LIGHT 
/dev/input/event10:     PC Speaker
/dev/input/event11:     HDA ATI HDMI HDMI/DP,pcm=3
/dev/input/event12:     HDA ATI HDMI HDMI/DP,pcm=7
/dev/input/event13:     HDA ATI HDMI HDMI/DP,pcm=8
/dev/input/event14:     HDA ATI HDMI HDMI/DP,pcm=9
/dev/input/event15:     HD-Audio Generic Rear Mic
/dev/input/event16:     HD-Audio Generic Front Mic
/dev/input/event17:     HD-Audio Generic Line
/dev/input/event18:     HD-Audio Generic Line Out Front
/dev/input/event19:     HD-Audio Generic Line Out Surround
/dev/input/event20:     HD-Audio Generic Line Out CLFE
/dev/input/event21:     HD-Audio Generic Line Out Side
/dev/input/event22:     HD-Audio Generic Front Headphone
/dev/input/event23:     UGTABLET 10 inch PenTablet
/dev/input/event24:     UGTABLET 10 inch PenTablet
Select the device event number: 24
Recording to 'stdout'.
# libinput record
version: 1
ndevices: 1
libinput:
  version: "1.30.1"
  git: "1.30.1"
system:
  kernel: "6.17.9-arch1-1"
  dmi: "unknown"
devices:
- node: /dev/input/event24
  evdev:
    # Name: UGTABLET 10 inch PenTablet
    # ID: bus 0x0003 (usb) vendor 0x28bd product 0x0905 version 0x0100
    # Supported Events:
    # Event type 0 (EV_SYN)
    # Event type 1 (EV_KEY)
    #   Event code 256 (BTN_0)
    #   Event code 257 (BTN_1)
    #   Event code 258 (BTN_2)
    #   Event code 259 (BTN_3)
    #   Event code 260 (BTN_4)
    #   Event code 261 (BTN_5)
    #   Event code 262 (BTN_6)
    #   Event code 263 (BTN_7)
    # Event type 4 (EV_MSC)
    #   Event code 4 (MSC_SCAN)
    # Properties:
    name: "UGTABLET 10 inch PenTablet"
    id: [3, 10429, 2309, 256]
    codes:
      0: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15] # EV_SYN
      1: [256, 257, 258, 259, 260, 261, 262, 263] # EV_KEY
      4: [4] # EV_MSC
    properties: []
  hid: [
    0x05, 0x0d, 0x09, 0x01, 0xa1, 0x01, 0x85, 0x02, 0x09, 0x20, 0xa1, 0x00, 0x09, 0x42, 0x09, 0x44, 
    0x09, 0x46, 0x75, 0x01, 0x95, 0x03, 0x14, 0x25, 0x01, 0x81, 0x02, 0x95, 0x02, 0x81, 0x03, 0x09, 
    0x32, 0x95, 0x01, 0x81, 0x02, 0x95, 0x02, 0x81, 0x03, 0x75, 0x10, 0x95, 0x01, 0x35, 0x00, 0xa4, 
    0x05, 0x01, 0x09, 0x30, 0x65, 0x13, 0x55, 0x0d, 0x27, 0x70, 0xc6, 0x00, 0x00, 0x47, 0x10, 0x27, 
    0x00, 0x00, 0x81, 0x02, 0x09, 0x31, 0x27, 0x06, 0x7c, 0x00, 0x00, 0x47, 0x6a, 0x18, 0x00, 0x00, 
    0x81, 0x02, 0xb4, 0x09, 0x30, 0x45, 0x00, 0x27, 0xff, 0x1f, 0x00, 0x00, 0x75, 0x0d, 0x95, 0x01, 
    0x81, 0x02, 0x75, 0x01, 0x95, 0x03, 0x81, 0x01, 0x09, 0x3d, 0x35, 0xc3, 0x45, 0x3c, 0x15, 0xc3, 
    0x25, 0x3c, 0x75, 0x08, 0x95, 0x01, 0x81, 0x02, 0x09, 0x3e, 0x35, 0xc3, 0x45, 0x3c, 0x15, 0xc3, 
    0x25, 0x3c, 0x81, 0x02, 0xc0, 0xc0, 0x05, 0x01, 0x09, 0x07, 0xa1, 0x01, 0x85, 0xf7, 0x05, 0x0d, 
    0x09, 0x39, 0xa0, 0x75, 0x01, 0x95, 0x08, 0x81, 0x01, 0x05, 0x09, 0x19, 0x01, 0x2a, 0x08, 0x00, 
    0x95, 0x0a, 0x14, 0x25, 0x01, 0x81, 0x02, 0x95, 0x46, 0x81, 0x01, 0xc0, 0xc0
  ]
  udev:
    properties:
    - ID_INPUT=1
    - ID_INPUT_TABLET=1
    - LIBINPUT_DEVICE_GROUP=3/28bd/905:usb-0000:02:00.0-9
    - DRIVER=uclogic
    virtual: false
  quirks:
  events:
  # Current time is 00:54:24
  # Current time is 00:54:25
  - evdev:
    - [  0,      0,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  0,      0,   1, 256,       1] # EV_KEY / BTN_0                     1
    - [  0,      0,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +0ms
  - evdev:
    - [  0, 135995,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  0, 135995,   1, 256,       0] # EV_KEY / BTN_0                     0
    - [  0, 135995,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +135ms
  - evdev:
    - [  1, 103977,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  1, 103977,   1, 257,       1] # EV_KEY / BTN_1                     1
    - [  1, 103977,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +968ms
  - evdev:
    - [  1, 261978,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  1, 261978,   1, 257,       0] # EV_KEY / BTN_1                     0
    - [  1, 261978,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +158ms
  - evdev:
    - [  2, 197960,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  2, 197960,   1, 258,       1] # EV_KEY / BTN_2                     1
    - [  2, 197960,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +936ms
  - evdev:
    - [  2, 363951,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  2, 363951,   1, 258,       0] # EV_KEY / BTN_2                     0
    - [  2, 363951,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +166ms
  - evdev:
    - [  3, 209944,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  3, 209944,   1, 259,       1] # EV_KEY / BTN_3                     1
    - [  3, 209944,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +846ms
  - evdev:
    - [  3, 361937,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  3, 361937,   1, 259,       0] # EV_KEY / BTN_3                     0
    - [  3, 361937,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +152ms
  - evdev:
    - [  4, 381919,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  4, 381919,   1, 260,       1] # EV_KEY / BTN_4                     1
    - [  4, 381919,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +1020ms
  - evdev:
    - [  4, 563908,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  4, 563908,   1, 260,       0] # EV_KEY / BTN_4                     0
    - [  4, 563908,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +182ms
  # Current time is 00:54:30
  - evdev:
    - [  5, 465897,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  5, 465897,   1, 261,       1] # EV_KEY / BTN_5                     1
    - [  5, 465897,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +902ms
  - evdev:
    - [  5, 637891,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  5, 637891,   1, 261,       0] # EV_KEY / BTN_5                     0
    - [  5, 637891,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +172ms
  - evdev:
    - [  6, 575868,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  6, 575868,   1, 262,       1] # EV_KEY / BTN_6                     1
    - [  6, 575868,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +938ms
  - evdev:
    - [  6, 741869,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  6, 741869,   1, 262,       0] # EV_KEY / BTN_6                     0
    - [  6, 741869,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +166ms
  - evdev:
    - [  7, 673850,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  7, 673850,   1, 263,       1] # EV_KEY / BTN_7                     1
    - [  7, 673850,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +932ms
  - evdev:
    - [  7, 821858,   4,   4,      30] # EV_MSC / MSC_SCAN                 30 (obfuscated)
    - [  7, 821858,   1, 263,       0] # EV_KEY / BTN_7                     0
    - [  7, 821858,   0,   0,       0] # ------------ SYN_REPORT (0) ---------- +148ms

The buttons seem to be getting detected fine.

Just like tockudex, no output appears in sudo libinput debug-events when I press the tablet's buttons, but I do see two error messages related to event4 and event24 missing (stylus-related?) tablet capabilities, which might be odd?

$ sudo libinput debug-events
event4  - UGTABLET 10 inch PenTablet: libinput bug: missing tablet capabilities: xy pen btn-stylus resolution. Ignoring this device.
event24 - UGTABLET 10 inch PenTablet: libinput bug: missing tablet capabilities: xy pen btn-stylus resolution. Ignoring this device.
-event1   DEVICE_ADDED                 Power Button                      seat0 default group1  cap:k
-event0   DEVICE_ADDED                 Power Button                      seat0 default group2  cap:k
-event8   DEVICE_ADDED                 Bigbenmic Bigbenmic Consumer Control seat0 default group3  cap:k
-event23  DEVICE_ADDED                 UGTABLET 10 inch PenTablet        seat0 default group4  cap:T  size 254x159mm left
-event5   DEVICE_ADDED                 Logitech G502 HERO Gaming Mouse   seat0 default group5  cap:p left scroll-nat scroll-button
-event6   DEVICE_ADDED                 Logitech G502 HERO Gaming Mouse Keyboard seat0 default group5  cap:kp scroll-nat
-event2   DEVICE_ADDED                 ckb1: Corsair K95 RGB Gaming Keyboard vKB seat0 default group6  cap:k
-event3   DEVICE_ADDED                 ckb1: Corsair K95 RGB Gaming Keyboard vM seat0 default group7  cap:p left scroll-nat scroll-button
-event2   KEYBOARD_KEY                 +0.000s  *** (-1) pressed
 event2   KEYBOARD_KEY                 +0.166s  *** (-1) pressed

Baguettedood avatar Dec 17 '25 14:12 Baguettedood

On the related libinput issue, someone mentioned the buttons worked with Linux 6.16.

I haven't been able to test it. Perhaps someone can look into this?

tockudex avatar Dec 17 '25 15:12 tockudex

I am not convinced a kernel version is related. I used linux-lts (version 6.12) for a while and the tablet's buttons remained as non-functional as they are on 6.17.

However, I just passed through my Deco 01 v2 to a VM running Kubuntu 25.04, and the tablet buttons are detected and functional, working in the UI as well as sudo libinput debug-events. Most relevant-looking information:

  • Kernel: 6.14.0-15-generic
  • udev version: 257.4-1ubuntu3
  • libinput-bin version: 1.27.1-1
  • libinput10 version: 1.27.1-1
  • libwacom9 version: 2.14.0-1

Hope this helps.

In a second test with Kubuntu 25.10, the tablet's buttons are no longer detected or usable. The stylus remains functional. As in the earlier comment on my own system, I receive the message "event5 - UGTABLET 10 inch PenTablet: libinput bug: missing tablet capabilities: xy pen btn-stylus resolution. Ignoring this device" (same for for event3) when using sudo libinput debug-events.

  • Kernel: 6.17.0-5-generic
  • udev version: 257.9-0ubuntu2
  • libinput-bin version: 1.28.1-1build1
  • libinput10 version: 1.28.1-1build1
  • libwacom9 version: 2.16.1-1

Baguettedood avatar Dec 17 '25 22:12 Baguettedood