Huion H610X Graphic Tablet – review and setup on Linux

Disclaimer: This post is not in any way sponsored by Huion or anyone related to them. All the things stated here are my opinions and your mileage may vary. I do not guarantee it will work for you the same way it worked flawlessly for me.

Recently I have been visiting my village house a lot and I have been trying to set up an alternate workstation there so that I don’t need to carry the laptop and tablet with me all the time. I planned to buy a Wacom but as a backup tablet, it is costly. It costs around ₹28,000 ($345) for a medium-sized Intuos Wacom. So I was searching for an alternative brand. I knew about Huion and XP-pen but the biggest requirement for me is that they should work on Linux without making me climb Everest.

I was happy to see a user of Huion reported that one model (H950p) works nicely with Linux on krita-artists.org. I went to the Huion website and found that there is a slightly newer model of this tablet with a USB-C option. It is the H610X model, this model has all the niceties of H950p plus it also works with android phones and tablets, a good travel companion. What’s more incredible is that this tablet costs 1/7th of the price of a Wacom, This tablet costs around ₹4000 ($50) here.

I was slightly sceptical about buying the new model since Linux support would be somewhat dicey for new models. Nevertheless, I saw that the product page on the Huion website listed Linux as a supported platform. They also have an official Linux driver package for this tablet. So I purchased the H610X tablet.

Huion H610x box

The package was simple and to the point. No wastage of extra wrapping and plastic etc. The box had

  1. A graphic tablet – 325mm x 205mm
  2. A Pen with two buttons (no eraser end)
  3. USB type A 3.0 to USB type C cable – 1580 mm in length. Also has a nice Velcro strap for cable management
  4. Pen holder combined with nib holder with 8 extra nibs. The bottom has a hole to aid in removing the nib from the pen.
  5. USB A to USB C converter that helps connect to mobile devices.
  6. Warranty card and instruction flyer
Contents inside the Huion H610X box

First impressions

The tablet felt very lightweight compared to my Wacom Intuos pro medium. The design is simple and identical to the Wacom, even the button placements and logo placements are in the same place. the material is a bit cheaper than Wacom. The pen too felt lighter and I think this is an advantage or disadvantage depending on the person. I felt it was good and intuitive to write and draw. The pen doesn’t have an eraser end, which I never used anyway. Tilt support is good and works out of the box.

First Test without any configuration, just plug and play

The tablet was working right away out of the box, most tablets these days are plug and play. it is the configuration that falls short on Linux if the tablet is new or not supported. We will further look into this aspect later. The surface of the tablet was not smooth like the Wacom, something which I am a bit worried about. It has a slight roughness to it and this may or may not result in nib wear like how the new Wacom Intuos models’ nibs wear out due to rough texture.

The nib has a very slight barely noticeable spring mechanism which makes it feel smoother and less fatigue-inducing. Some heavy pressing users might think that they are not exerting enough pressure 🙂 . I don’t know if it has spring inside or not.

The pen holder too is very lightweight and it can be easily toppled like every other pen holder unless the pen is placed horizontally. there is a slightly larger chance of this pen holder breaking by damage than the Wacom one. The Wacom pen holder is heavier with a metal base and firmly stays on the desk.

Identical twins from different mothers. Left Wacom Intuos Pro M. Right Huion H610X

The USB port on the tablet is awkwardly placed on the left-hand side top, this makes it easier to bend and wear out if you keep your keyboard above the tablet like me. The cable is also not stiff like the Wacom offers. The cable has a Velcro strap so that you can folder the extra cable and tie it with other cables on your desk, a nice touch from Huion.

USB port placement on the Huion H610X

The buttons feel better than Wacom and are not too stiff. They however lack the pronounced tactile bumps or marks for accessibility and blind pressing. There is only one very small circular bump in the middle key. The tactile bumps on the Wacom pad help in identifying the key you are pressing without looking at it. However here the number of keys is less and there is a slightly raised bar between the keys so that you can guide your finger to get to the middle or last key, so it might not be such a big problem.

Out-of-the-box software experience

Pen pressure works like a charm out of the box, no need to install Wacom or any drivers. Just plug and play. Tilt too works out of the box. The driver is provided by the Linux kernel and the device is managed by libinput. On android too the tablet works out of the box. I have yet to draw and check pen pressure and other stuff on it though.

However, if you want to use the keys and configure the tablet correctly you need some fiddling to do. As this is a new model, there is no tablet definition file in the libwacom package for this. There is a tablet definition file for the H950p, which strangely has the same USB ID (006d) as this tablet. So in the KDE settings section, this tablet is wrongly reported as H950P. This also leads to a mismatch of tablet areas. The reported tablet surface area shows a square of 32767 x 32767 so when we try to map the area proportional to the monitor resolution it renders half of the tablet out of range.

Kde tablet settings page identifying the tablet h590p with wrong surface area

The KDE settings version on Fedora 36 Linux that I am using has a bug where it doesn’t remember any settings changed. So even if the buttons are detected correctly here, since they are the same as the h950p tablet the settings don’t persist.

This bug is solved in the future version of the settings and hopefully, in the next update, the settings will have no issues.

For the tablet to get correctly recognized we would have to submit a tablet definition file to the libwacom project. Maybe another weekend project for me, of course when I do get a free weekend :).

The Wayland side should be plug and play and I see that KDE has been adding a new tablet setting GUI so that should be covered. However, when I wanted to test the development version of this, I couldn’t log in to the live USB of KDE neon with Wayland.

I tried the Digimend drivers but they did not give me any advantage over what I already have with defaults. it too didn’t recognize the tablet and it wrongly reported the pad as the stylus and the pen as the eraser.

The main concern is the aspect ratio of the tablet surface which is not 16:9 like my monitor. So drawing a perfect circle gives me an egg shape. Quick tracing of the round jar lid or coin gives this result, you can see the coin is a squished circle here.

A coin trace test

Configuration and setup

Official driver

I tried the official driver given on the huion website. The driver program was an archive and had two bash scripts to install as well as uninstall the utility. Although the driver’s front end was made in Qt and was under LGPL license there was one binary called huioncore. I suspect this is a proprietary program. Nevertheless, I gave it a try to check how the official support is. The utility was only officially supported on Ubuntu but I got it to install on Fedora without any issue. The utility autostarts with every boot and sits in your system tray with a blue pencil icon. The interface is well-designed and easy to use.

Huion utility landing page
tabet mapping in the huion app

However, there is some drawback to this. The utility needs to be run all the time in the background for the tablet configuration to work. If you close the utility completely all the config gets unloaded. Some of the configurations were not persisting. Huion needs to test this more and try to release their driver as Free and open source software so that people can improve it and help them too. Their hardware is on par with the user expectation but the software side is not that good on the Linux side. Although since Huion is one of the few hardware companies openly advertising Linux support on its website we can give them a bit of time to understand and catch up to the community. You can work with this utility if you want. I won’t be using this since it is proprietary and it doesn’t give me anything that the free software counterpart can’t give. And I am not forced to use it, unlike some graphic card vendor scenarios.

Free Software Based Setup

Since the tablet model isn’t properly recognized but works perfectly, configuring this will be a bit easy. First I tried to use the default libinput drivers and did not use the Wacom drivers. This mode gives you the tablet with working pen pressure and also a mapping facility via xinput. Just run the following command to trim the surface area of the tablet to match that of the monitor.

xinput set-prop "HUION Huion Tablet_H610X Pen (0)" "libinput Tablet Tool Area Ratio" 16, 9

For now if you do not want to map the button and just work with the tablet this is good to go. To map the button I opted to fallback to the wacom driver method. Because I did not have the patience to find the command and information regarding libinput and it is easier with wacom driver. This tablet works with the wacom drivers too.

So install the xf86-input-wacom package from the repository and configure the tablet according to your needs. Here is the step by step that I did.

Step 1 – Install the wacom driver from your Linux distribution’s repository. For me the command on fedora was this

sudo dnf install xorg-x11-drv-wacom

Step 2 – Make a Xorg configuration file which tells our system to use wacom driver for this tablet. You would need administrator privilege for this. Open the file in the text editor with the following command.

sudo nano /etc/X11/xorg.conf.d/50-huion.conf

And paste in the following contents

# huion tablet and buttons
Section "InputClass"
    Identifier "Huion tablet class"
    MatchProduct "HUION"
    MatchIsTablet "on"
    MatchDevicePath "/dev/input/event*"
    Driver "wacom"
EndSection

This tells our system to find any hardware with the product name “HUION” and check if it is a tablet type and use the driver specified. Now if you reboot, the Linux command line utility for configuring the tablets called xsetwacom should show your tablet in the list of devices

Now we can use xsetwacom command to configure the tablet are and buttons too. The button numbering on this tablet is similar to the Wacom Intuos, probably because we are using the wacom driver. Here is the button layout with their numbers.

Button number arrangment for Huion 610X

You can use the following command to map a key or sequence of keys to a button

xsetwacom set "HUION Huion Tablet_H610X Pad pad" Button 11 "key ctrl s"

This will map the Button number 11 to Ctrl S which will trigger the save.

Step 3 – Instead of running each command individually I have made a script with all the sequence of command which will be run when required. the script is below

#!/bin/bash

#get device id without hardcoding it
list=$(xsetwacom list devices)
pad=$(echo "${list}" | awk '/Pad pad/{print $(NF-2)}')
stylus=$(echo "${list}" | awk '/stylus/{print $(NF-2)}')

if [ -z "${pad}" ]; then
    exit 0
fi

# configure the buttons on ${stylus} with your xsetwacom commands...

xsetwacom set "${stylus}" Area 0 0 50800 28575
xsetwacom set "${stylus}" RawSample 1
xsetwacom set "${stylus}" Suppress 0
xsetwacom set "${pad}" Button 1 "key m"
xsetwacom set "${pad}" Button 2 "key a"
xsetwacom set "${pad}" Button 3 "key ctrl"
xsetwacom set "${pad}" Button 8 "key b"
xsetwacom set "${pad}" Button 9 "key +ctrl +shift z -ctrl -shift"
xsetwacom set "${pad}" Button 10 "key +ctrl z -ctrl"
xsetwacom set "${pad}" Button 11 "key ctrl s"
xsetwacom set "${pad}" Button 12 "key +v"

#optional send notification after configuring 
notify-send -a 'config' -h "string:desktop-entry:org.kde.konsole" -u normal 'huion config done' --icon=face-smile 

This script can be run on startup or run with systemd triggered by udev like mentioned in this arch wiki article . But I found that while the script is run on startup and the configuration is done correctly, removing and re-plugging the tablet will not run the script again. I tried to search a solution for this and found this wonderful article by Brian Lester. They use python to monitor changes in udev and run the script when necessary. You can find the python script they use in the linked article. I changed the path in it accordingly and used it. Here is my python script copied from Brian’s script and shared with permission.

This require pyudev, so please install it from your distributions repository or from pip. Fedora has this by default so i didn’t have to do install anything.

#!/usr/bin/python
# script from https://blester125.com/blog/wacom.html
# author - Brian Lester

import time
import argparse
import subprocess
import pyudev


def main():
    parser = argparse.ArgumentParser(description="Listen to udev for the huion tablet.")
    parser.add_argument('--vendor_id', '--vendor-id', default=b"256c", type=lambda x: x.encode("utf-8"))
    parser.add_argument('--product_id', '--product-id', default=b"006d", type=lambda x: x.encode("utf-8"))
    args = parser.parse_args()

    print("Initializing udev listener")
    context = pyudev.Context()
    print("initializing udev monitor")
    monitor = pyudev.Monitor.from_netlink(context)
    monitor.filter_by(subsystem="usb")
    print("starting udev monitor")
    monitor.start()

    print("Running huion setup")
    subprocess.call("/home/raghu/.local/bin/huion.sh")
    print("Setup huion")

    for device in iter(monitor.poll, None):
        print(f"action on device {device}")
        vendor_id = device.attributes.get('idVendor')
        print(f"device vendor id: {vendor_id}")
        product_id = device.attributes.get('idProduct')
        print(f"device product id: {product_id}")
        if vendor_id == args.vendor_id and product_id == args.product_id:
            print("Device is my huion")
            time.sleep(2)
            print("Running huion config setup")
            subprocess.call("/home/raghu/.local/bin/huion.sh")
            print("Setup huion")


if __name__ == "__main__":
    main()

And then I have a systemd service file like Brian which starts the python program to watch udev. I place this service file in ~/.config/systemd/user as huion.service and enable it as user service.

[Unit]
Description=Configure Huion Service
After=graphical-session.target
PartOf=graphical-session.target


[Service]
ExecStart=/home/raghu/.local/bin/huion/huion.py
Restart=on-failure
RestartSec=10
StartLimitBurst=10
Type=simple
Environment=PYTHONUNBUFFERED=1

[Install]
WantedBy=graphical-session.target
systemctl --user enable huion.service

And there we are with a configured tablet. And now our coin trace test works as expected.

Full circle

Conclusion

Huion H610X is worth every penny and a good tablet which is usable on Linux without much hassle. The tablet works excellently and it is a boon for budding artists who are low on cash. In the coming months, I am optimistic that the initial hiccup of the tablet not being recognized in the KDE setting will be sorted out. I give this tablet a 7 out of 10. If you have any questions or want me to test anything with this tablet let me know in the comments below.

One Comment

Leave a Comment

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