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

  1. 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

  1. 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
  1. 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
  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)

  1. 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”

  1. howdy on sudo (you might not want this!)

sudo nano /etc/pam.d/sudo

add: auth sufficient pam_howdy.so no_confirmation

  1. 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

  1. 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
    • sbird@lemmy.worldOP
      link
      fedilink
      English
      arrow-up
      1
      ·
      9 days ago

      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)