Linux driver for pen tablet

Just bought me a pen tablet, and I was hoping to make it work in (Clear)Linux, though it doesn’t come with Linux drivers. System sort of detects … something as a Wacom tablet, though as you can be seen below, detection is not full. Any advice as to how I could make it work? Could this be the answer??

usb-devices shows:

P:  Vendor=256c ProdID=5101 Rev=01.11
S:  Manufacturer=HUION
S:  Product=PenPower RemoteGo LCD Writing Pad

Update: tried some of the Linux drivers from Huion’s website, quite randomly, to no avail.

Looks like a long shot, but start here (paragraph explaining how to use libwacom-list-local-devices and debug devices that don’t show up):

Then take a look at https://opentabletdriver.net/ – I didn’t find the tablet in their database either, but it’s worth a try. You’d have to compile it yourself and try it, but if it’s not too bad, we can try to package it.

You could also try contacting the seller’s support and ask about a Linux driver, although obviously you take additional risk with binary-only support. https://ppdl.zendesk.com/hc/en-001/articles/8659548391449-RemoteGo-LCD-Writing-Pad

1 Like

Thanks! I’m afraid that a bit more hand-holding is required. :blush:

  1. I couldn’t find any libwacom-list-local-devices file in the libwacom-2.9.0 archive, so I don’t know how to use the tool. I tried compiling libwacom-list-local-devices.c, but that threw this error:
dad@DadsGram~/Downloads/libwacom-2.9.0/tools $ gcc list-local-devices.c -o lld
list-local-devices.c:27:10: fatal error: config.h: No such file or directory
   27 | #include "config.h"
      |          ^~~~~~~~~~
compilation terminated.
  1. Is the opentabletdriver route an alternative to libwacom, or is that something that has to be followed in continuation to the libwacom route?
  2. Also, here’s what running run-full-test.sh in libwacom returned:
dad@DadsGram~/Downloads/libwacom-2.9.0 $ ./run-full-test.sh 
####################################### running test suite
The Meson build system
Version: 1.3.0
Source dir: /home/dad/Downloads/libwacom-2.9.0
Build dir: /home/dad/Downloads/libwacom-2.9.0/build.2023-11-30-21.33.47
Build type: native build
Project name: libwacom
Project version: 2.9.0
C compiler for the host machine: gcc (gcc 13.2.1 "gcc (Clear Linux OS for Intel Architecture) 13.2.1 20231115 releases/gcc-13.2.0-463-g5d6f62c9b2")
C linker for the host machine: gcc ld.bfd 2.41
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python3 found: YES (/usr/bin/python3)
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wlogical-op: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Wuninitialized: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES (cached)
Compiler for C supports arguments -Wimplicit-fallthrough: YES 
Compiler for C supports arguments -Wredundant-decls: YES 
Compiler for C supports arguments -Wincompatible-pointer-types: YES 
Compiler for C supports arguments -Wformat=2: YES 
Compiler for C supports arguments -Wsign-compare: YES 
Compiler for C supports arguments -Wmissing-declarations: YES 
Found pkg-config: YES (/usr/bin/pkg-config) 1.9.5
Found CMake: /usr/bin/cmake (3.27.8)
Run-time dependency gudev-1.0 found: NO (tried pkgconfig and cmake)

meson.build:54:15: ERROR: Dependency "gudev-1.0" not found, tried pkgconfig and cmake

A full log can be found at /home/dad/Downloads/libwacom-2.9.0/build.2023-11-30-21.33.47/meson-logs/meson-log.txt
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.

What is the result of this command?

swupd search devpkg-libgudev

Alright, so I installed all missing dependencies, yet libwacom’s run-full-test.sh still returns errors:

dad@DadsGram~/Downloads/libwacom-2.9.0 $ ./run-full-test.sh 
####################################### running test suite
The Meson build system
Version: 1.3.0
Source dir: /home/dad/Downloads/libwacom-2.9.0
Build dir: /home/dad/Downloads/libwacom-2.9.0/build.2023-12-01-10.17.31
Build type: native build
Project name: libwacom
Project version: 2.9.0
C compiler for the host machine: gcc (gcc 13.2.1 "gcc (Clear Linux OS for Intel Architecture) 13.2.1 20231115 releases/gcc-13.2.0-463-g5d6f62c9b2")
C linker for the host machine: gcc ld.bfd 2.41
Host machine cpu family: x86_64
Host machine cpu: x86_64
Program python3 found: YES (/usr/bin/python3)
Compiler for C supports arguments -Wno-unused-parameter: YES 
Compiler for C supports arguments -Wmissing-prototypes: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES 
Compiler for C supports arguments -Wundef: YES 
Compiler for C supports arguments -Wlogical-op: YES 
Compiler for C supports arguments -Wpointer-arith: YES 
Compiler for C supports arguments -Wuninitialized: YES 
Compiler for C supports arguments -Winit-self: YES 
Compiler for C supports arguments -Wstrict-prototypes: YES (cached)
Compiler for C supports arguments -Wimplicit-fallthrough: YES 
Compiler for C supports arguments -Wredundant-decls: YES 
Compiler for C supports arguments -Wincompatible-pointer-types: YES 
Compiler for C supports arguments -Wformat=2: YES 
Compiler for C supports arguments -Wsign-compare: YES 
Compiler for C supports arguments -Wmissing-declarations: YES 
Found pkg-config: YES (/usr/bin/pkg-config) 1.9.5
Run-time dependency gudev-1.0 found: YES 238
Run-time dependency glib-2.0 found: YES 2.78.1
Run-time dependency libevdev found: YES 1.13.1
Checking for function "g_memdup2" with dependency glib-2.0: YES 
Program test/check-files-in-git.sh found: YES (/home/dad/Downloads/libwacom-2.9.0/test/check-files-in-git.sh)
Configuring libwacom-show-stylus using configuration
Program doxygen skipped: feature documentation disabled
Run-time dependency libxml-2.0 found: YES 2.11.5
Library dl found: YES
Program valgrind found: YES (/usr/bin/valgrind)
Program python3 (libevdev, pyudev, pytest) found: YES (/usr/bin/python3) modules: libevdev, pyudev, pytest
Program pytest found: YES (/usr/bin/pytest)
Configuring config.h using configuration
Build targets in project: 13
NOTICE: Future-deprecated features used:
 * 0.64.0: {'copy arg in configure_file'}

Found ninja-1.11.1 at /usr/bin/ninja
WARNING: Running the setup command as `meson [options]` instead of `meson setup [options]` is ambiguous and deprecated.
ninja: Entering directory `build.2023-12-01-10.17.31'
[28/29] Running all tests.
1/8 libwacom:all / files-in-git                         SKIP            0.02s   exit status 77
2/8 libwacom:all / test-ltversion                       OK              0.00s
3/8 libwacom:all+valgrind / test-stylus-validity        OK              0.02s
4/8 libwacom:all+valgrind / test-tablet-validity        OK              0.05s
5/8 libwacom:all+valgrind / test-svg-validity           OK              0.07s
6/8 libwacom:all+valgrind / test-load                   OK              0.09s
7/8 libwacom:all+valgrind / test-dbverify               OK              0.09s
libwacom:all / pytest time out (After 30 seconds)
8/8 libwacom:all / pytest                               TIMEOUT        30.11s   killed by signal 15 SIGTERM
>>> ASAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1 MESON_SOURCE_ROOT=/home/dad/Downloads/libwacom-2.9.0 UBSAN_OPTIONS=halt_on_error=1:abort_on_error=1:print_summary=1:print_stacktrace=1 MALLOC_PERTURB_=131 /usr/bin/pytest /home/dad/Downloads/libwacom-2.9.0
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――― ✀  ―――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――
============================= test session starts ==============================
platform linux -- Python 3.12.0, pytest-7.4.3, pluggy-1.3.0
rootdir: /home/dad/Downloads/libwacom-2.9.0
plugins: rerunfailures-13.0, tap-3.4, cov-4.1.0, hypothesis-6.91.0, repeat-0.9.2
collected 1954 items

../test/test_data_files.py ............................................. [  2%]
........................................................................ [  5%]
........................................................................ [  9%]
........................................................................ [ 13%]
........................................................................ [ 17%]
........................................................................ [ 20%]
........................................................................ [ 24%]
........................................................................ [ 28%]
........................................................................ [ 31%]
........................................................................ [ 35%]
........................................................................ [ 39%]
........................................................................ [ 42%]
........................................................................ [ 46%]
........................................................................ [ 50%]
........................................................................ [ 53%]
........................................................................ [ 57%]
........................................................................ [ 61%]
........................................................................ [ 64%]
........................................................................ [ 68%]
........................................................................ [ 72%]
........................................................................ [ 75%]
...........................................                              [ 78%]
../test/test_udev_rules.py .....F....................................... [ 80%]
.....................................
――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――――


Summary of Failures:

8/8 libwacom:all / pytest                        TIMEOUT        30.11s   killed by signal 15 SIGTERM

Ok:                 6   
Expected Fail:      0   
Fail:               0   
Unexpected Pass:    0   
Skipped:            1   
Timeout:            1   

Full log written to /home/dad/Downloads/libwacom-2.9.0/build.2023-12-01-10.17.31/meson-logs/testlog.txt
FAILED: meson-internal__test 
/usr/bin/meson test --no-rebuild --print-errorlogs
ninja: build stopped: subcommand failed.

If you have the desktop-apps bundle installed, you already have libwacom, although it’s currently version 2.8.0, so I’ll update it to 2.9.0 in the next release or two.

The bundle devpkg-libwacom provides libwacom-list-local-devices (sudo swupd search-file libwacom-list-local-devices), so you don’t need to build it yourself, nor diagnose the build test failures.

OpenTabletDriver is an alternative. I took a quick look; it’ll take a lot of work for us to package it because it’s .NET, but you could use the precompiled release just to see if it works for you: https://github.com/OpenTabletDriver/OpenTabletDriver/releases/download/v0.6.3.0/opentabletdriver-0.6.3.0-x64.tar.gz

1 Like

Thanks. I tried installing the RPM of the precompiled OpenTabletDriver yesterday, but I don’t think it installed properly. I’ll try the .tar.gz later today. How should I do that though? Would simply unpacking it (from root) do? :thinking:

Guys, what am I doing wrong please??? :thinking:

[Edit: nevermind. Untarring was happening in ~/Downloads. Silly me! :blush: ]

dad@DadsGram~/Downloads $ dotnet --version
6.0.417
dad@DadsGram~/Downloads $ dotnet --info
.NET SDK (reflecting any global.json):
 Version:   6.0.417
 Commit:    04fde1d2e3

Runtime Environment:
 OS Name:     clear-linux-os
 OS Version:  40410
 OS Platform: Linux
 RID:         linux-x64
 Base Path:   /home/dad/.dotnet/sdk/6.0.417/

global.json file:
  Not found

Host:
  Version:      6.0.25
  Architecture: x64
  Commit:       492abbeef0

.NET SDKs installed:
  6.0.417 [/home/dad/.dotnet/sdk]

.NET runtimes installed:
  Microsoft.AspNetCore.App 6.0.25 [/home/dad/.dotnet/shared/Microsoft.AspNetCore.App]
  Microsoft.NETCore.App 6.0.25 [/home/dad/.dotnet/shared/Microsoft.NETCore.App]

Download .NET:
  https://aka.ms/dotnet-download

Learn about .NET Runtimes and SDKs:
  https://aka.ms/dotnet/runtimes-sdk-info
dad@DadsGram~/Downloads $ echo $PATH
/usr/bin/haswell:/usr/local/bin:/usr/bin:/opt/3rd-party/bin:/home/dad/.dotnet:/home/dad/.dotnet/tools
dad@DadsGram~/Downloads $ echo $DOTNET_ROOT
/home/dad/.dotnet
dad@DadsGram~/Downloads $ sudo tar -xvf /opentabletdriver-0.6.3.0-x64.tar.gz --strip 1
opentabletdriver/usr/
opentabletdriver/usr/local/
opentabletdriver/usr/local/bin/
opentabletdriver/usr/local/bin/otd-gui
opentabletdriver/usr/local/bin/otd-daemon
opentabletdriver/usr/local/bin/otd
opentabletdriver/usr/local/lib/
opentabletdriver/usr/local/lib/opentabletdriver/
opentabletdriver/usr/local/lib/opentabletdriver/OpenTabletDriver.UX.Gtk
opentabletdriver/usr/local/lib/opentabletdriver/OpenTabletDriver.Console
opentabletdriver/usr/local/lib/opentabletdriver/OpenTabletDriver.Daemon
opentabletdriver/usr/local/lib/modules-load.d/
opentabletdriver/usr/local/lib/modules-load.d/opentabletdriver.conf
opentabletdriver/usr/local/lib/modprobe.d/
opentabletdriver/usr/local/lib/modprobe.d/99-opentabletdriver.conf
opentabletdriver/usr/local/lib/systemd/
opentabletdriver/usr/local/lib/systemd/user/
opentabletdriver/usr/local/lib/systemd/user/opentabletdriver.service
opentabletdriver/usr/local/share/
opentabletdriver/usr/local/share/doc/
opentabletdriver/usr/local/share/doc/opentabletdriver/
opentabletdriver/usr/local/share/doc/opentabletdriver/LICENSE
opentabletdriver/usr/local/share/man/
opentabletdriver/usr/local/share/man/man8/
opentabletdriver/usr/local/share/man/man8/opentabletdriver.8.gz
opentabletdriver/usr/local/share/pixmaps/
opentabletdriver/usr/local/share/pixmaps/otd.ico
opentabletdriver/usr/local/share/pixmaps/otd.png
opentabletdriver/usr/local/share/applications/
opentabletdriver/usr/local/share/applications/opentabletdriver.desktop
opentabletdriver/etc/
opentabletdriver/etc/udev/
opentabletdriver/etc/udev/rules.d/
opentabletdriver/etc/udev/rules.d/70-opentabletdriver.rules
dad@DadsGram~/Downloads $ sudo systemctl enable opentabletdriver.service
Failed to enable unit: Unit file opentabletdriver.service does not exist.
dad@DadsGram~/Downloads $ systemctl --user enable opentabletdriver.service --now
Failed to enable unit: Unit file opentabletdriver.service does not exist.