ThinkPad X220's touchpad and the 90W charger

In this post, I’ll describe my experience replacing my stock 65W charger for a 90W charger on a Lenovo ThinkPad X220 and the unintended consequences for the touchpad behaviour. I’ll report what I’ve tried and which solutions and workarounds I’ve found.

The replacement and the issue

When my ThinkPad X220’s charger stopped working, I bought a new one. My former charger was 65W, but this was 90W.

I plugged the new charger and powered on the machine. Everything seemed fine, except the cursor when using the touchpad. If you put your finger on the touchpad, moving it or not, the cursor would start moving erratically around the original position.

Removing the system from AC power would make the issue go away, which meant that the charger was involved.

My system at that time was Fedora 38. Booting into Windows or other distros also showed the problem.

Updating the firmware

This issue is documented here and, as stated in the link, a firmware update was released to solve it. While the file attachment on that page doesn’t work anymore, you can find it for download on this excellent page.

I’m a Linux user. I saw some reports of incompatibility between that new firmware and MacOS, but nothing very concrete about Linux. I couldn’t be sure that it would solve the issue, but I decided to try.

The update software only works on Windows, so I installed a fresh copy of Windows and applied the update.

Windows: Results of the new firmware

As I said, I’m not a Windows user, so I won’t review the results of the update on Windows comprehensively. However, from what I’ve seen on my spare interactions with that OS on the X220, after the firmware update:

  • The Windows 11 installation media still has the issue.
  • A fresh Windows 11 install still has the issue.
  • On a fresh Windows 11 system, after installing the Synaptics driver from Lenovo’s support page, the issue seems gone. However, the cursor now moves much slower.

Linux: libinput flag

On Linux, having tested different distros, the problem persists after the firmware update.

The ArchWiki states that you can set a flag for libinput to address issues on firmware 8.1 (the version to which we updated).

I have applied that flag both on Fedora 38 as on Debian Bookworm. My experience is that, while it brings some improvement, the issue is still present.

Linux: Synaptics

From what I’ve heard, after applying firmware 8.1, the touchpad on X220 is similar to the one on X230.

So I tried a fix for the later available at ArchWiki. It consists in switching to the legacy Synaptics driver and doing some configuration on it.

The package for Synaptics will vary depending on your distro. On Debian, you can install it with sudo apt install xserver-xorg-input-synaptics.

Then, drop the configuration from ArchWiki at /etc/X11/xorg.conf.d/30-touchpad.conf. I’ll paste it here for reference:

Section "InputClass"
    Identifier "touchpad"
    MatchProduct "SynPS/2 Synaptics TouchPad"
    Driver "synaptics"

    # Disable two fingers right mouse click
    Option "TapButton2" "0"

    # fix touchpad resolution
    Option "VertResolution" "100"
    Option "HorizResolution" "65"

    # disable synaptics driver pointer acceleration
    Option "MinSpeed" "1"
    Option "MaxSpeed" "1"

    # tweak the X-server pointer acceleration
    Option "AccelerationProfile" "2"
    Option "AdaptiveDeceleration" "16"
    Option "ConstantDeceleration" "16"
    Option "VelocityScale" "20"
    Option "AccelerationNumerator" "30"
    Option "AccelerationDenominator" "10"
    Option "AccelerationThreshold" "10"

    Option "HorizHysteresis" "100"
    Option "VertHysteresis" "100"

    # fix touchpad scroll speed
    Option "VertScrollDelta" "500"
    Option "HorizScrollDelta" "500"
EndSection

For my taste, the speed of the cursor is a bit slow. I solved it by bumping VelocityScale a bit. Also, if you want to enable tapping to click add:

Option "TapButton1" "1"

Now restart the Xorg server and voilà. On my Debian Bookworm system, the “shaky” behaviour is gone.


All posts · Show comments