XP-Pen Deco 01 V2 buttons not recognized
-
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.
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.
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: []
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.
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
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?
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