Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Select an option

  • Save kaem-e/e46082172d910defd637772c068377f8 to your computer and use it in GitHub Desktop.

Select an option

Save kaem-e/e46082172d910defd637772c068377f8 to your computer and use it in GitHub Desktop.
This just details how to overeride the default PS2 interface for the touchpad and force it to use RMI4. Not as good as having proper I2C but it makes gestures in gnome and niri SIGNIFICANTLY better on this piece of shit laptop

The Synaptics touchpad on this laptop defaults to a shit basic ps/2 interface on Linux. HP in their infinite wisdom decided to not use an I2C touchpad even though the touchscreen does use i2c (hence why its consistently better feeling in both windows 11 and on linux). And perhaps worse is that by default the legacy ps/2 drivers fight with the RMI4 Protocol from working, so you get absolutely abhorrent trackpad behaviour

The best solution is to override the basic ps/2 fallback and force the kernel to use the RMI4 protocol over SMBus (InterTouch). Still not as good as a native I2C connection but this drastically reduces lag and makes multi-touch gestures in libinput-based compositors (like GNOME and Niri) SIGNIFICANTLY better.

Steps

For GRUB:

  1. Open GRUB config file: sudo micro /etc/default/grub
  2. Find the line starting with GRUB_CMDLINE_LINUX= and append the flags inside the quotes. It should look something like this:
    GRUB_CMDLINE_LINUX="rhgb quiet psmouse.synaptics_intertouch=1 i8042.nomux=1 i8042.nopnp=1"
    
  3. Update GRUB Config:
    • For Ubuntu/Debian/Mint: sudo update-grub
    • For Fedora/RHEL/Arch: sudo grub2-mkconfig -o /boot/grub2/grub.cfg (or /boot/efi/EFI/...) idk the first ones what fedora use

For systemd-boot:

  1. Open your current boot entry config file (usually located in /boot/loader/entries/ or /boot/efi/loader/entries/).
  2. Find the options line and append the flags to the end:
    options root=... rw psmouse.synaptics_intertouch=1 i8042.nomux=1 i8042.nopnp=1
    
  3. reboot

ps: jfc

  • psmouse.synaptics_intertouch=1 - Forces the psmouse driver to route data through the SMBus/RMI4 connection instead of legacy PS/2.
  • i8042.nomux=1 i8042.nopnp=1 - Prevents the legacy PS/2 controller from actively multiplexing/probing the port, preventing IRQ collisions and lag.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment