Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
richiewu
V2EX  ›  Linux

国产 Touchpad 在 arch 下偶发无法用手势

  •  
  •   richiewu · May 28 · 2915 views

    ricky@archlinux ~> sudo dmesg | grep -i i2c [sudo] password for ricky: [ 0.211745] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PC00.I2C3.TPD0], AE_NOT_FOUND (20251212/dswload2-162) [ 0.211891] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PC00.I2C4.TPL1], AE_NOT_FOUND (20251212/dswload2-162) [ 0.212028] ACPI BIOS Error (bug): Could not resolve symbol [_SB.PC00.I2C5.TPL1], AE_NOT_FOUND (20251212/dswload2-162) [ 0.237528] ACPI: _SB_.PC00.I2C3.PXTC: New power resource [ 0.238649] ACPI: _SB_.PC00.I2C4.PTPL: New power resource [ 0.239054] ACPI: _SB_.PC00.I2C5.PTPL: New power resource [ 1.207616] Modules linked in: i915(+) i2c_algo_bit drm_buddy ttm nvme intel_gtt nvme_core intel_lpss_pci serio_raw video nvme_keyring spi_intel_pci drm_display_helper nvme_auth intel_lpss hkdf spi_intel idma64 wmi cec intel_vsec [ 3.815849] i2c_dev: i2c /dev entries driver [ 4.195336] input: FTSC1000:00 2808:5662 as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-FTSC1000:00/0018:2808:5662.0008/input/input18 [ 4.195401] input: FTSC1000:00 2808:5662 UNKNOWN as /devices/pci0000:00/0000:00:15.0/i2c_designware.0/i2c-0/i2c-FTSC1000:00/0018:2808:5662.0008/input/input20 [ 4.195467] hid-multitouch 0018:2808:5662.0008: input,hidraw7: I2C HID v1.00 Device [FTSC1000:00 2808:5662] on i2c-FTSC1000:00 [ 4.203661] input: TOPS0102:00 35CC:0104 Consumer Control as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-1/i2c-TOPS0102:00/0018:35CC:0104.0009/input/input22 [ 4.205224] input: TOPS0102:00 35CC:0104 Touchpad as /devices/pci0000:00/0000:00:15.1/i2c_designware.1/i2c-1i2c-TOPS0102:00/0018:35CC:0104.0009/input/input23 [ 4.205278] hid-multitouch 0018:35CC:0104.0009: input,hidraw8: I2C HID v1.00 Mouse [TOPS0102:00 35CC:0104] on i2c-TOPS0102:00

    libinput list-devices 识别为两个设备

    Device: TOPS0102:00 35CC:0104 Consumer Control Kernel: /dev/input/event12 Id: i2c:35cc:0104 Group: 5 Seat: seat0, default Capabilities: keyboard pointer Tap-to-click: n/a Tap-and-drag: n/a Tap button map: n/a Tap drag lock: n/a Left-handed: n/a Nat.scrolling: disabled Middle emulation: n/a Calibration: n/a Scroll methods: none Scroll button: n/a Scroll button lock: n/a Click methods: none Clickfinger button map: n/a Disable-w-typing: n/a Disable-w-trackpointing: n/a Accel profiles: n/a Rotation: 0.0 Area rectangle: n/a

    Device: TOPS0102:00 35CC:0104 Touchpad Kernel: /dev/input/event13 Id: i2c:35cc:0104 Group: 5 Seat: seat0, default Size: 130x92mm Capabilities: pointer gesture Tap-to-click: disabled Tap-and-drag: enabled Tap button map: left/right/middle Tap drag lock: disabled Left-handed: disabled Nat.scrolling: disabled Middle emulation: disabled Calibration: n/a Scroll methods: *two-finger edge Scroll button: n/a Scroll button lock: n/a Click methods: *button-areas clickfinger Clickfinger button map: left/right/middle Disable-w-typing: enabled Disable-w-trackpointing: enabled Accel profiles: flat *adaptive custom Rotation: n/a Area rectangle: n/a

    尝试过修改启动内核参数 i2c_hid.reset_suspended=1 还有 ignore dmi ,都没用 偶尔冷启动能用手势,重启就没了,监听输入设备事件就只有左键触发,没有手势

    5 replies    2026-06-10 19:28:38 +08:00
    Aixiaoa
        1
    Aixiaoa  
       7 days ago via iPhone
    我好像遇到了类似问题 我的设备是小新 pro14
    1 偶发触摸板全部失灵
    2 偶发双指手势失灵 可以单指移动光标 不能点击 没有双指滑动手势

    我用的 omarchy 里面附带了一个重启触摸板的功能。我用这个可以恢复。但是觉得太麻烦 想着找个一劳永逸的办法
    我在内核里改了参数 用了几天。暂时没出现问题了。

    主要是我最近才有这问题。这系统装了挺久的了。之前都没问题。
    richiewu
        2
    richiewu  
    OP
       7 days ago
    是的,一开始好好的,用着用着就出问题,我问大模型也改了一些启动参数没用
    你改了哪些呢 @Aixiaoa
    Aixiaoa
        3
    Aixiaoa  
       6 days ago
    @richiewu 抱歉回复这么晚

    我的修复方案是这个

    第 1 步:创建新的 cmdline 内容(去掉冗余,加入 acpi_osi 伪装)
    sudo sh -c 'printf " rtc_cmos.use_acpi_alarm=1 resume=/dev/mapper/root resume_offset=21427144 quiet splash cryptdevice=PARTUUID=11b635b3-5873-4e5a-bd2f-fd5b18017601:root root=/dev/mapper/root zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs acpi_osi=! acpi_osi=\"Windows 2015\"\n" > /tmp/new_cmdline.bin && dd if=/dev/zero bs=1 count=1 >> /tmp/new_cmdline.bin 2>/dev/null && truncate -s 302 /tmp/new_cmdline.bin'

    第 2 步:用 objcopy 替换 UKI 中的 .cmdline 段
    sudo objcopy --update-section .cmdline=/tmp/new_cmdline.bin /boot/EFI/Linux/omarchy_linux.efi /tmp/omarchy_linux_fixed.efi && sudo cp /tmp/omarchy_linux_fixed.efi /boot/EFI/Linux/omarchy_linux.efi

    重启后触摸板应该就正常了。
    原理:删除 cmdline 末尾的 90 字节重复参数,腾出空间加入 `acpi_osi=! acpi_osi="Windows 2015"`,让 BIOS 以为启动的是 Windows 10 ,从而暴露被隐藏的触摸板 I2C 端点。

    以下是我用于测试的不重启办法
    sudo sh -c 'echo "Windows 2015" > /sys/module/acpi/parameters/osi'

    然后检查状态:
    cat /sys/bus/acpi/devices/PNP0C50:00/status

    如果返回 `15`( 0xF )就说明被 BIOS 隐藏的触摸板已经暴露出来了。


    我描述一下我的情况供你参考
    我的设备是小新 PRO14IHU 2021 ,内核版本 Linux 7.0.9-arch2-1 ,最近一段时间出现的这个问题,之前是正常的。

    最开始我以为是电源管理把触摸板设备挂起的问题,禁用了电源管理但是未修复,重启后还是会失效,失效前有一小段时间可用,具体时长不固定。

    但是我驱动复位重新初始化触摸板设备能修复失效问题,猜测和 omarchy 自带的重置触摸板功能应该是相同的,不过我并未去查看 omarchy 对这块的处理是啥。

    后续出现失效,我的触摸板从启动就失效,ACPI 中没有触摸板存在。

    我就去找有没有人和我碰见一样的情况,毕竟之前正常的。我认为应该是更新导致的问题。
    在 CachyOS 的 issue 中找到了#817 ,其中提到内核 7.0.0 移除了针对特定硬件的 ACPI DMI quirk ,I2C 触摸板会被隐藏。和我的症状相符 (PNP0C50:00 的 _STA 返回 0),BIOS 对 Windows 返回 0xF (设备存在),对 Linux 返回 0 (隐藏)。
    https://github.com/CachyOS/linux-cachyos/issues/817

    希望我的办法能对你有用。
    richiewu
        4
    richiewu  
    OP
       6 days ago
    @Aixiaoa 今天测试了确实能用了,我再观察几天,感谢
    richiewu
        5
    richiewu  
    OP
       4 days ago
    @Aixiaoa 加了这两个参数,今天又不行了,还是间歇性抽风
    [I] ricky@archlinux ~ [2]> cat /proc/cmdline
    root=PARTUUID=be904e89-f55e-42ff-b346-7e1fa3ae992c zswap.enabled=0 rootflags=subvol=@ rw rootfstype=btrfs i2c_hid.reset_suspended=1 acpi_osi=! acpi_osi="Windows 2015" usbcore.autosuspend=-1
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   5403 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 09:13 · PVG 17:13 · LAX 02:13 · JFK 05:13
    ♥ Do have faith in what you're doing.