[TRACKING] Fingerprint reader failing to register on 13th gen

Thanks for your work on this!

Scott =)

1 Like

I’ve just replaced my fingerprint reader with a new one from the Marketplace, and I can’t get fprintd to allow me to enroll fingerprints on it.

Running fprintd-enroll -f 'finger' results in the following:

failed to claim device: GDBus.Error:net.reactivated.Fprint.Error.Internal: Open failed with error: Please update firmware using fwupd

Running fwupdtool update && fwupdtool get-devices shows that no new firmware is available:

Devices with no available firmware updates: 
 • Fingerprint Sensor

fprintd can somewhat communicate with it, since running fprintd-list user shows:

found 1 devices
Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
User user has no fingers enrolled for Goodix MOC Fingerprint Sensor.

It looks like an issue with the firmware and libfprint on the new module, in the Goodix drivers specifically, on the firmware type matching being done: libfprint/drivers/goodixmoc/goodix.c · master · libfprint / libfprint · GitLab

The listed firmware for the device is here:

├─Fingerprint Sensor:
│     Summary:            Match-On-Chip fingerprint sensor
│     Current version:    01000320
│     Vendor:             Goodix (USB:0x27C6)
│     Install Duration:   10 seconds
│     Serial Number:      UIDXXXXXXXX_XXXX_MOC_B0
│     Device Flags:       • Updatable
│                         • Device can recover flash failures
│                         • Signed Payload

Model Number should be supported: 27c6:609c
https://gitlab.freedesktop.org/libfprint/libfprint/-/blob/master/libfprint/drivers/goodixmoc/goodix.c#L1364

Has anyone else encountered this issue? Is this a new vendor firmware that libfprint will need the driver updated for?


Update: The reported Firmware Type on the new module is MT_EVK instead of APP, so is being rejected by the libfprint goodix driver

(fprintd:271964): libfprint-goodixmoc-DEBUG: 15:57:56.915: Firmware type: MT_EVK
1 Like

After re-building libfprint and fprintd to allow for the different firmware response, it does look like there’s additional changes needed to support this new device firmware.

Enrollment throws the below warning and exits.

(fprintd:1474073): fprintd-WARNING **: 23:47:58.440: Device reported an error during identify for enroll: Corrupted message received

Verify returns correctly, but more errors are thrown in the logs:

(fprintd:1474073): libfprint-SSM-DEBUG: 23:47:58.440: [goodixmoc] verify completed with error: Corrupted message received

Anyone else see this firmware version even available in fwupd?
Are the new 12th gen laptops shipping with this new firmware in the readers, or is this specific to the Marketplace components?

I swapped back my older module for now to compare more directly with the new one.

Tangent: My older module is still functional, but the adhesive in the housing has deteriorated, causing the face of it to tilt and lift, hence the replacement. I suspect this is due to 90% of my usage of the device is while having the lid closed and doing CPU heavy work, causing excessive heat buildup in the case.

Both modules are physically the same.

The link on the parts doesn’t lead anywhere:

lsusb shows the same device ID for both, the 27c6:609c:

Bus 003 Device 003: ID 27c6:609c Shenzhen Goodix Technology Co.,Ltd. Goodix USB2.0 MISC

fwupdtool get-devices shows the firmware of the older version as 01000248 (vs the 01000320 of the newer module), which appears to be the only difference

Fingerprint Sensor:
│     Summary:            Match-On-Chip fingerprint sensor
│     Current version:    01000248
│     Vendor:             Goodix (USB:0x27C6)
│     Install Duration:   10 seconds
│     Serial Number:      UID4798E7E4_XXXX_MOC_B0
│     Device Flags:       • Updatable
│                         • Device can recover flash failures
│                         • Signed Payload

fwupdtool get-updates shows the same as before, that no firmware updates are available:

Devices with no available firmware updates: 
 • Fingerprint Sensor

I have been unsuccessful so far in locating a method to obtain or downgrade / upgrade the firmware in the Goodix device, regardless of OS.

It appears there’s been some discussion of fwupd here:

And some linux driver work here, but this specific device is currently omitted: GitHub - goodix-fp-linux-dev/goodix-fp-dump: All our work to make Goodix fingerprint sensors work on Linux. Thanks to @markusressel and @PJungkamp for sponsoring.

Framework currently lists compatibility with libfprint 1.92.0 or newer: Fingerprint enrollment
I can confirm this newer firmware does not work for the latest libfprint v1.94.5 · libfprint / libfprint · GitLab

Was this firmware change on Marketplace shipped parts intentional?
If so, was it tested with any linux distribution by Framework?
And is there/will there be a method supplied by either Goodix / Framework for updating/downgrading the firmware for Linux compatibility?

You might try to clear the storage with this tool: [TRACKING] Fingerprint scanner compatibility with linux (ubuntu, fedora, etc) - #214 by Devyn_Cairns

Thanks for the suggestion, I actually did try the python script shared slightly earlier in the thread:

It failed to communicate with the reader in the same way as listed above.

I’m confident there should be no fingerprints stored on the new module as

  • I purchased the module new from the Marketplace
  • I only have Linux installed on my Framework
  • I haven’t gotten to the point with the module to be able to register a fingerprint yet

Standard libfprint bails out when doing the firmware verify since the response from the module is the MT_EVK instead of APP as expected, so it can’t get past that to even start querying the stored prints.

1 Like

It’s a long shot. The python script can be flaky. I have had it work, and had it not work. The appimage has worked for me when the python script did not. My thinking was in case there is anything somehow leftover. You could try putting the old one back in, running the appimage program, then putting the new one in, and seeing if anything changes. As noted, odds are low.

If you have not already done so, I would definitely reach out to Support.

Edit to add, catching up on this. You were way ahead of any of my suggestions. I’d definitely reach out to Support. If you’re really bored, what happens if you run windows on a windows-to-go usb or the like? Also, not that it matters regarding the issue you’re having, but out of curiosity, what distro are you running?

@Matt_Hartley - you might be interested in this one.

Thanks for the input, I had thought about throwing Windows on a drive and checking it out, I’d expect it to work. I’ll probably swap back to the new module and try that this evening.

I’ve opened a support ticket, waiting to hear back.

I’m currently running Arch Linux.

Thanks for the reply. I will be following this to see where it winds up. Hopefully Support is able to help you get a resolution. The firmware difference is concerning.

I was going to ask which distribution this was affecting, but this appears to be a firmware issue and needs to have a firmware ticket opened for it.

@Matt_Hartley I have a support ticket open currently.

Does Framework have a process in place to inform about firmware updates to components?

Update:

I started a Windows 10 VM, and forwarded the Goodix USB interface to it.
Windows recognized that it was a Goodix device, but was unable to communicate with it, and Windows Update did not have any standard drivers for it.

I then installed the Framework Driver bundle for Windows 10, and the fingerprint sensor was recognized by Windows.

Switching back to linux, the driver installation on Windows has reverted the firmware version to 01000248 and now the sensor can communicate with libfprint, and I’m able to register prints.

So, we now have a way to revert the firmware to a compatible version.

But why does the driver package for Windows load an older firmware into the sensor? I was not expecting a driver installer to change firmware on a device without additional user input / confirmation.

1 Like

For 11th gen: Framework Laptop BIOS and Driver Releases (11th Gen Intel® Core™)

For 12th gen: Framework Laptop BIOS and Driver Releases (12th Gen Intel® Core™)

For testing releases, you’ll find them announced: https://community.frame.work/search?q=bios%20%23general

These pages cover Drivers / BIOS firmware for the mainboard, but if smaller components (like the fingerprint reader) are having firmware updated / changed by the driver install, it would be great to have that info listed in addition to the driver version info.

e.g. 3.12804.0.140 as listed for the Goodix Fingerprint Driver version doesn’t equate to anything for a Linux distro, as typically they wouldn’t be installing/running Windows driver packages.

I just replaced the fingerprint sensor on my 11th Gen Manjaro laptop. The power light is now working, but the fingerprint sensor fails with the errors listed in this thread.

├─Fingerprint Sensor:
│     Summary:            Match-On-Chip fingerprint sensor
│     Current version:    01000320
│     Vendor:             Goodix (USB:0x27C6)
│     Install Duration:   10 seconds
│     Serial Number:      UIDXXXXXXXX_XXXX_MOC_B0
│     Device Flags:       • Updatable
│                         • Device can recover flash failures
│                         • Signed Payload

Is there any sort of resolution for this yet?

Version 01000320 (matching the version I got mine with) still doesn’t work with the fprintd lib AFAIK.

There was never an official resolution from the Framework side of things on this, after I informed support that using the Windows driver installer in a VM changed the firmware version, allowing the reader to work, the issue was closed.

If you want to perform the same “fix” as I did, you can grab the 11th Gen Driver Bundle and then either

  • Boot Windows and run the driver installer
  • Boot a Windows VM, use USB passthrough to allow Windows to use the reader, and then run the driver installer

I’m thinking this firmware version issue is only affecting Marketplace parts, since I feel like we’d be hearing more from other linux users with this issue if the readers in the laptops were shipping with incompatible versions installed.

Ah, Manjaro and LightDM. I had to pull official fingerprint reader support because it broke on the Manjaro side of things recently. It should still be usable for sudo, but logging is not supported (officially).

All that said, GNOME based desktops are recommended. You can also see if things are running correctly on the backend. But you will not get this working (easily or reliably) with LightDM in my experience as of late. I’m officially supporting Ubuntu and Fedora for fingerprint reading.

You can have a look here and make sure the hardware detection and service is running.

journalctl -r -u fprintd.service
and
systemctl status fprintd

This will allow us to make sure the backend (outside of Manjaro. XFCE, etc) are able to use the hardware on supported GNOME environments.

Hi Matt,

I guess I should have been more specific.

  • I’m running Manjaro/GNOME.
  • I never use the fingerprint reader to log in, but only for unlocking and sudo privileges after I’ve logged in.
  • The fingerprint reader worked fine for months, but the power light was broken. I ordered and installed a new reader. Now the power light works but the fingerprint reader doesn’t. The only change was the new fingerprint reader.
  • Support suggested I test with Ubuntu, which I just did. I get the exact same error.
$ journalctl -r -u fprintd.service

Feb 23 19:28:59 richtl-framework systemd[1]: fprintd.service: Deactivated successfully.
Feb 23 19:28:27 richtl-framework fprintd[1262]: libusb: error [udev_hotplug_event] ignoring udev action change
Feb 23 19:28:27 richtl-framework systemd[1]: Started Fingerprint Authentication Daemon.
Feb 23 19:28:27 richtl-framework fprintd[1262]: libusb: error [udev_hotplug_event] ignoring udev action change
Feb 23 19:28:27 richtl-framework systemd[1]: Starting Fingerprint Authentication Daemon...

and

$ systemctl status fprintd

○ fprintd.service - Fingerprint Authentication Daemon
     Loaded: loaded (/usr/lib/systemd/system/fprintd.service; static)
     Active: inactive (dead)
       Docs: man:fprintd(1)

I suggest to run fprintd in the terminal and see what messages it spawns.

Nice idea.

$ fprintd-list me

found 1 devices
Device at /net/reactivated/Fprint/Device/0
Using device /net/reactivated/Fprint/Device/0
User me has no fingers enrolled for Goodix MOC Fingerprint Sensor.

$ fprintd-enroll me

Using device /net/reactivated/Fprint/Device/0
failed to claim device: GDBus.Error:net.reactivated.Fprint.Error.Internal: Open failed with error: Please update firmware using fwupd