Touchpad not recognizable

On my new Lenovo Yoga Slim 7 14ITL05 (Intel version), the touchpad is not recognizable by any version of NixOS. On Fedora/Ubuntu live everything works fine.

What I have tried:

  • libinput/synaptics turn on/off and vice versa
  • load elan_i2c module via initrd.kernelModules
  • added elan_i2c to blacklistedKernelModules
  • switching kernels 5.10/5.15/5.17
  • dancing with psmouse module

No results. xinput/evtest/libinput doesn’t see my touchpad at all.
But if it works on Ubuntu or Fedora, it could work on NixOS, I just don’t know how to turn it on.

My config Olexiy Galchenko / nixos-config · GitLab

Note: On Lenovo Yoga Slim 7 14ITL05 there is no Fn+“Touchpad On/Off” button. There are no touchpad settings in BIOS.

I see you have services.xserver.libinput.enable = false;. In my https://frame.work laptop I had to enabled it in order for the touchpad to work, I’m using linux 5.17.7

There is also:

you may want to give that a look, as it contains modules for Lenovo ThinkPad L13 Yoga, Lenovo ThinkPad X1 Yoga
and Lenovo ThinkPad X13 Yoga. It may solve your problem

Thanks for the reply.
libinput\synaptics won’t help.
I already tested some solutions from nix-hardware, with no results.

Anything in dmesg or journalctl?

Nothing for ‘touch’/‘synap’/‘elan’.

Nothing there, same for

lshw https://pastebin.com/dvMhWhW2

lspci https://pastebin.com/j3J8SsAb

and xinput https://pastebin.com/wJywQZZf

But on Fedora live, there is a device in xinput list, called ELANXXXXXX,

As for me, looks like NixOS ignores this device due to some reason.

The touchpad wasn’t working on NixOS live image, unfortunately. It was working on Fedora and even Ubuntu. Btw, I did the collection of the modules/dmesg/lshw commands output from Fedora live image and compare them all with my current NixOS configuration. Of Fedora, kernel loads hid_multitouch modules and recognizes touchpad like this:

hid-multitouch 0018:04F3:3124.0004: input,hidraw4: I2C HID v1.00 Mouse [ELAN0000:00 04F3:3124] on i2c-ELAN0000:00

I have added this module to the initrd.kernelModules = [ “psmouse” “hid_multitouch”], it’s loaded, but with no touchpad …

stage-1-init: [Sun May 22 11:00:14 UTC 2022] loading module hid_multitouch…

Fedora uses a relatively recent kernel and Ubuntu often backports things. Which kernel version did you just try in your latest comment? Try linuxPackages_latest.

Anything in dmesg?

Now I’m on 5.17.9, before it was 5.17.5

hardware.enableRedistributableFirmware not helping

lshw https://pastebin.com/dvMhWhW2
lspci https://pastebin.com/j3J8SsAb
xinput https://pastebin.com/wJywQZZf
dmesg https://pastebin.com/Q2H0aPxD

I’m having an issue with a synaptics touchpad since kernel 5.19 ref Synpatics touchpad missing with kernel 5.19 · Issue #185623 · NixOS/nixpkgs · GitHub which is admittedly a different albeit related problem.

I am having the same problem. Works with kernel 5.18 but not 5.19.

The fix has already been merged to master.

If you want a workaround (requires compiling the kernel locally which is anything but quick):

        boot.kernelPatches =  [
          {
            name = "pinctrl_amd";
            patch = null;
            extraConfig = ''
              PINCTRL_AMD y
            '';
          }
        ];

Hello, I have the same problem.

I also have a Lenovo Yoga Slim 7 (15IMH05).
I am very new to NixOs.

@peterhoeg said that a fixed has been merged, but the version of NixOs that i have (22.11 Raccoon) still doesn’t work to me.

I tryed to copy paste the workaround, but it doesn’t worked.
Do you have any idea how to fix this bug ?
@AlexG Did you fix it ?
Sorry to revive this topic, I’m also new to forums

I was having the same issue with my Lenovo Yoga Slim 7.

I noticed that when in the shell, there would be an error popping up every time I touched the touchpad. This error was in relation to elan_i2c, which is a kernel module.

I did some digging and found out that disabling the elan_i2c module my touchpad would work.
This was found on the Arch Linux forums:
https://bbs.archlinux.org/viewtopic.php?id=266406

To disable the module I added the following line to my configuration.nix file:

boot.blacklistedKernelModules = [ "elan_i2c" ];

Just a side note I didn’t need libinput.enable = true; to work.