Huion H950P graphic tablet, no Dice !?

Hello Members,

Since this post is on 26th Dec, allow me to begin with a “Merry Christmas” !

I have got myself a Huion H950P to try out stuff in Krita, but I am not able to configure it just yet !

My searches indicated that I needed GitHub - DIGImend/digimend-kernel-drivers: DIGImend graphics tablet drivers for the Linux kernel as a starting point. After installation of this driver, lsusb showed this -

# lsusb
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 2357:0106 TP-Link Archer T9UH v1 [Realtek RTL8814AU]
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 13d3:3570 IMC Networks Bluetooth Radio
Bus 001 Device 005: ID 256c:006f HUION Huion Tablet_H950P
Bus 001 Device 007: ID 258a:002a SINO WEALTH Gaming KB 
Bus 001 Device 006: ID 4e53:5406  USB OPTICAL MOUSE 
Bus 001 Device 004: ID 0a05:7211 Unknown Manufacturer hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub

but it could not detect anything from System Settings > input devices > Graphic Tablet.

Next, I proceeded to keep the updated kernel w/ digimend drivers and looked at additional options.

I have attempted with the HUiON driver (tarball from Download Drivers And User Manual - Huion) at first. This did detect a Huion Tablet in the System Settings > input devices > Graphic Tablet, but did not work (Openboard/Krita) at all. Removed the Huion Driver.

Since this device model is also supported by OpenTabletDriver, that was my next logical course of action. I got the RPM and was able to install it (with digimend kernel drivers). Problems started when I wanted to enable and start the service !

# systemctl enable /usr/lib/systemd/user/opentabletdriver.service
Created symlink /etc/systemd/system/graphical-session.target.wants/opentabletdriver.service → /usr/lib/systemd/user/opentabletdriver.service.
Unit /usr/lib/systemd/user/opentabletdriver.service is added as a dependency to a non-existent unit graphical-session.target.
Created symlink /etc/systemd/system/opentabletdriver.service → /usr/lib/systemd/user/opentabletdriver.service.
 # systemctl start /usr/lib/systemd/user/opentabletdriver.service
Failed to start usr-lib-systemd-user-opentabletdriver.service.mount: Unit usr-lib-systemd-user-opentabletdriver.service.mount not found.

So, graphical-session.target was quickly renamed to graphical.target. but the *.mount file is still a problem.

 # systemctl enable  --user /usr/lib/systemd/user/opentabletdriver.service
Failed to connect to bus: $DBUS_SESSION_BUS_ADDRESS and $XDG_RUNTIME_DIR not defined (consider using --machine=<user>@.host --user to connect to bus of other user)
 # systemctl enable  --machine=USER@ab-suse.example.com --user /usr/lib/systemd/user/opentabletdriver.service
Failed to connect to bus: Host is down
Failed to enable unit: Transport endpoint is not connected

Here are some details about my system.

# env | egrep -i 'x11|xorg|wayland'
XKEYSYMDB=/usr/X11R6/lib/X11/XKeysymDB
WINDOWMANAGER=/usr/bin/startplasma-x11
XNLSPATH=/usr/share/X11/nls
 # uname -r
5.14.21-150500.55.36-default
# inxi -J
USB:
  Hub-1: 1-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0
  Hub-2: 1-1:2 info: Genesys Logic Hub ports: 4 rev: 2.1
  Hub-3: 1-1.2:4 info: Manufacturer hub ports: 4 rev: 2.0
  Device-1: 1-1.2.1:6 info: USB OPTICAL MOUSE type: Mouse,Keyboard rev: 1.1
  Device-2: 1-1.2.2:7 info: SINO WEALTH Gaming KB type: Keyboard,HID rev: 1.1
  Device-3: 1-1.3:5 info: HUION Tablet_H950P type: Mouse,HID rev: 2.0
  Device-4: 1-5:3 info: IMC Networks Bluetooth Radio type: Bluetooth rev: 1.0
  Hub-4: 2-0:1 info: Super-speed hub ports: 4 rev: 3.1
  Hub-5: 3-0:1 info: Hi-speed hub with single TT ports: 6 rev: 2.0
  Hub-6: 4-0:1 info: Super-speed hub ports: 4 rev: 3.1
  Hub-7: 5-0:1 info: Hi-speed hub with single TT ports: 4 rev: 2.0
  Device-1: 5-2:2 info: TP-Link Archer T9UH v1 [Realtek RTL8814AU] type: Network rev: 2.0
  Hub-8: 6-0:1 info: Super-speed hub ports: 4 rev: 3.1
# zypper lr -d
#  | Alias                                | Name                          | Enabled | GPG Check | Refresh | Priority | Type   | URI                                                                                         | Service
---+--------------------------------------+-------------------------------+---------+-----------+---------+----------+--------+---------------------------------------------------------------------------------------------+---------
 1 | NVIDIA:repo-non-free                 | repo-non-free (15.5)          | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | https://download.nvidia.com/opensuse/leap/15.5                                              | NVIDIA
 2 | SoftMaker                            | SoftMaker                     | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | https://shop.softmaker.com/repo/rpm                                                         | 
 3 | home_Sauerland_hardware              | Hardware (openSUSE_Leap_15.5) | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://mirrorcache.opensuse.org/repositories/home:/Sauerland:/hardware/openSUSE_Leap_15.5/ | 
 4 | https-download.opensuse.org-22bd9f43 | SUSE:SLE-15:Update            | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | https://mirrorcache.opensuse.org/distribution/leap/15.5/repo/oss/                           | 
 5 | openSUSE-Leap-15.5-1                 | openSUSE-Leap-15.5-1          | No      | ----      | ----    |   99     | rpm-md | hd:/?device=/dev/disk/by-id/dm-name-ventoy                                                  | 
 6 | openSUSE:repo-non-oss                | repo-non-oss (15.5)           | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.5/repo/non-oss                                 | openSUSE
 7 | openSUSE:repo-non-oss-debug          | repo-non-oss-debug (15.5)     | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/debug/distribution/leap/15.5/repo/non-oss                           | openSUSE
 8 | openSUSE:repo-openh264               | repo-openh264 (15.5)          | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://codecs.opensuse.org/openh264/openSUSE_Leap                                           | openSUSE
 9 | openSUSE:repo-oss                    | repo-oss (15.5)               | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/distribution/leap/15.5/repo/oss                                     | openSUSE
10 | openSUSE:repo-oss-debug              | repo-oss-debug (15.5)         | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/debug/distribution/leap/15.5/repo/oss                               | openSUSE
11 | openSUSE:repo-oss-source             | repo-oss-source (15.5)        | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/source/distribution/leap/15.5/repo/oss                              | openSUSE
12 | openSUSE:update-backports            | update-backports (15.5)       | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.5/backports                                          | openSUSE
13 | openSUSE:update-backports-debug      | update-backports-debug (15.5) | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/update/leap/15.5/backports_debug                                    | openSUSE
14 | openSUSE:update-non-oss              | update-non-oss (15.5)         | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.5/non-oss                                            | openSUSE
15 | openSUSE:update-non-oss-debug        | update-non-oss-debug (15.5)   | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/debug/update/leap/15.5/non-oss                                      | openSUSE
16 | openSUSE:update-oss                  | update-oss (15.5)             | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.5/oss                                                | openSUSE
17 | openSUSE:update-oss-debug            | update-oss-debug (15.5)       | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/debug/update/leap/15.5/oss                                          | openSUSE
18 | openSUSE:update-sle                  | update-sle (15.5)             | Yes     | (r ) Yes  | Yes     |   99     | rpm-md | http://cdn.opensuse.org/update/leap/15.5/sle                                                | openSUSE
19 | openSUSE:update-sle-debug            | update-sle-debug (15.5)       | No      | ----      | ----    |   99     | NONE   | http://cdn.opensuse.org/debug/update/leap/15.5/sle                                          | openSUSE
20 | packages-microsoft-com-prod          | packages-microsoft-com-prod   | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://packages.microsoft.com/opensuse/15/prod/                                            | 
21 | visualstudiocode                     | visualstudiocode              | Yes     | (r ) Yes  | No      |   99     | rpm-md | https://packages.microsoft.com/yumrepos/vscode                                              | 

O/P from lshw for the device (input class)-

  *-usb:1
       description: Mouse
       product: HUION Huion Tablet_H950P
       vendor: HUION
       physical id: 3
       bus info: usb@1:1.3
       logical name: input2
       logical name: /dev/input/event2
       logical name: /dev/input/mouse0
       logical name: input3
       logical name: /dev/input/event3
       version: 1.12
       capabilities: usb-2.00 usb
       configuration: driver=usbhid maxpower=480mA speed=12Mbit/s

Any suggestions or tips ?
(I did verify on a Windows laptop, works fine, so the device itself is okay!)

Sorry I can’t help you with your problem. I like to say something with regards to this stuffs.
I just got a present during Christmas, a cheap XPPEN G640. I tried it by downloading first the linux RPM driver.
It works nicely in tumbleweed. The thing is I will be returning it because I already have a wacom which I am used to using in krita. I heard Huion is really hard to configure in linux.

1 Like

@HonestAbe Hi did you install dotnet 7.0 as your user? The rpm is for RedHat and they (maybe) have dotnet packaged. I use a wacom device here, but built all as my user and installed the udev rules, blacklist wacom and all good. I also had to modprobe uinput on my Aeon laptop install, Tumbleweed on my desktop works fine.

Tumbleweed;

Yes, I did install dotnet, just as the manual said.

@HonestAbe and did you export DOTNET_ROOT=~/.dotnet before running?

Hmm… strange!
I did not come across this. I am also unsure at which point this would be needed ! I did not, in fact see this listed here -
https://opentabletdriver.net/Wiki/Install/Linux

Would you please point me to the original article so that I can retrace my steps ?

@HonestAbe It’s a dotnet issue… https://learn.microsoft.com/en-us/dotnet/core/tools/dotnet-environment-variables#net-sdk-and-cli-environment-variables

If it was a system package it would take care of this, since a manual user install, it needs to be set.

Thanks, it is interesting!

I’ll let this thread updated once I try this out.

@HonestAbe these where my steps to test…

Install dotnet as my user…

cd
wget https://dot.net/v1/dotnet-install.sh -O ~/bin/dotnet-install.sh
chmod 0755 ~/bin/dotnet-install.sh
dotnet-install.sh --channel 7.0

mv ~/.dotnet ~/.dotnet-7.0

ln -s ~/.dotnet-7.0 ~/.dotnet
ln -s ~/.dotnet/dotnet ~/bin/dotnet

dotnet --version
7.0.404

git clone https://github.com/OpenTabletDriver/OpenTabletDriver.git
cd OpenTabletDriver
./build.sh

/etc/udev/rules.d/70-opentabletdriver.rules 
# OpenTabletDriver udev rules (https://github.com/OpenTabletDriver/OpenTabletDriver)
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", TAG+="udev-acl"
KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}"

# Wacom CTL-4100
KERNEL=="hidraw*", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0374", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEM=="usb", ATTRS{idVendor}=="056a", ATTRS{idProduct}=="0374", TAG+="uaccess", TAG+="udev-acl"

/etc/modprobe.d/50-wacom.conf 
blacklist wacom

On MicroOS Aeon I had to add;
/etc/modules-load.d/OpenTabletDriver.conf 
uinput

dracut -f --regenerate-all
systemctl reboot

To test open two terminals

Terminal 1
export DOTNET_ROOT=~/.dotnet
OpenTabletDriver/bin/OpenTabletDriver.Daemon

Terminal 2
export DOTNET_ROOT=~/.dotnet
OpenTabletDriver/bin/OpenTabletDriver.UX.Gtk

Many thanks for your attention.

I retraced my steps and found out that I had installed the dotnet runtime,but not the SDK. Installed the dotnet-sdk-8.0 via zypper.

Uninstalled the OpenTabletDriver.rpm via zypper and proceeded to “build” OpenTabletDriver from source/Git. The build was successful.

→ I have added the first two udev rules (pertaining to OpenTabletDriver).
→ I have added the blacklist for wacom module as well (Probably redundant, but my searches led me to believe that some of the methods I tried earlier would use “wacom” driver to identify Huion,so now it should use OpenTabletDriver for Huion !? Please correct me if I am wrong.)

Now I want to add the Udev rule for Huion H950P. But now, this new driver sees my device as follows -

# lsusb
Bus 006 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 005 Device 002: ID 2357:0106 TP-Link Archer T9UH v1 [Realtek RTL8814AU]
Bus 005 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 004 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 003 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
Bus 002 Device 001: ID 1d6b:0003 Linux Foundation 3.0 root hub
Bus 001 Device 003: ID 13d3:3570 IMC Networks Bluetooth Radio
Bus 001 Device 022: ID 256c:006f    <-
Bus 001 Device 018: ID 258a:002a SINO WEALTH Gaming KB 
Bus 001 Device 017: ID 4e53:5406  USB OPTICAL MOUSE 
Bus 001 Device 015: ID 0a05:7211 Unknown Manufacturer hub
Bus 001 Device 002: ID 05e3:0610 Genesys Logic, Inc. Hub
Bus 001 Device 001: ID 1d6b:0002 Linux Foundation 2.0 root hub
# lshw -short -class input
SCSI                        
H/W path                    Device     Class          Description
=================================================================
/0/100/1.2/0/8/0.1/0/1/2/1  input39    input          USB OPTICAL MOUSE  Keyboard
/0/100/1.2/0/8/0.1/0/1/2/2  input42    input          SINO WEALTH Gaming KB  Keyboard
/0/100/1.2/0/8/0.1/0/1/3    input52    input          HID 256c:006f
/0/100/3.1/0.1/0            input12    input          HDA NVidia HDMI/DP,pcm=3
/0/100/3.1/0.1/1            input13    input          HDA NVidia HDMI/DP,pcm=7
/0/100/3.1/0.1/2            input14    input          HDA NVidia HDMI/DP,pcm=8
/0/100/3.1/0.1/3            input15    input          HDA NVidia HDMI/DP,pcm=9
/0/100/8.1/0.4/0            input16    input          HD-Audio Generic Front Mic
/0/100/8.1/0.4/1            input17    input          HD-Audio Generic Rear Mic
/0/100/8.1/0.4/2            input18    input          HD-Audio Generic Line
/0/100/8.1/0.4/3            input19    input          HD-Audio Generic Line Out
/0/100/8.1/0.4/4            input20    input          HD-Audio Generic Front Headphone
/1                          input0     input          Power Button
/2                          input1     input          Power Button
/3                          input11    input          PC Speaker

The details from lshw is as follows -

  *-usb:1
       description: Mouse
       product: HID 256c:006f
       physical id: 3
       bus info: usb@1:1.3
       logical name: input52
       logical name: /dev/input/event2
       logical name: /dev/input/mouse0
       logical name: input53
       logical name: /dev/input/event3
       version: 1.12
       capabilities: usb-2.00 usb
       configuration: driver=usbhid maxpower=480mA speed=12Mbit/s

Can I please get some pointers here about the udev rule for Huion ?

Also, circling back to Dotnet… Since I installed the SDK (runtime was done earlier) via zypper , the .dotnet folder has been created under /root ! Is it correct before I take this any further ?

However The test instructions currently fail like this, which leads me to believe that some environment variable is amiss. Any help ?

@HonestAbe did you run the generate_rules.sh script and then pull out your device (256c:00f) to create the rule?

Yours should be something like;

/etc/udev/rules.d/70-opentabletdriver.rules 
# OpenTabletDriver udev rules (https://github.com/OpenTabletDriver/OpenTabletDriver)
KERNEL=="uinput", SUBSYSTEM=="misc", OPTIONS+="static_node=uinput", TAG+="uaccess", TAG+="udev-acl"
KERNEL=="js[0-9]*", SUBSYSTEM=="input", ATTRS{name}=="OpenTabletDriver Virtual Tablet", RUN+="/usr/bin/env rm %E{DEVNAME}"

# Huion H950P
KERNEL=="hidraw*", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEM=="usb", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", TAG+="uaccess", TAG+="udev-acl"
SUBSYSTEM=="input", ATTRS{idVendor}=="256c", ATTRS{idProduct}=="006f", ENV{LIBINPUT_IGNORE_DEVICE}="1"

I would remove the root .dotnet folder it’s not needed, just for your user. Once the test works, then can install the likes of the systemd daemon as your user in your $HOME.

Uninstalled all dotnet core,runtimes,SDK that came from RPMs/Repo.

Removed /root/.dotnet with a rm -rf
Removed all previously built stuff from my $HOME/Downloads/OpenTabletDriver

Reinstalled Dotnet with the script (dotnet-install.sh).

USER@ab-suse:~/Downloads> ll /usr/bin/dotnet
lrwxrwxrwx 1 root root 28 Dec 30 12:02 /usr/bin/dotnet -> /home/USER/.dotnet/dotnet
USER@ab-suse:~/Downloads> /usr/bin/dotnet --version
7.0.404

Now as I wanted to build The OpenTabletDriver(OTD) again, faced this error -

/home/USER/Downloads/OpenTabletDriver/OpenTabletDriver.Configurations/DeviceConfigurationProvider.cs(10,56): error CS0535: 'DeviceConfigurationProvider' does not implement interface member 'IDeviceConfigurationProvider.TabletConfigurations' [/home/USER/Downloads/OpenTabletDriver/OpenTabletDriver.Configurations/OpenTabletDriver.Configurations.csproj::TargetFramework=net7.0]

Previously, when I had built OTD after installing the dotnet RPMs it had worked. My first suspicion was that it was missing some dependency… So I installed the RPMs again. The following was installed again through zypper.

1/9) Installing: dotnet-apphost-pack-7.0-7.0.14-1.x86_64 ..................................................................................................................[done]
(2/9) Installing: dotnet-host-8.0.0-1.x86_64 ...............................................................................................................................[done]
(3/9) Installing: dotnet-runtime-deps-7.0-7.0.14-1.x86_64 ..................................................................................................................[done]
(4/9) Installing: dotnet-targeting-pack-7.0-7.0.14-1.x86_64 ................................................................................................................[done]
(5/9) Installing: dotnet-hostfxr-7.0-7.0.14-1.x86_64 .......................................................................................................................[done]
(6/9) Installing: aspnetcore-targeting-pack-7.0-7.0.14-1.x86_64 ............................................................................................................[done]
(7/9) Installing: dotnet-runtime-7.0-7.0.14-1.x86_64 .......................................................................................................................[done]
(8/9) Installing: aspnetcore-runtime-7.0-7.0.14-1.x86_64 ...................................................................................................................[done]
(9/9) Installing: dotnet-sdk-7.0-7.0.404-1.x86_64 ..........................................................................................................................[done]

However, the OTD build failed again - with same error.

The entire execution of OTD’s build is here - OTD - Pastebin.com

What am I missing ?

@HonestAbe you install dotnet as your user, you build everything as your user… dotnet should not be in /usr/bin.

Yes, but its just a softlink to my ~/.dotnet/dotnet.

@HonestAbe remove the /usr/bin softlink and put that in ~/bin as per my setup and see if that helps.

Sure.
Also,are you using the digimend kernel as I had mentioned in the first post ?

Else, I’ll just boot up from the pre-digimend kernel and see how it goes.

@HonestAbe I’m on Tumbleweed and Aeon, but also have a Leap systems I could test on. All run standard kernels.

Booted up from pre-digimend initramfs and removed all Digimend related stuff (Udev rule, xorg conf, and a drakut conf to add driver modules ).

A reboot later, the touchpad works ! (tested on Krita and OpenBoard)

All my attempts have made the water really murky, but as and when I upgrade to a new kernel, I’ll come back and update this thread. [I did not have to build OTD again, which is weird]

@malcolmlewis Thank you Sir! I highly appreciate your patience and direction on this. Stay blessed.

1 Like