HAL 0.1 release

David Zeuthen david at fubar.dk
Sun Sep 28 04:34:31 EEST 2003

Announcing HAL version 0.1!

* What is it?

HAL is an implementation of a hardware abstraction layer as specified at

It encompasses a shared library for use in applications, a daemon, a
hotplug tool, command line tools and a set of stock device info files.

* What's changed?

This is the initial release ;-)

* Where can I get it?

At http://hal.freedesktop.org. Please carefully follow the installation
instructions below; there are a few gotchas.

HAL requires dbus - it has been tested with releases 0.11 and 0.12. The
daemon and supplied command line tools requires glib-2. The daemon
requires python for embedding. The shared library only requires d-bus.

* Installation and usage instructions

This release has only been tested on Red Hat Linux 9 with a 2.4 series
kernel. It is not expected to work on other things that Linux. Porting
to other OS'es should be straightforward though.

 o  Do configure/make/make install on hal-0.1.tar.gz. 
    Make sure to give --with-dbus-sys to configure, if your 
    system.d directory of dbus is in a different place than
    /etc/dbus-1/system.d. If you are installing as an unprivileged 
    user (ie. not root) make sure that --with-dbus-sys points 
    to something writable.

 o  (Re)start the dbus system messagebus (to pick up the file
    in the system.d directory)

 o  Do configure/make on gnome_hal_watcher-0.1.tar.gz.

 o  Do 'echo /usr/local/bin/hal_hotplug > /proc/sys/kernel/hotplug'
    Start hald in a terminal window. hald is very talkative.
   (assuming you installed in /usr/local)

 o  Start gnome_hal_watcher. You should see an icon in your 
    notification area. 

 o  Plug in an USB device; verify you get a lot of output from hald.
    Try to run lshal.

 o  Plug in a USB storage device. Interact with the GUI parts.

 o  Try creating device info files for your USB devices (put them
    in /usr/local/var/hal/fdi/10freedesktop) and replug your

   (assuming you installed in /usr/local)

* Status

HAL is still very much in it's infancy - many things are potentially
subject to change. The implementation is still sketchy especially wrt.
error handling. It is not yet production ready.

Currently only hot plugged USB devices are supported.

Attached with the release is a very very crude GNOME program (written in
a few hours; full of hacks etc.) to handle the UI part of hot plugging
of USB storage devices using the usb-storage driver. It uses libhal. It
is supplied only to give hints on how such a program can be written wrt.
to libhal integration. Every rule in the GNOME HIG have been broken in
this application!

Instead of using the GNOME program people can instead use the supplied
command line tools lshal, hal_set_property, hal_get_property,
hal_enable_device hal_disable_device. These programs, in effect, give
access to the libhal API from the command prompt.

HAL ships with a very limited set of device info files. It is straight
forward to add new device info files. Please send your device info files
to me.

* Issues

Some issues that would be good to have feedback on

 o  Device info files are python scripts. I'm not unhappy to change this
    to an XML based format if a lot of people feel strongly about this.
    In particular it would be have the opinion of distributors. 

 o  Bugs? Haven't found them myself yet ;-) 
    Yeah right, please send bug reports.

 o  Linux 2.4 issues wrt. obtaining kernel device for usb-storage
    devices. Covered in a recent thread on xdg-list. How important is
    it to people that 2.4 is supported? 
    My plan is that 2.4 will still be supported but only in a 
    limited way compared to 2.6)

* Roadmap

 o  Clean up and document code

 o  Design and implement access control, device visibility, device
    locking and per-user properties

 o  Signing of device info files

 o  Integrate with linux-hotplug dbus messages (when available)

 o  Try HAL on FreeBSD...
 o  Extend (or change) device info file format

 o  Use persistent (XML based) store device list. 

 o  Hardware probing. I'm thinking of using /sys in Linux kernel 2.6.

 o  Look into support for IEEE1394

 o  Look into interfaces....

 o  Do the GUI parts, separate from hal project; device manager and
    hal_watcher. (If no one else does it ;-) )

 o  Talk to library authors that supports categories of devices

 o  Fix bugs!

And more...

I'll try to time-box releases to ca. one release per month.

* Caveat

 o  The spec for 0.1 is not yet updated - I'll do that RSN. 

 o  It's only been tested by myself yet. Feedback is very welcome.

 o  It's quite cumbersome to try out


-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-                              web:             http://fubar.dk/~david
-    David Zeuthen             pgp key:     http://fubar.dk/pgpkey.asc
-  david(at)fubar.dk           pgp key id:                    b89bab82

    Anarchy may not be the best form of government, but it's
    better than no government at all.

More information about the xdg mailing list