在 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 年的那篇博客中找到一些软件推荐。
后记
晚两天我会尝试把改过的代码打个包发出来的。