Setting up a Monoprice tablet on Linux (Fedora 36)

I’ve been using a monoprice drawing tablet for taking notes and whiteboard-style collaboration with other mathematicians. Like most monoprice products, it is identical to a name brand product marketed under a different name. Mine in particular is equivalent to the Huion H610 Tablet. There is support for this tablet in Linux, but because of this branding issue, Linux doesn’t know to use the Huion driver. In particular, (at least in gnome, my desktop environment), going to the graphical user settings entry for “wacom tablet” gives a frustrating “no tablet detected: please plug in or turn on your wacom tablet” message. Fortunately, this is a pretty easy fix once you know how to do it, so I hope that this post saves someone some hours of frustration.

This stack post was pretty helpful, but it didn’t tell me how to get the right name of the tablet (more on that later). I’ll describe everything that I did below.

Running lsusb in terminal gives a list all devices currently connected via USB. All are clearly identified, except for this mysterious entry:

Bus 001 Device 006: ID 256c:006e  10594

This is the tablet, and the enigmatic information is due to the fact that the device is not recognized currently.

Some more useful troubleshooting commands: libinput list-devices (ran as root) gives a list of input devices, and libwacom-list-local-devices gives a list of tablets. When I run these commands, I get some info about devices being seen by the computer but not recognized.

This can be remedied by adding the appropriate file describing the device. On my machine (Fedora 36), all the files describing tablets are in /usr/share/libwacom. You may need to find a similar folder in another location on your machine by searching for “libwacom”.

In this directory, there is a file titled “huion-h610-pro.tablet”, which is the name brand version of my monoprice tablet. This file contains a number of configuration settings. In particular, “DeviceMatch” is set equal to a list of possible names that the tablet may be found under:

DeviceMatch=usb:256c:006e:HUION PenTablet Pen;usb:256c:006e:HUION PenTablet Pad;usb:256c:006e:Turcom TS-6610 Pen;usb:256c:006e:Turcom TS-6610 Pad;usb:256c:006e:HUION Huion Tablet Pen;usb:256c:006e:HUION Huion Tablet Pad;usb:256c:006e:HUION H610 Pen;usb:256c:006e:HUION H610 Pad

So it would seem that what we need to do is append the name of the tablet to this list, separated by semicolons (and prefaced by “usb:” and postfixed by ” Pen” and ” Pad” to match the formatting of the other names in the list) :

DeviceMatch=usb:256c:006e:HUION PenTablet Pen;usb:256c:006e:HUION PenTablet Pad;usb:256c:006e:Turcom TS-6610 Pen;usb:256c:006e:Turcom TS-6610 Pad;usb:256c:006e:HUION Huion Tablet Pen;usb:256c:006e:HUION Huion Tablet Pad;usb:256c:006e:HUION H610 Pen;usb:256c:006e:HUION H610 Pad;usb:256c:006e: 10594 Pad;usb:256c:006e: 10594 Pen

However, this doesn’t end up working. I’m not exactly sure why, but my guess is that there’s some information about the device that results in particular tablet files being read in the first place, and this information is lacking for my tablet, so this change doesn’t do anything consequential as the file isn’t read at any point. I’m not really sure though because I don’t know much about hardware.

What did end up working for me was to create a new tablet file for my device. At first I tried following the same format as others and naming it something like “monoprice-10594.tablet” but this also didn’t get me anywhere. What did end up working was creating a file named “0x256c-0x6e.tablet” the contents of which are:

# HUION
# H610 Pro
#

[Device]
Name=0x256c 0x6e
ModelName=10594
DeviceMatch=usb:256c:006e  10594
Class=Bamboo
Width=10
Height=6
IntegratedIn=
Layout=huion-h610-pro.svg
Styli=0xffffd;

[Features]
Stylus=true
Reversible=true
Touch=false
Buttons=8

[Buttons]
Left=A;B;C;D;E;F;G;H
EvdevCodes=0x100;0x101;0x102;0x103;0x104;0x105;0x106;0x107

To be honest, I don’t remember where I got the tablet name from. I don’t see it in the output of any of the diagnostic commands that I mentioned above. I figured this out a while back on another machine and tried to reproduce it on a newer computer, failed, and went back to see what I did on the old machine. Maybe someone can tell me what the missing piece is!

Leave a Reply

Your email address will not be published. Required fields are marked *