XpPen Deco 01V3 - review on GNU/Linux

Published on

Video:

This article accompanies my video review of the XpPen Deco 01v3, a medium-sized screenless pen tablet. The video provides my in-depth look at the device's hardware. This blog post, on the other hand, focuses on the information and technical aspects of installing and configuring the device on a GNU/Linux operating system.

Official links:

Special Offer/Promo code
20% OFF on the Deco 01 V3 tablet with code “DAVID20”, valid in March 2025, cannot be combined with other promotions.

Out of the box situation

What features are available out of the box? Basically, all primary functions are operational. In the absence of a dedicated driver, the XpPen Deco 01v3 emulates two standard devices: a generic pen, similar to those used with laptop-tablet PCs, and a standard keyboard for key input.

Modern versions of GNOME and KDE, running under Wayland, can accurately detect the stylus coordinates and set the screen aspect ratio. Under X11, the xsetwacom command line utility can achieve similar results.

The limitation of this emulation is that most of the shortcuts for the stylus buttons and pad buttons are hard-coded and cannot be changed without a dedicated driver. The default key mapping is shown in the figure below (see image). While not ideal, the default shortcuts are still useful. However, you will need to get used to using a pen without a right-click button, as an "eraser mode" is activated by holding down the button instead.


Default buttons layout when connected to a GNU/Linux machine

The proprietary driver

I have not tested or used the proprietary driver provided by XP-Pen for ethical reasons. However, I am aware that many users may find its existence beneficial and may choose to make an exception to use this binary blob, prioritizing convenience. I do not judge their choice.

Link: https://www.xp-pen.com/download

The FLOSS driver (udev-hid-bpf)

On GNU/Linux, all drivers are built into the Linux kernel, but forcing users to wait for the next kernel to get their hardware working would be madness. To address this issue, projects such as udev-hid-bpf provides a solution by allowing users to load Human Interface Device (HID) drivers in the kernel. Presently, this is where the development of new tablet drivers is taking place.

So I reported the device specifications to Peter Hutterer (whot) and Benjamin Tissoires (bentiss) who manage the project. I opened a new thread with all the Deco 01V3 specifications. Peter then wrote the merge request 185 with the code to support the tablet. And waiting the code to join the main release of udev-hid-bpf (and maybe later the Linux kernel), you can install the code of the merge request using the tutorial provided by the documentation of udev-hid-bpf.

Note: the merge request is still in progress, while all buttons of the pad are now ready to be customized, the top button of the stylus still reports an eraser mode.

Customization

On Plasma Wayland

Once the udev-hid-bpf rules are correctly installed, the Plasma 6.3 system preference on Wayland will detect all buttons. Below is a screenshot of the three panels (click to enlarge).


screenshot of the tablet system settings of Plasma 6.3

On GNOME Wayland

Once the udev-hid-bpf rules are correctly installed, GNOME will still need more info: a .tablet file and a .svg layout in https://github.com/linuxwacom/libwacom/tree/master/data because the graphical user interface requires such files. This is still a TODO for GNOME users, and probably duplicating the files for the Deco 01v2 and tweaking them might be enough. But without them, the preferences panel look like this:


screenshot of the tablet system settings of GNOME 47

On X11

Once the udev-hid-bpf rules are correctly installed, you'll be able to control the basic features of the tablet by command lines using xsetwacom utility. First, find the ID of your device:

$ lsusb
Bus 001 Device 008: ID 28bd:0947 XP-Pen Deco 01 V3

Then create (or edit) the file /usr/share/X11/xorg.conf.d/60-xppen.conf and put inside this paragraph, with the MatchUSBID identifier you found previously.

Section "InputClass"
  Identifier "XP-Pen Deco 01 V3"
  MatchIsTablet "on"
  Driver "wacom"
  MatchUSBID "28bd:0947"
  MatchDevicePath "/dev/input/event*"
EndSection

Then reboot.
At this point, you should see your XPPen tablet stylus listed if you write in a terminal:

$ xsetwacom --list
UGTABLET Deco 01 V3 Pen stylus          id: 11  type: STYLUS
UGTABLET Deco 01 V3 Pen eraser          id: 19  type: ERASER

Bravo! Xsetwacom utility is now in charge of your tablet.

Create an Xsetwacom script

Open a non-rich text editor (eg. Micro, Kate, Geany, Gnome text also called Gedit, etc...) and copy/paste/adjust the script under:

#! /bin/bash
# ----------------
# XP-Pen Deco 01v3
# ----------------
# License: CC-0/Public-Domain license
# author: deevad

# Tablet definition
# Identifier obtained using the 'xsetwacom --list' command line
# The tablet appears after creating a special rule for Xorg. 
# See blog post on https://www.davidrevoy.com/index.php?tag/hardware for it.
tabletstylus="UGTABLET Deco 01 V3 Pen stylus"
tableteraser="UGTABLET Deco 01 V3 Pen eraser"
tabletpad="UGTABLET Deco 01 V3 pad"

# Constrain the stylus to use it's own monitor
# Monitor name here "HDMI-A-0" was obtained
# using the 'xrandr' command-line. Your monitor's name might be different (eg. "HDMI-1", "DisplayPort-3", etc...). 
# Note: you might need to make some math here if the ratio is not the same than your monitor
output="HDMI-A-0"
xsetwacom --set "$tabletstylus" MapToOutput $output
xsetwacom --set "$tableteraser" MapToOutput $output

# Pressure sensitivity calibration
# You can use this widget online here to create your curve
# https://linuxwacom.github.io/bezier.html
# The number are set like this: "X1" "Y1" "X2" "Y2"
# default: PressureCurve 0 0 100 100
xsetwacom --set "$tabletstylus" PressureCurve 50 45 20 100

# Styluse's buttons:
# First button on the stylus
# I like to get the Control key to pick color on this one.
# default: button 2 2
xsetwacom --set "$tabletstylus" button 2 key Ctrl

# Second button on the stylus
# I leave the default right-click (not: it doesn't work right now, it will be an eraser mode)
#xsetwacom --set "$tabletstylus" button 3 3

# Data trimming and suppression
# Better to not filter or delete any data of this device for increasing its precision
# data pt.s filtered (0-100)
# default is 2
xsetwacom --set "$tabletstylus" Suppress 0 
# data pt.s trimmed (1-20)
# default is 4
xsetwacom --set "$tabletstylus" RawSample 1

# Buttons from top to bottom:
#     +-----+
#     |  1  |
#     +-----+
#     |  2  |
#     +-----+
#     |  3  |
#     +-----+
#     |  8  |
#     +-----+
#
#     +-----+
#     |  9  |
#     +-----+
#     | 10  |
#     +-----+
#     | 11  |
#     +-----+
#     | 12  |
#     +-----+

xsetwacom set "$tabletpad" button 1 "key Control_L" # Ctrl = color picker 
xsetwacom set "$tabletpad" button 2 "key KP_Divide" # / = Switch to previous used brush preset
xsetwacom set "$tabletpad" button 3 "key Shift_L" # Shift = Resize brush
xsetwacom set "$tabletpad" button 8 "key v" # v = line
xsetwacom set "$tabletpad" button 9 "key m" # m = mirror
xsetwacom set "$tabletpad" button 10 "key e" # e = eraser
xsetwacom set "$tabletpad" button 11 "key r" # r = pick layer
xsetwacom set "$tabletpad" button 12 "key Ctrl z" # Ctrl+z = undo

Save your script under the name of your choice, I saved mine as xppen_Deco-01-v3.sh (using the extension .sh at the end of the file will ease identifying the file as a Bash script later). To run it, after saving the file you need to give this text file execution permission. You can do so with many desktop environment by right clicking on the file, go to the property of the files, and in a permission tab add the "execute" checkbox. Another way to do it is via command line in the same directory:

chmod +x xppen_Deco-01-v3.sh

Now, if you run:

./xppen_Deco-01-v3.sh

The script should run and apply your preference. If your desktop environment is modern enough; you should have a way to add a script at autostart (usually in Settings > Autostart). This way, the preferences will be applied each time you start your computer. You can of course change options, and execute the script as many time you want to test and adjust.

You might also create a shortcut on your main menu to execute quickly the script.

Conclusion: contribute?

That's all, this guide can be of course continued or updated!

You can send me your tips via comments, or on various threads mentionned in this article or via email.



License: "XpPen Deco 01V3 - review on GNU/Linux" by David Revoy − CC-BY 4.0
Tags:  #hardware   | Download: Markdown
14 comments