david at fubar.dk
Wed Dec 24 03:18:19 EET 2003
HAL 0.2 "Open the Pod Bay Door, Hal"
So, I've promised a release of HAL before Christmas, so here goes
version 0.2. It's not at version 9000 yet, so it won't do any device
configuration (like closing your Pod Bay door device), and it probably
never will. That's right, HAL is a lot simpler than earlier envisioned.
To get an idea of what I'm talking about, you might want to read the
updated spec available at http://freedesktop.org/Software/hal and give
the tarball a testdrive.
Special thanks to Martin Waitz for patches to package HAL.
What is it?
HAL is a hardware abstraction layer and aims to provide a live list of
devices present in the system at any point in time. HAL tries to
understand both physical devices (such as PCI, USB) and the device
classes (such as input, net and block) physical devices have, and it
allows merging of information from so called device info files specific
to a device.
HAL provides a network API through D-BUS for querying devices and
notifying when things change. Finally, HAL provides some monitoring (in
an unintrusive way) of devices, presently ethernet link detection and
volume mounts are monitored.
This, and more, is all described in the HAL specification
Where can I get it?
How do I build and run HAL?
You'll need recent glib, expat and d-bus from CVS to build HAL. Also
pygnome and pygtk is required to run the GUI device manager. A Linux 2.6
kernel is also required. HAL integrates with udev (if udev is compiled
with D-BUS support; version 009 and onwards happen to be). You'll also
need a recent version of linux-hotplug.
The client library, libhal, for use in desktop application, only
requires dbus (which doesn't have any dependencies) so both KDE and
GNOME people should be happy.
To build, do the usual ./configure; make; make install dance. Make sure
to install into same prefix as D-BUS, otherwise you'll need to copy some
files yourself. Now restart D-BUS to reload the policy configuration
files and (as root) start hald - the HAL daemon.
You can now start hal-device-manager from a separate terminal. Try
plugging or unplugging USB storage or Cardbus (PCMCIA) devices and check
out the device list change. Also, try unplugging your network cable
while looking at the properties for that device.
If you're the adventurous type, you can try to run
from the tarball while plugging in USB storage. This example shows how a
volume manager built on top of HAL could work. It doesn't really mount
anything, but it does print out a line when it would have mounted or
unmounted a volume. Obviously, you'll need udev for this.
It's also great fun (!) to fiddle around with writing .fdi files for
your devices. I've included a single .fdi file in the distribution to
match my digital camera. You can also play around with the
hal-get-property and hal-set-property tools; the latter can be used to
set the info.persistent property to keep unplugged devices in the device
list to retain the properties of the device while it is unplugged.
Is this stable software?
No way, not yet, at best consider this release a development snapshot.
It has been tested on Fedora Core 1 (i386) and Debian (ppc), both with
There's still lots of small issues I'd wish was resolved before this
release, that's detailed in doc/TODO in the tarball. Most of the short
term issues will probably be addressed in the next release, 4-8 weeks
from this release. Also, important busses, such as IEEE1394, is not
However, even though the API may change somewhat, I think we have now
got the basic infrastructure necessary to start building application and
integrating HAL into desktop environments. That was the grand plan
Please send bug reports, suggestions and patches to the xdg-list. Do
consult the TODO list to see whether the issue is already known.
More information about the xdg