XpPen Deco 01V3 - review on GNU/Linux

Published on

Table of Contents



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.

Update/Erratums:

  • 2025-04-04: A BPF new patch for the second stylus button. This tablet has a full support now! 🎉
  • 2025-04-03: New chapter: my main device when traveling, because I had a good experience with it in a conf and on the train.
  • 2025-03-28: [Small Erratum] I write the ratio in the video is roughly ('~' symbol) 16/9. Correction: It's exactly 16/10.
  • 2025-03-26: Libwacom 2.15.0 released, with the Deco 01V3 support
  • 2025-03-24: Updated 'Second Stylus Button Hardcoded Erase Mode' chapter, as it might be a serious short term issue for this device.
  • 2025-03-24: The code was merged in udev-hid-bpf.
  • 2025-03-07: Update GNOME .tablet files and .svg files and screenshots.

My main device when traveling

I took this one with me for a filmed digital painting demo at a library and could finish my artwork with it back on the 3h of trains. My laptop, a Lenovo Yoga 370 I reviewed here already has a built-in compatibility with active stylus, the Wacom Bamboo stylus with batteries. But it also has a glass like overlay surface, and a bad access to keyboard shortcuts and also some problems with palm rejection (still on X11). Connecting an external display less tablet on it like the Deco 01V3 suddently made painting on the go twice easier: the access to the keyboard shortcuts, the position, the non reflection of the ceiling or windows of the train because the display is vertical... Well, for sure I'll put this one now by default on my backpack.


Finishing an artwork with the Deco in the train.

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 Linux 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.

Issue: Second Stylus Button Hardcoded Erase Mode

As a device compliant with a Microsoft stylus standard, one of the two buttons of the stylus will switch to a eraser mode by default. On Linux, this behavior was implemented at a kernel level and no graphical or cli tool can customize this behavior. That's why the button might appear as customizable on the GUI of Plasma on Wayland, or GNOME on Wayland, or X11 xsetwacom CLI tools, but it will not be possible to change this hardcoded eraser mode into, let say a simple right-click.

When this new behavior appeared, every tablets started to receive a custom fix: remove the hardcoded eraser mode and replace them by a customizable button. But after too many devices reported, it was decided to handle the problem differently: a merge request for libinput with a code that would allow the user to make the hardcoded Erase Mode map-able as a button. Unfortunately, it might take a long time before reaching the end user: the merge request needs to be accepted on libinput and merged, then a libinput release needs to be made with the new code, then the distribution needs to package this new version of libinput on their update, then the desktop environment like GNOME or WAYLAND will probably need to adapt their System Settings GUI for the tablet to offer this new option.

In short, while it's probably a change that is brilliant on the long term, it will probably benefit the Fedora and Arch user first in a optimistic 6 month from now, and 2 years for Debian or Ubuntu-based users.

Temporary workaround for the second button

The developer Nicholas Lapointe patched the BPF rules to turn the second button of the stylus into a right-click by default. To apply the patch manually:

  1. Get a packaged version of the latest udev-hid-bpf (eg. udev-hid-bpf_2.1.0-20240704.tar.xz )
  2. Unpack it (don't execute yet the ./install.sh).
  3. Download the patch of Nicholas as a tar.gz, extract the files. You'll get two BPF files to paste or overwrite in udev-hid-bpf (target subdirectory lib/firmware/hid/bpf).
  4. When everything is patched, launch at root of the udev-hid-bpf the script sudo ./install.sh
  5. deconnect the USB-C of your tablet, then reconnect: the second button should be now a right-click by default and you'll be able to customize it (as well as the button of the pad on the tablet).

Source code of the patch: The patch here are already compiled files, if you want to build udev-hid-bpf yourself or study the code, you can also download the source of the patch.


The two files extracted on the archive (bottom right) ready to be drag and drop on the executable (windows of top-left).

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 from https://github.com/linuxwacom/libwacom/tree/master/data because the graphical user interface requires such files. Future release of libwacom will get those files by default, but waiting for the future release, you can install them manually. Because without it, the tablet in the system settings will look like that and it's not useful.

Then copy the .tablet file in /usr/share/libwacom/ and the layout in /usr/share/libwacom/layout/ , after a reboot you'll get the control for your tablet.

Notes:

  • It works for the Wayland session only and on GNOME superior to 47.4
  • The GNOME user inteface for tablet configuration is basic: no possibilities to assign a Ctrl, Alt or Shift modifier to the stylus button and there is no pressure curves.


The GUI overlay to edit button, the SVG layout is required for this.


Assigning a keystroke to a stylus button


screenshot of the tablet system settings of GNOME 47.4 Wayland (Fedora)

On X11

That's the method I used for the demo video on My Debian KDE Plasma 12, and what I would recommend. But it's not user friendly with the command line and the creation of the script, and X11 is in end of life so I understand if newcomers to GNU/Linux don't feel motivated to learn a practice that might become totally obsolete in the next two years from now.

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 and pad listed if you write in a terminal:

$ xsetwacom --list

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.

Idea of contribution:

  • A better .svg file for libwacom project: the current one is basic, and a drawing of the device and rounded button could look so much better.


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

11 comments

link Jan Helebrant   - Reply
juhele@cztwitter.cz

@whot thanks much for the review. I remember many years ago I managed to get a "cheap" Wacom Bamboo Pen tablet which worked our-of-box also in linux, with GIMP / Inkscape, but this one looks really good - for that price almost A-4 sized tablet - wow!

link Jan Helebrant   - Reply
juhele@cztwitter.cz

@whot I have few questions if you do not mind. 0) the installation in linux - is that complicated? (not a noob, PPA etc. no problem, compile from source might be issue) 1) how about the stylus - is there battery inside? 2) the tablet buttons - can those be mapped to certain tools in linux (if it works in Krita I would guess in GIMP could work too). thanks

link David Revoy Author, - Reply
davidrevoy

@juhele No battery in the stylus, it's really like Wacom tech.
For the Linux notes, I wrote all in details in the blog post: davidrevoy.com/article1066/xpp ; but in a nutshell, right now, the tablet will work 'out of the box' everywhere but will not be customizable on any distro and D.E.
To customise it, you'll need to grab a zip from a merge request, unpack it, and run a ./install.sh script. Then on X11 the customisation is via command line (xsetwacom) or on Wayland, Plasma 6.3 detects it.

4 ★

link Jan Helebrant   - Reply
juhele@cztwitter.cz

Merci beaucoup 👍 It looks like I could ask my employer for an upgrade - at that price it's a great deal even if I only need it for editing documentary company photos.

link AlexanderMars   - Reply
AlexanderMars@mastodon.social

@whot we need more Linux focused hardware reviews for artists. We need to show that serious artists do use Linux and that we need performant stylus and multitouch support and professional colour support.

link David Revoy Author, - Reply
davidrevoy

@AlexanderMars True! 💜

link CC   - Reply
crancruise@meow.social

@whot awesome writeup!

link Juank Prada Art   - Reply
Juankprada@mstdn.jp

Would you consider moving back to a screenless pen tablet? 😅

Until some point in history you were one of the few artists that almost convinced ne to move to a screenless pen tablet but then you went into the dark side with the XP pen artists pro 16 😆

link David Revoy Author, - Reply
davidrevoy

@Juankprada Hehe, I'm still using the display tablets as mainly screen-less tablet 😆 that's the main reason (and honestly, it works well and it's a way to get large active area). That's why you can see me cloning them to my main display. 😊

link Juank Prada Art   - Reply
Juankprada@mstdn.jp

Ahh in unable to try this in a painless way as my main screen is 4K but my tablet is FHD, so is either struggling with the mapping or wasting the 4K potential@of my main screen 😰

link David Revoy Author, - Reply
davidrevoy

@Juankprada True, it require compatible ratio/resolution. I remember I succeed with xrandr on X11 to map a 1440p monitor on a 1080p Cintiq 13HD with downscaling. It was a fun test, but the fonts were small and blury, and setup wasn't that stable, many small glitch to clone with a scaling like that... I was probably in a territory of 'the feature exists, but nobody ever beta-tested it in production so it was bit rotten'.


Post a reply

The comments are synchronised every 12h with the replies to this post on Mastodon:


How to use this? (click here to unfold)
Open a new Mastodon account on the server of your choice. Then, Copy/Paste the adress above in your Mastodon 'Search' field. The post will appear and you'll be able to fully interact with it. You'll have full control of your posts: edit, remove, etc. After that, your message will appear here.

Just please note that it may take up to 12 hours for your changes to be reflected here.