HUION H610 Graphics Tablet with Linux

N.B. THIS ARTICLE IS GOING TO CHANGE DUE TO THE WONDERFUL PEOPLE AT PCLINUXOS MAKING THE NECESSARY RPMS AVAILABLE IN THE NEAR FUTURE. In the meantime, the method below will actually work. If you use a different flavour of Linux, then read on, much of this may be of use to you.

My partner fancies herself as a bit of an artist, and I don’t mind having the odd go at computer art. For that you probably need a Graphics Tablet. A few weeks back we were in Maplins to get a couple of sub-£1 preset potentiometers! But she looked at the Wacom tablets and was taken with the idea. As I have to maintain the technology in our home, and I am a Linuxer, I needed to find out what runs and what doesn’t on Linux. Wacom tablets do, and according to the website of Krita, a program built in both Linux and Windows for making Artist’s sketches, the Huion H610 and H610 Pro work in Linux. We were still thinking about it, when I saw a H610 on sale through the Chinese trading site, DX.com, for £34, about £20 cheaper than Amazon, and a fraction of the cost of a decent Wacom. It’s at times like that you just go for it in case they change their minds, and the unit arrived a lot quicker than I expected. It’s a really attractive unit, with a much larger pad area than we anticipated.

huion-tabletSo, I put an AAA battery into the Pen/Stylus (the Pro version has a pen with a built in rechargeable battery which connects via USB to charge, the ordinary version needs a single AAA battery), plugged the Tablet into my computer and off I went. And …. nothing! Time for a panic, then looking stuff up on the internet, trying a number of solutions that didn’t work, and finally using a combination of online info, the little bit of knowledge I have, and guesswork, I got it installed, smooth as silk! So this is what I did that worked, at least it did in PCLinuxOS.

Before this will work, you will have to install “git” if your distro doesn’t already have it.

First problem — The unit uses a module called hid_uclogic, but the one in the kernel doesn’t fully work. So it has to be replaced. It’s not as hard as it sounds, as long as you follow this instruction to the letter. I found a solution on the page of David Revoy, a graphic artist and adapted it because the dkms method didn’t work for me. It might work for you, depending on your distro, so go to David Revoy‘s page and try that first. If it doesn’t work, this is what worked for me. You need to open a Root Terminal and issue these commands (the first two lines here are actually a single line):

 git clone https://github.com/DIGImend/digimend-kernel-drivers.git /usr/src/digimend-6

cd /usr/src/digimend-6

rmmod hid_uclogic

make

make install

You’ll have to recreate this module every time you update the kernel, unless the dkms method on David Revoy’s page worked.

Second problem —  you’ll have to add a partial xorg.conf file. It will be called 50-huion.conf and have to be saved as root to the folder /usr/share/X11/xorg.conf.d :

Section “InputClass”
Identifier “Huion on wacom”
MatchIsTablet “on”
MatchProduct “HUION”
MatchDevicePath “/dev/input/event*”
Driver “wacom”
EndSection

It won’t have any effect until you logout and login, or restart the computer. Note that this file is totally different on David Revoy’s page. You can add the contents of the one on his page in front the contents above, and see if there is any difference. By now you should have something that works, but the problem is that the 8 buttons (in this case) on the left hand side are not really doing anything, apart from the top three that duplicate the buttons 1-3 on the mouse, more trouble than it’s worth. The other 5 return button numbers 8-12.

Open a terminal and run (as user) the command: xsetwacom list

You should see two devices reported, a pad and a stylus. If so, you can use xsetwacom to reallocate the buttons. If not, read ahead. There are two ways of going about this. One is you can set the buttons to return rarely-used key combinations, then allocate them within your program’s settings. You would do this within an executable script, which you could put in /usr/local/bin for all users, or in your own Home area (e.g., ~/.local/bin/):

#!/bin/bash

## script to prepare keys on huion tablet

## Get ID number of Tablet:

TABLET_ID=`xsetwacom list | grep -i pad | awk -F: ‘{ print $2}’ | awk ‘{print $1}’`

## If you want to change buttons 2&3 on the pen,
## then you would need this line to get the ID:

## STYLUS_ID=`xsetwacom list | grep -i stylus | awk -F: ‘{ print $2}’ | awk ‘{print $1}’`

## Set new Mouse Button numbers:

xsetwacom –set $TABLET_ID Button 1 “key +super F2 -super”
xsetwacom –set $TABLET_ID Button 2 “key +super F3 -super”
xsetwacom –set $TABLET_ID Button 3 “key +super F4 -super”
xsetwacom –set $TABLET_ID Button 8 “key +super F5 -super”
xsetwacom –set $TABLET_ID Button 9 “key +super F6 -super”
xsetwacom –set $TABLET_ID Button 10 “key +super F7 -super”
xsetwacom –set $TABLET_ID Button 11 “key +super F8 -super”
xsetwacom –set $TABLET_ID Button 12 “key +super F9 -super”
xsetwacom –set $TABLET_ID Button 13 “key +super F10 -super”
##(some other huions have a physical button 13)

##done

That works just fine on my desktop (XFCE), but would cause a problem in LXDE in that these key settings are used to change desktops. Another method would be to make the key allocations specifically for one drawing program, say, Krita or Gimp. These keys would work for Krita by duplicating existing short cuts:

#!/bin/bash

## script to prepare keys on huion tablet for Krita

## Get ID number of Tablet:

TABLET_ID=`​xsetwacom list | grep -i pad | awk -F: ‘{ print $2}’ | awk ‘{print $1}’`
STYLUS_ID=`​xsetwacom list | grep -i stylus | awk -F: ‘{ print $2}’ | awk ‘{print $1}’`

xsetwacom –set $TABLET_ID Button 1 “key +ctrl z -ctrl” #undo
xsetwacom –set $TABLET_ID Button 2 “key e” #erase mode toggle
xsetwacom –set $TABLET_ID Button 3 “key b” #select brush (as opposed to shape)
xsetwacom –set $TABLET_ID Button 8 “key +ctrl + -ctrl” #zoom in
xsetwacom –set $TABLET_ID Button 9 “key +ctrl – -ctrl” #zoom out
xsetwacom –set $TABLET_ID Button 10 “key ]” #increase brush size
xsetwacom –set $TABLET_ID Button 11 “key [” #decrease brush size
xsetwacom –set $TABLET_ID Button 12 2 #pan
xsetwacom –set $STYLUS_ID Button 2 “key f5” #Show Brush Tool
## Button 3 is already set to bring up the colour picker.

If you have multiple monitors, or wish to change effective area of the tablet (either the tablet area or the on-screen area covered), you might want to make another trip to David Revoy’s page to see examples of further uses of xsetwacom.

You will have a totally usable or functioning tablet by now. However, if “xsetwacom list” returns nothing for you, then you will have to install “xinput”, “xbindkeys” and “xte” if not already present. First,

The executable file would be as follows:

#!/bin/bash
# script to prepare tablet

## Get ID number of Tablet:

TABLET_ID=`xinput list | grep -i ‘HUION PenTablet Pad’ | awk -F= ‘{ print $2}’ | awk ‘{print $1}’`

## Set new Mouse Button numbers:
## Some of the buttons don’t physically exist but you still need to allocate them
## Real buttons will return 14 15 16 8 9 10 11 12

xinput set-button-map $TABLET_ID 14 15 16 17 18 19 20 8 9 10 11 12 13

## make sure it’s done

sleep 1

## modify mouse output to keyboard settings

xbindkeys

##done

As you can see, the final line is “xbindkeys”. For this to work, you need a file to tell it what to do, that file has to be in your home folder, and is named “.xbindkeysrc”. There are ways of allocating the keys (as Krita can’t use the high mouse pointer numbers), I chose the Super_L + F-key combination. Sadly, the command “xte” can’t use F-keys above 12 even though up to F35 is recognised by the X system. The values I used were:

###xbindkeys file. Of each pair, first line is a command which is issued when
###the key or mouse combination below is pressed.

“xte ‘keydown Super_L’ ‘key F2’ ‘keyup Super_L'”
b:14

“xte ‘keydown Super_L’ ‘key F3’ ‘keyup Super_L'”
b:15

“xte ‘keydown Super_L’ ‘key F4’ ‘keyup Super_L'”
b:16

“xte ‘keydown Super_L’ ‘key F5’ ‘keyup Super_L'”
b:8

“xte ‘keydown Super_L’ ‘key F6’ ‘keyup Super_L'”
b:9

“xte ‘keydown Super_L’ ‘key F7’ ‘keyup Super_L'”
b:10

“xte ‘keydown Super_L’ ‘key F8’ ‘keyup Super_L'”
b:11

“xte ‘keydown Super_L’ ‘key F9’ ‘keyup Super_L'”
b:12

### All buttons allocated

The “.xbindkeysrc” file would need to be copied for each user who will need access to the tablet. You could change this file to match the Krita-specific file without too much difficulty.

For PCLinuxOS users, there are some rpms about to hit the repos which should get your huion tablet working.

Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: