howdy facial recognition with fedora workstation 42
howdy facial recognition with fedora workstation 42
I had a bunch of issues setting it up to work on my laptop, but now that I have I would like to compile all the bits and stuff together into one guide!
source: https://copr.fedorainfracloud.org/coprs/principis/howdy-beta/ and https://github.com/boltgolt/howdy/issues/1004
- install dependencies
downloading: SEE GITHUB ISSUE SECTION “DOWNLOAD DEPENDENCIES” (I can’t post the links!)
installing:
cd ~/Downloads sudo dnf install \ python3-elevate-0.1.3-3.20240124git78e82a8.fc41.noarch.rpm \ python3-keyboard-0.13.5-3.fc41.noarch.rpm \ python3-pyv4l2-1.0.2-3.20240124gitf12f0b3.fc41.x86_64.rpm
installing opencv (note that I had to use pip install for opencv-python, so try that as well!)
sudo dnf install -y opencv opencv-devel opencv-python sudo dnf install -y v4l-utils
When I tried to install howdy from “howdy-beta, an error pops up with “nothing provides python3dist(ffmpeg-python)...”
BettridgeCameron on GitHub is the holy saviour with this fix:
dnf install https://kojipkgs.fedoraproject.org/packages/python-ffmpeg-python/0.2.0/8.fc41/noarch/python3-ffmpeg-python-0.2.0-8.fc41.noarch.rpm
- installing howdy
remove non-beta howdy (it doesn’t seem to work for Fedora 41+)
sudo dnf remove howdy sudo dnf copr remove principis/howdy
install beta howdy
sudo dnf copr enable principis/howdy-beta sudo dnf —refresh install howdy
- use sudo howdy config
device-path: use ls /dev/video*
or v4l2-ctl —list-devices
to see all device paths and test each of them using sudo howdy test
(for me it was /dev/video2
)
settings to change “freedy237” recommends: (note that howdy-beta uses different words e.g. “abort if” rather than “ignore”, make sure you have howdy-beta! This stumped me for a while)
detection_notice = true timeout_notice = true no_confirmation = false suppress_unknown = false abort_if_ssh = true abort_if_lid_closed = true disabled = false use_cnn = false workaround = input certainty = 4.0 timeout = 10 device_path = /dev/video0 # Replace with your detected device warn_no_device = true max_height = 480 frame_width = 640 frame_height = 480 dark_threshold = 80 recording_plugin = opencv device_format = v4l2 force_mjpeg = true exposure = -1 device_fps = 15 rotate = 1
- use
sudo howdy add
to add a face.
Name it anything you want, I go with names like “glasses” and “no-glasses” since…I wear glasses. Some random person on GitHub with a multi-monitor setup has it set to looking at different monitors. Whatever you want, doesn’t really matter.
You can use sudo howdy test
to check if it works. A red outline means it’s an unrecognised face, a green outline with the name means it is a recognises face. no outline means not a face. Also check that whether it is a “dark frame” or not vs a “scan frame”. You might need to set the dark threshold higher using config. (this was an issue I faced as well, for me 80 works)
- howdy on login
sudo nano /etc/pam.d/gdm-password
add: auth sufficient pam_howdy.so
a similar thing can be done for gnome’s password pop ups (e.g. when installing an app) by going to “polkit-1”
- howdy on sudo (you might not want this!)
sudo nano /etc/pam.d/sudo
add: auth sufficient pam_howdy.so no_confirmation
- permissions
sudo chmod o+rw /dev/video*
sudo chmod -R o+rx /usr/share/howdy/dlib-data
sudo chmod +x /usr/bin/howdy
sudo usermod -aG video gdm
sudo chmod 666 /dev/video*
sudo chmod 755 /usr/lib64/security/pam_howdy.so
- fix SELinux perms for login screen
create “howdy.te”
sudo nano howdy.te
add: (as seen on fedora copr repo)
module howdy 1.0; require { type lib_t; type xdm_t; type v4l_device_t; type sysctl_vm_t; class chr_file map; class file { create getattr open read write }; class dir add_name; } #============= xdm_t ============== allow xdm_t lib_t:dir add_name; allow xdm_t lib_t:file { create write }; allow xdm_t sysctl_vm_t:file { getattr open read }; allow xdm_t v4l_device_t:chr_file map;
compile and insert it
checkmodule -M -m -o howdy.mod howdy.te semodule_package -o howdy.pp -m howdy.mod semodule -i howdy.pp
Keep in mind this isn't great for security
Yeah it was mentioned in the github repo near the bottom I think. They really don't want you do use it as your only method of auth. I use it because it's convenient, not for its security.
p.s. howdy is WAY faster at recognising than Windows Hello and doesn't show up the stupid "looking for your face" pop up. Probably bc it isn't as secure (it can be fooled by a picture of your face)