在 ArchLinux 上完美使用高漫 M6 数位板

没想到这个问题还能产生第三篇博客。

前言

2022 年和 2023 年我针对这个问题写了两篇博客(见 此处此处),非常高兴能够看到博客帮到了一些网友。那个时候我的系统是 Kubuntu 22.04。今年换到 Arch 之后,发现原先使用的 digimend dkms driver 的 fork ( https://github.com/inochisa/digimend-kernel-drivers/tree/huion-kd200 ) 没法正常通过编译了。我完全不懂 Linux 内核,猜测可能是因为 Arch 使用的内核版本比 Ubuntu 新得多导致的。我同时注意到主仓库 ( https://github.com/DIGImend/digimend-kernel-drivers ) 是可以正常通过编译的,于是我参考了 @inochisa 的 fork 手动修改了主仓库的代码然后进行编译,成功适配了高漫 M6。下面简单介绍一下过程。

AUR 中有一些用 digimend 打的包(见 https://aur.archlinux.org/packages?O=0&K=digimend ),但是都已经过时了。我在撰写本文时,这些包的最后更新时间是 2021 年 5 月。因此我们不使用。

本文假设你使用最新的 ArchLinux 系统。另外我使用的桌面环境是 KDE Plasma 6,显示服务器是 Wayland。我不确定 Manjaro 等下游发行版是否同样可用。其实流程都是差不多的,建议读者先看一下 2023 年的那篇博客。

更新系统

sudo pacman -Syu

安装 dkms

sudo pacman -S dkms

安装 linux-headers

默认条件下,这个包应该是自动安装的。你可以执行

sudo pacman -S linux-headers

来确保安装了这个包。本文撰写时,这个包在我的系统中的版本是 6.8.7.arch1-1

克隆 digimend-kernel-drivers 主仓库

git clone git@github.com:DIGImend/digimend-kernel-drivers.git
cd digimend-kernel-drivers

本文撰写时,该仓库的最新 commit 是 edd8dc

修改代码

一共有 4 个文件需要修改。也可以参考 https://github.com/DIGImend/digimend-kernel-drivers/pull/644/files

hid-ids.h

在第 11 行(#define USB_DEVICE_ID_HUION_TABLET2 0x006d)后新增

#define USB_DEVICE_ID_HUION_TABLET3 0x0064

hid-uclogic-core.c

搜索 USB_DEVICE_ID_HUION_TABLET2 字段,该字段应当位于 static const struct hid_device_id uclogic_devices[] 的定义中:

{ HID_USB_DEVICE(USB_VENDOR_ID_HUION,
            USB_DEVICE_ID_HUION_TABLET2) },

在这两行后面添加

{ HID_USB_DEVICE(USB_VENDOR_ID_HUION,
            USB_DEVICE_ID_HUION_TABLET3) },

hid-uclogic-params.c

搜索 USB_DEVICE_ID_HUION_TABLET2 字段,该字段应当位于 uclogic_params_init 函数中一个很长的 swich 语句当中:

case VID_PID(USB_VENDOR_ID_HUION,
        USB_DEVICE_ID_HUION_TABLET2):

在这两行后面添加

case VID_PID(USB_VENDOR_ID_HUION,
        USB_DEVICE_ID_HUION_TABLET3):

xorg.conf

找到第 9 行:

MatchUSBID "5543:006e|256c:006e|256c:006d"

将其修改为:

MatchUSBID "5543:006e|256c:006e|256c:006d|256c:0064"

编译安装

确保你位于 digimend-kernel-drivers 目录中。

(可选)如果先前安装过 digimend 驱动,则要执行

sudo make dkms_uninstall

然后执行

sudo make dkms_install

来编译并安装驱动。

更新 Linux 内核时,系统应当会自动重新编译安装驱动。但如果你发现自动编译出现了错误,那么就应该手动重新编译安装,即先 uninstall,再 install。

后续处理

重启系统,连接数位板,查看数位板是否工作正常。

你可以在 2023 年的那篇博客中找到一些软件推荐。

后记

晚两天我会尝试把改过的代码打个包发出来的。

posted @ 2024-04-29 19:51  Eslzzyl  阅读(379)  评论(1编辑  收藏  举报