Peng's Blog

Peng's Blog

马上订阅 Peng's Blog RSS 更新: https://pengs.top/atom.xml

在ThinkBook 16+ 2025上安装archlinux驯服记录【基本信息与触摸板修复】

2025年8月17日 14:55

thinkbook

(网图,侵删)

高考结束啦,我如愿以偿地录取到了计算与智能科学专业,当然要奖励自己一台称心的电脑啦!

选电脑是一门学问(咳咳)目前来看,市面上的笔记本电脑主要有以下几类:

  • 轻薄本:质量轻、便携是最大优势,续航一般也不错,但处理性能羸弱、接口少。主要就上网冲浪、编辑文字,不考虑。
  • 全能本:性能较强,性能较好,质量稍大,接口丰富,外观低调,但容易溢价。续航稍微弱一点,差不多8小时。
  • 移动工作站:性能超强,续航一般,重量很重,价格很贵
  • 游戏本:性能Max,屏幕Max,重量Max,价格High,续航差。
  • Mac:贵,屏幕好,续航长,审美不错,*nix系统,程序员易上手。生态已经较为完善了,但还可以进步。
  • 鸿蒙笔记本:不可用。(本科四年只用这个我敬你是条汉子)

结合价格、配置、品牌等多方面因素,我最终购买了ThinkBook 16+ 2025 Ultra9 285H 核显版,属于高性能全能本了,价格国补完7000元左右,可以接受。质量2kg左右,对于我一个年轻小伙来说不算事,只是单手拿久了会累。

主要配置信息

  • 处理器:英特尔酷睿Ultra 9 285H,16核心/16线程,最高睿频5.4GHz
  • 内存:三星 2*16GB DDR5 5600MT/s
  • 硬盘:忆联AM541,1TB M.2 2242 PCIe Gen4固态硬盘
  • 显卡:英特尔Arc 140T核显
  • 屏幕:联想16英寸IPS屏,3200×2000分辨率,165Hz刷新率,100%DCI-P3色域
  • 网卡:Intel BE201,支持802.11 a/b/g/n/ac/ax/be(WiFi7)
  • 电池:85Wh

第一次live CD

其实用的不是官方启动映像,之前在一个比较小的移动固态硬盘上安装了archlinux,打造了一个Linux To Go. 经过测试,默认情况下,除了触摸板、指纹识别器、静音指示灯无法工作以外,其他硬件似乎都正常。最大的问题在于续航,那个安装里没有安装TLP,也没有开启什么节能选项。查看powertop发现功耗达到了惊人的17W.

调校目标

体验了一小会儿之后,我确定了如下努力方向:

  1. 修复触摸板问题,因为绝大多数时候,我都不会使用鼠标。
  2. 音频播放有问题:系统音效正常,但连续播放一会儿音频后,声音中断,此后就没有声音了,我有时候需要用电脑放音乐,因此这一点难以接受。
  3. 尽量压低功耗。在Windows上通过AID64查看闲置功率约7W,希望在archlinux上实现接近水平(不打算单独写文章了,降低屏幕亮度,安装tlp并配置得当,把i915驱动替换为xe就够了)
  4. 实现Windows下同款的OEM功能:联想Fn+Q切换性能模式通过逆向ACPI我已经实现了,然后发现感知不到差异(没有卵用)
  5. 这款笔记本键盘上有一个目前派不上任何用处的Copilot按键,但是竟然连PrtSc/SysRq键都没有,我希望通过按键映射配置Copilot按键为PrtSc/SysRq.(参考了这个帖子已经解决,值得注意的是,如果想要像我一样把copilot键映射为PrtSc截图键,实际上在keyd配置文件中要写sysrq

现在,开始侦查

现在,开始侦查

(这是和Gemini Vibe Coding的时候要Gemini给我修复一个它自己引入Bug,然后它自信满满满地要搞定这个Bug,但是失败了)

由于触摸板是我使用频率最高的输入方式,所以我首先展开了对触摸板的修复。

通过在互联网上的检索,我得知问题的源头在于这款笔记本电脑使用的触摸板为Goodix GXTP5100 方案压力感应板 (Force Pad)

Force Pad没有按键,而是在整个触控区域感知压力的变化,发出信号,从而实现点击等功能。这导致它的驱动工作方式有别于一般的触摸板,而linux桌面环境下处理触摸板的libinput没能很好地处理这一点,致使其失灵。

解决

  1. 升级至最新内核

不用说,有的时候其实上游已经解决了这个问题。像本文提到的这个问题,其实社区已经注意到了,有望在未来修复。

  1. 创建libinput配置文件

因为libinput不能正确处理GXTP5100这块触摸板,我们需要手动告知其处理方式:

首先创建文件/usr/share/libinput/60-custom-thinkbookg7p2025iah.quirks

然后写入:

1
2
3
4
5
[Lenovo ThinkBook 16 G7+ IAH touchpad]
MatchName=*GXTP5100*
MatchDMIModalias=dmi:*svnLENOVO:*pvrThinkBook16G7+IAH*:*
MatchUdevType=touchpad
ModelPressurePad=1

重启,问题修复。

致谢

感谢尼特子很辛苦哟文章,这算是社区中较早摸清问题脉络,给出解决方案的人了。很佩服,希望以后我能像他一样!

这篇文章有点水,下一篇讲我怎么修复linux播放一段时间音乐之后声音消失的问题的。我一开始怀疑是tlp的节能设置,后来怀疑是wireplumber的bug,最后发现是pipewire的默认值不太适合我的设备。

欢迎阅读解决linux系统下pipewire作为音频服务器持续播放声音中断问题