HAL - Hardware Abstraction Layer

HAL is in maintenance mode - no new features are added. All future development focuses on udisks, upower and other parts of the stack. See Software/DeviceKit for more information.

These pages attempt to provide a specification and an implementation of a hardware abstraction layer.
For a good background on what a HAL does, see the "Making Hardware Just Work" article that motivated this work.

Frequently Asked Questions

Source Code


Git is now being used for HAL. There is a nice tutorial for using git with freedesktop.org projects. There is also another tutorial at IBM Developerworks site. You can also take a look at http://cgit.freedesktop.org/hal/tree/HACKING.


hal-info is a small hal sub-package that provides the hardware data and quirks. These quirks are currently things like what mice support reporting battery status, what music players are supported and what cameras are detected.

hal-info and hal should not be packaged together. When packaging hal, it should depend on hal-info, of any version. hal-info should also be checked out in the same level directory as hal if you intend to use ./run-hald.sh

There are no official tarball releases yet, but you can get the latest code from git and release tar.gz from http://hal.freedesktop.org/releases/. See here for more information.


        * Linux kernel 2.6.19 (or later) 
        * util-linux 2.15 (or later) 
        * udev 125 (or later) 
        * dbus 0.61 (or later) 
        * glib 2.6.0 (or later) 
        * expat 1.95.8 (or later) 
        * bash 2.0 (or later) 
        * hal-info 20070402 (or later) 

Optional Dependencies

        * libusb >= 0.1.10a 
        * pciutils >= 2.2.3 
        * dmidecode >= 2.7 
        * parted == 1.7.1, 1.8.0, 1.8.1, 1.8.2 or 1.86 
        * cryptsetup-luks >= 1.0.1 
        * libsmbios >= 0.13.4 





External Resources

  • libhal++: C++ wrapper for libhal and libhal-storage. As of now not supported by the HAL project/developers: bug reports/requests please to internalerror AT gmail.com (M.Derezynski)
  • libhal++ has now been superceded by HAL/C++, a reimplementation of libhal and libhal-storage in C++. The project can be found at the same server, HAL/C++
  • gnome-mount