Skip to content

Instantly share code, notes, and snippets.

@tgran2028
Forked from m-bartlett/0b.bin
Created August 18, 2024 10:27
Show Gist options
  • Save tgran2028/b55f75581be7edf735c5d321e2903367 to your computer and use it in GitHub Desktop.
Save tgran2028/b55f75581be7edf735c5d321e2903367 to your computer and use it in GitHub Desktop.
Dell XPS 15 9510 / Dell Precision 5560 ELAN touchpad firmware updates (might fix touchpad input lag)

The Dell XPS 15 9510 / Dell Precision 5560 (essentially the same model with slight nuanced differences) ELAN touchpad has some issues with occasional laggy input that noticeably drifts off or ignores input while making slow movements.

This gist captures the gudiance from this post in this thread discussing how to modify the tirmware version: https://gitlab.freedesktop.org/libinput/libinput/-/issues/618#note_1837620

The firmware binaries are shared here respectively named 0b.bin and 0c.bin.

The install-touchpad-firmware requires the fwupd package be installed (or at least this is the name of the package on Arch linux. Search for whichever package contains fwupdtool on your distro).

In short, download the desired firmware(s) and the install-touchpad-firmware script, and execute the install-touchpad-firmware script with the file path of whichever firmware you wish to flash as an argument.

#!/usr/bin/env bash
# sudo pacman -S fwupd
firmware_path="${1:?firmware path required argument}"
echo -ne 'Getting device ID...'
device_id=$(sudo fwupdtool get-devices 2>/dev/null|grep Touchpad -B2|grep -oP 'Device ID: +\K.+$')
echo -e "\r$device_id"
sudo fwupdtool install-blob $firmware_path $device_id
@tgran2028
Copy link
Author

tgran2028 commented Aug 18, 2024

quoted post from: https://gitlab.freedesktop.org/libinput/libinput/-/issues/618#note_1837620

I'll add my experiences here as another data point.

At my workplace we're issued Dell Precision laptops, and I've noticed that some Dell Precision 5570s have ELAN touchpads, and some have Synaptics touchpads.

So, the two touchpads (you can get the id easily with dmesg | grep -i touchpad):

  • ELAN 04F3:311C <-- this is the one with issues
  • Synaptics 06CB:CE7E

My 5570 has these intermittent inertia issues (several times a day), and I was able to upgrade to the 0c firmware, and it fixed all of the inertia issues. HOWEVER, after using it for an entire day, I encountered the "touchpad buttons no longer respond for a couple minutes" issue that others have reported.

Summary of firmwares for ELAN 04F3:311C touchpads:

  • 0x000b: has fairly common inertia issues (in my exp. several times a day)
  • 0x000c: has less common touchpad button issues (in my exp. once a day)

You can download each of the firmware from Dell here:

  • 0x000b
    • Unzip this file, and the firmware is the WinIAP/SF089A-36H0_Fv0x0B.bin file
  • 0x000c
    • Unzip this, and run wine FWUpdate.exe, while the error window is open copy the TP_Bin.bin file somewhere else. This is the firmware file.

You can upgrade/downgrade the firmware of your touchpad with fwupdtool on Linux as others have said. Note, these will have to be run as root (or with sudo, etc). And also do this at your own risk, if you flash the incorrect firmware or if it fails midway, you can get your device into bootloop (seems that this can be fixed if it happens though).

First, get the id of your touchpad with:

$ fwupdmgr get-devices | grep -i touchpad -B2 -A11
├─VEN 04F3:00 04F3:311C:
│     Device ID:          cc9c1b47c3126a46379087db3bf18fa324f317ae
│     Summary:            Touchpad
│     Current version:    0x000b
│     Bootloader Version: 0x0001
│     Vendor:             ELAN Microelectronics (HIDRAW:0x04F3)
│     GUIDs:              46598f8d-5777-50c4-8da9-cda0cc8bbc26 ← HIDRAW\VEN_04F3&DEV_311C
│                         9b6fef1a-77aa-565c-9983-9da2dd2c932b ← HIDRAW\VEN_04F3&DEV_311C&REV_00
│                         d00322f0-ff1f-5458-9c64-8a771fb0b72e ← HIDRAW\VEN_04F3&DEV_311C&MOD_0000
│                         4f9fe0ae-f26e-5c1d-8a4e-a7506fb02f96 ← ELANTP\ICTYPE_13
│                         6cf7ae6a-8b98-5b63-9af8-b23b932f65de ← ELANTP\ICTYPE_13&MOD_0000
│                         ac3627a9-8463-5e63-b6b1-be9e0bcf27d2 ← ELANTP\ICTYPE_13&MOD_0000&DRIVER_HID
│     Device Flags:       • Internal device
│                         • Updatable

My device's id is cc9c1b47c3126a46379087db3bf18fa324f317ae.

Then, with the firmware file, you can flash the firmware with:

$ fwupdtool install-blob path/to/firmware.bin <your device id>

Once it's flashed, your touchpad will have restarted itself and should be working with the new firmware.


I've successfully upgraded to the 0x000c firmware for a while, and successfully downgraded back to the 0x000b firmware too, so there is a way back if you so choose.

Either way, it's not a great solution (issues on either firmware).

I have seen some evidence online of hardware related fixes grounding the touchpad as well, which I haven't tried but might do if I can't get the touchpad/machine replaced. 🤔

Edited 1 year ago by acheronfail

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment