ThinkBook16+ 2025 Ubuntu系统 GXTP5100触摸板失灵解决方案
尼特子很辛苦哟
编辑于 2025年07月05日 02:40

0. 排查背景

  • 在为 ThinkBook 16+ 2025款笔电安装 Ubuntu 双系统的过程中,遇到了触摸板无法移动的问题。摸鱼调查了一下整个问题的背景,输出一篇文档做个记录。

1. 问题症状

设备信息如下:

  • 设备型号: 联想 ThinkBook 16+ 2025款

  • 触摸板: Goodix GXTP5100 方案压力感应板 (Force Pad)

  • 操作系统: Ubuntu 24.04

  • 问题现象: 触摸板可以响应物理点按(能感觉到力回馈并触发点击),但单指或多指在其表面滑动时,鼠标光标没有任何移动。

2. 问题分析

此问题的根源较为复杂,是硬件固件与 Linux 驱动演进过程中的适配问题。

1.硬件背景: ThinkBook 近年来的中高端型号开始采用 Goodix 的 GXTP5100 压力感应板方案。

2.问题的演变:

  • 第一阶段 (2024款): 早期的 GXTP5100 方案在刚发布时,Linux 内核并未提供原生支持。社区通过提交补丁(可参考 Arch Linux 中文社区的讨论: https://bbs.archlinuxcn.org/viewtopic.php?id=14053),使其被内核的 hid-multitouch 驱动识别(通常是应用一个针对 GT7868Q 的修复 fixup)。这个修复在 Ubuntu 24.10 等较新的系统中已经集成,解决了老款设备的基本可用性问题。

  • 第二阶段 (2025款): 2025款机型对 GXTP5100 方案进行了硬件或固件升级,使其成为一个功能更完整的压力感应板 (Force Pad)。然而,这个新固件在向操作系统“自我介绍”时,存在缺陷:它未能正确地向系统宣告自己是“压力感应板”。这个问题的上游修复,可以参考 libinput 的官方合并请求: https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1150;社区中也出现了关于类似设备(如 ThinkPad X9-15)的相同问题讨论,可参考 Fedora 社区的这个帖子: https://forums.fedoraforum.org/showthread.php?334210-Touchpad-is-not-reacting-after-installing-Fedora-41-on-ThinkPad-X9-15。

3. 最终结果: 内核虽能通过旧的 fixup 补丁识别到设备,但只把它当作一个普通的触摸板。而上层的 libinput 以错误的方式与其通信,导致移动功能失效。

3. 解决方案

3.1 检查基础驱动的兼容性

在讨论针对 2025 款机型的修复之前,需要先通过内核日志确认系统已具备对 GXTP5100 触摸板的基础识别能力。

1.打开终端,检查系统日志:

代码块
bash
自动换行
复制代码
sudo dmesg | grep -i 'hid-multitouch\|hid-generic'
复制成功

2.分析输出内容:

代码块
bash
自动换行
复制代码
[ 0.802346] hid-generic 0018:27C6:01E9.0001: item 0 1 0 11 parsing failed
[ 0.802359] hid-generic 0018:27C6:01E9.0001: probe with driver hid-generic failed with error -22
[ 0.804571] hid-multitouch 0018:27C6:01E9.0001: GT7868Q report descriptor fixup is applied.
复制成功

此日志的核心信息是 fixup is applied。它表明,虽然通用驱动无法识别此触摸板,但内核中一个更专业的驱动 (hid-multitouch) 已成功介入并为其加载了一个兼容性补丁。

PS: 如果 dmesg输出缺乏上述日志,说明系统版本过旧。需要先解决这个问题,请参照以下两个方案之一:

  1. 将发行版升级到最新版本,例如将 Ubuntu 升级到 24.10 或更高版本。

  2. 参考社区提供的早期解决方案进行手动打补丁,例如查阅 Arch Linux 中文社区的讨论: https://bbs.archlinuxcn.org/viewtopic.php?id=14053 。

3.2 创建配置文件以校准触摸板

此步骤的核心,是手动创建一个 libinput 的特殊配置文件。这个文件会强制系统将此触摸板识别为压力感应板,从而启用正确的驱动模式。

1.获取本机硬件ID (DMI Modalias)

代码块
bash
自动换行
复制代码
 cat /sys/class/dmi/id/modalias
复制成功

2.创建配置目录和文件

代码块
bash
自动换行
复制代码
sudo mkdir -p /etc/libinput/
sudo vim /etc/libinput/local-overrides.quirks
复制成功

3.写入、修改并保存配置

代码块
bash
自动换行
复制代码
# ThinkBook 16 G7+ IAH models come with pressure pads that were not
# correctly declared as such.
[Lenovo ThinkBook 16 G7+ IAH touchpad]
MatchName=*GXTP5100*
MatchDMIModalias=dmi:bvnLENOVO:bvrR5CN45WW:bd04/18/2025:……(填入步骤1中ID)
MatchUdevType=touchpad
ModelPressurePad=1
复制成功

4.重启Ubuntu系统,加载配置文件