[Kernel/Drive] 解决联想GXTP5100触控板驱动问题 Resolved
Tofloor
poster avatar
caibh
deepin
2025-04-30 22:56
Author

问题

我的电脑是 ThinkBook 16+ 2024 Ultra 9。机器底部写的具体型号是:ThinkBook 16 G6+ IMH。安装了 Deepin V23.1 后发现触控板没反应。

我的型号触控板信息:

caibh@deepin:~$ xinput list
⎡ Virtual core pointer                          id=2    [master pointer  (3)]
⎜   ↳ Virtual core XTEST pointer                id=4    [slave  pointer  (2)]
⎜   ↳ SONiX USB Keyboard Consumer Control       id=9    [slave  pointer  (2)]
⎜   ↳ Logitech G304                             id=11   [slave  pointer  (2)]
⎜   ↳ GXTP5100:00 27C6:01E9                     id=12   [slave  pointer  (2)]  # <---- 这个!!!
⎜   ↳ GXTP5100:00 27C6:01E9                     id=13   [slave  pointer  (2)]
⎣ Virtual core keyboard                         id=3    [master keyboard (2)]
    ↳ Virtual core XTEST keyboard               id=5    [slave  keyboard (3)]
    ↳ Video Bus                                 id=6    [slave  keyboard (3)]
    ↳ Power Button                              id=7    [slave  keyboard (3)]
    ↳ SONiX USB Keyboard                        id=8    [slave  keyboard (3)]
    ↳ SONiX USB Keyboard System Control         id=10   [slave  keyboard (3)]
    ↳ Ideapad extra buttons                     id=14   [slave  keyboard (3)]
    ↳ sof-hda-dsp Headphone                     id=15   [slave  keyboard (3)]
    ↳ Intel HID events                          id=16   [slave  keyboard (3)]
    ↳ Intel HID 5 button array                  id=17   [slave  keyboard (3)]
    ↳ AT Translated Set 2 keyboard              id=18   [slave  keyboard (3)]
    ↳ SONiX USB Keyboard Consumer Control       id=19   [slave  keyboard (3)]
    ↳ Logitech G304                             id=20   [slave  keyboard (3)]

解决

先克隆这里的代码:

git clone https://github.com/ty2/goodix-gt7868q-linux-driver.git

然后 cd 到代码目录下,执行 make 命令,如无意外会报错:

caibh@deepin:~/app/touchpad_driber/goodix-gt7868q-linux-driver$ make
make -C /lib/modules/6.12.20-amd64-desktop-rolling/build/ M=/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver modules
make[1]: 进入目录“/usr/src/linux-headers-6.12.20-amd64-desktop-rolling”
warning: the compiler differs from the one used to build the kernel
  The kernel was built by: gcc (Deepin 12.3.0-17deepin8) 12.3.0
  You are using:           gcc (Deepin 12.3.0-17deepin12) 12.3.0
  CC [M]  /home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.o
/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.c:36:21: error: initialization of ‘const __u8 * (*)(struct hid_device *, __u8 *, unsigned int *)’ {aka ‘const unsigned char * (*)(struct hid_device *, unsigned char *, unsigned int *)’} from incompatible pointer type ‘__u8 * (*)(struct hid_device *, __u8 *, unsigned int *)’ {aka ‘unsigned char * (*)(struct hid_device *, unsigned char *, unsigned int *)’} [-Werror=incompatible-pointer-types]
   36 |     .report_fixup = goodix_gt7868q_report_fixup,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.c:36:21: note: (near initialization for ‘goodix_gt7868q_driver.report_fixup’)
cc1: some warnings being treated as errors
make[3]: *** [scripts/Makefile.build:229:/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver/goodix-gt7868q.o] 错误 1
make[2]: *** [/usr/src/linux-headers-6.12.20-amd64-desktop-rolling/Makefile:1952:/home/caibh/app/touchpad_driber/goodix-gt7868q-linux-driver] 错误 2
make[1]: *** [Makefile:224:__sub-make] 错误 2
make[1]: 离开目录“/usr/src/linux-headers-6.12.20-amd64-desktop-rolling”
make: *** [Makefile:10:all] 错误 2

解决方法是打开 goodix-gt7868q.c 这个文件,修改一下 goodix_gt7868q_report_fixup 的返回值类型,加一个 const 关键字:

// 原来是这样的:
static __u8 *goodix_gt7868q_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)
// 改成这样:
static const __u8 *goodix_gt7868q_report_fixup(struct hid_device *hdev, __u8 *rdesc, unsigned int *rsize)

然后重新编译:

make clean
make

接下来跟着 README.md 里面的步骤做就行:

sudo modprobe ./goodix-gt7868q.ko
sudo make install-dkms
sudo make install-quirks

最后重启一下显示管理器,注销再登录都可以:

sudo systemctl restart lightdm

遗留问题

现在触控板是可以用了,但是发现没法用 FN + F8 来切换触控板的开关,而通过 设置 / 鼠标 / 触控板 / 启用触控板 去控制开关则是没问题的。

希望官方可以解决这个小问题。

参考

Reply Favorite View the author
All Replies
jjcui8595
deepin
Resources Team Moderator
2025-05-01 07:02
#1

like

Reply View the author