USB ID
04f3:0c80
Reported in
Microsoft Surface Laptop Go 2
Source
devices/04f3:0c80/README.md

ELAN ARM-M4 (USB 04f3:0c80)

Status: Partial - enroll and verify work with an experimental local patch, but clearing sensor storage still times out and re-enrolling wipes every stored print.

ELAN "ARM-M4" match-on-chip fingerprint reader, reported in the Surface Laptop Go 2.

What was broken

The USB ID is not in any elanmoc2 ID table, upstream or in the community forks, so a stock install never binds a driver to it. fprintd-enroll fails with NoSuchDevice and the daemon logs:

No driver found for USB device 04F3:0C80

What the fix does

Patches Davide Depau's elanmoc2 branch to add the sensor and three quirks it needs. Only one machine has been tested, and the erase path is not fully solved, so treat this as a lead rather than a finished driver.

The EP83 and no-delete-by-ID leads came from the same quirk pair working on a Surface Laptop Go 1 (04f3:0c5a) on Fedora.

Known limitation

Clearing storage before the first enrollment still fails:

Erase acknowledgement received; waiting for sensor
SSM CLEAR_STORAGE_NUM_STATES failed in state 1 with error: transfer timed out
Failed to clear storage before first enrollment: transfer timed out

fprintd carries on regardless: the following count/identify succeeds, reports zero stored fingers, and enrollment completes. It is not established whether recovery comes from the acknowledgement handling, the added delay, or both. Cold boot, suspend/resume, repeated delete and re-enroll, and multi-finger reliability are all untested.

Build and install

The patch applies to Davide Depau's libfprint fork at commit 11f0316d069cc90c154c8cb0e46478388c5e2a74 ("WIP add 0c7c"), not to the current xerootg branch, where quirk names and surrounding code differ. See patches/README.md for the base commit and docs/BUILD.md for the shared build, install and PAM steps. The deltas for this sensor:

git clone https://gitlab.freedesktop.org/Depau/libfprint.git
cd libfprint
git checkout 11f0316d069cc90c154c8cb0e46478388c5e2a74
git apply /path/to/patches/0001-elanmoc2-add-04f3-0c80.patch

meson setup build-slg2 --prefix=/usr --libdir=lib \
  -Ddoc=false -Dinstalled-tests=false -Ddrivers=elanmoc2
meson compile -C build-slg2
sudo meson install -C build-slg2 --no-rebuild
sudo systemctl restart fprintd

On Arch the GLib development tools must be present, glib-mkenums in particular. Reproduction from a fresh checkout has not been independently tested.

This replaces your distro's libfprint. Keep a way to reinstall the stock package, which will also silently undo this driver on the next update.

Tested on