X13s and 26.04LTS: opening "Mouse & Touchpad" settings causes instant system crash

Ubuntu Support Template

Ubuntu Version:
Example: 26.04 LTS, 7.0.0-22-generic

Desktop Environment (if applicable):
GNOME

Problem Description:
After upgrading to 26.04 LTS on a Thinkpad x13s, opening the Mouse & Touchpad menu in settings causes an instant system crash. That’s it. Nothing else needed to reproduce.

Rather annoyingly, there isn’t really much in the logs. journalctl -k -b -1 doesn’t give much:

Jun 05 09:02:19 bullfinch kernel: rfkill: input handler disabled
Jun 05 09:04:48 bullfinch kernel: kauditd_printk_skb: 11 callbacks suppressed
Jun 05 09:05:06 bullfinch kernel: ath11k_pci 0006:01:00.0: msdu_done bit in attention is not set

There’s nothing in /var/log/crash either.

Relevant lshw output:

  *-input:7
       product: hid-over-i2c 04F3:000D Mouse
       physical id: e
       logical name: input2
       logical name: /dev/input/event2
       logical name: /dev/input/mouse0
       capabilities: i2c
  *-input:8
       product: hid-over-i2c 06CB:CE5C Mouse
       physical id: f
       logical name: input6
       logical name: /dev/input/event3
       logical name: /dev/input/mouse1
       capabilities: i2c
  *-input:9
       product: hid-over-i2c 06CB:CE5C Touchpad
       physical id: 10
       logical name: input7
       logical name: /dev/input/event4
       logical name: /dev/input/mouse2
       capabilities: i2c
  *-input:10
       product: ekth5015m 04F3:2FE6
       physical id: 11
       logical name: input9
       logical name: /dev/input/event5
       logical name: /dev/input/mouse3
       capabilities: i2c

Does anyone know what extra debugging steps I should take here? This is 100% reproducible.

For what it’s worth, gsettings works and does not cause a crash:

 gsettings list-recursively org.gnome.desktop.peripherals.touchpad
org.gnome.desktop.peripherals.touchpad accel-profile 'default'
org.gnome.desktop.peripherals.touchpad click-method 'default'
org.gnome.desktop.peripherals.touchpad disable-while-typing true
org.gnome.desktop.peripherals.touchpad disable-while-typing-timeout uint32 500
org.gnome.desktop.peripherals.touchpad edge-scrolling-enabled false
org.gnome.desktop.peripherals.touchpad left-handed 'mouse'
org.gnome.desktop.peripherals.touchpad middle-click-emulation false
org.gnome.desktop.peripherals.touchpad natural-scroll true
org.gnome.desktop.peripherals.touchpad send-events 'enabled'
org.gnome.desktop.peripherals.touchpad speed 0.0
org.gnome.desktop.peripherals.touchpad tap-and-drag true
org.gnome.desktop.peripherals.touchpad tap-and-drag-lock false
org.gnome.desktop.peripherals.touchpad tap-button-map 'default'
org.gnome.desktop.peripherals.touchpad tap-to-click false
org.gnome.desktop.peripherals.touchpad two-finger-scrolling-enabled true

Alright, so, it’s not 100% reproducible, but it’s about 70% reproducible. Notably, when it doesn’t cause a total crash, I do get this in the logs:

Jun 05 10:22:32 bullfinch kernel: qcom-venus aa00000.video-codec: wait for cpu and video core idle fail (-110)

I used Claude, ChatGPT and Gemini together to collaborate on this answer. It feels sane to me, but you may want to double check before doing this.

This smells like a kernel panic or a hardware bus lockup, which happens when the system drops dead before it can flush logs to the disk.

The fact that gsettings works perfectly confirms that the software configuration stack is fine. The crash only happens when the GNOME control center UI opens and actively probes the physical hardware (for things like multi-touch capabilities or power states). On the ThinkPad X13s (Snapdragon ARM64), this relies on specific Qualcomm power domains and I2C drivers. An unexpected hardware query here is likely hanging the system bus.

Here is how to isolate and capture the exact cause:

1. Isolate GNOME vs. The Kernel Stack (libinput)

Since gsettings is fine, we need to see if simply querying the hardware outside of the GNOME interface triggers the identical crash.

Install the input utilities and run these from a standard terminal:

sudo apt install libinput-tools

  • Test 1 (Just list the hardware devices): sudo libinput list-devices
  • Test 2 (Monitor input events): sudo libinput debug-events (move your finger on the trackpad while running this)

The Outcome:

  • If it crashes here: It is likely a Kernel/Driver bug (possibly in i2c-hid, i2c-qcom-geni, or the Qualcomm pin controller).
  • If these work fine but GNOME still crashes: It is a User-space bug (likely a GNOME/Wayland interaction trying to read an unmapped hardware property).

2. Capture the “Dying Breath” via SSH

Because local logs aren’t writing to disk fast enough before the hardware resets, the most reliable way to catch the error message is over the network.

  1. Connect to your X13s via SSH from another computer or phone.
  2. In the SSH terminal, run a live kernel monitor:
    sudo dmesg -Tw
  3. On the X13s laptop, open the Mouse & Touchpad settings to trigger the crash.
  4. Watch the SSH terminal. The kernel will often spit out a Kernel Panic or I2C bus timeout over the network terminal a millisecond before the laptop dies.

3. Test with an External Mouse

Plug in a standard USB wired mouse or wireless dongle.

If the panel opens perfectly with an external mouse but crashes only when attempting to read the built-in Elan/Synaptics I2C trackpad devices shown in your lshw, it confirms a power management or clock-gating bug in the Qualcomm I2C stack when GNOME tries to toggle features like natural scrolling.


Next Steps for Bug Reporting

  • If Step 1 crashes the machine, file the bug against the kernel rather than GNOME using: ubuntu-bug linux
  • Explicitly mention that this is on the ThinkPad X13s (ARM64), as the Qualcomm laptop stack undergoes heavy changes between Ubuntu release cycles.
  1. No libinput commands can trigger the crash.
  2. Using SSH does not produce any additional logs
  3. It will still crash with an external mouse
1 Like

Make that journalctl -f, because the journal is actually the consumer of kmsg and only forwards to the dmesg buffer, if I understand the systemd-journald interaction correctly. Plus, everything will be visible, not just the kernel messages/panic, but hopefully also what happened right before.

It may even be worthwhile to set up systemd-journald-remote and not use any form of network encryption, like the SSH tunnel which could contribute to the system not being able to flush out those messages in time before the system goes down.

If there is some way to get to a serial port, possibly with a USB device, that’d be an even better way of doing it – no network stack – ; console=ttyUSB0 is the kernel parameter for this, except the index might be different, so could be ttyUSB1 or whatever.

The point is that those message never make it to persistent storage but might still be visible in the SSH session which follows the (in memory) log in realtime. Also, at least use telnet, if it must be over the network, so as to not add encryption overhead — but do disable or purge telnet after it served this very narrow purpose; it’s dangerous in most any other context.

Yeah, I figured the point was to see if we get any additonal lines that aren’t written to disk.

Alright, well, journalctl -f didn’t make a difference. I think I have a serial to usb cable floating around somewhere, that might be worth a shot.

Okay, so, I haven’t gotten any more logs, but I do have a bit of a smoking gun: hardware acceleration. If I leave hardware acceleration enabled in Firefox, it’ll eventually crash in an identical fashion. No logs, no nothing, just hard-crash. Turn off hardware acceleration, no crashes. I wonder if something similar could be happening here?

Alright, so, it’s possible I’m barking up the wrong tree, but I noticed that running gnome-control-center will instantly reproduce the crash. I tried MESA_LOADER_DRIVER_OVERRIDE=swrast gnome-control-center and that just dumped core. Trace looks like this:

#0  drisw_init_screen (screen=0xbee0295f3f60, driver_name_is_inferred=false) at ../src/gallium/frontends/dri/drisw.c:611
#1  0x0000f8176c52253c in driCreateNewScreen3 (scrn=scrn@entry=0, fd=-1, loader_extensions=0xf817d4780c60 <dri2_loader_extensions>, type=type@entry=DRI_SCREEN_SWRAST, driver_configs=0xbee0293d63e0, 
    driver_name_is_inferred=driver_name_is_inferred@entry=false, has_multibuffer=<optimized out>, data=data@entry=0xbee028bb3650) at ../src/gallium/frontends/dri/dri_util.c:136
#2  0x0000f817d4744200 in dri2_create_screen (disp=disp@entry=0xbee028bb3650) at ../src/egl/drivers/dri2/egl_dri2.c:795
#3  0x0000f817d474ddec in dri2_initialize_wayland_drm (disp=0xbee028bb3650) at ../src/egl/drivers/dri2/platform_wayland.c:2735
#4  dri2_initialize_wayland (disp=disp@entry=0xbee028bb3650) at ../src/egl/drivers/dri2/platform_wayland.c:3288
#5  0x0000f817d4744a50 in dri2_initialize (disp=disp@entry=0xbee028bb3650) at ../src/egl/drivers/dri2/egl_dri2.c:895
#6  0x0000f817d4734070 in eglInitialize (dpy=<optimized out>, major=0xffffd4c25604, minor=0xffffd4c25600) at ../src/egl/main/eglapi.c:697
#7  0x0000f8183e073a80 in ?? () from /usr/lib/aarch64-linux-gnu/libgtk-4.so.1
#8  0x0000f8183e00ffc8 in ?? () from /usr/lib/aarch64-linux-gnu/libgtk-4.so.1
#9  0x0000f8183e073404 in gdk_display_prepare_gl () from /usr/lib/aarch64-linux-gnu/libgtk-4.so.1
#10 0x0000f8183e073760 in gdk_display_create_gl_context () from /usr/lib/aarch64-linux-gnu/libgtk-4.so.1

Given that this is a Snapdragon device — BTW, why did I have to find out by searching for it? Support-Template hint dropped :wink: —, I highly suspect it’s driver / device tree related. The last message in this thread seems to be the solution; I’ve only just read some of the initial message once, so can’t say much else.

seems to match:

Haha, sorry about that, I (unreasonably) assumed everyone knew the x13s is the Wierd Arm Thinkpad.

I tried blacklisting the venus* drivers, and so far it looks like it worked. Going to restart a few more times…

2 Likes

This topic was automatically closed 18 hours after the last reply. New replies are no longer allowed.