Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 

Repository files navigation

howdy-noble-setup

One script to install Howdy facial authentication on Ubuntu 24.04 (noble) and derivatives — Zorin OS 18, Linux Mint 22, Pop!_OS 24.04 — with all the patches needed to make it actually work.

Howdy 2.6.1 was released in September 2020 and ships broken on modern Ubuntu because of PEP 668, Python 3.12 deprecations, OpenCV's GStreamer default, and same-directory imports under PAM. This script automates the install and applies the fixes.

Quick install

curl -fsSL https://raw.githubusercontent.com/jatroconis/howdy-noble-setup/main/setup-howdy-noble.sh -o setup-howdy-noble.sh
less setup-howdy-noble.sh        # always read scripts before piping to sudo
sudo bash setup-howdy-noble.sh

After install, enroll your face:

sudo howdy -U "$USER" add
sudo -k && sudo whoami           # test it

What it does

The script runs idempotently through these steps:

  1. Pre-flight — checks root, distro codename, identifies your IR camera (the /dev/video* that supports only the GREY format).
  2. Install — adds the official boltgolt/howdy PPA, bypasses the broken interactive preinst (HOWDY_NO_PROMPT=1) and the PEP 668-incompatible postinst (stub + dpkg --configure).
  3. Dependencies — installs python3-numpy, python3-opencv from apt, then dlib via pip3 --break-system-packages (the only one with no current apt package).
  4. Model data — runs Howdy's dlib-data/install.sh to download face landmark and recognition models from davisking/dlib-models.
  5. Source patches — applies four fixes to the installed code:
    • pam.py: import ConfigParserimport configparser as ConfigParser
    • pam.py: subprocess.call to compare.py now passes cwd and PYTHONPATH so the same-directory imports work, and silences stdout/stderr to keep sudo output clean.
    • compare.py: prepends sys.path.insert so it can find its sibling modules under PAM.
    • recorders/video_capture.py: forces cv2.CAP_V4L2 backend (OpenCV defaults to GStreamer on noble, which mishandles many UVC IR cameras).
  6. Permissions — directories 755 (so PAM subprocess can traverse them — the postinst's chmod 744 -R blocks this), files 644, executables 755.
  7. Wiring — creates /usr/local/bin/howdy symlink, sets device_path to your IR device in config.ini, disables snapshot captures (cosmetic warnings), and activates the PAM module via pam-auth-update --package.

Compatibility

Distribution Codename Tested
Zorin OS 18 noble
Ubuntu 24.04 noble
Linux Mint 22 noble reported working by community
Pop!_OS 24.04 noble reported working by community

Should also work on oracular (24.10), plucky (25.04), questing (25.10) but not formally validated.

Hardware notes

ASUS laptops with Sonix IR cameras

On ASUS Vivobook / ProArt / Zenbook models with the Sonix 3277:0018 chipset, the IR emitter is motion-reactive — it pulses briefly when the camera is opened, then sleeps. You do not need to run linux-enable-ir-emitter, which can hang the USB bus on some Sonix chips during its brute-force configure step.

The proximity sensor activates the LED when a person sits in front of the laptop, so face auth works naturally. Confirmed empirically on the ASUS X1607C: static IR captures show mean brightness 0 after frame 4, but capturing while the user moves their hand produces frames with mean brightness 58 and peaks at 253 — the LED is firing, but only on motion.

Two-hole bezel layout

If your bezel has two visible holes for the camera, the IR LED emitter is usually in the same hole as the RGB camera, not in the IR-camera hole. Covering "the regular camera" can dim the IR feed even though Howdy never opens that camera. Verify with a phone camera: the IR LED is visible as a faint violet/white blink through the phone screen.

Maintenance reality check

This is a community patch on top of an unmaintained 2020 package. Things to know:

  • apt upgrade on howdy will overwrite the source patches. Re-run this script if that happens. Or pin the package: sudo apt-mark hold howdy.
  • dlib lives outside apt because of --break-system-packages. A Python minor version bump (3.12 → 3.13) will require sudo pip3 install --break-system-packages dlib again.
  • Howdy 3.0 is in beta as of 2026-05 and aims to fix all of this upstream. When it ships stable, this script should be retired.

Acknowledgments

  • boltgolt/howdy — the original project (Howdy 2.6.1 PPA)
  • blamairia/howdy-patcher — provided the ConfigParser and V4L2 fixes; this script extends them with the pam.py/compare.py import-path fixes and a full installer
  • davisking/dlib-models — the pre-trained models used for recognition

Related issues fixed

  • #774 — externally-managed-environment (PEP 668)
  • #890 — Ubuntu 24.04 LTS install
  • #912ConfigParser Python 3 import
  • #954 — postinst PEP 668 failure
  • #960 — pip upgrade failure
  • #1027 — Python 2 commands

License

MIT — see LICENSE.

About

Patched Howdy 2.6.1 installer for Ubuntu 24.04 (noble) / Zorin OS 18 / Linux Mint 22 — fixes PEP 668, Python 3 imports, V4L2 backend

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages