- C 86.2%
- Shell 11.4%
- Makefile 2.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .forgejo/workflows | ||
| libfprint-mafp8800 | ||
| mafp8800-spidev | ||
| obs | ||
| .gitignore | ||
| build-local.sh | ||
| README.md | ||
mafp8800-tumbleweed
openSUSE Tumbleweed packages for the Microarray MAFP8800 fingerprint reader
of the GPD MicroPC 2 (ACPI MAFP8800, spi-MAFP8800:00).
| directory | OBS package | content |
|---|---|---|
libfprint-mafp8800/ |
libfprint-mafp8800 |
Factory libfprint 1.94.10+tod1 plus the MAFP8800 driver from libfprint MR !580. Builds libfprint-2-2, libfprint-2-tod1, … with the stock names. |
mafp8800-spidev/ |
mafp8800-spidev |
KMP building the in-kernel spidev driver (mafp8800-spidev-kmp-default), plus /usr/lib/modprobe.d/50-mafp8800-spidev.conf (options spidev bufsiz=32768). |
OBS project: home:akusto:mafp8800, sources pulled from this repository
via scmsync (?subdir=<dir>#main).
Why
- The openSUSE kernel has
CONFIG_SPI_SPIDEVdisabled; the libfprint driver needs/dev/spidevN.N. The KMP buildsdrivers/spi/spidev.cfromkernel-sourceunchanged, for every flavor inkernel-syms. - The driver sends whole frames in one
SPI_IOC_MESSAGE; spidev's default 4 KiB buffer is too small, hencebufsiz=32768. - The driver registers
FPI_DEVICE_UDEV_SUBTYPE_SPIDEV, so libfprint's generated70-libfprint-2.rulesloads spidev and bindsspi-MAFP8800:00to it (driver_override). No other SPI device is touched; nothing has to be done by hand after boot. libfprint-mafp8800.patch= the MR driver unchanged + its Meson hunks ported to the 1.94.10+tod1 layout. Everything else in that directory is identical to openSUSE:Factory.
Both packages become obsolete once the Tumbleweed kernel ships spidev and the MR is merged into the libfprint in Factory.
Build
sudo zypper in rpm-build build osc kernel-syms kernel-source
./build-local.sh libfprint-mafp8800 # rpmbuild → /var/tmp/mafp8800-build/<pkg>/RPMS
./build-local.sh mafp8800-spidev
./build-local.sh --osc --project home:akusto:mafp8800 mafp8800-spidev # osc build chroot
Specs keep Release: 0. OBS stamps 100.<CI_CNT>.<B_CNT> (project
config obs/prjconf), build-local.sh stamps 100.0.local, so the rebuilt
libfprint-2-2 sorts above the stock package (Factory release is 3.1).
The KMP is built for the kernel that kernel-syms points to.
Install
sudo zypper ar -f https://download.opensuse.org/repositories/home:/akusto:/mafp8800/openSUSE_Tumbleweed/ mafp8800
sudo zypper in mafp8800-spidev mafp8800-spidev-kmp-default
sudo zypper in --from mafp8800 libfprint-2-2 libfprint-2-tod1
Or install the RPMs from a local build with zypper in <files>. Remove
any manual setup first (/etc/modprobe.d/spidev*.conf, hand-copied
spidev.ko, copies of 70-libfprint-2.rules in /etc/udev/rules.d).
OBS signs the module with the project key (modinfo spidev.ko shows
signer: home:akusto:mafp8800 OBS Project). With Secure Boot on, enroll
that certificate once (osc signkey --sslcert home:akusto:mafp8800 > obs.crt,
mokutil --import obs.crt, confirm at the next boot) or the module will
not load. Locally built modules are unsigned.
Check and use:
ls -l /dev/spidev0.0
cat /sys/module/spidev/parameters/bufsiz # 32768
fprintd-enroll -f right-index-finger
fprintd-verify -f right-index-finger # Verify result: verify-match (done)
PAM (optional): zypper in fprintd-pam && pam-config -a --fprintd. Keep a
root shell open and test sudo -k; sudo true from another terminal before
closing it; pam-config -d --fprintd reverts.
Remove
sudo zypper rm mafp8800-spidev-kmp-default mafp8800-spidev
sudo zypper in --from repo-oss libfprint-2-2 libfprint-2-tod1
sudo zypper rr mafp8800
OBS setup
One-time (see obs/README.md): project meta, osc meta prjconf -F obs/prjconf, package meta with scmsync. OBS does not poll Git; after a
push either run osc service remoterun home:akusto:mafp8800 <package> or
add a Forgejo webhook to
https://api.opensuse.org/trigger/runservice?project=home:akusto:mafp8800&package=<package>
with header Authorization: Token <osc token --create --operation runservice …>.
.forgejo/workflows/obs-sync.yml does the same from Forgejo Actions using
the secrets OBS_TOKEN_LIBFPRINT / OBS_TOKEN_SPIDEV and the variable
OBS_PROJECT.
Updating
- New Factory libfprint: copy tarball, spec,
.changesand patches fromopenSUSE:Factory/libfprint, re-addPatch3, check the patch applies. - New kernel: nothing to do, OBS rebuilds the KMP when
kernel-symschanges.mafp8800-spidev/spidev.cis only the--with vendored_spidevfallback.
License
Packaging files: same terms as the openSUSE packaging they derive from.
libfprint-mafp8800.patch: LGPL-2.1-or-later. spidev.c: GPL-2.0-or-later.