Upgrading to Ububtu 22.04 -- issues, etc

I recently upgraded to 22.04, and I had previously had the fingerprint reader working, but have ran in to some issues.

the more obvious one is that the fprintd service fails to start.

I’ve reported this here: Automated post-install setup of Ubuntu 20.04 and 22.04 on the Framework - #60 by Allie_Fitter

as it seems at least that is a good way to get back to the state I was in before I started manually messing with this.

But idk — what could the issue be?

Here is the error output from the fprintd service:

❯ sudo service fprintd status
[sudo] password for nullvoxpopuli: 
× fprintd.service - Fingerprint Authentication Daemon
     Loaded: loaded (/lib/systemd/system/fprintd.service; static)
     Active: failed (Result: exit-code) since Mon 2022-05-02 14:57:58 EDT; 53s ago
       Docs: man:fprintd(1)
    Process: 44560 ExecStart=/usr/libexec/fprintd (code=exited, status=127)
   Main PID: 44560 (code=exited, status=127)
        CPU: 84ms

May 02 14:57:57 hephaestus systemd[1]: Starting Fingerprint Authentication Daemon...
May 02 14:57:58 hephaestus fprintd[44560]: /usr/libexec/fprintd: symbol lookup error: /usr/libexec/fprintd: undefined symbol: fp_device_suspend_finish, version LIBFPRINT_2.0.0
May 02 14:57:58 hephaestus systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
May 02 14:57:58 hephaestus systemd[1]: fprintd.service: Failed with result 'exit-code'.
May 02 14:57:58 hephaestus systemd[1]: Failed to start Fingerprint Authentication Daemon.

More context can be found here: Automated post-install setup of Ubuntu 20.04 and 22.04 on the Framework - #86 by NullVoxPopuli
(But since this issue was happening to be before running those scripts (and also before I started manually trying to (un)install stuff), I think this is more a general upgrade issue).


More information

locations of various libfprint *.so files

❯ sudo find / -name "libfprint*so*"
/usr/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0
/usr/lib/x86_64-linux-gnu/libfprint-2.so.2
/usr/lib/x86_64-linux-gnu/libfprint-2-tod.so.1
/usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2
/usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2.0.0
/usr/local/lib/x86_64-linux-gnu/libfprint-2.so
find: ‘/run/user/1000/doc’: Permission denied
find: ‘/run/user/1000/keybase/kbfs’: Permission denied
find: ‘/run/user/1000/gvfs’: Permission denied
find: ‘/tmp/.mount_nvimNH5uRO’: Permission denied
find: ‘/tmp/.mount_nvimi29cO0’: Permission denied
find: ‘/tmp/.mount_nvimwhl7h7’: Permission denied
find: ‘/proc/97833/task/97833/net’: Invalid argument
find: ‘/proc/97833/net’: Invalid argument
find: ‘/proc/103498/task/103498/net’: Invalid argument
find: ‘/proc/103498/net’: Invalid argument

Shared library information (and deps)

❯ ldd /usr/libexec/fprintd
	linux-vdso.so.1 (0x00007ffe94470000)
	libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fbeda5fd000)
	libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007fbeda425000)
	libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007fbeda3c5000)
	libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007fbeda3be000)
	libfprint-2.so.2 => /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2 (0x00007fbed74d2000)
	libpolkit-gobject-1.so.0 => /lib/x86_64-linux-gnu/libpolkit-gobject-1.so.0 (0x00007fbed74b0000)
	libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fbed7288000)
	libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fbed7212000)
	libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fbed712b000)
	libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fbed710f000)
	libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007fbed70cb000)
	libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007fbed709d000)
	libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007fbed7090000)
	libgusb.so.2 => /lib/x86_64-linux-gnu/libgusb.so.2 (0x00007fbed707d000)
	libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007fbed6fb6000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fbeda777000)
	libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007fbed6f7f000)
	libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007fbed6ee6000)
	libusb-1.0.so.0 => /lib/x86_64-linux-gnu/libusb-1.0.so.0 (0x00007fbed6ec9000)
	liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fbed6e9e000)
	libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007fbed6dcf000)
	liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007fbed6daf000)
	libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007fbed6da4000)
	libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007fbed6c64000)
	libudev.so.1 => /lib/x86_64-linux-gnu/libudev.so.1 (0x00007fbed6c3a000)
	libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007fbed6c14000)

service information

❯ sudo systemctl cat fprintd.service
# /lib/systemd/system/fprintd.service
[Unit]
Description=Fingerprint Authentication Daemon
Documentation=man:fprintd(1)

[Service]
Type=dbus
BusName=net.reactivated.Fprint
ExecStart=/usr/libexec/fprintd

# Filesystem lockdown
ProtectSystem=strict
ProtectKernelTunables=true
ProtectKernelLogs=true
ProtectControlGroups=true
# This always corresponds to /var/lib/fprint
StateDirectory=fprint
StateDirectoryMode=0700
ProtectHome=true
PrivateTmp=true

SystemCallFilter=@system-service

# Network
RestrictAddressFamilies=AF_UNIX AF_LOCAL AF_NETLINK

# Execute Mappings
MemoryDenyWriteExecute=true

# Modules
ProtectKernelModules=true

# Real-time
RestrictRealtime=true

# Privilege escalation
NoNewPrivileges=true

# Protect clock, allow USB and SPI device access
ProtectClock=yes
DeviceAllow=char-usb_device rw
DeviceAllow=char-spi rw
DeviceAllow=char-hidraw rw

# Allow tuning USB parameters (wakeup and persist)
ReadWritePaths=/sys/devices

There’s your problem:

	libfprint-2.so.2 => /usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2 (0x00007fbed74d2000)

You have some other version of libfprint, likely manually installed or by some half-assed package that’s left in your /usr/local. That causes fprintd to not use the system-installed one. Delete it, also look around if you see other remnants to delete in /usr/local/lib or /usr/local/bin that you don’t need. Those directories are empty by default and Ubuntu’s packages don’t put anything in there. Whatever’s there came from manual installation or a package that didn’t come from Ubuntu’s repos. If you don’t recognise what’s in there, you should probably delete it.

4 Likes

This is a good example of why we should only install debs from Ubuntu’s repos as well as refrain from installing binaries or libs manually unless absolutely necessary. It’s hard to predict what the side effects of package manager untracked bins/libs would be sometime in the future, especially after we’ve forgotten about them.

As a rule of thumb for minimising breakage like this - stick to Ubuntu’s repos, use Flatpak/Snap for things that aren’t there and only add third party repos that are well regarded, in that order.

2 Likes

This makes sense! Prior to 22.04 / when I first set up my frame.work, I had to set up fingerprint stuff manually – I forget the guide, but it was also on these community forums. :upside_down_face:

yeaaah, I was impatient – fingerprint sudo is just so good

Deleting this file fixed all my problems

/usr/local/lib/x86_64-linux-gnu/libfprint-2.so.2

:tada:

2 Likes

If there are other related things in there - delete them too as other things can break again in the future as other packages get updated and no longer can work against those libs.

1 Like

The only other thing I’ve noticed with the 22.04 upgrade is that the boot screen has this weird Ubuntu rectangle at the bottom of the screen – and it’s look poorly designed / centered / cropped.

Anyone ran in to that or know how to make it look nice?

After upgrading from 21.10 to 22.04, everything seems to work well, but I notice two things.

One: The start screen before log in shows these errors:

kernel: pci 0000:00:07.3: DPC: RP PIO log size 0 is invalid
kernel: pci 0000:00:07.2: DPC: RP PIO log size 0 is invalid
kernel: pci 0000:00:07.1: DPC: RP PIO log size 0 is invalid
kernel: pci 0000:00:07.0: DPC: RP PIO log size 0 is invalid

And two: The display of the built-in camera using “Cheese” is full of video noise. Pictures taken with “Cheese” don’t show the noise, and the camera works fine with other apps (Zoom, Google Meet, OBS Studio).

Has anyone else noticed these? And does anyone know of fixes? Thanks.

1 Like

Doesn’t seem to cause any problems, mostly just annoying. Occurs with Linux Mint 20.3 as well.

In regards to Cheese - it’s just an overly simple toy of a program. It can’t access all the modes or resolutions of the camera. Try Webcamoid.

1 Like

After a bit more than a week, the only issue I’ve encountered after upgrading from Ubuntu 21 is the forced upgrade to the Snap-delivered version of Firefox. That is problematic to me for two reasons:

  • The Snap sandbox model prevents Firefox from communicating with the desktop installation of 1Password (details here). That ends up with a lower-quality experience… for instance I can’t use the fingerprint reader to unlock 1Password for browser forms, etc.
  • The Snap-ified Firefox cannot implement kinetic scrolling in Wayland (some discussion here, likely due to weirdness around how kinetic scrolling must be implemented in Wayland based on the original bug filed here ). Reprogramming my brain & fingers is way to painful.

I’m avoiding both problems by installing the Debian package of Firefox, as discussed here and described in a bit more detail here.

Apart from that, I’m genuinely impressed with how seamless the upgrade has been.

What’s kinetic scrolling?

I have another issue, where when waking from standby (not hibernate), my trackpad has lost its settings.

  • speed or acceleration is nuts
  • tap to click has returned and I accidentally click everything.

I had this problem on Ubuntu 21.xy as well, but I forgot the fix.

Maybe it’s something that could be added to the Salt scripts?

There already is a state (module) for one problem I know about in the formula. If you ran the whole thing it should have been applied. Do a suspend then resume, then check for output like this:

$ sudo dmesg | grep touchpad-suspend-workaround
[  972.167941] touchpad-suspend-workaround: unloading i2c_hid
[11772.977881] touchpad-suspend-workaround: loading i2c_hid
[11773.024529] touchpad-suspend-workaround: unloading i2c_hid
[11778.090797] touchpad-suspend-workaround: loading i2c_hid
[12237.400571] touchpad-suspend-workaround: unloading i2c_hid
[12271.177541] touchpad-suspend-workaround: loading i2c_hid

You should see some lines. If you see lines like that and you still have problems, then go to your BIOS and disable PS/2 emulation.

That said you may have a different/new problem. I haven’t experienced any issues with the touchpad workaround and PS/2 emulation disabled on my laptop. I also use s2idle which generally triggers fewer suspend/resume problems.

ah, I did not have PS/2 emulation disabled in the BIOS.
It was set to auto.

Why is auto a default? :upside_down_face:

Since disabling PS/2 emulation, I’ve not had an issue! yay

Because if it’s disabled you won’t have a mouse in any limited environment like Windows installation setup.

Back to the fingerprint reader.

I seemingly had the same problems as NullVoxPopuli.
Batch 1 device, 1185.
Installed Ubuntu 21.04 and followed early guide in this forum to get the fingerprint reader working.
updated to 21.10, fingerprint reader continued working.

waited to update to 22.04 LTS
when I did, Fingerprint reader stopped working.
Ran your automated script last week.
still not working.
deleted libfprint.so.2.0.2 file as suggested above.
fprintd service still won’t start.
reran automated script.
restarted
fprintd service still won’t start.

does your script pull in the library object files?
how do I restore them?

It installs the required packages libs, etc from Ubuntu’s repos. If you’ve done something custom outside of what the formula did in 20.04 it won’t know what to clean up. It only knows what it did on 20.04.3. That means you’d have to hunt down what’s not working, why and eliminate the problems. In the case of NullVox, he had a nice and clear library loading error in fprintd.service’s log. Then it was a matter of tracing where the library is loaded from. I have no idea what the problem on yours is. See what logs and info he posted. You could try provide the same so we can sniff around.

My logs looked the same as his.

I deleted the usr/local libfprint files as suggested,

But maybe should not have.
Should have just renamed them I guess.

There seems to be no other libfprint files on my system, anywhere.

So I was wondering about restoring them, I don’t usually work at a system level, so no clues or where to start.

What’s your fprintd.service log look like now?

output of sudo service fprintd status

× fprintd.service - Fingerprint Authentication Daemon
Loaded: loaded (/lib/systemd/system/fprintd.service; static)
Active: failed (Result: exit-code) since Sun 2022-05-08 04:56:20 EDT; 37s ago
Docs: man:fprintd(1)
Process: 3100 ExecStart=/usr/libexec/fprintd (code=exited, status=127)
Main PID: 3100 (code=exited, status=127)
CPU: 59ms

May 08 04:56:20 edward-Frame systemd[1]: Starting Fingerprint Authentication Daemon…
May 08 04:56:20 edward-Frame fprintd[3100]: /usr/libexec/fprintd: error while loading shared libraries: libfprint-2.so.2: cannot open shared object file: No >
May 08 04:56:20 edward-Frame systemd[1]: fprintd.service: Main process exited, code=exited, status=127/n/a
May 08 04:56:20 edward-Frame systemd[1]: fprintd.service: Failed with result ‘exit-code’.
May 08 04:56:20 edward-Frame systemd[1]: Failed to start Fingerprint Authentication Daemon.

~$ ldd /usr/libexec/fprintd
linux-vdso.so.1 (0x00007ffd56b34000)
libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f1007d9e000)
libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f1007bc6000)
libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f1007b66000)
libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f1007b5f000)
libfprint-2.so.2 => not found
libpolkit-gobject-1.so.0 => /lib/x86_64-linux-gnu/libpolkit-gobject-1.so.0 (0x00007f1007b3d000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f1007915000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f100789f000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f10077b8000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f100779c000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f1007758000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f100772a000)
libffi.so.8 => /lib/x86_64-linux-gnu/libffi.so.8 (0x00007f100771d000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f1007656000)
/lib64/ld-linux-x86-64.so.2 (0x00007f1007f0c000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f100761f000)
libpcre2-8.so.0 => /lib/x86_64-linux-gnu/libpcre2-8.so.0 (0x00007f1007588000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f100755b000)
libzstd.so.1 => /lib/x86_64-linux-gnu/libzstd.so.1 (0x00007f100748c000)
liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f100746c000)
libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007f1007461000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f1007323000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f10072fb000)

the sudo find command mentioned above has no results.

So I need to find or rebuild the libfprintd-2.so.2 library module and put it in the directory /usr/lib/x86_64-linux-gnu.

freedesk.org website didn’t respond yesterday. That research option didn’t pan out.

It looks like you might have deleted the proper libfprint too. Do exactly:

sudo apt-get --reinstall install fprintd libfprint-2-2 libfprint-2-tod1 gir1.2-fprint-2.0 libpam-fprintd

Reboot and see if it runs. This should restore any manually deleted content belonging to those packages.

Don’t do that. As I said in one of my previous comments, you should try not to manually manipulate system files that belong to deb packages shipped by Ubuntu/Debian. If you placed a file libprint-2.so.2 in /usr/lib/x86_64-linux-gnu yourself, the next time the libfprint-2-2 deb package tries to install or upgrade it will try to place its own version of that file in that location. At that point dpkg will see that there’s an unrecognized file in place and will likely refuse to overwrite it to avoid breaking your system. At the same time dpkg will report a broken package for libfprint-2-2 to apt. Then apt is going to scream about broken packages and won’t install or upgrade anymore until you fix the situation. Long story short, a consistent and problem-free Debian package-based system requires full control over the files that are owned by its packages to ensure the right software is installed in the right places as tested and shipped by upstream maintainers and developers. Hence this rule of thumb:

As a rule of thumb for minimising breakage like this - stick to Ubuntu’s repos, use Flatpak/Snap for things that aren’t there and only add third party repos that are well regarded, in that order.

If you really have to manually place libraries or binaries, put those under /usr/local/... where they won’t clash with any package-owned files.

1 Like