Skip to content

goodixtls511: disable the temperature model so enrolment can finish - #39

Open
finikorg wants to merge 1 commit into
goodix-fp-linux-dev:buildpackagefrom
finikorg:thermal-fix
Open

goodixtls511: disable the temperature model so enrolment can finish#39
finikorg wants to merge 1 commit into
goodix-fp-linux-dev:buildpackagefrom
finikorg:thermal-fix

Conversation

@finikorg

Copy link
Copy Markdown

Problem

On a Goodix TLS 511 (27c6:5110, Huawei MateBook D) enrolment repeatedly
aborts partway with:

Enroll failed with error Device disabled to prevent overheating.

It is not a real thermal condition. fpi-device.c runs a time-based
estimate
of device temperature, and DEFAULT_TEMP_HOT_SECONDS is 180s
(fp-device-private.h:39). The driver never sets temp_hot_seconds, so it
gets that default.

This device is FP_SCAN_TYPE_PRESS with nr_enroll_stages = 20, and each
press contributes a small partial image. A full enrolment therefore needs a
long run of presses, and the 180s cutoff routinely fires first.

Measurements

Three consecutive attempts on the same machine, each stopped by the cutoff
rather than by finishing:

attempt presses accepted outcome
1 12 of 20 cutoff at 180s
2 16 of 20 cutoff at 180s
3 1 of 20 cutoff at 180s

With the model disabled, the same finger and technique enrols 20/20.

Change

dev_class->temp_hot_seconds = -1;

fp-device.c:191 treats a negative value as "temperature management
disabled". This mirrors what four in-tree drivers already do:

libfprint/drivers/goodixmoc/goodix.c:1638
libfprint/drivers/elanmoc/elanmoc.c:1160
libfprint/drivers/fpcmoc/fpc.c:1875
libfprint/drivers/synaptics/synaptics.c:1503

including the other Goodix driver.

Note

Independent of #37, which fixes the sigfm/NBIS algorithm selection. Both are
needed for a working setup on this sensor: #37 makes matching work at all,
this one lets enrolment finish. They touch different lines and do not
conflict.

Tested on Ubuntu 24.04, kernel 6.8.0-138, OpenCV 4.6.0.

The temperature model is a time-based estimate, not a reading from the
device. Its 180s default (DEFAULT_TEMP_HOT_SECONDS) aborts enrolment on
this sensor with "Device disabled to prevent overheating" before the 20
configured stages can be collected: each press yields a small partial
image, so a full enrolment needs a long run of presses.

Measured on a Huawei MateBook D (27c6:5110), enrolment repeatedly
stalled at 12-16 of 20 stages when the cutoff fired. With the model
disabled the same enrolment completes.

goodixmoc, elanmoc, fpcmoc and synaptics all disable it the same way.

Signed-off-by: Andrei Emeltchenko <andrei.emeltchenko@huawei.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant