How to Install Howdy Face Recognition on Fedora, RHEL and AlmaLinux 10

Published: 2026-04-18

A complete guide to setting up Linux face authentication with Howdy, including source compilation, PAM integration, SELinux fixes, and Python dependency troubleshooting.

Introduction

Howdy is a Linux facial authentication system that provides Windows Hello-like face recognition login functionality.

However, installing Howdy on modern Fedora, RHEL, and AlmaLinux systems is not always straightforward. Python dependencies, OpenCV versions, PAM integration, and SELinux security policies can easily cause installation failures.

After testing Howdy on Fedora, RHEL-based distributions, and AlmaLinux 10, I found that compiling Howdy from source provides the most stable installation method.

This guide explains a complete setup process:

Installing required camera tools

Building Howdy from source

Installing face recognition models

Configuring PAM authentication

Fixing SELinux permission problems

Resolving Python dependency issues after system upgrades

Why Install Howdy From Source?

Modern Linux distributions update Python packages frequently.

Installing Howdy directly from distribution packages or pip packages may introduce dependency conflicts, especially on Fedora, RHEL, and AlmaLinux systems.

Common problems include:

Python module version conflicts

OpenCV compatibility issues

PAM authentication failures

Broken imports after system upgrades

For a stable installation, I recommend:

1.Remove previous Howdy installations installed by package managers.

2.Compile Howdy from source.

3.Install dependencies according to the current official documentation.

Mixing DNF, pip, and source installations can make troubleshooting much harder.

The current Howdy release has changed its build process, so older installation commands found online may no longer work.

Installation Overview

The complete installation has three major steps:

1. Install v4l2-ctl

This tool is required to detect and test camera devices.

2. Install Howdy

Compile and install Howdy from source.

3. Install Face Recognition Models

Download the required dlib models.

Once these three components are working, the remaining configuration is relatively simple.

1. Installing v4l2-ctl

The v4l-utils project removed some older build scripts and now uses the modern Meson build system.

Install required build tools:

sudo dnf install -y meson ninja-build gcc gcc-c++ gettext-devel

Clone the latest source code:

mkdir ~/test

cd ~/test

git clone https://git.linuxtv.org/v4l-utils.git

cd v4l-utils

Initialize the Meson build environment:

meson setup build

Compile:

ninja -C build

Install:

sudo ninja -C build install

After installation, the v4l2-ctl command should be available.

Testing Camera Detection

List available camera devices:

v4l2-ctl --list-devices

Example output:

Integrated Camera:

/dev/video2

Check supported camera formats:

v4l2-ctl --device=/dev/video0 --list-formats-ext

or:

v4l2-ctl --device=/dev/video2 --list-formats-ext

Example:

ioctl: VIDIOC_ENUM_FMT
Type: Video Capture
[0]: 'GREY' (8-bit Greyscale)
Size: Discrete 640x360
Interval: Discrete 0.067s (15.000 fps)
Make sure your camera device is detected correctly before continuing.

2. Installing Howdy From Source

Install required system dependencies:

sudo dnf install -y python3-devel cmake opencv opencv-devel pam-devel

Install Python dependencies:

pip3 install --user dlib meson elevate keyboard

Clone the Howdy source:

git clone https://github.com/boltgolt/howdy.git

cd howdy

Build with Meson:

meson setup build

ninja -C build

Install:

sudo ninja -C build install

After installation, verify the Howdy command:

howdy

3. Installing Face Recognition Models

Howdy requires dlib face recognition models.

First locate the installation directories:

sudo find /usr -type d -name "howdy" 2>/dev/null

sudo find /usr -type d -name "dlib-data" 2>/dev/null

Create the model directory if needed:

sudo mkdir -p /usr/local/share/dlib-data/

Download the required model:

cd /usr/local/share/dlib-data/

sudo wget http://dlib.net/files/shape_predictor_5_face_landmarks.dat.bz2

sudo bzip2 -d shape_predictor_5_face_landmarks.dat.bz2

4. Basic Howdy Configuration and Testing

Before configuring PAM authentication, test that Howdy works correctly.

Add Your Face Model

Run:

sudo howdy add

Follow the instructions and complete face registration.

List Registered Faces

Check registered models:

sudo howdy list

Open Howdy Configuration

Edit the configuration:

sudo howdy config

Important settings:

device_path = /dev/video2

dark_threshold = 100

certainty = 4.0

Camera Device Selection

The correct camera device depends on your hardware.

You can check available devices:

v4l2-ctl --list-devices

For laptops with infrared cameras, Howdy usually works better with the IR camera device instead of the normal webcam.

Example:

device_path = /dev/video2

5. PAM Configuration

Howdy integrates with Linux authentication through PAM (Pluggable Authentication Modules).

The PAM configuration controls where facial authentication can be used.

Common locations:

sudo authentication

GNOME login screen

Screen unlocking

Find pam_howdy.so Location

First locate the installed PAM module:

ls -al /usr/local/lib64/security/pam_howdy.so

ls -al /usr/lib64/security/pam_howdy.so

The location depends on how Howdy was installed.

If the file is located in:

/usr/lib64/security/pam_howdy.so

the system can usually find it directly:

pam_howdy.so

If it is installed under:

/usr/local/lib64/security/pam_howdy.so

it is safer to specify the full path:

/usr/local/lib64/security/pam_howdy.so

Enable Howdy for sudo Authentication

Backup the original configuration:

sudo cp /etc/pam.d/sudo /etc/pam.d/sudo.bak

Edit the sudo PAM configuration:

sudo vim /etc/pam.d/sudo

Add Howdy as the first authentication method:

#%PAM-1.0
auth sufficient /usr/local/lib64/security/pam_howdy.so
auth include system-auth
account include system-auth

Now sudo commands can use facial authentication.

Example:

sudo -i

The camera should activate and attempt recognition.

Enable Howdy for GNOME Login and Lock Screen

Backup the GNOME authentication configuration:

sudo cp /etc/pam.d/gdm-password /etc/pam.d/gdm-password.bak

Edit:

sudo vim /etc/pam.d/gdm-password

Add these lines at the top:

auth sufficient /usr/local/lib64/security/pam_howdy.so

auth sufficient pam_unix.so try_first_pass likeauth nullok

The final configuration should look similar to:

auth sufficient /usr/local/lib64/security/pam_howdy.so
auth sufficient pam_unix.so try_first_pass likeauth nullok
auth [success=done ignore=ignore default=bad] pam_selinux_permit.so
auth substack password-auth
auth optional pam_gnome_keyring.so
auth include postlogin

Only the first two authentication lines normally need to be changed.

Understanding PAM Authentication Order

The order of PAM modules is important.

Using:

auth sufficient pam_howdy.so

means:

If face recognition succeeds, authentication succeeds.

If face recognition fails, Linux continues to password authentication.

This provides a safe fallback mechanism.

Your password remains available if:

The camera fails

Lighting conditions are poor

Face recognition cannot identify you

6. Fix Camera Permission Problems

On Fedora, RHEL, and AlmaLinux, camera access is controlled by permissions.

The GNOME display manager user may need access to the video device.

Add the gdm user to the video group:

sudo usermod -aG video gdm
sudo setenforce 0

After this change, reboot the system.

1.Lock the screen:

Win + L

2.Try facial authentication.

If Howdy works correctly with SELinux disabled, the problem is caused by SELinux policy restrictions.

7. Generate SELinux Policy

Check recent SELinux denials:

sudo ausearch -m avc -ts recent

Generate a custom policy:

sudo ausearch -m avc -ts recent | audit2allow -M howdy_camera

Install the generated policy:

sudo semodule -i howdy_camera.pp

The policy is now loaded into the SELinux policy database.

Re-enable SELinux

Enable SELinux enforcement again:

sudo setenforce 1

Reboot:

sudo reboot

Test:

GNOME login

Screen unlock

sudo authentication

If everything works correctly, the temporary policy files can be removed:

rm howdy_camera.*

8. Fix Python Import Problems After System Upgrades

One common problem after Fedora, RHEL, or AlmaLinux upgrades is that Howdy stops recognizing faces.

The reason is usually a Python module path change.

Check installed Python packages:

ls -al /usr/local/lib64/python3.12/site-packages

The Python version may be different depending on your system.

Examples:

/usr/local/lib64/python3.11/site-packages

/usr/local/lib64/python3.12/site-packages

Fix compare.py Import Path

If Howdy cannot find Python modules, add the correct path manually.

Example:

sudo sed -i '/import dlib/i import sys; sys.path.insert(0, "/usr/local/lib64/python3.12/site-packages")' /usr/local/lib64/howdy/compare.py

Replace the Python version according to your system.

Automatic Repair Tool

To simplify this repair process, I created a small helper script:

howdy-fix-compare.sh

Repository:

https://github.com/pixel-jey/devops-handy-tools/blob/main/opt/sh/howdy-fix-compare.sh

The script automatically detects the Python installation path and fixes the Howdy import configuration.

Download the Repair Script

Download:

wget https://github.com/pixel-jey/devops-handy-tools/blob/main/opt/sh/howdy-fix-compare.sh

Make it executable:

chmod a+x howdy-fix-compare.sh

Create a system script directory:

sudo mkdir -p /opt/sh/

Move the script:

sudo mv howdy-fix-compare.sh /opt/sh/

Set ownership:

sudo chown -R root:root /opt/sh/howdy-fix-compare.sh

Create a system command:

sudo ln -s /opt/sh/howdy-fix-compare.sh /usr/bin/howdy-fix-compare

Run:

sudo howdy-fix-compare

9. Complete Verification

After completing all configuration steps, reboot the system:

sudo reboot

Test the following:

GNOME Login

Lock the screen:

Win + L

Try unlocking with face recognition.

sudo Authentication

Run:

sudo -i

Howdy should automatically activate the camera.

Password Fallback

A good authentication system should always provide a fallback.

If face recognition fails:

Enter your password normally.

The system should continue authentication.

This prevents lockout situations caused by:

Camera failure

Poor lighting

Model recognition errors

Hardware changes

10. Troubleshooting Checklist

Camera Not Detected

Check:

v4l2-ctl --list-devices

Verify the correct device:

device_path = /dev/video2

Howdy Command Not Found

Check installation:

which howdy

or:

find /usr -name howdy

PAM Authentication Failure

Check PAM module:

ls -al /usr/local/lib64/security/pam_howdy.so

Verify the path in:

/etc/pam.d/sudo

/etc/pam.d/gdm-password

SELinux Blocking Camera Access

Check:

sudo ausearch -m avc -ts recent

Generate a custom policy if required.

Python Module Error

Check:

ls /usr/local/lib64/python*/site-packages

Run:

sudo howdy-fix-compare

11. Security Recommendations

Howdy provides a convenient biometric authentication method, but facial recognition should not be considered a complete replacement for passwords or hardware security keys.

For maximum security, a good authentication strategy is:

  • Use a strong password
  • Keep password authentication enabled
  • Use biometric authentication as a convenience layer
  • Consider using a hardware security key

Examples of hardware authentication devices:

  • YubiKey
  • FIDO2 security keys
  • Other WebAuthn-compatible devices

A secure authentication flow should always allow password or hardware-key fallback.

Biometric authentication improves convenience, but the security of the entire system depends on the complete authentication design.

12. Howdy Installation Architecture

The complete authentication flow looks like this:

Camera Device
      |
      v
v4l2-ctl / V4L2 Interface
      |
      v
Howdy Face Recognition Engine
      |
      v
dlib Neural Network Models
      |
      v
PAM Authentication Module
      |
      v
GNOME Login / sudo / System Authentication

Each component has a specific responsibility:

| Component | Purpose                          |
| --------- | -------------------------------- |
| v4l2-ctl  | Detect and test camera devices   |
| OpenCV    | Image processing                 |
| dlib      | Face recognition model           |
| Howdy     | Authentication framework         |
| PAM       | Linux authentication integration |
| SELinux   | Security policy enforcement      |

13. Why Source Installation Is Recommended

For enterprise Linux distributions such as:

Fedora

Red Hat Enterprise Linux

AlmaLinux

Rocky Linux

source installation provides several advantages:

Better Dependency Control

You can control:

Python versions

OpenCV versions

Build dependencies

Easier Troubleshooting

When problems occur, you know exactly where:

Howdy files are installed

Python modules are located

PAM modules are loaded

Better Compatibility

Enterprise Linux distributions prioritize stability, so some packages may lag behind.

Building from source allows newer versions to be used without replacing system packages.

14. Final Notes

Installing Howdy on Linux is more complicated than installing a normal desktop application.

The main challenges are not Howdy itself, but the interaction between:

Linux camera devices

Python dependencies

PAM authentication

GNOME login manager

SELinux security policies

Once these components are correctly configured, Howdy provides a smooth Windows Hello-like experience on Linux.

This guide was tested on Fedora, RHEL-based systems, and AlmaLinux 10.

The recommended installation approach is:

1.Install v4l2-ctl

2.Compile Howdy from source

3.Install dlib face recognition models

4.Configure PAM authentication

5.Fix SELinux permissions

6.Verify password fallback

After completing these steps, Linux users can enjoy reliable facial authentication while keeping traditional security methods available.

References

Howdy project:

https://github.com/boltgolt/howdy

LinuxTV v4l-utils:

https://git.linuxtv.org/v4l-utils.git

dlib face recognition models:

http://dlib.net/

howdy-fix-compare helper script:

https://github.com/pixel-jey/devops-handy-tools/blob/main/opt/sh/howdy-fix-compare.sh

Explore More

Technology Guides →

My Favorite Linux Distributions: RHEL, AlmaLinux, and Fedora from a Developer's Perspective

Linux LVM Partition Management: Safely Resize `/home` and Extend Root Filesystem on AlmaLinux and RHEL

Southeast Asia Insights →